mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
Build test generator programs against shared libraries, if available, by default. Otherwise, build them against static libraries. If HDF5_BUILD_STATIC_TOOLS is set to ON, the tools test generator programs will be built against static libraries even if shared libraries are available.
69 lines
3.3 KiB
CMake
69 lines
3.3 KiB
CMake
cmake_minimum_required (VERSION 3.18)
|
|
project (HDF5_TOOLS_TEST_H5DIFF C)
|
|
|
|
# --------------------------------------------------------------------
|
|
# Add the h5diff and test executables
|
|
# --------------------------------------------------------------------
|
|
if (HDF5_BUILD_GENERATORS)
|
|
add_executable (h5diffgentest ${HDF5_TOOLS_TEST_H5DIFF_SOURCE_DIR}/h5diffgentest.c)
|
|
target_include_directories (h5diffgentest PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
|
|
if (HDF5_BUILD_STATIC_TOOLS)
|
|
TARGET_C_PROPERTIES (h5diffgentest STATIC)
|
|
target_link_libraries (h5diffgentest PRIVATE ${HDF5_LIB_TARGET})
|
|
else ()
|
|
TARGET_C_PROPERTIES (h5diffgentest SHARED)
|
|
# Link to HDF5_REQUIRED_LIBRARIES to include the math lib if necessary
|
|
target_link_libraries (h5diffgentest PRIVATE ${HDF5_LIBSH_TARGET} ${HDF5_REQUIRED_LIBRARIES})
|
|
endif ()
|
|
set_target_properties (h5diffgentest PROPERTIES FOLDER generator/tools)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Add Target to clang-format
|
|
#-----------------------------------------------------------------------------
|
|
if (HDF5_ENABLE_FORMATTERS)
|
|
clang_format (HDF5_TOOLS_TEST_H5DIFF_FORMAT h5diffgentest)
|
|
endif ()
|
|
|
|
#add_test (NAME h5diffgentest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diffgentest>)
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# If plugin library tests can be tested
|
|
#-----------------------------------------------------------------------------
|
|
if (BUILD_SHARED_LIBS)
|
|
set (H5DIFF_TOOL_PLUGIN_LIB_CORENAME "dynlibdiff")
|
|
set (H5DIFF_TOOL_PLUGIN_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${H5DIFF_TOOL_PLUGIN_LIB_CORENAME}")
|
|
set (H5DIFF_TOOL_PLUGIN_LIB_TARGET ${H5DIFF_TOOL_PLUGIN_LIB_CORENAME})
|
|
|
|
add_library (${H5DIFF_TOOL_PLUGIN_LIB_TARGET} SHARED dynlib_diff.c)
|
|
target_include_directories (${H5DIFF_TOOL_PLUGIN_LIB_TARGET} PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
|
|
TARGET_C_PROPERTIES (${H5DIFF_TOOL_PLUGIN_LIB_TARGET} SHARED)
|
|
target_link_libraries (${H5DIFF_TOOL_PLUGIN_LIB_TARGET} PRIVATE ${HDF5_LIBSH_TARGET})
|
|
H5_SET_LIB_OPTIONS (${H5DIFF_TOOL_PLUGIN_LIB_TARGET} ${H5DIFF_TOOL_PLUGIN_LIB_NAME} SHARED "LIB")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Add Target to clang-format
|
|
#-----------------------------------------------------------------------------
|
|
if (HDF5_ENABLE_FORMATTERS)
|
|
clang_format (HDF5_TOOLS_TEST_H5DIFF_PLUGIN_FORMAT ${H5DIFF_TOOL_PLUGIN_LIB_TARGET})
|
|
endif ()
|
|
|
|
# make plugins dir
|
|
file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins")
|
|
#-----------------------------------------------------------------------------
|
|
# Copy plugin library to a plugins folder
|
|
#-----------------------------------------------------------------------------
|
|
add_custom_command (
|
|
TARGET ${H5DIFF_TOOL_PLUGIN_LIB_TARGET}
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND}
|
|
ARGS -E copy_if_different
|
|
"$<TARGET_FILE:${H5DIFF_TOOL_PLUGIN_LIB_TARGET}>"
|
|
"${CMAKE_BINARY_DIR}/plugins/$<TARGET_FILE_NAME:${H5DIFF_TOOL_PLUGIN_LIB_TARGET}>"
|
|
)
|
|
endif ()
|
|
|
|
if (HDF5_TEST_TOOLS)
|
|
include (CMakeTests.cmake)
|
|
endif ()
|