Find{BLAS,LAPACK}: De-duplicate and generalize test creation logic

Interpret `CMake_TEST_FindBLAS` and `CMake_TEST_FindLAPACK` as a
sequence of option assignments intermixed with vendor names.
This commit is contained in:
Brad King 2021-09-22 14:55:42 -04:00 committed by Igor S. Gerasimov
parent 91fd645d46
commit 9b69307b56
7 changed files with 60 additions and 118 deletions

View File

@ -1,6 +1,5 @@
set(CMake_TEST_FindALSA "ON" CACHE BOOL "")
set(CMake_TEST_FindBLAS "All" CACHE STRING "")
set(CMake_TEST_FindBLAS_STATIC "Generic" CACHE STRING "")
set(CMake_TEST_FindBLAS "All;static=1;Generic" CACHE STRING "")
set(CMake_TEST_FindBoost "ON" CACHE BOOL "")
set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
@ -25,8 +24,7 @@ set(CMake_TEST_FindIconv "ON" CACHE BOOL "")
set(CMake_TEST_FindIntl "ON" CACHE BOOL "")
set(CMake_TEST_FindJPEG "ON" CACHE BOOL "")
set(CMake_TEST_FindJsonCpp "ON" CACHE BOOL "")
set(CMake_TEST_FindLAPACK "All" CACHE STRING "")
set(CMake_TEST_FindLAPACK_STATIC "Generic" CACHE STRING "")
set(CMake_TEST_FindLAPACK "All;static=1;Generic" CACHE STRING "")
set(CMake_TEST_FindLibArchive "ON" CACHE BOOL "")
set(CMake_TEST_FindLibinput "ON" CACHE BOOL "")
set(CMake_TEST_FindLibLZMA "ON" CACHE BOOL "")

View File

@ -1,6 +1,5 @@
set(CMake_TEST_FindALSA "ON" CACHE BOOL "")
set(CMake_TEST_FindBLAS "All" CACHE STRING "")
set(CMake_TEST_FindBLAS_STATIC "Generic" CACHE STRING "")
set(CMake_TEST_FindBLAS "All;static=1;Generic" CACHE STRING "")
set(CMake_TEST_FindBoost "ON" CACHE BOOL "")
set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
@ -25,8 +24,7 @@ set(CMake_TEST_FindIconv "ON" CACHE BOOL "")
set(CMake_TEST_FindIntl "ON" CACHE BOOL "")
set(CMake_TEST_FindJPEG "ON" CACHE BOOL "")
set(CMake_TEST_FindJsonCpp "ON" CACHE BOOL "")
set(CMake_TEST_FindLAPACK "All" CACHE STRING "")
set(CMake_TEST_FindLAPACK_STATIC "Generic" CACHE STRING "")
set(CMake_TEST_FindLAPACK "All;static=1;Generic" CACHE STRING "")
set(CMake_TEST_FindLibArchive "ON" CACHE BOOL "")
set(CMake_TEST_FindLibinput "ON" CACHE BOOL "")
set(CMake_TEST_FindLibLZMA "ON" CACHE BOOL "")

View File

@ -1,6 +1,5 @@
set(CMake_TEST_FindALSA "ON" CACHE BOOL "")
set(CMake_TEST_FindBLAS "All" CACHE STRING "")
set(CMake_TEST_FindBLAS_STATIC "Generic" CACHE STRING "")
set(CMake_TEST_FindBLAS "All;static=1;Generic" CACHE STRING "")
set(CMake_TEST_FindBoost "ON" CACHE BOOL "")
set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
@ -25,8 +24,7 @@ set(CMake_TEST_FindIconv "ON" CACHE BOOL "")
set(CMake_TEST_FindIntl "ON" CACHE BOOL "")
set(CMake_TEST_FindJPEG "ON" CACHE BOOL "")
set(CMake_TEST_FindJsonCpp "ON" CACHE BOOL "")
set(CMake_TEST_FindLAPACK "All" CACHE STRING "")
set(CMake_TEST_FindLAPACK_STATIC "Generic" CACHE STRING "")
set(CMake_TEST_FindLAPACK "All;static=1;Generic" CACHE STRING "")
set(CMake_TEST_FindLibArchive "ON" CACHE BOOL "")
set(CMake_TEST_FindLibinput "ON" CACHE BOOL "")
set(CMake_TEST_FindLibLZMA "ON" CACHE BOOL "")

View File

@ -1,10 +1,9 @@
set(CMake_TEST_FindBLAS "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
set(CMake_TEST_FindBLAS_All "Intel10_64lp" CACHE STRING "")
set(CMake_TEST_FindBLAS_STATIC "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
set(CMake_TEST_FindBLAS_STATIC_All "Intel10_64lp" CACHE STRING "")
set(CMake_TEST_FindLAPACK "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
set(CMake_TEST_FindLAPACK_All "Intel10_64lp" CACHE STRING "")
set(CMake_TEST_FindLAPACK_STATIC "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
set(CMake_TEST_FindLAPACK_STATIC_All "Intel10_64lp" CACHE STRING "")
set(blas_lapack_cases
all=Intel10_64lp
static=0 All Intel10_64lp compiler=gcc Intel10_64lp compiler=
static=1 All Intel10_64lp compiler=gcc Intel10_64lp compiler=
)
set(CMake_TEST_FindBLAS "${blas_lapack_cases}" CACHE STRING "")
set(CMake_TEST_FindLAPACK "${blas_lapack_cases}" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@ -1,49 +1,2 @@
foreach(variant IN LISTS CMake_TEST_FindBLAS)
if(variant MATCHES "^([^.]+)\\.(.*)$")
set(vendor "${CMAKE_MATCH_1}")
set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
else()
set(vendor "${variant}")
set(alt_compiler "")
endif()
if(vendor STREQUAL "All" AND CMake_TEST_FindBLAS_All)
set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindBLAS_All}")
else()
set(EXPECT_All "")
endif()
add_test(NAME FindBLAS.Test_${variant} COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/FindBLAS/Test"
"${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${variant}"
${build_generator_args}
--build-project TestFindBLAS
--build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor}
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
endforeach()
foreach(variant IN LISTS CMake_TEST_FindBLAS_STATIC)
if(variant MATCHES "^([^.]+)\\.(.*)$")
set(vendor "${CMAKE_MATCH_1}")
set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
else()
set(vendor "${variant}")
set(alt_compiler "")
endif()
if(vendor STREQUAL "All" AND CMake_TEST_FindBLAS_STATIC_All)
set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindBLAS_STATIC_All}")
else()
set(EXPECT_All "")
endif()
add_test(NAME FindBLAS.Test_${variant}_Static COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/FindBLAS/Test"
"${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${variant}_Static"
${build_generator_args}
--build-project TestFindBLAS
--build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
endforeach()
include("${CMake_SOURCE_DIR}/Tests/FindBLAS/add_BLAS_LAPACK_tests.cmake")
add_BLAS_LAPACK_tests(CMake_TEST_FindBLAS)

View File

@ -0,0 +1,43 @@
function(add_BLAS_LAPACK_tests var)
if(var MATCHES "^CMake_TEST_Find(BLAS|LAPACK)$")
set(package "${CMAKE_MATCH_1}")
else()
message(FATAL_ERROR "Test list variable '${var}' not supported.")
endif()
set(all "")
set(compiler "")
set(static "")
foreach(variant IN LISTS ${var})
if(variant MATCHES "^(all|compiler|static)=(.*)$")
set("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}")
continue()
elseif(variant MATCHES "^([^=]+)=(.*)$")
message(FATAL_ERROR "Unknown variable '${variant}'")
endif()
set(variant_name "${variant}")
set(variant_options "-DBLA_VENDOR=${variant}")
if(variant STREQUAL "All" AND all)
list(APPEND variant_options "-DEXPECT_All=${all}")
endif()
if(compiler)
string(APPEND variant_name "_${compiler}")
list(APPEND variant_options "-DCMAKE_C_COMPILER=${compiler}")
endif()
if(static)
string(APPEND variant_name "_Static")
list(APPEND variant_options "-DBLA_STATIC=ON")
endif()
add_test(NAME Find${package}.Test_${variant_name} COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/Find${package}/Test"
"${CMake_BINARY_DIR}/Tests/Find${package}/Test_${variant_name}"
${build_generator_args}
--build-project TestFind${package}
--build-options ${build_options} ${variant_options}
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
endforeach()
endfunction()

View File

@ -1,49 +1,2 @@
foreach(variant IN LISTS CMake_TEST_FindLAPACK)
if(variant MATCHES "^([^.]+)\\.(.*)$")
set(vendor "${CMAKE_MATCH_1}")
set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
else()
set(vendor "${variant}")
set(alt_compiler "")
endif()
if(vendor STREQUAL "All" AND CMake_TEST_FindLAPACK_All)
set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindLAPACK_All}")
else()
set(EXPECT_All "")
endif()
add_test(NAME FindLAPACK.Test_${variant} COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/FindLAPACK/Test"
"${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${variant}"
${build_generator_args}
--build-project TestFindLAPACK
--build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor}
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
endforeach()
foreach(variant IN LISTS CMake_TEST_FindLAPACK_STATIC)
if(variant MATCHES "^([^.]+)\\.(.*)$")
set(vendor "${CMAKE_MATCH_1}")
set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
else()
set(vendor "${variant}")
set(alt_compiler "")
endif()
if(vendor STREQUAL "All" AND CMake_TEST_FindLAPACK_STATIC_All)
set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindLAPACK_STATIC_All}")
else()
set(EXPECT_All "")
endif()
add_test(NAME FindLAPACK.Test_${variant}_Static COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/FindLAPACK/Test"
"${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${variant}_Static"
${build_generator_args}
--build-project TestFindLAPACK
--build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
endforeach()
include("${CMake_SOURCE_DIR}/Tests/FindBLAS/add_BLAS_LAPACK_tests.cmake")
add_BLAS_LAPACK_tests(CMake_TEST_FindLAPACK)