File: CMakeLists.txt

package info (click to toggle)
cmake 4.2.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 152,456 kB
  • sloc: ansic: 403,896; cpp: 303,920; sh: 4,105; python: 3,583; yacc: 3,106; lex: 1,279; f90: 538; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 239; objc: 215; perl: 213; xml: 198; makefile: 111; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (87 lines) | stat: -rw-r--r-- 3,370 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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()