summaryrefslogtreecommitdiff
path: root/Tests/FindHDF5/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/FindHDF5/CMakeLists.txt')
-rw-r--r--Tests/FindHDF5/CMakeLists.txt87
1 files changed, 87 insertions, 0 deletions
diff --git a/Tests/FindHDF5/CMakeLists.txt b/Tests/FindHDF5/CMakeLists.txt
new file mode 100644
index 0000000000..6bc551ac4d
--- /dev/null
+++ b/Tests/FindHDF5/CMakeLists.txt
@@ -0,0 +1,87 @@
+# These tests may be configured by cache entries:
+#
+# CMake_TEST_FindHDF5:BOOL=ON
+# Enable this directory.
+#
+# CMake_TEST_FindHDF5_<variant>_<lang>_COMPILER:FILEPATH=...
+# Enable testing for a variant/language combination with the given wrapper.
+# Variants: Serial, OpenMPI, MPICH
+# Languages: C, CXX, Fortran
+#
+# CMake_TEST_FindHDF5_<variant>_<lang>_COMPILER_EXPLICIT:BOOL=ON
+# Pass the above wrapper path to the test as HDF5_<lang>_COMPILER_EXECUTABLE.
+
+set(test_langs C CXX)
+if(CMAKE_Fortran_COMPILER)
+ list(APPEND test_langs Fortran)
+endif()
+
+# Test detection without any special hints.
+add_test(NAME FindHDF5.Default COMMAND
+ ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/FindHDF5/Test"
+ "${CMake_BINARY_DIR}/Tests/FindHDF5/Test-Default"
+ ${build_generator_args}
+ --build-project TestFindHDF5
+ --build-options ${build_options} -DTEST_SERIAL=1 "-DTEST_LANGS=${test_langs}"
+ --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+ )
+
+foreach(variant Serial OpenMPI MPICH)
+ set(wrapper "")
+ set(wrapper_langs "")
+ set(wrapper_as_compiler "")
+ foreach(lang IN LISTS test_langs)
+ if(CMake_TEST_FindHDF5_${variant}_${lang}_COMPILER)
+ list(APPEND wrapper_langs ${lang})
+ list(APPEND wrapper_as_compiler -DCMAKE_${lang}_COMPILER=${CMake_TEST_FindHDF5_${variant}_${lang}_COMPILER})
+ if(CMake_TEST_FindHDF5_${variant}_${lang}_COMPILER_EXPLICIT)
+ list(APPEND wrapper -DHDF5_${lang}_COMPILER_EXECUTABLE=${CMake_TEST_FindHDF5_${variant}_${lang}_COMPILER})
+ endif()
+ endif()
+ endforeach()
+
+ if(NOT wrapper_langs)
+ continue()
+ endif()
+
+ if(variant STREQUAL "Serial")
+ set(test_kind -DTEST_SERIAL=1)
+ else()
+ set(test_kind -DTEST_PARALLEL=1)
+ endif()
+
+ # Test detection using the HDF5 compiler wrappers as a reference.
+ add_test(NAME FindHDF5.${variant} COMMAND
+ ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/FindHDF5/Test"
+ "${CMake_BINARY_DIR}/Tests/FindHDF5/Test-${variant}"
+ ${build_generator_args}
+ --build-project TestFindHDF5
+ --build-options ${build_options} ${test_kind} "-DTEST_LANGS=${wrapper_langs}" ${wrapper}
+ --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+ )
+ if(CMake_TEST_FindHDF5_${variant}_ENVMOD)
+ set_property(TEST FindHDF5.${variant} PROPERTY ENVIRONMENT_MODIFICATION ${CMake_TEST_FindHDF5_${variant}_ENVMOD})
+ endif()
+
+ # Test detection using the HDF5 compiler wrappers as the compiler.
+ # Skip this if there are spaces in the path. The HDF5 wrappers do not like them.
+ if(NOT CMAKE_CURRENT_BINARY_DIR MATCHES " ")
+ add_test(NAME FindHDF5.${variant}-Wrapper COMMAND
+ ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/FindHDF5/Test"
+ "${CMake_BINARY_DIR}/Tests/FindHDF5/Test-${variant}-Wrapper"
+ ${build_generator_args}
+ --build-project TestFindHDF5
+ --build-options ${build_options} ${test_kind} "-DTEST_LANGS=${wrapper_langs}" -D TEST_WRAPPER_AS_COMPILER=1 ${wrapper_as_compiler}
+ --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+ )
+ if(CMake_TEST_FindHDF5_${variant}_ENVMOD)
+ set_property(TEST FindHDF5.${variant}-Wrapper PROPERTY ENVIRONMENT_MODIFICATION ${CMake_TEST_FindHDF5_${variant}_ENVMOD})
+ endif()
+ endif()
+endforeach()