1function(add_BLAS_LAPACK_tests var)
2  if(var MATCHES "^CMake_TEST_Find(BLAS|LAPACK)$")
3    set(package "${CMAKE_MATCH_1}")
4  else()
5    message(FATAL_ERROR "Test list variable '${var}' not supported.")
6  endif()
7
8  set(all "")
9  set(compiler "")
10  set(model "")
11  set(static "")
12
13  set(sizeof_int_lp64 4)
14  set(sizeof_int_ilp64 8)
15
16  foreach(variant IN LISTS ${var})
17    if(variant MATCHES "^(all|compiler|model|static)=(.*)$")
18      set("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}")
19      continue()
20    elseif(variant MATCHES "^([^=]+)=(.*)$")
21      message(FATAL_ERROR "Unknown variable '${variant}'")
22    endif()
23    set(variant_name "${variant}")
24    set(variant_options "-DBLA_VENDOR=${variant}")
25    if(variant STREQUAL "All" AND all)
26      list(APPEND variant_options "-DEXPECT_All=${all}")
27    endif()
28    if(model)
29      if(NOT variant_name MATCHES "Intel10_64")
30        string(APPEND variant_name "_${model}")
31      endif()
32      list(APPEND variant_options "-DBLA_SIZEOF_INTEGER=${sizeof_int_${model}}")
33    endif()
34    if(compiler)
35      string(APPEND variant_name "_${compiler}")
36      list(APPEND variant_options "-DCMAKE_C_COMPILER=${compiler}")
37    endif()
38    if(static)
39      string(APPEND variant_name "_Static")
40      list(APPEND variant_options "-DBLA_STATIC=ON")
41    endif()
42    add_test(NAME Find${package}.Test_${variant_name} COMMAND
43      ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
44      --build-and-test
45      "${CMake_SOURCE_DIR}/Tests/Find${package}/Test"
46      "${CMake_BINARY_DIR}/Tests/Find${package}/Test_${variant_name}"
47      ${build_generator_args}
48      --build-project TestFind${package}
49      --build-options ${build_options} ${variant_options}
50      --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
51      )
52  endforeach()
53endfunction()
54