diff options
author | Allen Byrne <50328838+byrnHDF@users.noreply.github.com> | 2023-12-14 18:50:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-14 18:50:30 (GMT) |
commit | 6f2d22d86e6a265535efe22a8bb3872b3b32a52b (patch) | |
tree | f79e0d9778b13466282c159dfec67d31faba5b8d /HDF5Examples | |
parent | 184445f4a45c602887ca0624c5295a7b6fea2d21 (diff) | |
download | hdf5-6f2d22d86e6a265535efe22a8bb3872b3b32a52b.zip hdf5-6f2d22d86e6a265535efe22a8bb3872b3b32a52b.tar.gz hdf5-6f2d22d86e6a265535efe22a8bb3872b3b32a52b.tar.bz2 |
Add variable option syncing for examples (#3885)
Diffstat (limited to 'HDF5Examples')
20 files changed, 348 insertions, 157 deletions
diff --git a/HDF5Examples/C/H5D/CMakeLists.txt b/HDF5Examples/C/H5D/CMakeLists.txt index 5df56c1..68cbd23 100644 --- a/HDF5Examples/C/H5D/CMakeLists.txt +++ b/HDF5Examples/C/H5D/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_C_H5D) +project (HDF5Examples_C_H5D C) #----------------------------------------------------------------------------- # Define Sources diff --git a/HDF5Examples/C/H5FLT/CMakeLists.txt b/HDF5Examples/C/H5FLT/CMakeLists.txt index eb386b4..482d65b 100644 --- a/HDF5Examples/C/H5FLT/CMakeLists.txt +++ b/HDF5Examples/C/H5FLT/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_C_H5FLT) +project (HDF5Examples_C_H5FLT C) set (dyn_examples) @@ -190,6 +190,8 @@ if (H5EX_BUILD_TESTING) -D "TEST_MASK_ERROR=true" -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" + -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" + -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_SKIP_COMPARE=1" -D "TEST_ERRREF=1" -D "GREP_ERRREF=Filter present but encoding disabled" @@ -214,6 +216,8 @@ if (H5EX_BUILD_TESTING) -D "TEST_EXPECT=0" -D "TEST_OUTPUT=${testname}.out" -D "TEST_REFERENCE=${testname}.tst" + -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" + -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" ) @@ -233,6 +237,8 @@ if (H5EX_BUILD_TESTING) -D "TEST_FILTER_REPLACE=PARAMS { \\1 XXXX \\2 }\n" -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" + -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" + -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" ) @@ -248,6 +254,8 @@ if (H5EX_BUILD_TESTING) -D "TEST_FILTER_REPLACE:STRING=PARAMS { XXXX }" -D "TEST_EXPECT=0" -D "TEST_REFERENCE=${testname}.ddl" + -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" + -D "TEST_ENV_VALUE=${H5EX_HDF5_PLUGIN_PATH}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/runTest.cmake" ) diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl index 7d73913..a8e66c0 100644 --- a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl +++ b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl @@ -10,7 +10,7 @@ GROUP "/" { FILTERS { USER_DEFINED_FILTER { FILTER_ID 32013 - COMMENT H5Z-ZFP-1.0.1 (ZFP-0.5.5) github.com/LLNL/H5Z-ZFP + COMMENT H5Z-ZFP-1.1.1 (ZFP-1.0.0) github.com/LLNL/H5Z-ZFP PARAMS { XXXX } } } diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.tst b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.tst index 0a1ba90..dd7197c 100644 --- a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.tst +++ b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.tst @@ -4,8 +4,8 @@ zfp filter is available for encoding and decoding. ....Close the file and reopen for reading ........ Filter info is available from the dataset creation property Filter identifier is 32013 - Number of parameters is 6 with the value 5570817 - To find more about the filter check H5Z-ZFP-1.0.1 (ZFP-0.5.5) github.com/LLNL/H5Z-ZFP + Number of parameters is 6 with the value 268456209 + To find more about the filter check H5Z-ZFP-1.1.1 (ZFP-1.0.0) github.com/LLNL/H5Z-ZFP ....Reading zfp compressed data ................ Maximum value in DS1 is 1890.0000 zfp filter is available now since H5Dread triggered loading of the filter. diff --git a/HDF5Examples/C/H5G/CMakeLists.txt b/HDF5Examples/C/H5G/CMakeLists.txt index afef556..ffbc614 100644 --- a/HDF5Examples/C/H5G/CMakeLists.txt +++ b/HDF5Examples/C/H5G/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_C_H5G) +project (HDF5Examples_C_H5G C) #----------------------------------------------------------------------------- # Define Sources diff --git a/HDF5Examples/C/H5T/CMakeLists.txt b/HDF5Examples/C/H5T/CMakeLists.txt index 4dcf6cb..0f8884b 100644 --- a/HDF5Examples/C/H5T/CMakeLists.txt +++ b/HDF5Examples/C/H5T/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_C_H5T) +project (HDF5Examples_C_H5T C) #----------------------------------------------------------------------------- # Define Sources diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt index b5fb3e2..e944b9e 100644 --- a/HDF5Examples/CMakeLists.txt +++ b/HDF5Examples/CMakeLists.txt @@ -1,11 +1,19 @@ cmake_minimum_required (VERSION 3.12) -project (H5EXAMPLES C CXX) +project (H5EXAMPLES C) + +#----------------------------------------------------------------------------- +# Define some CMake variables for use later in the project +#----------------------------------------------------------------------------- +set (HDF5EX_C_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/C) +set (HDF5EX_F90_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/FORTRAN) +set (HDF5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA) +set (HDF5EX_RESOURCES_DIR ${H5EXAMPLES_SOURCE_DIR}/config/cmake) #----------------------------------------------------------------------------- # Basic HDF5Examples stuff here #----------------------------------------------------------------------------- -include (${H5EXAMPLES_SOURCE_DIR}/config/cmake/HDFMacros.cmake) -include (${H5EXAMPLES_SOURCE_DIR}/config/cmake/HDFExampleMacros.cmake) +include (${HDF5EX_RESOURCES_DIR}/HDFMacros.cmake) +include (${HDF5EX_RESOURCES_DIR}/HDFExampleMacros.cmake) set (CMAKE_JAVA_INCLUDE_PATH "") SET_HDF_BUILD_TYPE() @@ -13,13 +21,6 @@ SET_HDF_BUILD_TYPE() BASIC_SETTINGS (EXAMPLES) #----------------------------------------------------------------------------- -# Define some CMake variables for use later in the project -#----------------------------------------------------------------------------- -set (HDF5EX_C_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/C) -set (HDF5EX_F90_SRC_DIR ${H5EXAMPLES_SOURCE_DIR}/FORTRAN) -set (HDF5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA) - -#----------------------------------------------------------------------------- # HDF5 support #----------------------------------------------------------------------------- HDF5_SUPPORT (TRUE) @@ -37,7 +38,7 @@ if(NOT DEFINED _h5public_h_contents) string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$" "\\1" H5_VERS_MAJOR ${_h5public_h_contents}) string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$" - "\\1" H5_VERS_MINOR ${_h5public_h_contents}) + "\\1" H5_VERS_MINOR ${_h5public_h_contents}) string (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$" "\\1" H5_VERS_RELEASE ${_h5public_h_contents}) string (REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\"([0-9A-Za-z._-]*)\".*$" @@ -119,11 +120,6 @@ if (H5EX_BUILD_TESTING) configure_file (${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY) endif () -#----------------------------------------------------------------------------- -# Build examples -#----------------------------------------------------------------------------- -add_subdirectory (C) - if (${H5_LIBVER_DIR} GREATER 16) #----------------------------------------------------------------------------- # Option to build Fortran examples @@ -136,19 +132,22 @@ if (${H5_LIBVER_DIR} GREATER 16) if (EXISTS "${H5EXAMPLES_SOURCE_DIR}/FORTRAN" AND IS_DIRECTORY "${H5EXAMPLES_SOURCE_DIR}/FORTRAN") option (HDF_BUILD_FORTRAN "Build FORTRAN support" OFF) if (HDF_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN) - set (LINK_Fortran_LIBS ${H5EX_HDF5_LINK_LIBS}) + set (H5EX_LINK_Fortran_LIBS ${H5EX_HDF5_LINK_LIBS}) # Parallel IO usage requires MPI to be Linked and Included if (H5_HAVE_PARALLEL) - set (LINK_Fortran_LIBS ${LINK_Fortran_LIBS} ${MPI_Fortran_LIBRARIES}) + set (H5EX_LINK_Fortran_LIBS ${H5EX_LINK_Fortran_LIBS} ${MPI_Fortran_LIBRARIES}) if (MPI_Fortran_LINK_FLAGS) set (CMAKE_Fortran_EXE_LINKER_FLAGS "${MPI_Fortran_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") endif () endif () - add_subdirectory (FORTRAN) configure_file (${HDF5EX_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5D/h5_version.h @ONLY) + else () + set (HDF_BUILD_FORTRAN OFF CACHE BOOL "Build examples FORTRAN support" FORCE) endif () + else () + set (HDF_BUILD_FORTRAN OFF CACHE BOOL "Build examples FORTRAN support" FORCE) endif () if (${H5_LIBVER_DIR} GREATER 18) @@ -157,16 +156,49 @@ if (${H5_LIBVER_DIR} GREATER 16) #----------------------------------------------------------------------------- if (EXISTS "${H5EXAMPLES_SOURCE_DIR}/JAVA" AND IS_DIRECTORY "${H5EXAMPLES_SOURCE_DIR}/JAVA") option (HDF_BUILD_JAVA "Build JAVA support" OFF) - if (HDF_BUILD_JAVA AND HDF5_BUILD_JAVA) - add_subdirectory (JAVA) - endif () + else () + set (HDF_BUILD_JAVA OFF CACHE BOOL "Build examples JAVA support" FORCE) endif () + else () + set (HDF_BUILD_JAVA OFF CACHE BOOL "Build examples JAVA support" FORCE) endif () #----------------------------------------------------------------------------- # Option to build filter examples #----------------------------------------------------------------------------- - if (EXISTS "${H5EXAMPLES_SOURCE_DIR}/C/H5F" AND IS_DIRECTORY "${H5EXAMPLES_SOURCE_DIR}/C/H5F") + if (EXISTS "${H5EXAMPLES_SOURCE_DIR}/C/H5FLT" AND IS_DIRECTORY "${H5EXAMPLES_SOURCE_DIR}/C/H5FLT") option (HDF_BUILD_FILTERS "Test filter support" OFF) + if (HDF_BUILD_FILTERS AND HDF5_ENABLE_PLUGIN_SUPPORT) + if(DEFINED ENV{HDF5_PLUGIN_PATH}) + message (STATUS "ENV PATH=$ENV{HDF5_PLUGIN_PATH}") + set (H5EX_HDF5_PLUGIN_PATH $ENV{HDF5_PLUGIN_PATH}) + else () + if(NOT DEFINED H5EX_HDF5_PLUGIN_PATH) + message (STATUS "LIBRARY PATH=${HDF5_LIBRARY_PATH}/plugin") + set (H5EX_HDF5_PLUGIN_PATH ${HDF5_LIBRARY_PATH}/plugin) + endif () + endif () + message (STATUS "H5EX_HDF5_PLUGIN_PATH=${H5EX_HDF5_PLUGIN_PATH}") + else () + set (HDF_BUILD_FILTERS OFF CACHE BOOL "Build examples PLUGIN filter support" FORCE) + endif () + else () + set (HDF_BUILD_FILTERS OFF CACHE BOOL "Build examples PLUGIN filter support" FORCE) endif () +else () + set (HDF_BUILD_FORTRAN OFF} CACHE BOOL "Build examples FORTRAN support" FORCE) + set (HDF_BUILD_JAVA OFF CACHE BOOL "Build examples JAVA support" FORCE) + set (HDF_BUILD_FILTERS OFF CACHE BOOL "Build examples PLUGIN filter support" FORCE) endif () + +#----------------------------------------------------------------------------- +# Build examples +#----------------------------------------------------------------------------- +add_subdirectory (C) +if (HDF_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN) + add_subdirectory (FORTRAN) +endif () +if (HDF_BUILD_JAVA AND HDF5_BUILD_JAVA) + add_subdirectory (JAVA) +endif () + diff --git a/HDF5Examples/FORTRAN/CMakeLists.txt b/HDF5Examples/FORTRAN/CMakeLists.txt index 72582fe..0f05a0e 100644 --- a/HDF5Examples/FORTRAN/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -PROJECT (HDF5Examples_F90 C CXX Fortran) +PROJECT (HDF5Examples_F90 Fortran) #----------------------------------------------------------------------------- # Build the Fortran Examples diff --git a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt index dbc126c..5369a49 100644 --- a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_FORTRAN_H5D C CXX Fortran) +project (HDF5Examples_FORTRAN_H5D Fortran) # -------------------------------------------------------------------- # Notes: When creating examples they should be prefixed @@ -10,7 +10,7 @@ project (HDF5Examples_FORTRAN_H5D C CXX Fortran) # Setup include Directories #----------------------------------------------------------------------------- INCLUDE_DIRECTORIES ( - ${CMAKE_Fortran_MODULE_DIRECTORY} + ${CMAKE_Fortran_MODULE_DIRECTORY}${HDF_MOD_EXT} ${PROJECT_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ) @@ -35,7 +35,7 @@ foreach (example_name ${common_examples}) if (H5_HAVE_PARALLEL) target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_Fortran_INCLUDE_DIRS}) endif () - target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${LINK_Fortran_LIBS}) + target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) set_target_properties (${EXAMPLE_VARNAME}_f90_${example_name} PROPERTIES LINKER_LANGUAGE Fortran) if (H5EX_BUILD_TESTING) if (${example_name} STREQUAL "h5ex_d_alloc") @@ -80,7 +80,7 @@ if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.10") if (H5_HAVE_PARALLEL) target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_C_INCLUDE_DIRS}) endif () - target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_HDF5_LINK_LIBS}) + target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) if (H5EX_BUILD_TESTING) add_custom_command ( TARGET ${EXAMPLE_VARNAME}_f90_${example_name} diff --git a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt index d2587e0..508283c 100644 --- a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_FORTRAN_H5G C CXX Fortran) +project (HDF5Examples_FORTRAN_H5G Fortran) # -------------------------------------------------------------------- # Notes: When creating examples they should be prefixed @@ -10,7 +10,7 @@ project (HDF5Examples_FORTRAN_H5G C CXX Fortran) # Setup include Directories #----------------------------------------------------------------------------- INCLUDE_DIRECTORIES ( - ${CMAKE_Fortran_MODULE_DIRECTORY} + ${CMAKE_Fortran_MODULE_DIRECTORY}${HDF_MOD_EXT} ${PROJECT_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ) @@ -35,7 +35,7 @@ foreach (example_name ${common_examples}) if (H5_HAVE_PARALLEL) target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_Fortran_INCLUDE_DIRS}) endif () - target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${LINK_Fortran_LIBS}) + target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) set_target_properties (${EXAMPLE_VARNAME}_f90_${example_name} PROPERTIES LINKER_LANGUAGE Fortran) if (H5EX_BUILD_TESTING) if (NOT ${example_name} STREQUAL "h5ex_g_create" AND NOT ${example_name} STREQUAL "h5ex_g_compact") @@ -64,7 +64,7 @@ endforeach () # if (H5_HAVE_PARALLEL) # target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_C_INCLUDE_DIRS}) # endif () -# target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_HDF5_LINK_LIBS}) +# target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) # if (H5EX_BUILD_TESTING) # add_custom_command ( # TARGET ${EXAMPLE_VARNAME}_f90_${example_name} diff --git a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt index 84c9641..792caaf 100644 --- a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_FORTRAN_H5PAR C CXX Fortran) +project (HDF5Examples_FORTRAN_H5PAR Fortran) # -------------------------------------------------------------------- # Notes: When creating examples they should be prefixed @@ -10,7 +10,7 @@ project (HDF5Examples_FORTRAN_H5PAR C CXX Fortran) # Setup include Directories #----------------------------------------------------------------------------- INCLUDE_DIRECTORIES ( - ${CMAKE_Fortran_MODULE_DIRECTORY} + ${CMAKE_Fortran_MODULE_DIRECTORY}${HDF_MOD_EXT} ${PROJECT_BINARY_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ) @@ -33,7 +33,7 @@ foreach (example_name ${examples}) "$<$<BOOL:${${EXAMPLE_VARNAME}_USE_116_API}>:-DH5_USE_116_API>" ) target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_Fortran_INCLUDE_DIRS}) - target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${LINK_Fortran_LIBS}) + target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) set_target_properties (${EXAMPLE_VARNAME}_f90_${example_name} PROPERTIES LINKER_LANGUAGE Fortran) endforeach () @@ -59,8 +59,8 @@ if (H5EX_BUILD_TESTING) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${${EXAMPLE_PACKAGE_NAME}_RESOURCES_DIR}/grepTest.cmake" ) - set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall) - set (last_test "${EXAMPLE_VARNAME}_${testname}") + set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall) + set (last_test "${EXAMPLE_VARNAME}_f90_${testname}") endmacro () # Ensure that 24 is a multiple of the number of processes. diff --git a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt index 67a3ca3..262adf8 100644 --- a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt @@ -1,5 +1,14 @@ cmake_minimum_required (VERSION 3.12) -project (HDF5Examples_FORTRAN_H5T C CXX Fortran) +project (HDF5Examples_FORTRAN_H5T Fortran) + +#----------------------------------------------------------------------------- +# Setup include Directories +#----------------------------------------------------------------------------- +INCLUDE_DIRECTORIES ( + ${CMAKE_Fortran_MODULE_DIRECTORY}${HDF_MOD_EXT} + ${PROJECT_BINARY_DIR} + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} +) #----------------------------------------------------------------------------- # Define Sources @@ -21,7 +30,7 @@ include (Fortran_sourcefiles.cmake) if (H5_HAVE_PARALLEL) target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_Fortran_INCLUDE_DIRS}) endif () - target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${LINK_Fortran_LIBS}) + target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) set_target_properties (${EXAMPLE_VARNAME}_f90_${example_name} PROPERTIES LINKER_LANGUAGE Fortran) if (H5EX_BUILD_TESTING) add_custom_command ( @@ -48,7 +57,7 @@ foreach (example_name ${common_examples}) if (H5_HAVE_PARALLEL) target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_Fortran_INCLUDE_DIRS}) endif () - target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${LINK_Fortran_LIBS}) + target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EX_LINK_Fortran_LIBS}) set_target_properties (${EXAMPLE_VARNAME}_f90_${example_name} PROPERTIES LINKER_LANGUAGE Fortran) if (H5EX_BUILD_TESTING) add_custom_command ( diff --git a/HDF5Examples/JAVA/H5D/CMakeLists.txt b/HDF5Examples/JAVA/H5D/CMakeLists.txt index 60c35dc..bc06506 100644 --- a/HDF5Examples/JAVA/H5D/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5D/CMakeLists.txt @@ -3,10 +3,9 @@ project (HDF5Examples_JAVA_H5D Java) set (CMAKE_VERBOSE_MAKEFILE 1) -INCLUDE_DIRECTORIES ( - ${HDFJAVA_LIB_DIR} - ${JAVA_INCLUDE_PATH} - ${JAVA_INCLUDE_PATH2} +set_directory_properties(PROPERTIES + INCLUDE_DIRECTORIES + "${HDFJAVA_LIB_DIR};${JAVA_INCLUDE_PATH};${JAVA_INCLUDE_PATH2}" ) #----------------------------------------------------------------------------- @@ -20,6 +19,9 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () +set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;") + set (CMAKE_JAVA_CLASSPATH ".") foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") @@ -32,13 +34,18 @@ endforeach () foreach (example ${HDF_JAVA_EXAMPLES}) get_filename_component (example_name ${example} NAME_WE) - file (WRITE ${PROJECT_BINARY_DIR}/Manifest.txt + file (WRITE ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt "Main-Class: ${example_name} Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/Manifest.txt) + add_jar (${EXAMPLE_VARNAME}_${example_name} + SOURCES ${example} + MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt + ) get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -46,9 +53,9 @@ if (H5EX_BUILD_TESTING) add_test ( NAME ${EXAMPLE_VARNAME}_jnative-h5-${resultfile} COMMAND "${CMAKE_COMMAND}" - -D "TEST_TESTER=${CMAKE_Java_RUNTIME}" + -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" - -D "TEST_ARGS:STRING=${ARGN}" + -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" diff --git a/HDF5Examples/JAVA/H5G/CMakeLists.txt b/HDF5Examples/JAVA/H5G/CMakeLists.txt index 5f47d59..957934b 100644 --- a/HDF5Examples/JAVA/H5G/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5G/CMakeLists.txt @@ -3,10 +3,9 @@ project (HDF5Examples_JAVA_GROUPS Java) set (CMAKE_VERBOSE_MAKEFILE 1) -INCLUDE_DIRECTORIES ( - ${HDFJAVA_LIB_DIR} - ${JAVA_INCLUDE_PATH} - ${JAVA_INCLUDE_PATH2} +set_directory_properties(PROPERTIES + INCLUDE_DIRECTORIES + "${HDFJAVA_LIB_DIR};${JAVA_INCLUDE_PATH};${JAVA_INCLUDE_PATH2}" ) #----------------------------------------------------------------------------- @@ -20,6 +19,9 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () +set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;") + set (CMAKE_JAVA_CLASSPATH ".") foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") @@ -32,13 +34,18 @@ endforeach () foreach (example ${HDF_JAVA_EXAMPLES}) get_filename_component (example_name ${example} NAME_WE) - file (WRITE ${PROJECT_BINARY_DIR}/Manifest.txt + file (WRITE ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt "Main-Class: ${example_name} Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/Manifest.txt) + add_jar (${EXAMPLE_VARNAME}_${example_name} + SOURCES ${example} + MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt + ) get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -46,9 +53,9 @@ if (H5EX_BUILD_TESTING) add_test ( NAME ${EXAMPLE_VARNAME}_jnative-h5-${resultfile} COMMAND "${CMAKE_COMMAND}" - -D "TEST_TESTER=${CMAKE_Java_RUNTIME}" + -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" - -D "TEST_ARGS:STRING=${ARGN}" + -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" diff --git a/HDF5Examples/JAVA/H5J/CMakeLists.txt b/HDF5Examples/JAVA/H5J/CMakeLists.txt index 8f1c195..eaefa7d 100644 --- a/HDF5Examples/JAVA/H5J/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5J/CMakeLists.txt @@ -3,10 +3,9 @@ project (HDF5Examples_JAVA_INTRO Java) set (CMAKE_VERBOSE_MAKEFILE 1) -INCLUDE_DIRECTORIES ( - ${HDFJAVA_LIB_DIR} - ${JAVA_INCLUDE_PATH} - ${JAVA_INCLUDE_PATH2} +set_directory_properties(PROPERTIES + INCLUDE_DIRECTORIES + "${HDFJAVA_LIB_DIR};${JAVA_INCLUDE_PATH};${JAVA_INCLUDE_PATH2}" ) #----------------------------------------------------------------------------- @@ -20,6 +19,9 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () +set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;") + set (CMAKE_JAVA_CLASSPATH ".") foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") @@ -32,13 +34,18 @@ endforeach () foreach (example ${HDF_JAVA_EXAMPLES}) get_filename_component (example_name ${example} NAME_WE) - file (WRITE ${PROJECT_BINARY_DIR}/Manifest.txt + file (WRITE ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt "Main-Class: ${example_name} Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/Manifest.txt) + add_jar (${EXAMPLE_VARNAME}_${example_name} + SOURCES ${example} + MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt + ) get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -46,9 +53,9 @@ if (H5EX_BUILD_TESTING) add_test ( NAME ${EXAMPLE_VARNAME}_jnative-h5-${resultfile} COMMAND "${CMAKE_COMMAND}" - -D "TEST_TESTER=${CMAKE_Java_RUNTIME}" + -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" - -D "TEST_ARGS:STRING=${ARGN}" + -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" diff --git a/HDF5Examples/JAVA/H5T/CMakeLists.txt b/HDF5Examples/JAVA/H5T/CMakeLists.txt index a779a53..0d2cb41 100644 --- a/HDF5Examples/JAVA/H5T/CMakeLists.txt +++ b/HDF5Examples/JAVA/H5T/CMakeLists.txt @@ -3,10 +3,9 @@ project (HDF5Examples_JAVA_H5T Java) set (CMAKE_VERBOSE_MAKEFILE 1) -INCLUDE_DIRECTORIES ( - ${HDFJAVA_LIB_DIR} - ${JAVA_INCLUDE_PATH} - ${JAVA_INCLUDE_PATH2} +set_directory_properties(PROPERTIES + INCLUDE_DIRECTORIES + "${HDFJAVA_LIB_DIR};${JAVA_INCLUDE_PATH};${JAVA_INCLUDE_PATH2}" ) #----------------------------------------------------------------------------- @@ -20,6 +19,9 @@ else () set (CMAKE_JAVA_INCLUDE_FLAG_SEP ":") endif () +set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_INCLUDE_DIRS}") +set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${H5EX_JAVA_LIBRARY}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;") + set (CMAKE_JAVA_CLASSPATH ".") foreach (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH}) set (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}") @@ -32,13 +34,18 @@ endforeach () foreach (example ${HDF_JAVA_EXAMPLES}) get_filename_component (example_name ${example} NAME_WE) - file (WRITE ${PROJECT_BINARY_DIR}/Manifest.txt + file (WRITE ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt "Main-Class: ${example_name} Class-Path: ${HDFJAVA_CLASSJARS} " ) - add_jar (${EXAMPLE_VARNAME}_${example_name} SOURCES ${example} MANIFEST ${PROJECT_BINARY_DIR}/Manifest.txt) + add_jar (${EXAMPLE_VARNAME}_${example_name} + SOURCES ${example} + MANIFEST ${PROJECT_BINARY_DIR}/${example_name}_Manifest.txt + ) get_target_property (${EXAMPLE_VARNAME}_${example_name}_JAR_FILE ${EXAMPLE_VARNAME}_${example_name} JAR_FILE) + get_target_property (${EXAMPLE_VARNAME}_${example_name}_CLASSPATH ${EXAMPLE_VARNAME}_${example_name} CLASSDIR) + add_dependencies (${EXAMPLE_VARNAME}_${example_name} ${H5EX_JAVA_LIBRARIES}) endforeach () if (H5EX_BUILD_TESTING) @@ -46,9 +53,9 @@ if (H5EX_BUILD_TESTING) add_test ( NAME ${EXAMPLE_VARNAME}_jnative-h5-${resultfile} COMMAND "${CMAKE_COMMAND}" - -D "TEST_TESTER=${CMAKE_Java_RUNTIME}" + -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}" -D "TEST_PROGRAM=${resultfile}" - -D "TEST_ARGS:STRING=${ARGN}" + -D "TEST_ARGS:STRING=${ARGN};${CMD_ARGS}" -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${EXAMPLE_VARNAME}_${resultfile}_JAR_FILE}" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" diff --git a/HDF5Examples/config/cmake/HDFExampleMacros.cmake b/HDF5Examples/config/cmake/HDFExampleMacros.cmake index d9bf67f..82fd8ac 100644 --- a/HDF5Examples/config/cmake/HDFExampleMacros.cmake +++ b/HDF5Examples/config/cmake/HDFExampleMacros.cmake @@ -1,3 +1,15 @@ +# +# Copyright by The HDF Group. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the COPYING file, which can be found at the root of the source code +# distribution tree, or in https://www.hdfgroup.org/licenses. +# If you do not have access to either file, you may request a copy from +# help@hdfgroup.org. +# + #------------------------------------------------------------------------------- macro (BASIC_SETTINGS varname) string (TOUPPER ${varname} EXAMPLE_PACKAGE_VARNAME) @@ -17,35 +29,7 @@ macro (BASIC_SETTINGS varname) #----------------------------------------------------------------------------- # Setup output Directories #----------------------------------------------------------------------------- - if (NOT ${EXAMPLE_PACKAGE_NAME}_EXTERNALLY_CONFIGURED) - set (CMAKE_RUNTIME_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Executables." - ) - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Libraries" - ) - set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." - ) - set (CMAKE_Fortran_MODULE_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all fortran modules." - ) - get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - if(_isMultiConfig) - set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) - set (CMAKE_PDB_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." - ) - else () - set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - endif () - else () - # if we are externally configured, but the project uses old cmake scripts - # this may not be set - if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) - set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - endif () - endif () + SET_HDF_OUTPUT_DIRS(${EXAMPLE_PACKAGE_NAME}) #----------------------------------------------------------------------------- # Option to use Shared/Static libs, default is static @@ -63,9 +47,13 @@ macro (BASIC_SETTINGS varname) set (CMAKE_C_STANDARD 99) set (CMAKE_C_STANDARD_REQUIRED TRUE) - set (CMAKE_CXX_STANDARD 98) - set (CMAKE_CXX_STANDARD_REQUIRED TRUE) - set (CMAKE_CXX_EXTENSIONS OFF) + if (HDF_BUILD_CPP_LIB) + ENABLE_LANGUAGE (CXX) + + set (CMAKE_CXX_STANDARD 98) + set (CMAKE_CXX_STANDARD_REQUIRED TRUE) + set (CMAKE_CXX_EXTENSIONS OFF) + endif () #----------------------------------------------------------------------------- # Compiler specific flags : Shouldn't there be compiler tests for these @@ -73,7 +61,7 @@ macro (BASIC_SETTINGS varname) if (CMAKE_COMPILER_IS_GNUCC) set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}") endif () - if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_CXX_COMPILER_LOADED AND CMAKE_COMPILER_IS_GNUCXX) set (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS}") endif () @@ -84,7 +72,7 @@ macro (BASIC_SETTINGS varname) if (CMAKE_COMPILER_IS_GNUCC) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0") endif () - if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_CXX_COMPILER_LOADED AND CMAKE_COMPILER_IS_GNUCXX) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0") endif () @@ -99,8 +87,10 @@ macro (BASIC_SETTINGS varname) set (HDF_WARNINGS_BLOCKED 1) string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w") - string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /w") + if (CMAKE_CXX_COMPILER_LOADED AND CMAKE_COMPILER_IS_GNUCXX) + string (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /w") + endif () endif () if (WIN32) add_definitions (-D_CRT_SECURE_NO_WARNINGS) @@ -114,7 +104,9 @@ macro (BASIC_SETTINGS varname) # Most compilers use -w to suppress warnings. if (NOT HDF_WARNINGS_BLOCKED) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") + if (CMAKE_CXX_COMPILER_LOADED AND CMAKE_COMPILER_IS_GNUCXX) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") + endif () endif () endif () @@ -233,7 +225,9 @@ macro (HDF5_SUPPORT) if (HDF_BUILD_JAVA) if (${HDF5_BUILD_JAVA} AND HDF5_Java_FOUND) set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH};${HDF5_JAVA_INCLUDE_DIRS}") - message (STATUS "HDF5 jars:${HDF5_JAVA_INCLUDE_DIRS}}") + set (H5EX_JAVA_LIBRARY ${HDF5_JAVA_LIBRARY}) + set (H5EX_JAVA_LIBRARIES ${HDF5_JAVA_LIBRARY}) + message (STATUS "HDF5 lib:${H5EX_JAVA_LIBRARY} jars:${HDF5_JAVA_INCLUDE_DIRS}}") else () set (HDF_BUILD_JAVA OFF CACHE BOOL "Build Java support" FORCE) message (STATUS "HDF5 Java libs not found - disable build of Java examples") @@ -285,11 +279,6 @@ macro (HDF5_SUPPORT) else () set (H5_LIB_TYPE STATIC) endif () - - #----------------------------------------------------------------------------- - # Option to build filter examples - #----------------------------------------------------------------------------- - option (HDF_BUILD_FILTERS "Test filter support" OFF) endmacro () #------------------------------------------------------------------------------- diff --git a/HDF5Examples/config/cmake/HDFMacros.cmake b/HDF5Examples/config/cmake/HDFMacros.cmake index 9ce592d..66a25aa 100644 --- a/HDF5Examples/config/cmake/HDFMacros.cmake +++ b/HDF5Examples/config/cmake/HDFMacros.cmake @@ -1,3 +1,50 @@ +# +# Copyright by The HDF Group. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the COPYING file, which can be found at the root of the source code +# distribution tree, or in https://www.hdfgroup.org/licenses. +# If you do not have access to either file, you may request a copy from +# help@hdfgroup.org. +# + +#------------------------------------------------------------------------------- +# Setup output Directories +#----------------------------------------------------------------------------- +macro (SET_HDF_OUTPUT_DIRS package_prefix) + if (NOT ${package_prefix}_EXTERNALLY_CONFIGURED) + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Executables." + ) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Libraries" + ) + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." + ) + set (CMAKE_Fortran_MODULE_DIRECTORY + ${PROJECT_BINARY_DIR}/mod CACHE PATH "Single Directory for all fortran modules." + ) + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${HDF_CFG_NAME}) + set (CMAKE_PDB_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." + ) + else () + set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif () + else () + # if we are externally configured, but the project uses old cmake scripts + # this may not be set and utilities like H5detect will fail + if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + endif () + endif () +endmacro () + #------------------------------------------------------------------------------- macro (SET_HDF_BUILD_TYPE) get_property (_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) @@ -157,38 +204,7 @@ macro (HDF_DIR_PATHS package_prefix) SET_HDF_BUILD_TYPE() -#----------------------------------------------------------------------------- -# Setup output Directories -#----------------------------------------------------------------------------- - if (NOT ${package_prefix}_EXTERNALLY_CONFIGURED) - set (CMAKE_RUNTIME_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Executables." - ) - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Libraries" - ) - set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries." - ) - set (CMAKE_Fortran_MODULE_DIRECTORY - ${PROJECT_BINARY_DIR}/mod CACHE PATH "Single Directory for all fortran modules." - ) - get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - if(_isMultiConfig) - set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${HDF_CFG_NAME}) - set (CMAKE_PDB_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all pdb files." - ) - else () - set (CMAKE_TEST_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - endif () - else () - # if we are externally configured, but the project uses old cmake scripts - # this may not be set and utilities like H5detect will fail - if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) - set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) - endif () - endif () + SET_HDF_OUTPUT_DIRS(${package_prefix}) include (FetchContent) endmacro () diff --git a/HDF5Examples/config/cmake/UseJava.cmake b/HDF5Examples/config/cmake/UseJava.cmake index 2783cb6..b4af653 100644 --- a/HDF5Examples/config/cmake/UseJava.cmake +++ b/HDF5Examples/config/cmake/UseJava.cmake @@ -6,7 +6,7 @@ UseJava This file provides support for ``Java``. It is assumed that :module:`FindJava` has already been loaded. See :module:`FindJava` for -information on how to load Java into your ``CMake`` project. +information on how to load Java into your CMake project. Synopsis ^^^^^^^^ @@ -42,6 +42,7 @@ Creating And Installing JARs add_jar(<target_name> [SOURCES] <source1> [<source2>...] [<resource1>...] + [RESOURCES NAMESPACE <ns1> <resource1>... [NAMESPACE <nsX> <resourceX>...]... ] [INCLUDE_JARS <jar1> [<jar2>...]] [ENTRY_POINT <entry>] [VERSION <version>] @@ -64,6 +65,34 @@ Creating And Installing JARs .. versionadded:: 3.4 Support for response files, prefixed by ``@``. + ``RESOURCES`` + .. versionadded:: 3.21 + + Adds the named ``<resource>`` files to the jar by stripping the source file + path and placing the file beneath ``<ns>`` within the jar. + + For example:: + + RESOURCES NAMESPACE "/com/my/namespace" "a/path/to/resource.txt" + + results in a resource accessible via ``/com/my/namespace/resource.txt`` + within the jar. + + Resources may be added without adjusting the namespace by adding them to + the list of ``SOURCES`` (original behavior), in this case, resource + paths must be relative to ``CMAKE_CURRENT_SOURCE_DIR``. Adding resources + without using the ``RESOURCES`` parameter in out of source builds will + almost certainly result in confusion. + + .. note:: + + Adding resources via the ``SOURCES`` parameter relies upon a hard-coded + list of file extensions which are tested to determine whether they + compile (e.g. File.java). ``SOURCES`` files which match the extensions + are compiled. Files which do not match are treated as resources. To + include uncompiled resources matching those file extensions use + the ``RESOURCES`` parameter. + ``INCLUDE_JARS`` The list of jars are added to the classpath when compiling the java sources and also to the dependencies of the target. ``INCLUDE_JARS`` also accepts @@ -264,7 +293,7 @@ Header Generation .. deprecated:: 3.11 This command will no longer be supported starting with version 10 of the JDK - due to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_. + due to the `suppression of javah tool <https://openjdk.org/jeps/313>`_. The :ref:`add_jar(GENERATE_NATIVE_HEADERS) <add_jar>` command should be used instead. @@ -526,6 +555,7 @@ function (__java_copy_file src dest comment) ${dest} DEPENDS ${src} COMMENT ${comment} + VERBATIM ) endfunction () @@ -552,6 +582,58 @@ function(__java_export_jar VAR TARGET PATH) set(${VAR} "${${VAR}}" PARENT_SCOPE) endfunction() +function(__java_copy_resource_namespaces VAR DEST JAVA_RESOURCE_FILES JAVA_RESOURCE_FILES_RELATIVE) + + set(_ns_ID "") + set(_ns_VAL "") + + foreach(_item IN LISTS VAR) + if(NOT _ns_ID) + if(NOT _item STREQUAL "NAMESPACE") + message(FATAL_ERROR "UseJava: Expecting \"NAMESPACE\", got\t\"${_item}\"") + return() + endif() + endif() + + if(_item STREQUAL "NAMESPACE") + set(_ns_VAL "") # Prepare for next namespace + set(_ns_ID "${_item}") + continue() + endif() + + if( NOT _ns_VAL) + # we're expecting the next token to be a namespace value + # whatever it is, we're treating it like a namespace + set(_ns_VAL "${_item}") + continue() + endif() + + if(_ns_ID AND _ns_VAL) + # We're expecting a file name, check to see if we got one + cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _test_file_name) + if (NOT EXISTS "${_test_file_name}") + message(FATAL_ERROR "UseJava: File does not exist:\t${_item}") + return() + endif() + endif() + + cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _abs_file_name) + cmake_path(GET _item FILENAME _resource_file_name) + set(_dest_resource_file_name "${_ns_VAL}/${_resource_file_name}" ) + + __java_copy_file( ${_abs_file_name} + ${DEST}/${_dest_resource_file_name} + "Copying ${_item} to the build directory") + + list(APPEND RESOURCE_FILES_LIST ${DEST}/${_dest_resource_file_name}) + list(APPEND RELATIVE_RESOURCE_FILES_LIST ${_dest_resource_file_name}) + + endforeach() + + set(${JAVA_RESOURCE_FILES} "${RESOURCE_FILES_LIST}" PARENT_SCOPE) + set(${JAVA_RESOURCE_FILES_RELATIVE} "${RELATIVE_RESOURCE_FILES_LIST}" PARENT_SCOPE) +endfunction() + # define helper scripts set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in) set(_JAVA_CLASS_FILELIST_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaClassFilelist.cmake) @@ -746,6 +828,13 @@ function(add_jar _TARGET_NAME) endif () endforeach() + if(_add_jar_RESOURCES) # Process RESOURCES if it exists + __java_copy_resource_namespaces("${_add_jar_RESOURCES}" + ${CMAKE_JAVA_CLASS_OUTPUT_PATH} + _JAVA_RESOURCE_FILES + _JAVA_RESOURCE_FILES_RELATIVE) + endif() + foreach(_JAVA_INCLUDE_JAR IN LISTS _add_jar_INCLUDE_JARS) if (TARGET ${_JAVA_INCLUDE_JAR}) get_target_property(_JAVA_JAR_PATH ${_JAVA_INCLUDE_JAR} JAR_FILE) @@ -795,6 +884,7 @@ function(add_jar _TARGET_NAME) DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Building Java objects for ${_TARGET_NAME}.jar" + VERBATIM ) add_custom_command( OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist @@ -804,6 +894,7 @@ function(add_jar _TARGET_NAME) -P ${_JAVA_CLASS_FILELIST_SCRIPT} DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + VERBATIM ) else () # create an empty java_class_filelist @@ -834,6 +925,7 @@ function(add_jar _TARGET_NAME) DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" + VERBATIM ) else () add_custom_command( @@ -849,6 +941,7 @@ function(add_jar _TARGET_NAME) WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" + VERBATIM ) endif () diff --git a/HDF5Examples/config/cmake/jrunTest.cmake b/HDF5Examples/config/cmake/jrunTest.cmake index 2d91ee2..d7d83d4 100644 --- a/HDF5Examples/config/cmake/jrunTest.cmake +++ b/HDF5Examples/config/cmake/jrunTest.cmake @@ -1,3 +1,14 @@ +# +# Copyright by The HDF Group. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the COPYING file, which can be found at the root of the source code +# distribution tree, or in https://www.hdfgroup.org/licenses. +# If you do not have access to either file, you may request a copy from +# help@hdfgroup.org. +# # jrunTest.cmake executes a command and captures the output in a file. File is then compared # against a reference file. Exit status of command can also be compared. cmake_policy(SET CMP0007 NEW) @@ -36,7 +47,12 @@ else () set (LOG_LEVEL "${TEST_LOG_LEVEL}") endif () -message (STATUS "COMMAND: ${TEST_TESTER} -Xmx1024M -Djava.library.path=\"${TEST_LIBRARY_DIRECTORY}\" -cp \"${TEST_CLASSPATH}\" ${TEST_ARGS} ${TEST_PROGRAM} ${ARGN}") +if (NOT TEST_VOL) + message (STATUS "COMMAND: ${TEST_TESTER} -Xmx1024M -Dorg.slf4j.simpleLogger.defaultLog=${LOG_LEVEL} -Djava.library.path=\"${TEST_LIBRARY_DIRECTORY}\" -cp \"${TEST_CLASSPATH}\" ${TEST_ARGS} ${TEST_PROGRAM} ${ARGN}") +else () + message (STATUS "USING ${TEST_VOL} ON COMMAND: ${TEST_TESTER} -Xmx1024M -Dorg.slf4j.simpleLogger.defaultLog=${LOG_LEVEL} -Djava.library.path=\"${TEST_LIBRARY_DIRECTORY}\" -cp \"${TEST_CLASSPATH}\" ${TEST_ARGS} ${TEST_PROGRAM} ${ARGN}") + set (ENV{HDF5_VOL_CONNECTOR} "${TEST_VOL}") +endif () if (WIN32) set (ENV{PATH} "$ENV{PATH}\\;${TEST_LIBRARY_DIRECTORY}") |