summaryrefslogtreecommitdiffstats
path: root/testpar/API/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'testpar/API/CMakeLists.txt')
-rw-r--r--testpar/API/CMakeLists.txt528
1 files changed, 231 insertions, 297 deletions
diff --git a/testpar/API/CMakeLists.txt b/testpar/API/CMakeLists.txt
index 869a925..818bee6 100644
--- a/testpar/API/CMakeLists.txt
+++ b/testpar/API/CMakeLists.txt
@@ -13,7 +13,7 @@ cmake_minimum_required (VERSION 3.18)
project (HDF5_TEST_PAR_API C)
#------------------------------------------------------------------------------
-# Define for API tests
+# Variables, definitions, etc. for API tests
#------------------------------------------------------------------------------
set (HDF5_API_TESTS
@@ -34,7 +34,9 @@ if (HDF5_TEST_API_ENABLE_ASYNC)
)
endif ()
-# Ported HDF5 tests
+# Extra HDF5 tests to run. Each entry in the list
+# must be a CMake target name for a test executable
+# that was added elsewhere in the project
set (HDF5_API_PAR_TESTS_EXTRA
t_bigio
t_pshutdown
@@ -43,9 +45,12 @@ set (HDF5_API_PAR_TESTS_EXTRA
)
# List of files generated by the HDF5 API tests which
-# should be cleaned up in case the test failed to remove
-# them
+# we should attempt to clean up in case the tests failed
+# to remove them
+# TODO: Run h5delete tool with appropriate env. vars for
+# connectors to remove these files
set (HDF5_API_PAR_TESTS_FILES
+ # TODO
H5_api_test_parallel.h5
H5_api_async_test_parallel.h5
H5_api_async_test_parallel_0.h5
@@ -96,22 +101,23 @@ target_compile_definitions (
PRIVATE
"$<$<CONFIG:Developer>:${HDF5_DEVELOPER_DEFS}>"
)
-if (NOT BUILD_SHARED_LIBS)
- TARGET_C_PROPERTIES (h5_api_test_parallel STATIC)
+# Always prefer linking the shared HDF5 library by default
+if (BUILD_SHARED_LIBS)
+ TARGET_C_PROPERTIES (h5_api_test_parallel SHARED)
target_link_libraries (
h5_api_test_parallel
PRIVATE
- ${HDF5_TEST_LIB_TARGET}
- ${HDF5_LIB_TARGET}
+ ${HDF5_TEST_LIBSH_TARGET}
+ ${HDF5_LIBSH_TARGET}
"$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:MPI::MPI_C>"
)
else ()
- TARGET_C_PROPERTIES (h5_api_test_parallel SHARED)
+ TARGET_C_PROPERTIES (h5_api_test_parallel STATIC)
target_link_libraries (
h5_api_test_parallel
PRIVATE
- ${HDF5_TEST_LIBSH_TARGET}
- ${HDF5_LIBSH_TARGET}
+ ${HDF5_TEST_LIB_TARGET}
+ ${HDF5_LIB_TARGET}
"$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:MPI::MPI_C>"
)
endif ()
@@ -125,120 +131,15 @@ if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_TEST_h5_api_test_parallel_FORMAT h5_api_test_parallel)
endif ()
-if (HDF5_TEST_API_INSTALL)
- install (
- TARGETS
- h5_api_test_parallel
- EXPORT
- ${HDF5_EXPORTED_TARGETS}
- DESTINATION
- ${HDF5_INSTALL_BIN_DIR}
- PERMISSIONS
- OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
- COMPONENT
- tests
- )
-endif ()
-
-#-----------------------------------------------------------------------------
-# Build the ported HDF5 test executables
-#-----------------------------------------------------------------------------
-foreach (api_test_extra ${HDF5_API_PAR_TESTS_EXTRA})
- unset (HDF5_API_PAR_TEST_EXTRA_SRCS)
-
- set (HDF5_API_PAR_TEST_EXTRA_SRCS
- ${HDF5_API_PAR_TEST_EXTRA_SRCS}
- ${CMAKE_CURRENT_SOURCE_DIR}/${api_test_extra}.c
- )
-
- if (${api_test_extra} STREQUAL "testphdf5")
- set (HDF5_API_PAR_TEST_EXTRA_SRCS
- ${HDF5_API_PAR_TEST_EXTRA_SRCS}
- ${CMAKE_CURRENT_SOURCE_DIR}/t_ph5basic.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_file.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_dset.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_mdset.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_coll_chunk.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_span_tree.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_prop.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_file_image.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_coll_md_read.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_chunk_alloc.c
- ${CMAKE_CURRENT_SOURCE_DIR}/t_filter_read.c
- )
- endif ()
-
- add_executable (h5_api_test_parallel_${api_test_extra} ${HDF5_API_PAR_TEST_EXTRA_SRCS})
- target_include_directories (
- h5_api_test_parallel_${api_test_extra}
- PRIVATE
- "${HDF5_SRC_INCLUDE_DIRS}"
- "${HDF5_TEST_PAR_DIR}"
- "${HDF5_TEST_API_SRC_DIR}"
- "${HDF5_TEST_API_PAR_SRC_DIR}"
- "${HDF5_SRC_BINARY_DIR}"
- "${HDF5_TEST_BINARY_DIR}"
- "$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>"
- )
- target_compile_options (
- h5_api_test_parallel_${api_test_extra}
- PRIVATE
- "${HDF5_CMAKE_C_FLAGS}"
- )
- target_compile_definitions (
- h5_api_test_parallel_${api_test_extra}
- PRIVATE
- "$<$<CONFIG:Developer>:${HDF5_DEVELOPER_DEFS}>"
- )
- if (NOT BUILD_SHARED_LIBS)
- TARGET_C_PROPERTIES (h5_api_test_parallel_${api_test_extra} STATIC)
- target_link_libraries (
- h5_api_test_parallel_${api_test_extra}
- PRIVATE
- ${HDF5_TEST_LIB_TARGET}
- ${HDF5_LIB_TARGET}
- "$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:MPI::MPI_C>"
- )
- else ()
- TARGET_C_PROPERTIES (h5_api_test_parallel_${api_test_extra} SHARED)
- target_link_libraries (
- h5_api_test_parallel_${api_test_extra}
- PRIVATE
- ${HDF5_TEST_LIBSH_TARGET}
- ${HDF5_LIBSH_TARGET}
- "$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:MPI::MPI_C>"
- )
- endif ()
- set_target_properties (
- h5_api_test_parallel_${api_test_extra}
- PROPERTIES
- FOLDER test/par/API
- )
- # Add Target to clang-format
- if (HDF5_ENABLE_FORMATTERS)
- clang_format (HDF5_TEST_h5_api_test_parallel_${api_test_extra}_FORMAT h5_api_test_parallel_${api_test_extra})
- endif ()
-
- if (HDF5_TEST_API_INSTALL)
- install (
- TARGETS
- h5_api_test_parallel_${api_test_extra}
- EXPORT
- ${HDF5_EXPORTED_TARGETS}
- DESTINATION
- ${HDF5_INSTALL_BIN_DIR}
- PERMISSIONS
- OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
- COMPONENT
- tests
- )
- endif ()
-endforeach ()
-
#-----------------------------------------------------------------------------
# Add tests if HDF5 parallel testing is enabled
#-----------------------------------------------------------------------------
if (HDF5_TEST_PARALLEL)
+ # Setup working directories for any external VOL connectors to be tested
+ foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS})
+ file (MAKE_DIRECTORY "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}")
+ endforeach ()
+
if (HDF5_TEST_API_ENABLE_DRIVER)
if ("${HDF5_TEST_API_SERVER}" STREQUAL "")
message (FATAL_ERROR "Please set HDF5_TEST_API_SERVER to point to a server executable for the test driver program.")
@@ -259,6 +160,7 @@ if (HDF5_TEST_PARALLEL)
)
endif ()
+ # Add main API tests to test suite
set (last_api_test "")
foreach (api_test ${HDF5_API_TESTS})
add_test (
@@ -275,17 +177,6 @@ if (HDF5_TEST_PARALLEL)
set (last_api_test "h5_api_test_parallel_${api_test}")
endforeach ()
- foreach (hdf5_test ${HDF5_API_PAR_TESTS_EXTRA})
- add_test (
- NAME "h5_api_test_parallel_${hdf5_test}"
- COMMAND $<TARGET_FILE:h5_api_test_driver>
- --server ${HDF5_TEST_API_SERVER}
- --client $<TARGET_FILE:h5_api_test_parallel_${hdf5_test}>
- --serial
- ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
- )
- endforeach ()
-
# Hook external tests to same test suite
foreach (ext_api_test ${HDF5_API_EXT_PARALLEL_TESTS})
add_test (
@@ -298,97 +189,103 @@ if (HDF5_TEST_PARALLEL)
)
endforeach ()
- # Add tests for each external VOL connector that was built
- foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS})
- # Determine whether connector should be tested with parallel tests
- get_target_property (vol_test_parallel "${external_vol_tgt}" HDF5_VOL_TEST_PARALLEL)
- if (${vol_test_parallel})
- # Determine environment variables that need to be set for testing
- set (vol_test_env "")
- set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
-
- get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME)
- list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}")
-
- get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS)
- foreach (lib_target ${vol_lib_targets})
- get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY)
- if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND"
- AND NOT "${lib_target_output_dir}" STREQUAL ""
- AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
- set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}")
- endif ()
- endforeach ()
-
- list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}")
-
- # Add main API tests
- set (last_api_test "")
- foreach (api_test ${HDF5_API_TESTS})
- add_test (
- NAME "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
- COMMAND $<TARGET_FILE:h5_api_test_driver>
- --server ${HDF5_TEST_API_SERVER}
- --client $<TARGET_FILE:h5_api_test_parallel> "${api_test}"
- --serial
- ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
- )
- set_tests_properties (
- "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
- PROPERTIES
- ENVIRONMENT
- "${vol_test_env}"
- WORKING_DIRECTORY
- "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
- DEPENDS
- "${last_api_test}"
- )
-
- set (last_api_test "${external_vol_tgt}-h5_api_test_parallel_${api_test}")
- endforeach ()
-
- # Add any extra HDF5 tests
- foreach (hdf5_test ${HDF5_API_PAR_TESTS_EXTRA})
- add_test (
- NAME "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
- COMMAND $<TARGET_FILE:h5_api_test_driver>
- --server ${HDF5_TEST_API_SERVER}
- --client $<TARGET_FILE:h5_api_test_parallel_${hdf5_test}>
- --serial
- ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
- )
- set_tests_properties (
- "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
- PROPERTIES
- ENVIRONMENT
- "${vol_test_env}"
- WORKING_DIRECTORY
- "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
- )
- endforeach ()
-
- # Hook external tests to same test suite
- foreach (ext_api_test ${HDF5_API_EXT_PARALLEL_TESTS})
- add_test (
- NAME "${external_vol_tgt}-h5_api_ext_test_parallel_${ext_api_test}"
- COMMAND $<TARGET_FILE:h5_api_test_driver>
- --server ${HDF5_TEST_API_SERVER}
- --client $<TARGET_FILE:${ext_api_test}>
- --serial
- ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
- )
- set_tests_properties (
- "${external_vol_tgt}-h5_api_ext_test_parallel_${ext_api_test}"
- PROPERTIES
- ENVIRONMENT
- "${vol_test_env}"
- WORKING_DIRECTORY
- "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
- )
- endforeach ()
- endif ()
- endforeach ()
+ if (BUILD_SHARED_LIBS)
+ # Add tests for each external VOL connector that was built,
+ # but only if executables that were linked to a shared HDF5
+ # library are available, since static executables will cause
+ # issues when VOL connectors are loaded dynamically
+ foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS})
+ # Determine whether connector should be tested with parallel tests
+ get_target_property (vol_test_parallel "${external_vol_tgt}" HDF5_VOL_TEST_PARALLEL)
+ if (${vol_test_parallel})
+ # Determine environment variables that need to be set for testing
+ set (vol_test_env "")
+ set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
+
+ get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME)
+ list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}")
+
+ get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS)
+ foreach (lib_target ${vol_lib_targets})
+ get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY)
+ if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND"
+ AND NOT "${lib_target_output_dir}" STREQUAL ""
+ AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
+ set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}")
+ endif ()
+ endforeach ()
+
+ list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}")
+
+ # Add main API tests to test suite
+ set (last_api_test "")
+ foreach (api_test ${HDF5_API_TESTS})
+ add_test (
+ NAME "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
+ COMMAND $<TARGET_FILE:h5_api_test_driver>
+ --server ${HDF5_TEST_API_SERVER}
+ --client $<TARGET_FILE:h5_api_test_parallel> "${api_test}"
+ --serial
+ ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
+ )
+ set_tests_properties (
+ "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
+ PROPERTIES
+ ENVIRONMENT
+ "${vol_test_env}"
+ WORKING_DIRECTORY
+ "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
+ DEPENDS
+ "${last_api_test}"
+ )
+
+ set (last_api_test "${external_vol_tgt}-h5_api_test_parallel_${api_test}")
+ endforeach ()
+
+ # Add any extra HDF5 tests to test suite
+ foreach (hdf5_test ${HDF5_API_PAR_TESTS_EXTRA})
+ add_test (
+ NAME "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
+ COMMAND $<TARGET_FILE:h5_api_test_driver>
+ --server ${HDF5_TEST_API_SERVER}
+ --client $<TARGET_FILE:${hdf5_test}>
+ --serial
+ ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
+ )
+ set_tests_properties (
+ "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
+ PROPERTIES
+ ENVIRONMENT
+ "${vol_test_env}"
+ WORKING_DIRECTORY
+ "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
+ )
+ endforeach ()
+
+ # Hook external tests to same test suite
+ foreach (ext_api_test ${HDF5_API_EXT_PARALLEL_TESTS})
+ add_test (
+ NAME "${external_vol_tgt}-h5_api_ext_test_parallel_${ext_api_test}"
+ COMMAND $<TARGET_FILE:h5_api_test_driver>
+ --server ${HDF5_TEST_API_SERVER}
+ --client $<TARGET_FILE:${ext_api_test}>
+ --serial
+ ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
+ )
+ set_tests_properties (
+ "${external_vol_tgt}-h5_api_ext_test_parallel_${ext_api_test}"
+ PROPERTIES
+ ENVIRONMENT
+ "${vol_test_env}"
+ WORKING_DIRECTORY
+ "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
+ )
+ endforeach ()
+ endif ()
+ endforeach ()
+ endif ()
else ()
+ # Add main API tests to test suite
set (last_api_test "")
foreach (api_test ${HDF5_API_TESTS})
add_test (
@@ -403,80 +300,117 @@ if (HDF5_TEST_PARALLEL)
set (last_api_test "h5_api_test_parallel_${api_test}")
endforeach ()
- foreach (hdf5_test ${HDF5_API_PAR_TESTS_EXTRA})
- add_test (
- NAME "h5_api_test_parallel_${hdf5_test}"
- COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
- ${MPIEXEC_PREFLAGS} $<TARGET_FILE:h5_api_test_parallel_${hdf5_test}>
- ${MPIEXEC_POSTFLAGS}
- )
- endforeach ()
-
- # Add tests for each external VOL connector that was built
- foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS})
- # Determine whether connector should be tested with parallel tests
- get_target_property (vol_test_parallel "${external_vol_tgt}" HDF5_VOL_TEST_PARALLEL)
- if (${vol_test_parallel})
- # Determine environment variables that need to be set for testing
- set (vol_test_env "")
- set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
-
- get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME)
- list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}")
-
- get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS)
- foreach (lib_target ${vol_lib_targets})
- get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY)
- if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND"
- AND NOT "${lib_target_output_dir}" STREQUAL ""
- AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
- set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}")
- endif ()
- endforeach ()
-
- list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}")
-
- # Add main API tests
- set (last_api_test "")
- foreach (api_test ${HDF5_API_TESTS})
- add_test (
- NAME "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
- COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
- ${MPIEXEC_PREFLAGS} $<TARGET_FILE:h5_api_test_parallel> "${api_test}"
- ${MPIEXEC_POSTFLAGS}
- )
- set_tests_properties (
- "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
- PROPERTIES
- ENVIRONMENT
- "${vol_test_env}"
- WORKING_DIRECTORY
- "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
- DEPENDS
- "${last_api_test}"
- )
-
- set (last_api_test "${external_vol_tgt}-h5_api_test_parallel_${api_test}")
- endforeach ()
-
- # Add any extra HDF5 tests
- foreach (hdf5_test ${HDF5_API_PAR_TESTS_EXTRA})
- add_test (
- NAME "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
- COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
- ${MPIEXEC_PREFLAGS} $<TARGET_FILE:h5_api_test_parallel_${hdf5_test}>
- ${MPIEXEC_POSTFLAGS}
- )
- set_tests_properties (
- "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
- PROPERTIES
- ENVIRONMENT
- "${vol_test_env}"
- WORKING_DIRECTORY
- "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
- )
- endforeach ()
- endif ()
- endforeach ()
+ if (BUILD_SHARED_LIBS)
+ # Add tests for each external VOL connector that was built,
+ # but only if executables that were linked to a shared HDF5
+ # library are available, since static executables will cause
+ # issues when VOL connectors are loaded dynamically
+ foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS})
+ # Determine whether connector should be tested with parallel tests
+ get_target_property (vol_test_parallel "${external_vol_tgt}" HDF5_VOL_TEST_PARALLEL)
+ if (${vol_test_parallel})
+ # Determine environment variables that need to be set for testing
+ set (vol_test_env "")
+ set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
+
+ get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME)
+ list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}")
+
+ get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS)
+ foreach (lib_target ${vol_lib_targets})
+ get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY)
+ if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND"
+ AND NOT "${lib_target_output_dir}" STREQUAL ""
+ AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}")
+ set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}")
+ endif ()
+ endforeach ()
+
+ list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}")
+
+ # Add main API tests to test suite
+ set (last_api_test "")
+ foreach (api_test ${HDF5_API_TESTS})
+ add_test (
+ NAME "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
+ COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
+ ${MPIEXEC_PREFLAGS} $<TARGET_FILE:h5_api_test_parallel> "${api_test}"
+ ${MPIEXEC_POSTFLAGS}
+ )
+ set_tests_properties (
+ "${external_vol_tgt}-h5_api_test_parallel_${api_test}"
+ PROPERTIES
+ ENVIRONMENT
+ "${vol_test_env}"
+ WORKING_DIRECTORY
+ "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
+ DEPENDS
+ "${last_api_test}"
+ )
+
+ set (last_api_test "${external_vol_tgt}-h5_api_test_parallel_${api_test}")
+ endforeach ()
+
+ # Add any extra HDF5 tests to test suite
+ foreach (hdf5_test ${HDF5_API_PAR_TESTS_EXTRA})
+ add_test (
+ NAME "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
+ COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
+ ${MPIEXEC_PREFLAGS} $<TARGET_FILE:${hdf5_test}>
+ ${MPIEXEC_POSTFLAGS}
+ )
+ set_tests_properties (
+ "${external_vol_tgt}-h5_api_test_parallel_${hdf5_test}"
+ PROPERTIES
+ ENVIRONMENT
+ "${vol_test_env}"
+ WORKING_DIRECTORY
+ "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}"
+ )
+ endforeach ()
+ endif ()
+ endforeach ()
+ endif ()
endif ()
endif ()
+
+#-----------------------------------------------------------------------------
+# Install the main API test executable and any
+# extra HDF5 tests if requested
+#-----------------------------------------------------------------------------
+if (HDF5_EXPORTED_TARGETS AND HDF5_TEST_API_INSTALL)
+ install (
+ TARGETS
+ h5_api_test_parallel
+ EXPORT
+ ${HDF5_EXPORTED_TARGETS}
+ DESTINATION
+ ${HDF5_INSTALL_BIN_DIR}
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ COMPONENT
+ tests
+ )
+
+ foreach (api_test_extra ${HDF5_API_PAR_TESTS_EXTRA})
+ if (TARGET ${api_test_extra})
+ set_target_properties (
+ ${api_test_extra}
+ PROPERTIES
+ OUTPUT_NAME "h5_api_test_parallel_${api_test_extra}"
+ )
+ install (
+ TARGETS
+ ${api_test_extra}
+ EXPORT
+ ${HDF5_EXPORTED_TARGETS}
+ DESTINATION
+ ${HDF5_INSTALL_BIN_DIR}
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ COMPONENT
+ tests
+ )
+ endif ()
+ endforeach ()
+endif ()