You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 2.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. include_directories(${PROJECT_SOURCE_DIR})
  2. include_directories(${PROJECT_BINARY_DIR})
  3. enable_language(Fortran)
  4. if (CMAKE_Fortran_COMPILER_ID STREQUAL GNU)
  5. set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-tree-vectorize")
  6. endif()
  7. if (CMAKE_Fortran_COMPILER_ID STREQUAL Flang)
  8. set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -O2")
  9. endif()
  10. if (BUILD_SINGLE)
  11. list( APPEND OpenBLAS_Tests sblat1 sblat2 sblat3)
  12. endif()
  13. if (BUILD_DOUBLE)
  14. list (APPEND OpenBLAS_Tests dblat1 dblat2 dblat3)
  15. endif()
  16. if (BUILD_COMPLEX)
  17. list (APPEND OpenBLAS_Tests cblat1 cblat2 cblat3)
  18. endif()
  19. if (BUILD_COMPLEX16)
  20. list (APPEND OpenBLAS_Tests zblat1 zblat2 zblat3)
  21. endif()
  22. foreach(test_bin ${OpenBLAS_Tests})
  23. add_executable(${test_bin} ${test_bin}.f)
  24. target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME})
  25. endforeach()
  26. # $1 exec, $2 input, $3 output_result
  27. if(WIN32)
  28. FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1
  29. "[Console]::InputEncoding = New-Object Text.UTF8Encoding $false\n"
  30. "if (Test-Path $args[2]) { Remove-Item -Force $args[2] } \n"
  31. "$ErrorActionPreference = \"Stop\"\n"
  32. "Get-Content $args[1] | & $args[0]\n"
  33. "If ((Get-Content $args[2] | %{$_ -match \"FATAL\"}) -contains $true) {\n"
  34. "echo Error\n"
  35. "exit 1\n"
  36. "} else {\n"
  37. "exit 0\n"
  38. "}\n"
  39. )
  40. set(helper_prefix powershell -ExecutionPolicy Bypass "${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1")
  41. else()
  42. FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh
  43. "rm -f $3\n"
  44. "$1 < $2\n"
  45. "grep -q FATAL $3\n"
  46. "if [ $? -eq 0 ]; then\n"
  47. "echo Error\n"
  48. "exit 1\n"
  49. "else\n"
  50. "exit 0\n"
  51. "fi\n"
  52. )
  53. set(helper_prefix sh "${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh")
  54. endif()
  55. #set(float_types s d c z)
  56. if (BUILD_SINGLE)
  57. list (APPEND float_types s)
  58. endif()
  59. if (BUILD_DOUBLE)
  60. list (APPEND float_types d)
  61. endif()
  62. if (BUILD_COMPLEX)
  63. list (APPEND float_types c)
  64. endif()
  65. if (BUILD_COMPLEX16)
  66. list (APPEND float_types z)
  67. endif()
  68. foreach(float_type ${float_types})
  69. string(TOUPPER ${float_type} float_type_upper)
  70. add_test(NAME "${float_type}blas1"
  71. COMMAND $<TARGET_FILE:${float_type}blat1>)
  72. add_test(NAME "${float_type}blas2"
  73. COMMAND ${helper_prefix} $<TARGET_FILE:${float_type}blat2> "${PROJECT_SOURCE_DIR}/test/${float_type}blat2.dat" ${float_type_upper}BLAT2.SUMM)
  74. add_test(NAME "${float_type}blas3"
  75. COMMAND ${helper_prefix} $<TARGET_FILE:${float_type}blat3> "${PROJECT_SOURCE_DIR}/test/${float_type}blat3.dat" ${float_type_upper}BLAT3.SUMM)
  76. endforeach()