From ac650fa9d1e587ca8cf1154eebbb900f484840b0 Mon Sep 17 00:00:00 2001 From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:54:22 -0600 Subject: [PATCH] Update examples with 1.6 api and static libs (#3874) * Update examples with 1.6 api and static libs * Only check for STATIC only builds * Do not calculate version as library has already. --- HDF5Examples/C/H5D/C_sourcefiles.cmake | 17 +++++--- HDF5Examples/C/H5G/CMakeLists.txt | 2 +- HDF5Examples/C/H5G/C_sourcefiles.cmake | 18 +++++--- HDF5Examples/C/H5T/16/h5ex_t_objrefatt.c | 1 + HDF5Examples/C/H5T/CMakeLists.txt | 43 ++++++++++++++----- .../C/H5T/tfiles/16/114/h5ex_t_vlenatt.ddl | 18 ++++++++ HDF5Examples/CMakeLists.txt | 24 ++++++----- config/cmake/HDF5ExampleCache.cmake | 13 ++++-- 8 files changed, 98 insertions(+), 38 deletions(-) create mode 100644 HDF5Examples/C/H5T/tfiles/16/114/h5ex_t_vlenatt.ddl diff --git a/HDF5Examples/C/H5D/C_sourcefiles.cmake b/HDF5Examples/C/H5D/C_sourcefiles.cmake index 65c19a0ebd4..87e0d6f12d4 100644 --- a/HDF5Examples/C/H5D/C_sourcefiles.cmake +++ b/HDF5Examples/C/H5D/C_sourcefiles.cmake @@ -30,9 +30,14 @@ if (HDF5_ENABLE_SZIP_SUPPORT) ) endif () -set (1_8_examples - h5ex_d_nbit - h5ex_d_sofloat - h5ex_d_soint - h5ex_d_transform -) +if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API}) + set (1_8_examples + h5ex_d_nbit + h5ex_d_sofloat + h5ex_d_soint + h5ex_d_transform + ) +else () + set (1_8_examples) +endif () + diff --git a/HDF5Examples/C/H5G/CMakeLists.txt b/HDF5Examples/C/H5G/CMakeLists.txt index 9aca9e7fa3e..afef5567552 100644 --- a/HDF5Examples/C/H5G/CMakeLists.txt +++ b/HDF5Examples/C/H5G/CMakeLists.txt @@ -139,7 +139,7 @@ if (HDF5_BUILD_TOOLS) endif () endforeach () - if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8") + if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API}) add_custom_command ( TARGET ${EXAMPLE_VARNAME}_h5ex_g_compact POST_BUILD diff --git a/HDF5Examples/C/H5G/C_sourcefiles.cmake b/HDF5Examples/C/H5G/C_sourcefiles.cmake index 155453c3478..133fb430916 100644 --- a/HDF5Examples/C/H5G/C_sourcefiles.cmake +++ b/HDF5Examples/C/H5G/C_sourcefiles.cmake @@ -9,10 +9,14 @@ set (common_examples h5ex_g_traverse ) -set (1_8_examples - h5ex_g_compact - h5ex_g_corder - h5ex_g_phase - h5ex_g_intermediate - h5ex_g_visit -) +if (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.8" AND NOT ${${EXAMPLE_VARNAME}_USE_16_API}) + set (1_8_examples + h5ex_g_compact + h5ex_g_corder + h5ex_g_phase + h5ex_g_intermediate + h5ex_g_visit + ) +else () + set (1_8_examples) +endif () diff --git a/HDF5Examples/C/H5T/16/h5ex_t_objrefatt.c b/HDF5Examples/C/H5T/16/h5ex_t_objrefatt.c index 95d86dc558b..85c044838c1 100644 --- a/HDF5Examples/C/H5T/16/h5ex_t_objrefatt.c +++ b/HDF5Examples/C/H5T/16/h5ex_t_objrefatt.c @@ -27,6 +27,7 @@ main(void) hid_t space; /* Dataspace Handle */ hid_t dset; /* Dataset Handle */ hid_t obj; /* Object Handle */ + hid_t attr; /* Attribute Handle */ herr_t status; hsize_t dims[1] = {DIM0}; hobj_ref_t wdata[DIM0]; /* Write buffer */ diff --git a/HDF5Examples/C/H5T/CMakeLists.txt b/HDF5Examples/C/H5T/CMakeLists.txt index 4673562db6b..4dcf6cb1a67 100644 --- a/HDF5Examples/C/H5T/CMakeLists.txt +++ b/HDF5Examples/C/H5T/CMakeLists.txt @@ -113,21 +113,29 @@ endforeach () if (HDF5_BUILD_TOOLS) foreach (example_name ${common_examples}) if (NOT ${example_name} STREQUAL "h5ex_t_convert") - if (HDF5_VERSION_MAJOR VERSION_EQUAL "1.6") - add_custom_command ( - TARGET ${EXAMPLE_VARNAME}_${example_name} - POST_BUILD - COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/16/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl - ) - else () if (${example_name} STREQUAL "h5ex_t_vlen" OR ${example_name} STREQUAL "h5ex_t_vlenatt") if (HDF5_VERSION_STRING VERSION_GREATER_EQUAL "1.14.3") + if (${H5_LIBVER_DIR} EQUAL 16 AND ${example_name} STREQUAL "h5ex_t_vlenatt") + add_custom_command ( + TARGET ${EXAMPLE_VARNAME}_${example_name} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/16/114/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + ) + else () + add_custom_command ( + TARGET ${EXAMPLE_VARNAME}_${example_name} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/114/${example_name}.ddl ${example_name}.ddl + ) + endif () + elseif (${H5_LIBVER_DIR} EQUAL 16) add_custom_command ( TARGET ${EXAMPLE_VARNAME}_${example_name} POST_BUILD COMMAND ${CMAKE_COMMAND} - ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/114/${example_name}.ddl ${example_name}.ddl + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/16/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl ) else () add_custom_command ( @@ -172,12 +180,21 @@ if (HDF5_BUILD_TOOLS) ) endif () elseif (HDF5_VERSION_MAJOR VERSION_GREATER_EQUAL "1.12") + if (${H5_LIBVER_DIR} EQUAL 16) + add_custom_command ( + TARGET ${EXAMPLE_VARNAME}_${example_name} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/16/112/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + ) + else () add_custom_command ( TARGET ${EXAMPLE_VARNAME}_${example_name} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/18/112/${example_name}.ddl ${example_name}.ddl ) + endif () else () add_custom_command ( TARGET ${EXAMPLE_VARNAME}_${example_name} @@ -235,6 +252,13 @@ if (HDF5_BUILD_TOOLS) ) endif () endif () + elseif (${H5_LIBVER_DIR} EQUAL 16) + add_custom_command ( + TARGET ${EXAMPLE_VARNAME}_${example_name} + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/tfiles/16/${example_name}.ddl ${PROJECT_BINARY_DIR}/${example_name}.ddl + ) else () add_custom_command ( TARGET ${EXAMPLE_VARNAME}_${example_name} @@ -244,7 +268,6 @@ if (HDF5_BUILD_TOOLS) ) endif () endif () - endif () endforeach () # foreach (example_name ${1_8_examples}) diff --git a/HDF5Examples/C/H5T/tfiles/16/114/h5ex_t_vlenatt.ddl b/HDF5Examples/C/H5T/tfiles/16/114/h5ex_t_vlenatt.ddl new file mode 100644 index 00000000000..7bd321b2a52 --- /dev/null +++ b/HDF5Examples/C/H5T/tfiles/16/114/h5ex_t_vlenatt.ddl @@ -0,0 +1,18 @@ +HDF5 "h5ex_t_vlenatt.h5" { +GROUP "/" { + DATASET "DS1" { + DATATYPE H5T_STD_I32LE + DATASPACE SCALAR + DATA { + (0): 0 + } + ATTRIBUTE "A1" { + DATATYPE H5T_VLEN { H5T_STD_I32LE } + DATASPACE SIMPLE { ( 2 ) / ( 2 ) } + DATA { + (0): (3, 2, 1), (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144) + } + } + } +} +} diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt index 8f6acae9580..b5fb3e28feb 100644 --- a/HDF5Examples/CMakeLists.txt +++ b/HDF5Examples/CMakeLists.txt @@ -30,17 +30,19 @@ message (STATUS "HDF5 H5_LIBVER_DIR: ${H5_LIBVER_DIR}") #----------------------------------------------------------------------------- # parse the full version number from H5public.h and include in H5_VERS_INFO #----------------------------------------------------------------------------- -find_file (_h5public_h H5public.h ${H5EX_HDF5_INCLUDE_DIRS}) -file (READ ${_h5public_h} _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}) -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._-]*)\".*$" - "\\1" H5_VERS_SUBRELEASE ${_h5public_h_contents}) +if(NOT DEFINED _h5public_h_contents) + find_file (_h5public_h H5public.h ${H5EX_HDF5_INCLUDE_DIRS}) + file (READ ${_h5public_h} _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}) + 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._-]*)\".*$" + "\\1" H5_VERS_SUBRELEASE ${_h5public_h_contents}) +endif () if (WIN32) set(CMAKE_TEST_LIB_DIRECTORY "${HDF5_TOOLS_DIR}") diff --git a/config/cmake/HDF5ExampleCache.cmake b/config/cmake/HDF5ExampleCache.cmake index 269cfe2e71c..6882d255770 100644 --- a/config/cmake/HDF5ExampleCache.cmake +++ b/config/cmake/HDF5ExampleCache.cmake @@ -10,10 +10,17 @@ set (H5EX_BUILD_EXAMPLES ${HDF5_BUILD_EXAMPLES} CACHE BOOL "Build H5PL Examples" #preset HDF5 cache vars to this projects libraries instead of searching set (H5EX_HDF5_HEADER "H5pubconf.h" CACHE STRING "Name of HDF5 header" FORCE) -set (H5EX_HDF5_LINK_LIBS ${HDF5_LIBSH_TARGET} CACHE STRING "HDF5 target" FORCE) #set (H5EX_HDF5_INCLUDE_DIRS $ CACHE PATH "HDF5 include dirs" FORCE) set (H5EX_HDF5_INCLUDE_DIRS "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) set (H5EX_HDF5_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "HDF5 build folder" FORCE) -set (H5EX_HDF5_DUMP_EXECUTABLE $ CACHE STRING "HDF5 h5dump target" FORCE) -set (H5EX_HDF5_REPACK_EXECUTABLE $ CACHE STRING "HDF5 h5repack target" FORCE) +if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) + set (USE_SHARED_LIBS OFF CACHE BOOL "Use Shared Libraries for Examples" FORCE) + set (H5EX_HDF5_LINK_LIBS ${HDF5_LIB_TARGET} CACHE STRING "HDF5 target" FORCE) +else () + set (USE_SHARED_LIBS ON CACHE BOOL "Use Shared Libraries for Examples" FORCE) + set (H5EX_HDF5_LINK_LIBS ${HDF5_LIBSH_TARGET} CACHE STRING "HDF5 target" FORCE) +endif () + +set (H5EX_HDF5_DUMP_EXECUTABLE $ CACHE STRING "HDF5 h5dump target" FORCE) +set (H5EX_HDF5_REPACK_EXECUTABLE $ CACHE STRING "HDF5 h5repack target" FORCE)