Skip to content

Commit

Permalink
cmake: use set_property()
Browse files Browse the repository at this point in the history
  • Loading branch information
scivision committed Jul 22, 2022
1 parent e304122 commit 8716b7a
Show file tree
Hide file tree
Showing 14 changed files with 352 additions and 170 deletions.
8 changes: 3 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,9 @@ $<INSTALL_INTERFACE:include>
target_link_libraries(h5fortran PUBLIC HDF5::HDF5
$<$<BOOL:${hdf5_parallel}>:MPI::MPI_Fortran>
)
set_target_properties(h5fortran PROPERTIES
Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
LABELS core
VERSION ${PROJECT_VERSION}
)
set_property(TARGET h5fortran PROPERTY Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include)
set_property(TARGET h5fortran PROPERTY LABELS core)
set_property(TARGET h5fortran PROPERTY VERSION ${PROJECT_VERSION})

# GLOBAL needed for use by FetchContent
add_library(h5fortran::h5fortran INTERFACE IMPORTED GLOBAL)
Expand Down
8 changes: 4 additions & 4 deletions benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ project(h5mpi-benchmark
LANGUAGES C CXX Fortran
)

set_directory_properties(PROPERTIES LABELS benchmark)
set_property(DIRECTORY PROPERTY LABELS benchmark)

cmake_path(SET CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/../cmake/Modules)

Expand Down Expand Up @@ -32,13 +32,13 @@ add_library(cli OBJECT cli.f90)
add_executable(runner frontend.f90 cpu.cpp)
target_link_libraries(runner PRIVATE partition cli)
if(CMAKE_Fortran_COMPILER_ID MATCHES "^Intel")
set_target_properties(runner PROPERTIES LINKER_LANGUAGE Fortran)
set_property(TARGET runner PROPERTY LINKER_LANGUAGE Fortran)
else()
set_target_properties(runner PROPERTIES LINKER_LANGUAGE CXX)
set_property(TARGET runner PROPERTY LINKER_LANGUAGE CXX)
endif()

foreach(t cli kernel perf)
set_target_properties(${t} PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include)
set_property(TARGET ${t} PROPERTY Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include)
target_include_directories(${t} INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/include)
endforeach()

Expand Down
142 changes: 57 additions & 85 deletions benchmark/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,75 +39,61 @@ foreach(comp_lvl 0 1)
add_test(NAME WRITE_serial-comp${comp_lvl}-Slab
COMMAND slab_serial_write -lx ${lx3} -Nrun ${Nrun} -o ${serialfn} -debug -comp ${comp_lvl}
)
set_tests_properties(WRITE_serial-comp${comp_lvl}-Slab PROPERTIES
TIMEOUT ${write_timeout}
FIXTURES_SETUP write_serial-comp${comp_lvl}-Slab
LABELS "serial_hdf5;write"
RUN_SERIAL true
)
set_property(TEST WRITE_serial-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${write_timeout})
set_property(TEST WRITE_serial-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP write_serial-comp${comp_lvl}-Slab)
set_property(TEST WRITE_serial-comp${comp_lvl}-Slab PROPERTY LABELS "serial_hdf5;write")
set_property(TEST WRITE_serial-comp${comp_lvl}-Slab PROPERTY RUN_SERIAL true)

add_test(NAME READ_serial-comp${comp_lvl}-Slab
COMMAND slab_serial_read -Nrun ${Nrun} -o ${serialfn} -debug
)
set_tests_properties(READ_serial-comp${comp_lvl}-Slab PROPERTIES
TIMEOUT ${read_timeout}
FIXTURES_REQUIRED write_serial-comp${comp_lvl}-Slab
FIXTURES_SETUP read_serial-comp${comp_lvl}-Slab
REQUIRED_FILES ${serialfn}
LABELS "serial_hdf5;read"
RUN_SERIAL true
)
set_property(TEST READ_serial-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${read_timeout})
set_property(TEST READ_serial-comp${comp_lvl}-Slab PROPERTY FIXTURES_REQUIRED write_serial-comp${comp_lvl}-Slab)
set_property(TEST READ_serial-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP read_serial-comp${comp_lvl}-Slab)
set_property(TEST READ_serial-comp${comp_lvl}-Slab PROPERTY REQUIRED_FILES ${serialfn})
set_property(TEST READ_serial-comp${comp_lvl}-Slab PROPERTY LABELS "serial_hdf5;read")
set_property(TEST READ_serial-comp${comp_lvl}-Slab PROPERTY RUN_SERIAL true)

add_test(NAME serial-cleanup-comp${comp_lvl} COMMAND ${CMAKE_COMMAND} -E rm ${serialfn})
set_tests_properties(serial-cleanup-comp${comp_lvl} PROPERTIES
FIXTURES_REQUIRED "read_serial-comp${comp_lvl}-Slab;read_mpi_root-comp${comp_lvl}-Slab;read_mpi-comp${comp_lvl}-Slab"
REQUIRED_FILES ${serialfn}
TIMEOUT ${read_timeout}
)
set_property(TEST serial-cleanup-comp${comp_lvl} PROPERTY FIXTURES_REQUIRED "read_serial-comp${comp_lvl}-Slab;read_mpi_root-comp${comp_lvl}-Slab;read_mpi-comp${comp_lvl}-Slab")
set_property(TEST serial-cleanup-comp${comp_lvl} PROPERTY REQUIRED_FILES ${serialfn})
set_property(TEST serial-cleanup-comp${comp_lvl} PROPERTY TIMEOUT ${read_timeout})

# --- MPI-ROOT
set(mpi_rootfn ${test_file_dir}/mpi_root-comp${comp_lvl}.h5)

add_test(NAME WRITE_MPI_root-comp${comp_lvl}-Slab
COMMAND runner -lx ${lx3} -exe $<TARGET_FILE:slab_mpi_serial_write> -mpiexec ${MPIEXEC_EXECUTABLE} -Nrun ${Nrun} -o ${mpi_rootfn} -debug -comp ${comp_lvl}
)
set_tests_properties(WRITE_MPI_root-comp${comp_lvl}-Slab PROPERTIES
TIMEOUT ${write_timeout}
FIXTURES_SETUP write_mpi_root-comp${comp_lvl}-Slab
LABELS "mpi_root;write"
RUN_SERIAL true
)
set_property(TEST WRITE_MPI_root-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${write_timeout})
set_property(TEST WRITE_MPI_root-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP write_mpi_root-comp${comp_lvl}-Slab)
set_property(TEST WRITE_MPI_root-comp${comp_lvl}-Slab PROPERTY LABELS "mpi_root;write")
set_property(TEST WRITE_MPI_root-comp${comp_lvl}-Slab PROPERTY RUN_SERIAL true)

add_test(NAME COMPARE_MPI_root-comp${comp_lvl}-Slab
COMMAND ${H5DIFF} -v --delta=0.01 ${mpi_rootfn} ${serialfn}
)
set_tests_properties(COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTIES
FIXTURES_REQUIRED "write_serial-comp${comp_lvl}-Slab;write_mpi_root-comp${comp_lvl}-Slab"
FIXTURES_SETUP compare_mpi_root-comp${comp_lvl}-Slab
REQUIRED_FILES "${mpi_rootfn};${serialfn}"
LABELS "mpi_root;compare"
TIMEOUT ${read_timeout}
DISABLED $<NOT:$<BOOL:${H5DIFF}>>
)
set_property(TEST COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTY FIXTURES_REQUIRED "write_serial-comp${comp_lvl}-Slab;write_mpi_root-comp${comp_lvl}-Slab")
set_property(TEST COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP compare_mpi_root-comp${comp_lvl}-Slab)
set_property(TEST COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTY REQUIRED_FILES "${mpi_rootfn};${serialfn}")
set_property(TEST COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTY LABELS "mpi_root;compare")
set_property(TEST COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${read_timeout})
set_property(TEST COMPARE_MPI_root-comp${comp_lvl}-Slab PROPERTY DISABLED $<NOT:$<BOOL:${H5DIFF}>>)

add_test(NAME READ_MPI_root-comp${comp_lvl}-Slab
COMMAND runner -lx ${lx3} -exe $<TARGET_FILE:slab_mpi_serial_read> -mpiexec ${MPIEXEC_EXECUTABLE} -Nrun ${Nrun} -o ${mpi_rootfn} -ref ${serialfn} -debug
)
set_tests_properties(READ_MPI_root-comp${comp_lvl}-Slab PROPERTIES
TIMEOUT ${read_timeout}
FIXTURES_REQUIRED "compare_mpi_root-comp${comp_lvl}-Slab;write_serial-comp${comp_lvl}-Slab;write_mpi_root-comp${comp_lvl}-Slab"
FIXTURES_SETUP read_mpi_root-comp${comp_lvl}-Slab
REQUIRED_FILES "${mpi_rootfn};${serialfn}"
LABELS "mpi_root;read"
RUN_SERIAL true
)
set_property(TEST READ_MPI_root-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${read_timeout})
set_property(TEST READ_MPI_root-comp${comp_lvl}-Slab PROPERTY FIXTURES_REQUIRED "compare_mpi_root-comp${comp_lvl}-Slab;write_serial-comp${comp_lvl}-Slab;write_mpi_root-comp${comp_lvl}-Slab")
set_property(TEST READ_MPI_root-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP read_mpi_root-comp${comp_lvl}-Slab)
set_property(TEST READ_MPI_root-comp${comp_lvl}-Slab PROPERTY REQUIRED_FILES "${mpi_rootfn};${serialfn}")
set_property(TEST READ_MPI_root-comp${comp_lvl}-Slab PROPERTY LABELS "mpi_root;read")
set_property(TEST READ_MPI_root-comp${comp_lvl}-Slab PROPERTY RUN_SERIAL true)

add_test(NAME root-cleanup-comp${comp_lvl} COMMAND ${CMAKE_COMMAND} -E rm ${mpi_rootfn})
set_tests_properties(root-cleanup-comp${comp_lvl} PROPERTIES
FIXTURES_REQUIRED read_mpi_root-comp${comp_lvl}-Slab
REQUIRED_FILES ${mpi_rootfn}
TIMEOUT ${read_timeout}
)
set_property(TEST root-cleanup-comp${comp_lvl} PROPERTY FIXTURES_REQUIRED read_mpi_root-comp${comp_lvl}-Slab)
set_property(TEST root-cleanup-comp${comp_lvl} PROPERTY REQUIRED_FILES ${mpi_rootfn})
set_property(TEST root-cleanup-comp${comp_lvl} PROPERTY TIMEOUT ${read_timeout})

# --- MPI-HDF5

Expand All @@ -116,43 +102,35 @@ foreach(comp_lvl 0 1)
add_test(NAME WRITE_MPI-comp${comp_lvl}-Slab
COMMAND runner -lx ${lx3} -exe $<TARGET_FILE:slab_mpi_write> -mpiexec ${MPIEXEC_EXECUTABLE} -Nrun ${Nrun} -o ${mpifn} -debug -comp ${comp_lvl}
)
set_tests_properties(WRITE_MPI-comp${comp_lvl}-Slab PROPERTIES
TIMEOUT ${write_timeout}
FIXTURES_SETUP write_mpi-comp${comp_lvl}-Slab
LABELS "mpi_hdf5;write"
RUN_SERIAL true
)
set_property(TEST WRITE_MPI-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${write_timeout})
set_property(TEST WRITE_MPI-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP write_mpi-comp${comp_lvl}-Slab)
set_property(TEST WRITE_MPI-comp${comp_lvl}-Slab PROPERTY LABELS "mpi_hdf5;write")
set_property(TEST WRITE_MPI-comp${comp_lvl}-Slab PROPERTY RUN_SERIAL true)

add_test(NAME COMPARE_MPI-comp${comp_lvl}-Slab
COMMAND ${H5DIFF} -v --delta=0.01 ${mpifn} ${serialfn}
)
set_tests_properties(COMPARE_MPI-comp${comp_lvl}-Slab PROPERTIES
FIXTURES_REQUIRED "write_serial-comp${comp_lvl}-Slab;write_mpi-comp${comp_lvl}-Slab"
FIXTURES_SETUP compare_mpi_hdf5-comp${comp_lvl}-Slab
REQUIRED_FILES "${mpifn};${serialfn}"
LABELS "mpi_hdf5;compare"
TIMEOUT ${read_timeout}
DISABLED $<NOT:$<BOOL:${H5DIFF}>>
)
set_property(TEST COMPARE_MPI-comp${comp_lvl}-Slab PROPERTY FIXTURES_REQUIRED "write_serial-comp${comp_lvl}-Slab;write_mpi-comp${comp_lvl}-Slab")
set_property(TEST COMPARE_MPI-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP compare_mpi_hdf5-comp${comp_lvl}-Slab)
set_property(TEST COMPARE_MPI-comp${comp_lvl}-Slab PROPERTY REQUIRED_FILES "${mpifn};${serialfn}")
set_property(TEST COMPARE_MPI-comp${comp_lvl}-Slab PROPERTY LABELS "mpi_hdf5;compare")
set_property(TEST COMPARE_MPI-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${read_timeout})
set_property(TEST COMPARE_MPI-comp${comp_lvl}-Slab PROPERTY DISABLED $<NOT:$<BOOL:${H5DIFF}>>)

add_test(NAME READ_MPI-comp${comp_lvl}-Slab
COMMAND runner -lx ${lx3} -exe $<TARGET_FILE:slab_mpi_read> -mpiexec ${MPIEXEC_EXECUTABLE} -Nrun ${Nrun} -o ${mpifn} -ref ${serialfn} -debug
)
set_tests_properties(READ_MPI-comp${comp_lvl}-Slab PROPERTIES
TIMEOUT ${read_timeout}
FIXTURES_REQUIRED "compare_mpi_hdf5-comp${comp_lvl}-Slab;write_mpi-comp${comp_lvl}-Slab;write_serial-comp${comp_lvl}-Slab"
FIXTURES_SETUP read_mpi-comp${comp_lvl}-Slab
REQUIRED_FILES "${mpifn};${serialfn}"
LABELS "mpi_hdf5;read"
RUN_SERIAL true
)
set_property(TEST READ_MPI-comp${comp_lvl}-Slab PROPERTY TIMEOUT ${read_timeout})
set_property(TEST READ_MPI-comp${comp_lvl}-Slab PROPERTY FIXTURES_REQUIRED "compare_mpi_hdf5-comp${comp_lvl}-Slab;write_mpi-comp${comp_lvl}-Slab;write_serial-comp${comp_lvl}-Slab")
set_property(TEST READ_MPI-comp${comp_lvl}-Slab PROPERTY FIXTURES_SETUP read_mpi-comp${comp_lvl}-Slab)
set_property(TEST READ_MPI-comp${comp_lvl}-Slab PROPERTY REQUIRED_FILES "${mpifn};${serialfn}")
set_property(TEST READ_MPI-comp${comp_lvl}-Slab PROPERTY LABELS "mpi_hdf5;read")
set_property(TEST READ_MPI-comp${comp_lvl}-Slab PROPERTY RUN_SERIAL true)

add_test(NAME mpi-cleanup-comp${comp_lvl} COMMAND ${CMAKE_COMMAND} -E rm ${mpifn})
set_tests_properties(mpi-cleanup-comp${comp_lvl} PROPERTIES
FIXTURES_REQUIRED read_mpi-comp${comp_lvl}-Slab
REQUIRED_FILES ${mpifn}
TIMEOUT ${read_timeout}
)
set_property(TEST mpi-cleanup-comp${comp_lvl} PROPERTY FIXTURES_REQUIRED read_mpi-comp${comp_lvl}-Slab)
set_property(TEST mpi-cleanup-comp${comp_lvl} PROPERTY REQUIRED_FILES ${mpifn})
set_property(TEST mpi-cleanup-comp${comp_lvl} PROPERTY TIMEOUT ${read_timeout})
endforeach()

find_package(Python COMPONENTS Interpreter)
Expand All @@ -175,18 +153,12 @@ endif()

set(pyargs ${PROJECT_SOURCE_DIR}/bench_slab.py --datadir ${CMAKE_CURRENT_BINARY_DIR} -B ${PROJECT_BINARY_DIR} -Nrun ${Nrun} -lx ${lx3} --debug)
add_test(NAME PythonRunner COMMAND Python::Interpreter ${pyargs})
set_tests_properties(PythonRunner PROPERTIES
FIXTURES_SETUP PyRun_fxt
RUN_SERIAL true
)
set_property(TEST PythonRunner PROPERTY FIXTURES_SETUP PyRun_fxt)
set_property(TEST PythonRunner PROPERTY RUN_SERIAL true)

add_test(NAME Plotter COMMAND Python::Interpreter ${PROJECT_SOURCE_DIR}/bench_plot.py --datadir ${CMAKE_CURRENT_BINARY_DIR} -lx ${lx3})
set_tests_properties(Plotter PROPERTIES
FIXTURES_REQUIRED PyRun_fxt
)
set_property(TEST Plotter PROPERTY FIXTURES_REQUIRED PyRun_fxt)

set_tests_properties(PythonRunner Plotter PROPERTIES
LABELS python
TIMEOUT 60
DISABLED ${PySkip}
)
set_property(TEST PythonRunner Plotter PROPERTY LABELS python)
set_property(TEST PythonRunner Plotter PROPERTY TIMEOUT 60)
set_property(TEST PythonRunner Plotter PROPERTY DISABLED ${PySkip})
6 changes: 2 additions & 4 deletions cmake/Modules/FindHDF5.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -893,10 +893,8 @@ if(HDF5_FOUND)

if(NOT TARGET HDF5::HDF5)
add_library(HDF5::HDF5 INTERFACE IMPORTED)
set_target_properties(HDF5::HDF5 PROPERTIES
INTERFACE_LINK_LIBRARIES "${HDF5_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIRS}"
)
set_property(TARGET HDF5::HDF5 PROPERTY INTERFACE_LINK_LIBRARIES "${HDF5_LIBRARIES}")
set_property(TARGET HDF5::HDF5 PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIRS}")

target_include_directories(HDF5::HDF5 INTERFACE
$<$<BOOL:${hdf5_have_szip}>:${SZIP_INCLUDE_DIR}>
Expand Down
8 changes: 4 additions & 4 deletions cmake/abi_check/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ enable_testing()
add_library(addone OBJECT addone.c)
add_executable(main_f main.f90 $<TARGET_OBJECTS:addone>)
if(CMAKE_Fortran_COMPILER_ID MATCHES "^Intel")
set_target_properties(main_f PROPERTIES LINKER_LANGUAGE Fortran)
set_property(TARGET main_f PROPERTY LINKER_LANGUAGE Fortran)
else()
set_target_properties(main_f PROPERTIES LINKER_LANGUAGE C)
set_property(TARGET main_f PROPERTY LINKER_LANGUAGE C)
endif()
add_test(NAME Fortran_main COMMAND main_f)

add_library(addone_f OBJECT addone.f90)

add_executable(main_c main.c $<TARGET_OBJECTS:addone_f>)
set_target_properties(main_c PROPERTIES LINKER_LANGUAGE C)
set_property(TARGET main_c PROPERTY LINKER_LANGUAGE C)
add_test(NAME C_main COMMAND main_c)

set_tests_properties(Fortran_main C_main PROPERTIES TIMEOUT 10)
set_property(TEST Fortran_main C_main PROPERTY TIMEOUT 10)
6 changes: 2 additions & 4 deletions example/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,5 @@ add_executable(example1 example1.f90)
target_link_libraries(example1 h5fortran::h5fortran MPI::MPI_Fortran MPI::MPI_C)

add_test(NAME Example1 COMMAND example1)
set_tests_properties(Example1 PROPERTIES
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
TIMEOUT 30
)
set_property(TEST Example1 PROPERTY WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_property(TEST Example1 PROPERTY PROPERTY TIMEOUT 30)
2 changes: 1 addition & 1 deletion scripts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ endif()
# --- commence HDF5 build/install
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/libraries.json json)

set_directory_properties(PROPERTIES EP_UPDATE_DISCONNECTED true)
set_property(DIRECTORY PROPERTY EP_UPDATE_DISCONNECTED true)

if(hdf5_parallel)
find_package(MPI COMPONENTS C REQUIRED)
Expand Down
17 changes: 17 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,27 @@ if(NOT DEFINED h5py_ok)
endif()
endif()


cmake_path(SET string_file ${CMAKE_CURRENT_BINARY_DIR}/test_string_py.h5)

add_test(NAME PythonString
COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_string.py ${string_file}
)

set_property(TEST PythonString PROPERTY FIXTURES_SETUP h5str)
set_property(TEST PythonString PROPERTY DISABLED $<NOT:$<BOOL:${h5py_ok}>>)

# --- test subdirs

add_subdirectory(nompi)

if(hdf5_parallel)
add_subdirectory(mpi)
endif()

if(ENABLE_COVERAGE)
setup_target_for_coverage_gcovr_html(
NAME coverage
EXECUTABLE ${CMAKE_CTEST_COMMAND}
)
endif()
Loading

0 comments on commit 8716b7a

Please sign in to comment.