From 7b477d0d041406d867b36d1a460b666fb2816646 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Wed, 22 Jan 2025 08:13:13 -0600 Subject: [PATCH] Merge compression changes from develop --- .codespellrc | 2 +- CMakeFilters.cmake | 57 ++- CMakeInstallation.cmake | 7 +- CMakeLists.txt | 51 +-- CMakePlugins.cmake | 16 +- CMakePresets.json | 16 +- HDF5Examples/C/CMakeLists.txt | 2 +- HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl | 2 +- HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.tst | 4 +- HDF5Examples/C/TUTR/CMakeLists.txt | 2 +- HDF5Examples/CMakeLists.txt | 10 +- .../config/cmake-presets/hidden-presets.json | 2 +- .../config/cmake/HDFExampleMacros.cmake | 69 +++- HDF5Examples/config/cmake/cacheinit.cmake | 2 + README.md | 6 +- config/cmake/CTestCustom.cmake | 6 + config/cmake/ConfigureChecks.cmake | 14 +- config/cmake/H5pubconf.h.in | 3 + config/cmake/HDF5ExampleCache.cmake | 29 +- config/cmake/HDF5PluginCache.cmake | 4 + config/cmake/HDF5PluginMacros.cmake | 2 +- config/cmake/HDFLibMacros.cmake | 5 + config/cmake/LIBAEC/CMakeLists.txt | 21 +- config/cmake/SignPackageFiles.cmake | 2 +- config/cmake/ZLIB/CMakeLists.txt | 8 +- config/cmake/ZLIBNG/CMakeLists.txt | 385 ++++++++++++------ config/cmake/cacheinit.cmake | 22 +- .../examples/HDF5_Examples_options.cmake | 18 +- config/cmake/grepTest.cmake | 2 +- config/cmake/hdf5-config.cmake.in | 1 + config/cmake/jrunTest.cmake | 4 +- config/cmake/mccacheinit.cmake | 6 +- config/cmake/runTest.cmake | 2 +- config/cmake/scripts/HDF5config.cmake | 87 ++-- config/cmake/scripts/HDF5options.cmake | 6 +- config/toolchain/intel.cmake | 6 +- doxygen/examples/ImageSpec.html | 2 +- ...alettes_fm_anc.gif => Palettes.fm.anc.gif} | Bin hl/CMakeLists.txt | 5 - hl/c++/CMakeLists.txt | 7 - hl/c++/Makefile.am | 17 +- hl/c++/test/CMakeLists.txt | 2 +- hl/fortran/CMakeLists.txt | 7 - hl/tools/h5watch/CMakeLists.txt | 4 +- release_docs/INSTALL_CMake.txt | 315 ++++++-------- release_docs/RELEASE_PROCESS.md | 36 +- release_docs/USING_CMake_Examples.txt | 2 +- release_docs/USING_HDF5_CMake.txt | 4 +- 48 files changed, 734 insertions(+), 548 deletions(-) rename doxygen/img/{Palettes_fm_anc.gif => Palettes.fm.anc.gif} (100%) diff --git a/.codespellrc b/.codespellrc index 84a16c8000d..61622da9a61 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,6 +1,6 @@ # Ref: https://github.com/codespell-project/codespell#using-a-config-file [codespell] -skip = .git,*.svg,.codespellrc,./bin/trace,./hl/tools/h5watch/h5watch.c,./tools/test/h5jam/tellub.c,./config/sanitizer/LICENSE,./config/sanitizer/sanitizers.cmake,./tools/test/h5import/testfiles/*.conf,./tools/test/h5repack/testfiles/*.dat,./test/API/driver,./configure,./bin/ltmain.sh,./bin/depcomp,./bin/config.guess,./bin/config.sub,./autom4te.cache,./m4/libtool.m4,./c++/src/*.html,./HDF5Examples/depcomp, ./release_docs/HISTORY-*.txt +skip = .git,*.svg,.codespellrc,./bin/trace,./hl/tools/h5watch/h5watch.c,./tools/test/h5jam/tellub.c,./config/sanitizer/LICENSE,./config/sanitizer/sanitizers.cmake,./tools/test/h5import/testfiles/*.conf,./tools/test/h5repack/testfiles/*.dat,./test/API/driver,./configure,./bin/ltmain.sh,./bin/depcomp,./bin/config.guess,./bin/config.sub,./autom4te.cache,./m4/libtool.m4,./c++/src/*.html,./HDF5Examples/depcomp,./release_docs/HISTORY-*.txt check-hidden = true # ignore-regex = ignore-words-list = ot,isnt,inout,nd,parms,parm,ba,offsetP,ser,ois,had,fiter,fo,clude,refere,minnum,offsetp,creat,ans:,eiter,lastr,ans,isn't,ifset,sur,trun,dne,tthe,hda,filname,te,htmp,ake,gord,numer,ro,oce,msdos,TEXTIN,indx diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index 52d65e59e47..525543e132f 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -14,6 +14,8 @@ option (HDF5_USE_ZLIB_STATIC "Find static zlib library" OFF) option (HDF5_USE_LIBAEC_STATIC "Find static AEC library" OFF) option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF) option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" OFF) +option (ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" OFF) +option (LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" OFF) if (NOT ZLIB_USE_LOCALCONTENT) if (HDF5_USE_ZLIB_NG) @@ -77,6 +79,12 @@ endif () # Option for ZLib support #----------------------------------------------------------------------------- set(H5_ZLIB_FOUND FALSE) +if(NOT DEFINED ZLIB_PACKAGE_NAME) + set(ZLIB_PACKAGE_NAME "zlib") +endif () +if(NOT DEFINED ZLIBNG_PACKAGE_NAME) + set(ZLIBNG_PACKAGE_NAME "zlib-ng") +endif () option (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON) if (HDF5_ENABLE_Z_LIB_SUPPORT) if (NOT H5_ZLIB_HEADER) @@ -88,11 +96,12 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) endif () set(ZLIB_FOUND FALSE) if (HDF5_USE_ZLIB_STATIC) - set(ZLIB_SEACH_TYPE static) + set(ZLIB_SEARCH_TYPE static) else () - set(ZLIB_SEACH_TYPE shared) + set(ZLIB_SEARCH_TYPE shared) endif () - find_package (ZLIB NAMES ${PACKAGE_NAME} COMPONENTS ${ZLIB_SEACH_TYPE}) + # Search pure Config mode first + find_package (ZLIB NAMES ${PACKAGE_NAME} OPTIONAL_COMPONENTS ${ZLIB_SEARCH_TYPE}) if (NOT ZLIB_FOUND) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") set(ZLIB_USE_STATIC_LIBS ${HDF5_USE_ZLIB_STATIC}) @@ -101,14 +110,18 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) endif () set(H5_ZLIB_FOUND ${ZLIB_FOUND}) if (H5_ZLIB_FOUND) - set (H5_ZLIB_HEADER "zlib.h") + if (HDF5_USE_ZLIB_NG) + set (H5_ZLIB_HEADER "zlib-ng.h") + else () + set (H5_ZLIB_HEADER "zlib.h") + endif () set (H5_ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR}) set (H5_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) # The FindZLIB.cmake module does not set an OUTPUT_NAME # on the target. The target returned is: ZLIB::ZLIB get_filename_component (libname ${ZLIB_LIBRARIES} NAME_WLE) string (REGEX REPLACE "^lib" "" libname ${libname}) - set_target_properties (ZLIB::ZLIB PROPERTIES OUTPUT_NAME zlib-static) + set_target_properties (ZLIB::ZLIB PROPERTIES OUTPUT_NAME ${libname}) set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ZLIB::ZLIB) endif () else () @@ -125,6 +138,9 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) if (H5_ZLIB_FOUND) set (H5_HAVE_FILTER_DEFLATE 1) set (H5_HAVE_ZLIB_H 1) + if (HDF5_USE_ZLIB_NG) + set (H5_HAVE_ZLIBNG_H 1) + endif () set (H5_HAVE_LIBZ 1) if (H5_HAVE_FILTER_DEFLATE) set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE") @@ -133,43 +149,50 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) message (VERBOSE "Filter HDF5_ZLIB is ON") else () set (HDF5_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE) - message (WARNING " ZLib support in HDF5 was enabled but not found") + message (FATAL_ERROR " ZLib support in HDF5 was enabled but not found") endif () + message (VERBOSE "H5_ZLIB_HEADER=${H5_ZLIB_HEADER}") endif () #----------------------------------------------------------------------------- # Option for SzLib support #----------------------------------------------------------------------------- set(H5_SZIP_FOUND FALSE) +if(NOT DEFINED LIBAEC_PACKAGE_NAME) + set(LIBAEC_PACKAGE_NAME "libaec") +endif () option (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" ON) if (HDF5_ENABLE_SZIP_SUPPORT) option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON) if (NOT SZIP_USE_EXTERNAL) if (HDF5_USE_LIBAEC_STATIC) - set(LIBAEC_SEACH_TYPE static) + set(LIBAEC_SEARCH_TYPE static) else () - set(LIBAEC_SEACH_TYPE shared) + set(LIBAEC_SEARCH_TYPE shared) endif () set(libaec_USE_STATIC_LIBS ${HDF5_USE_LIBAEC_STATIC}) set(SZIP_FOUND FALSE) - find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS ${LIBAEC_SEACH_TYPE}) - if (NOT SZIP_FOUND) - find_package (SZIP) # Legacy find - endif () - set(H5_SZIP_FOUND ${SZIP_FOUND}) + # Search pure Config mode, there is not a FindSZIP module available + find_package (${LIBAEC_PACKAGE_NAME} NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} OPTIONAL_COMPONENTS ${LIBAEC_SEARCH_TYPE}) + set(H5_SZIP_FOUND ${${LIBAEC_PACKAGE_NAME}_FOUND}) if (H5_SZIP_FOUND) set (H5_SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR}) set (H5_SZIP_INCLUDE_DIRS ${H5_SZIP_INCLUDE_DIRS} ${SZIP_INCLUDE_DIR}) - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) + if(LIBAEC_PACKAGE_NAME STREQUAL "libaec") + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} libaec::sz libaec::aec) + else () + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) + endif () endif () + message (VERBOSE "H5_SZIP_FOUND=${SZIP_FOUND} and LINK_COMP_LIBS=${LINK_COMP_LIBS}") else () if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${HDF5_ENABLE_SZIP_ENCODING}) - message (VERBOSE "Filter SZIP is built") - message (VERBOSE "... with library AEC") + message (VERBOSE "Filter SZIP is built using library AEC") set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_STATIC_LIBRARY}) endif () endif () + message (VERBOSE "LINK_COMP_LIBS=${LINK_COMP_LIBS}") if (H5_SZIP_FOUND) set (H5_HAVE_FILTER_SZIP 1) set (H5_HAVE_SZLIB_H 1) @@ -185,6 +208,6 @@ if (HDF5_ENABLE_SZIP_SUPPORT) endif () else () set (HDF5_ENABLE_SZIP_SUPPORT OFF CACHE BOOL "" FORCE) - message (WARNING "SZIP support in HDF5 was enabled but not found") + message (FATAL_ERROR "SZIP support in HDF5 was enabled but not found") endif () endif () diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index a2564e68ad5..2f4deff89cb 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -465,11 +465,12 @@ The HDF5 data model, file format, API, library, and tools are open and distribut endif () endif () if (H5_SZIP_FOUND AND SZIP_USE_EXTERNAL) + set (SZIP_PROJNAME "${LIBAEC_PACKAGE_NAME}") if (WIN32) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;ALL;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};${SZIP_PROJNAME};ALL;/") else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};${SZIP_PROJNAME};libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};${SZIP_PROJNAME};configinstall;/") endif () endif () if (PLUGIN_FOUND AND PLUGIN_USE_EXTERNAL) diff --git a/CMakeLists.txt b/CMakeLists.txt index cf9729d099e..52b9a7c7300 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -254,10 +254,12 @@ set (HDF5_TEST_SRC_DIR ${HDF5_SOURCE_DIR}/test) set (HDF5_TEST_PAR_DIR ${HDF5_SOURCE_DIR}/testpar) set (HDF5_TEST_API_SRC_DIR ${HDF5_SOURCE_DIR}/test/API) set (HDF5_TEST_API_PAR_SRC_DIR ${HDF5_SOURCE_DIR}/testpar/API) -set (HDF5_CPP_SRC_DIR ${HDF5_SOURCE_DIR}/c++) +set (HDF5_CPP_SRC_DIR ${HDF5_SOURCE_DIR}/c++/src) set (HDF5_CPP_TST_DIR ${HDF5_SOURCE_DIR}/c++/test) -set (HDF5_HL_SRC_DIR ${HDF5_SOURCE_DIR}/hl) -set (HDF5_HL_CPP_SRC_DIR ${HDF5_SOURCE_DIR}/hl/c++) +set (HDF5_HL_SRC_DIR ${HDF5_SOURCE_DIR}/hl/src) +set (HDF5_HL_TST_DIR ${HDF5_SOURCE_DIR}/hl/test) +set (HDF5_HL_CPP_SRC_DIR ${HDF5_SOURCE_DIR}/hl/c++/src) +set (HDF5_HL_CPP_TST_DIR ${HDF5_SOURCE_DIR}/hl/c++/test) set (HDF5_HL_TOOLS_DIR ${HDF5_SOURCE_DIR}/hl/tools) set (HDF5_TOOLS_ROOT_DIR ${HDF5_SOURCE_DIR}/tools) set (HDF5_TOOLS_SRC_DIR ${HDF5_SOURCE_DIR}/tools/src) @@ -448,7 +450,7 @@ else () endif () set (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION_STRING}") set (HDF5_PACKAGE_TARNAME "${HDF5_PACKAGE}${HDF_PACKAGE_EXT}") -set (HDF5_PACKAGE_URL "http://www.hdfgroup.org") +set (HDF5_PACKAGE_URL "https://www.hdfgroup.org") set (HDF5_PACKAGE_BUGREPORT "help@hdfgroup.org") #----------------------------------------------------------------------------- @@ -595,8 +597,10 @@ option (HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" O if (HDF5_ENABLE_COVERAGE) include (${HDF5_SOURCE_DIR}/config/sanitizer/code-coverage.cmake) if(CODE_COVERAGE AND CODE_COVERAGE_ADDED) + message(VERBOSE "Add instrumentation to all targets") add_code_coverage () # Adds instrumentation to all targets else () + message(VERBOSE "Use --coverage option") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g --coverage -O0 -fprofile-arcs -ftest-coverage") if (CMAKE_C_COMPILER_ID STREQUAL "GNU") @@ -890,10 +894,10 @@ endif () #----------------------------------------------------------------------------- # Option to use 1.14.x API #----------------------------------------------------------------------------- +set (H5_USE_114_API_DEFAULT 0) if (NOT DEFAULT_API_VERSION) set (DEFAULT_API_VERSION "v114") endif () -set (H5_USE_114_API_DEFAULT 0) if (DEFAULT_API_VERSION MATCHES "v114") set (H5_USE_114_API_DEFAULT 1) endif () @@ -906,7 +910,11 @@ include (UserMacros.cmake) #----------------------------------------------------------------------------- # Include filter (zlib, szip, etc.) macros #----------------------------------------------------------------------------- -include (CMakeFilters.cmake) +option (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF) +option (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" OFF) +if (HDF5_ENABLE_Z_LIB_SUPPORT OR HDF5_ENABLE_SZIP_SUPPORT) + include (CMakeFilters.cmake) +endif () #----------------------------------------------------------------------------- # Include external VOL connectors @@ -1011,10 +1019,10 @@ if (HDF5_BUILD_DOC AND EXISTS "${HDF5_DOXYGEN_DIR}" AND IS_DIRECTORY "${HDF5_DOX else () set (HDF5_DOXY_WARNINGS "NO") endif () - message(STATUS "Doxygen version: ${DOXYGEN_VERSION}") + message(VERBOSE "Doxygen version: ${DOXYGEN_VERSION}") add_subdirectory (doxygen) else () - message(STATUS "Doxygen needs to be installed to generate the doxygen documentation") + message(WARNING "Doxygen needs to be installed to generate the doxygen documentation") endif () endif () @@ -1033,22 +1041,22 @@ if (EXISTS "${HDF5_SOURCE_DIR}/utils" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/utils option (HDF5_BUILD_PARALLEL_TOOLS "Build Parallel HDF5 Tools" OFF) if (HDF5_BUILD_PARALLEL_TOOLS AND HDF5_ENABLE_PARALLEL) set (CMAKE_PREFIX_PATH "$HDF_RESOURCES_DIR") - find_package(MFU REQUIRED) + find_package (MFU REQUIRED) if (MFU_FOUND) - message(STATUS "LL_PATH=${LL_PATH}") + message (VERBOSE "LL_PATH=${LL_PATH}") set (H5_HAVE_LIBMFU 1) set (H5_HAVE_MFU_H 1) set (CMAKE_REQUIRED_INCLUDES "${MFU_INCLUDE_DIR}") set (MFU_LIBRARY_DEBUG "$MFU_LIBRARY") set (MFU_LIBRARY_RELEASE "$MFU_LIBRARY") endif () - find_package(CIRCLE REQUIRED) + find_package (CIRCLE REQUIRED) if (CIRCLE_FOUND) set (H5_HAVE_LIBCIRCLE 1) set (H5_HAVE_CIRCLE_H 1) set (CMAKE_REQUIRED_INCLUDES "${CIRCLE_INCLUDE_DIR}") endif () - find_package(DTCMP REQUIRED) + find_package (DTCMP REQUIRED) if (DTCMP_FOUND) set (H5_HAVE_LIBDTCMP 1) set (H5_HAVE_DTCMP_H 1) @@ -1071,19 +1079,16 @@ endif () #----------------------------------------------------------------------------- # Include filter plugins #----------------------------------------------------------------------------- -if (${H5_LIBVER_DIR} EQUAL 16 OR DEFAULT_API_VERSION MATCHES "v16") - set (HDF5_ENABLE_PLUGIN_SUPPORT OFF CACHE BOOL "" FORCE) - message (VERBOSE "Filter PLUGINs cannot be used with 1.6 API") -else () - include (CMakePlugins.cmake) +option (HDF5_ENABLE_PLUGIN_SUPPORT "Enable PLUGIN Filters" OFF) +if (HDF5_ENABLE_PLUGIN_SUPPORT) + if (${H5_LIBVER_DIR} EQUAL 16 OR DEFAULT_API_VERSION MATCHES "v16") + set (HDF5_ENABLE_PLUGIN_SUPPORT OFF CACHE BOOL "" FORCE) + message (VERBOSE "Filter PLUGINs cannot be used with 1.6 API") + else () + include (CMakePlugins.cmake) - if (HDF5_PACKAGE_EXTLIBS AND NOT HDF5_NO_PACKAGES) - if (HDF5_ENABLE_PLUGIN_SUPPORT AND PLUGIN_FOUND) + if (HDF5_PACKAGE_EXTLIBS AND NOT HDF5_NO_PACKAGES AND PLUGIN_FOUND) PACKAGE_PLUGIN_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) -# option (HDF5_TEST_PLUGIN "Execute plugin tests" ON) -# mark_as_advanced (HDF5_TEST_PLUGIN) - -# TEST_PLUGIN_LIBRARY () endif () endif () endif () diff --git a/CMakePlugins.cmake b/CMakePlugins.cmake index f607c2cfb39..674716d8fbb 100644 --- a/CMakePlugins.cmake +++ b/CMakePlugins.cmake @@ -10,6 +10,7 @@ # help@hdfgroup.org. # option (PLUGIN_USE_EXTERNAL "Use External Library Building for filter PLUGIN else search" OFF) +option (PLUGIN_USE_LOCALCONTENT "Use local file for PLUGIN FetchContent" OFF) if (NOT PLUGIN_USE_LOCALCONTENT) set (PLUGIN_URL ${PLUGIN_TGZ_ORIGPATH}/${PLUGIN_TGZ_NAME}) @@ -19,7 +20,7 @@ else () endif () set (PLUGIN_URL ${H5PL_TGZPATH}/${PLUGIN_TGZ_NAME}) endif () -message (STATUS "Filter PLUGIN file is ${PLUGIN_URL}") +message (VERBOSE "Filter PLUGIN file is ${PLUGIN_URL}") include (ExternalProject) #option (HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO") @@ -49,21 +50,22 @@ endif () #----------------------------------------------------------------------------- # Option for PLUGIN support #----------------------------------------------------------------------------- -option (HDF5_ENABLE_PLUGIN_SUPPORT "Enable PLUGIN Filters" OFF) if (HDF5_ENABLE_PLUGIN_SUPPORT) if (NOT PLUGIN_USE_EXTERNAL) find_package (PLUGIN NAMES ${PLUGIN_PACKAGE_NAME}${HDF_PACKAGE_EXT}) if (NOT PLUGIN_FOUND) find_package (PLUGIN) # Legacy find endif () - endif () - if (NOT PLUGIN_FOUND) + else () if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_PLUGIN_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) message (STATUS "Filter PLUGIN is built") - else () - message (FATAL_ERROR " PLUGIN is Required for PLUGIN support in HDF5") endif () endif () - message (STATUS "Filter PLUGIN is ON") + if (PLUGIN_FOUND) + message (STATUS "Filter PLUGIN is ON") + else () + set (HDF5_ENABLE_PLUGIN_SUPPORT OFF CACHE BOOL "" FORCE) + message (FATAL_ERROR " PLUGIN support in HDF5 was enabled but not found") + endif () endif () diff --git a/CMakePresets.json b/CMakePresets.json index e9c02352149..fc35ed866f2 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -18,11 +18,11 @@ "hidden": true, "cacheVariables": { "ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}, - "ZLIB_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/madler/zlib/releases/download/v1.3"}, - "ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.tar.gz"}, + "ZLIB_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/madler/zlib/releases/download/v1.3.1"}, + "ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.1.tar.gz"}, "ZLIBNG_PACKAGE_NAME": {"type": "STRING", "value": "zlib-ng"}, "ZLIBNG_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/zlib-ng/zlib-ng/archive/refs/tags"}, - "ZLIBNG_TGZ_NAME": {"type": "STRING", "value": "2.1.6.tar.gz"}, + "ZLIBNG_TGZ_NAME": {"type": "STRING", "value": "2.2.2.tar.gz"}, "LIBAEC_PACKAGE_NAME": {"type": "STRING", "value": "libaec"}, "LIBAEC_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3"}, "LIBAEC_TGZ_NAME": {"type": "STRING", "value": "libaec-1.1.3.tar.gz"} @@ -47,11 +47,11 @@ "cacheVariables": { "BSHUF_TGZ_NAME": {"type": "STRING", "value": "bitshuffle-0.5.1.tar.gz"}, "BSHUF_PACKAGE_NAME": {"type": "STRING", "value": "bshuf"}, - "BLOSC_TGZ_NAME": {"type": "STRING", "value": "c-blosc-1.21.5.tar.gz"}, + "BLOSC_TGZ_NAME": {"type": "STRING", "value": "c-blosc-1.21.6.tar.gz"}, "BLOSC_PACKAGE_NAME": {"type": "STRING", "value": "blosc"}, "BLOSC_ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.tar.gz"}, "BLOSC_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}, - "BLOSC2_TGZ_NAME": {"type": "STRING", "value": "c-blosc2-2.14.4.tar.gz"}, + "BLOSC2_TGZ_NAME": {"type": "STRING", "value": "c-blosc2-2.15.1.tar.gz"}, "BLOSC2_PACKAGE_NAME": {"type": "STRING", "value": "blosc2"}, "BLOSC2_ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.tar.gz"}, "BLOSC2_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}, @@ -62,15 +62,15 @@ "JPEG_TGZ_NAME": {"type": "STRING", "value": "jpegsrc.v9e.tar.gz"}, "JPEG_PACKAGE_NAME": {"type": "STRING", "value": "jpeg"}, "BUILD_LZ4_LIBRARY_SOURCE": "ON", - "LZ4_TGZ_NAME": {"type": "STRING", "value": "lz4-1.9.4.tar.gz"}, + "LZ4_TGZ_NAME": {"type": "STRING", "value": "lz4-1.10.0.tar.gz"}, "LZ4_PACKAGE_NAME": {"type": "STRING", "value": "lz4"}, "LZF_TGZ_NAME": {"type": "STRING", "value": "liblzf-3.6.tar.gz"}, "LZF_PACKAGE_NAME": {"type": "STRING", "value": "lzf"}, "SZ_TGZ_NAME": {"type": "STRING", "value": "SZ-2.1.12.5.tar.gz"}, "SZ_PACKAGE_NAME": {"type": "STRING", "value": "SZ"}, - "ZFP_TGZ_NAME": {"type": "STRING", "value": "zfp-1.0.0.tar.gz"}, + "ZFP_TGZ_NAME": {"type": "STRING", "value": "zfp-1.0.1.tar.gz"}, "ZFP_PACKAGE_NAME": {"type": "STRING", "value": "zfp"}, - "ZSTD_TGZ_NAME": {"type": "STRING", "value": "zstd-1.5.5.tar.gz"}, + "ZSTD_TGZ_NAME": {"type": "STRING", "value": "zstd-1.5.6.tar.gz"}, "ZSTD_PACKAGE_NAME": {"type": "STRING", "value": "zstd"} } }, diff --git a/HDF5Examples/C/CMakeLists.txt b/HDF5Examples/C/CMakeLists.txt index b394212150e..845b3adaaeb 100644 --- a/HDF5Examples/C/CMakeLists.txt +++ b/HDF5Examples/C/CMakeLists.txt @@ -20,6 +20,6 @@ if (${H5_LIBVER_DIR} GREATER 110) add_subdirectory (${PROJECT_SOURCE_DIR}/H5VDS) endif () -if (H5_HAVE_PARALLEL AND HDF5_ENABLE_PARALLEL) +if (H5EX_ENABLE_PARALLEL AND H5_HAVE_PARALLEL AND HDF5_ENABLE_PARALLEL) add_subdirectory (${PROJECT_SOURCE_DIR}/H5PAR) endif () diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_zfp.ddl index a8e66c08054..8dadf939143 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.1.1 (ZFP-1.0.0) github.com/LLNL/H5Z-ZFP + COMMENT H5Z-ZFP-1.1.1 (ZFP-1.0.1) 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 dd7197cda78..8b95b6e205b 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 268456209 - To find more about the filter check H5Z-ZFP-1.1.1 (ZFP-1.0.0) github.com/LLNL/H5Z-ZFP + Number of parameters is 6 with the value 269504785 + To find more about the filter check H5Z-ZFP-1.1.1 (ZFP-1.0.1) 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/TUTR/CMakeLists.txt b/HDF5Examples/C/TUTR/CMakeLists.txt index ddf3e3fbe28..416bb5e365d 100644 --- a/HDF5Examples/C/TUTR/CMakeLists.txt +++ b/HDF5Examples/C/TUTR/CMakeLists.txt @@ -82,7 +82,7 @@ if (H5EX_BUILD_TESTING) ) macro (ADD_H5_TEST testname) - if (HDF5_ENABLE_USING_MEMCHECKER) + if (HDF5_USING_ANALYSIS_TOOL) add_test (NAME ${EXAMPLE_VARNAME}_tutr_${testname} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test ( diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt index 5ce806f6253..dd7cb3d9606 100644 --- a/HDF5Examples/CMakeLists.txt +++ b/HDF5Examples/CMakeLists.txt @@ -86,7 +86,7 @@ if (H5EX_ENABLE_PARALLEL) CHECK_SYMBOL_EXISTS (MPI_Comm_c2f "${MPI_C_INCLUDE_DIRS}/mpi.h" H5_HAVE_MPI_MULTI_LANG_Comm) CHECK_SYMBOL_EXISTS (MPI_Info_c2f "${MPI_C_INCLUDE_DIRS}/mpi.h" H5_HAVE_MPI_MULTI_LANG_Info) else () - message (STATUS "Parallel libraries not found") + message (WARNING "Parallel libraries not found") endif () endif () @@ -165,9 +165,9 @@ if (${H5_LIBVER_DIR} GREATER 16) # Build the CPP Examples #----------------------------------------------------------------------------- if (EXISTS "${H5EXAMPLES_SOURCE_DIR}/CXX" AND IS_DIRECTORY "${H5EXAMPLES_SOURCE_DIR}/CXX") - option (H5EX_BUILD_CPP_LIB "Build examples C++ support" OFF) + option (H5EX_BUILD_CXX "Build examples C++ support" OFF) else () - set (H5EX_BUILD_CPP_LIB OFF CACHE BOOL "Build examples C++ support" FORCE) + set (H5EX_BUILD_CXX OFF CACHE BOOL "Build examples C++ support" FORCE) endif () #----------------------------------------------------------------------------- @@ -195,7 +195,7 @@ if (${H5_LIBVER_DIR} GREATER 16) else () set (H5EX_BUILD_FORTRAN OFF} CACHE BOOL "Build examples FORTRAN support" FORCE) set (H5EX_BUILD_JAVA OFF CACHE BOOL "Build examples JAVA support" FORCE) - set (H5EX_BUILD_CPP_LIB OFF CACHE BOOL "Build examples C++ support" FORCE) + set (H5EX_BUILD_CXX OFF CACHE BOOL "Build examples C++ support" FORCE) set (H5EX_BUILD_FILTERS OFF CACHE BOOL "Build examples PLUGIN filter support" FORCE) endif () @@ -209,7 +209,7 @@ endif () if (H5EX_BUILD_JAVA AND HDF5_BUILD_JAVA) add_subdirectory (JAVA) endif () -if (H5EX_BUILD_CPP_LIB AND HDF5_BUILD_CPP_LIB) +if (H5EX_BUILD_CXX AND HDF5_BUILD_CPP_LIB) add_subdirectory (CXX) endif () if (H5EX_BUILD_PYTHON) diff --git a/HDF5Examples/config/cmake-presets/hidden-presets.json b/HDF5Examples/config/cmake-presets/hidden-presets.json index d38e802f1f6..d6b89cc4af1 100644 --- a/HDF5Examples/config/cmake-presets/hidden-presets.json +++ b/HDF5Examples/config/cmake-presets/hidden-presets.json @@ -132,7 +132,7 @@ "name": "ci-CPP", "hidden": true, "cacheVariables": { - "H5EX_BUILD_CPP_LIB": "ON" + "H5EX_BUILD_CXX": "ON" } }, { diff --git a/HDF5Examples/config/cmake/HDFExampleMacros.cmake b/HDF5Examples/config/cmake/HDFExampleMacros.cmake index dd2c46fba67..2f58cb3e383 100644 --- a/HDF5Examples/config/cmake/HDFExampleMacros.cmake +++ b/HDF5Examples/config/cmake/HDFExampleMacros.cmake @@ -34,7 +34,7 @@ macro (BASIC_SETTINGS varname) set (CMAKE_C_STANDARD 99) set (CMAKE_C_STANDARD_REQUIRED TRUE) - if (H5EX_BUILD_CPP_LIB) + if (H5EX_BUILD_CXX) ENABLE_LANGUAGE (CXX) set (CMAKE_CXX_STANDARD 98) @@ -140,11 +140,20 @@ macro (HDF5_SUPPORT) set (H5EX_BUILD_JAVA OFF CACHE BOOL "Build Java support" FORCE) message (STATUS "Using static HDF5 - disable build of Java examples") endif () + if (H5EX_BUILD_HL) + set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} HL) + endif () if (H5EX_BUILD_FORTRAN) set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} Fortran) + if (H5EX_BUILD_HL) + set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} Fortran_HL) + endif () endif () - if (H5EX_BUILD_CPP_LIB) + if (H5EX_BUILD_CXX) set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} CXX) + if (H5EX_BUILD_HL) + set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} CXX_HL) + endif () endif () if (H5EX_BUILD_JAVA) set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} Java) @@ -161,14 +170,23 @@ macro (HDF5_SUPPORT) if (NOT HDF5_static_C_FOUND AND NOT HDF5_shared_C_FOUND) #find library from non-dual-binary package set (FIND_HDF_COMPONENTS C) + if (H5EX_BUILD_HL) + set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} HL) + endif () if (H5EX_BUILD_FORTRAN) set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} Fortran) + if (H5EX_BUILD_HL) + set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} Fortran_HL) + endif () endif () if (H5EX_BUILD_JAVA) set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} Java) endif () - if (H5EX_BUILD_CPP_LIB) + if (H5EX_BUILD_CXX) set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} CXX) + if (H5EX_BUILD_HL) + set (FIND_HDF_COMPONENTS ${FIND_HDF_COMPONENTS} CXX_HL) + endif () endif () message (STATUS "HDF5 find comps: ${FIND_HDF_COMPONENTS}") @@ -217,6 +235,22 @@ macro (HDF5_SUPPORT) set (H5EX_HDF5_DUMP_EXECUTABLE $) endif() + if (NOT HDF5_static_HL_FOUND AND NOT HDF5_shared_HL_FOUND) + set (H5EX_BUILD_HL OFF CACHE BOOL "Build High Level support" FORCE) + message (STATUS "HDF5 HL libs not found - disable build of HL examples") + else () + if (H5EX_BUILD_HL AND ${HDF5_BUILD_HL_LIB}) + if (BUILD_SHARED_LIBS AND HDF5_shared_HL_FOUND) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_SHARED_LIBRARY}) + elseif (HDF5_static_HL_FOUND) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_STATIC_LIBRARY}) + else () + set (H5EX_BUILD_HL OFF CACHE BOOL "Build High Level support" FORCE) + message (STATUS "HDF5 HL libs not found - disable build of HL examples") + endif () + endif () + endif () + if (NOT HDF5_static_Fortran_FOUND AND NOT HDF5_shared_Fortran_FOUND) set (H5EX_BUILD_FORTRAN OFF CACHE BOOL "Build FORTRAN support" FORCE) message (STATUS "HDF5 Fortran libs not found - disable build of Fortran examples") @@ -224,14 +258,43 @@ macro (HDF5_SUPPORT) if (H5EX_BUILD_FORTRAN AND ${HDF5_BUILD_FORTRAN}) if (BUILD_SHARED_LIBS AND HDF5_shared_Fortran_FOUND) set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_FORTRAN_SHARED_LIBRARY}) + if (H5EX_BUILD_HL AND ${HDF5_BUILD_HL_LIB}) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_FORTRAN_HL_SHARED_LIBRARY}) + endif () elseif (HDF5_static_Fortran_FOUND) set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_FORTRAN_STATIC_LIBRARY}) + if (H5EX_BUILD_HL AND ${HDF5_BUILD_HL_LIB}) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_FORTRAN_HL_STATIC_LIBRARY}) + endif () else () set (H5EX_BUILD_FORTRAN OFF CACHE BOOL "Build FORTRAN support" FORCE) message (STATUS "HDF5 Fortran libs not found - disable build of Fortran examples") endif () endif () endif () + + if (NOT HDF5_static_CXX_FOUND AND NOT HDF5_shared_CXX_FOUND) + set (H5EX_BUILD_CXX OFF CACHE BOOL "Build CXX support" FORCE) + message (STATUS "HDF5 CXX libs not found - disable build of CXX examples") + else () + if (H5EX_BUILD_CXX AND ${HDF5_BUILD_CXX}) + if (BUILD_SHARED_LIBS AND HDF5_shared_CXX_FOUND) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CXX_SHARED_LIBRARY}) + if (H5EX_BUILD_HL AND ${HDF5_BUILD_HL_LIB}) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CXX_HL_SHARED_LIBRARY}) + endif () + elseif (HDF5_static_CXX_FOUND) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CXX_STATIC_LIBRARY}) + if (H5EX_BUILD_HL AND ${HDF5_BUILD_HL_LIB}) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CXX_HL_STATIC_LIBRARY}) + endif () + else () + set (H5EX_BUILD_CXX OFF CACHE BOOL "Build CXX support" FORCE) + message (STATUS "HDF5 CXX libs not found - disable build of CXX examples") + endif () + endif () + endif () + if (H5EX_BUILD_JAVA AND HDF5_Java_FOUND) if (${HDF5_BUILD_JAVA}) set (CMAKE_JAVA_INCLUDE_PATH "${CMAKE_JAVA_INCLUDE_PATH};${HDF5_JAVA_INCLUDE_DIRS}") diff --git a/HDF5Examples/config/cmake/cacheinit.cmake b/HDF5Examples/config/cmake/cacheinit.cmake index 0ef3a0e1b9c..a831734c408 100644 --- a/HDF5Examples/config/cmake/cacheinit.cmake +++ b/HDF5Examples/config/cmake/cacheinit.cmake @@ -12,6 +12,8 @@ set (H5EX_BUILD_TESTING ON CACHE BOOL "Build HDF5 Unit Testing" FORCE) #set (H5EX_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE) +#set (H5EX_BUILD_CXX ON CACHE BOOL "Build C++ support" FORCE) + #set (H5EX_BUILD_FILTERS ON CACHE BOOL "Build filter support" FORCE) #set (H5EX_ENABLE_F2003 ON CACHE BOOL "Enable FORTRAN 2003 Standard" FORCE) diff --git a/README.md b/README.md index d978f2b0994..dba466ad00b 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ HDF5 version 1.14.6-1 currently under development ![HDF5 Logo](doxygen/img/HDF5.png) -[![1.14 cmake build status](https://img.shields.io/github/actions/workflow/status/HDFGroup/hdf5/cmake.yml?branch=hdf5_1_14&label=HDF5%201.14%20CMake%20CI)](https://github.com/HDFGroup/hdf5/actions/workflows/cmake.yml?query=branch%3Ahdf5_1_14) -[![1.14 autotools build status](https://img.shields.io/github/actions/workflow/status/HDFGroup/hdf5/autotools.yml?branch=hdf5_1_14&label=HDF5%201.14%20Autotools%20CI)](https://github.com/HDFGroup/hdf5/actions/workflows/autotools.yml?query=branch%3Ahdf5_1_14) -[![BSD](https://img.shields.io/badge/License-BSD-blue.svg)](https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/COPYING) +[![1.14 cmake build status](https://img.shields.io/github/actions/workflow/status/HDFGroup/hdf5/cmake.yml?branch=hdf5_1_14_6&label=HDF5%201.14%20CMake%20CI)](https://github.com/HDFGroup/hdf5/actions/workflows/cmake.yml?query=branch%3Ahdf5_1_14) +[![1.14 autotools build status](https://img.shields.io/github/actions/workflow/status/HDFGroup/hdf5/autotools.yml?branch=hdf5_1_14_6&label=HDF5%201.14%20Autotools%20CI)](https://github.com/HDFGroup/hdf5/actions/workflows/autotools.yml?query=branch%3Ahdf5_1_14) +[![BSD](https://img.shields.io/badge/License-BSD-blue.svg)](https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/COPYING) [HPC configure/build/test results](https://my.cdash.org/index.php?project=HDF5) diff --git a/config/cmake/CTestCustom.cmake b/config/cmake/CTestCustom.cmake index b688421f328..04a01d81952 100644 --- a/config/cmake/CTestCustom.cmake +++ b/config/cmake/CTestCustom.cmake @@ -192,3 +192,9 @@ set (CTEST_CUSTOM_MEMCHECK_IGNORE H5WATCH-clearall-objects H5WATCH-cleanall-objects ) + +list (APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE + "/test/" + "/_deps/" +) + diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake index 70a82729271..8da673c6d12 100644 --- a/config/cmake/ConfigureChecks.cmake +++ b/config/cmake/ConfigureChecks.cmake @@ -67,6 +67,8 @@ if (WIN32 AND NOT MINGW) set (${HDF_PREFIX}_HAVE_VISUAL_STUDIO 1) endif () endif () + message (TRACE "MSVC=${MSVC}") + message (TRACE "HAVE_VISUAL_STUDIO=${${HDF_PREFIX}_HAVE_VISUAL_STUDIO}") endif () if (WINDOWS) @@ -86,6 +88,7 @@ if (WINDOWS) set (${HDF_PREFIX}_HAVE_LIBWS2_32 1) set (${HDF_PREFIX}_HAVE_LIBWSOCK32 1) endif () + message (TRACE "HAVE_TIMEZONE=${${HDF_PREFIX}_HAVE_TIMEZONE}") endif () # ---------------------------------------------------------------------- @@ -144,13 +147,13 @@ else () set(C_INCLUDE_QUADMATH_H 0) endif () -if (CYGWIN) +if (MINGW OR CYGWIN) set (CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE") add_definitions ("-D_GNU_SOURCE") endif () #----------------------------------------------------------------------------- -# Check for the math library "m" +# Library checks #----------------------------------------------------------------------------- if (MINGW OR NOT WINDOWS) CHECK_LIBRARY_EXISTS_CONCAT ("m" ceil ${HDF_PREFIX}_HAVE_LIBM) @@ -403,7 +406,12 @@ endif () #----------------------------------------------------------------------------- # Check for some functions that are used # -CHECK_FUNCTION_EXISTS (alarm ${HDF_PREFIX}_HAVE_ALARM) +if (NOT MINGW) + # alarm(2) support is spotty in MinGW, so assume it doesn't exist + # + # https://lists.gnu.org/archive/html/bug-gnulib/2013-03/msg00040.html + CHECK_FUNCTION_EXISTS (alarm ${HDF_PREFIX}_HAVE_ALARM) +endif () CHECK_FUNCTION_EXISTS (fcntl ${HDF_PREFIX}_HAVE_FCNTL) CHECK_FUNCTION_EXISTS (flock ${HDF_PREFIX}_HAVE_FLOCK) CHECK_FUNCTION_EXISTS (fork ${HDF_PREFIX}_HAVE_FORK) diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in index fbc821948e1..cf8170164d9 100644 --- a/config/cmake/H5pubconf.h.in +++ b/config/cmake/H5pubconf.h.in @@ -366,6 +366,9 @@ /* Define to 1 if you have the header file. */ #cmakedefine H5_HAVE_ZLIB_H @H5_HAVE_ZLIB_H@ +/* Define to 1 if you have the header file. */ +#cmakedefine H5_HAVE_ZLIBNG_H @H5_HAVE_ZLIBNG_H@ + /* Define to 1 if you have the `_getvideoconfig' function. */ #cmakedefine H5_HAVE__GETVIDEOCONFIG @H5_HAVE__GETVIDEOCONFIG@ diff --git a/config/cmake/HDF5ExampleCache.cmake b/config/cmake/HDF5ExampleCache.cmake index 99232cc06ca..e0c1ab39b9c 100644 --- a/config/cmake/HDF5ExampleCache.cmake +++ b/config/cmake/HDF5ExampleCache.cmake @@ -10,8 +10,8 @@ set (H5EX_BUILD_EXAMPLES ${HDF5_BUILD_EXAMPLES} CACHE BOOL "Build Examples" FORC set (H5EX_BUILD_FORTRAN ${HDF5_BUILD_FORTRAN} CACHE BOOL "Build examples FORTRAN support" FORCE) set (H5EX_BUILD_JAVA ${HDF5_BUILD_JAVA} CACHE BOOL "Build examples JAVA support" FORCE) set (H5EX_BUILD_FILTERS ${HDF5_ENABLE_PLUGIN_SUPPORT} CACHE BOOL "Build examples PLUGIN filter support" FORCE) -set (H5EX_BUILD_CPP_LIB ${HDF5_BUILD_CPP_LIB} CACHE BOOL "Build HDF5 C++ Library" FORCE) -set (H5EX_BUILD_HL_LIB ${HDF5_BUILD_HL_LIB} CACHE BOOL "Build HIGH Level examples" FORCE) +set (H5EX_BUILD_CXX ${HDF5_BUILD_CPP_LIB} CACHE BOOL "Build HDF5 C++ Library" FORCE) +set (H5EX_BUILD_HL ${HDF5_BUILD_HL_LIB} CACHE BOOL "Build High Level examples" FORCE) set (H5EX_ENABLE_THREADSAFE ${HDF5_ENABLE_THREADSAFE} CACHE BOOL "Enable examples thread-safety" FORCE) set (H5EX_ENABLE_PARALLEL ${HDF5_ENABLE_PARALLEL} CACHE BOOL "Enable examples parallel build (requires MPI)" FORCE) set (H5EX_USE_GNU_DIRS ${HDF5_USE_GNU_DIRS} CACHE BOOL "ON to use GNU Coding Standard install directory variables, OFF to use historical settings" FORCE) @@ -44,22 +44,47 @@ message (STATUS "HDF5 H5_LIBVER_DIR: ${H5_LIBVER_DIR} HDF5_API_VERSION: ${DEFAUL 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) + if (HDF5_BUILD_HL_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_LIB_TARGET}) + set (H5EX_HDF5_INCLUDE_DIRS "${H5EX_HDF5_INCLUDE_DIRS};${HDF5_HL_SRC_DIR};${HDF5_HL_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) + endif () if (HDF5_BUILD_FORTRAN) set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_F90_LIB_TARGET}) set (H5EX_MOD_EXT "/static" CACHE STRING "Use Static Modules for Examples" FORCE) + if (HDF5_BUILD_HL_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_F90_LIB_TARGET}) + endif () endif () if (HDF5_BUILD_CPP_LIB) set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CPP_LIB_TARGET}) + if (HDF5_BUILD_HL_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_CPP_LIB_TARGET}) + set (H5EX_HDF5_INCLUDE_DIRS "${H5EX_HDF5_INCLUDE_DIRS};${HDF5_HL_CPP_SRC_DIR};${HDF5_HL_CPP_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) + endif () endif () 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) + if (HDF5_BUILD_HL_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_LIBSH_TARGET}) + set (H5EX_HDF5_INCLUDE_DIRS "${H5EX_HDF5_INCLUDE_DIRS};${HDF5_HL_SRC_DIR};${HDF5_HL_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) + endif () + if (HDF5_BUILD_CPP_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CPP_LIBSH_TARGET}) + endif () if (HDF5_BUILD_FORTRAN) set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_F90_LIBSH_TARGET}) set (H5EX_MOD_EXT "/shared" CACHE STRING "Use Shared Modules for Examples" FORCE) + if (HDF5_BUILD_HL_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_F90_LIBSH_TARGET}) + endif () endif () if (HDF5_BUILD_CPP_LIB) set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_CPP_LIBSH_TARGET}) + if (HDF5_BUILD_HL_LIB) + set (H5EX_HDF5_LINK_LIBS ${H5EX_HDF5_LINK_LIBS} ${HDF5_HL_CPP_LIBSH_TARGET}) + set (H5EX_HDF5_INCLUDE_DIRS "${H5EX_HDF5_INCLUDE_DIRS};${HDF5_HL_CPP_SRC_DIR};${HDF5_HL_CPP_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) + endif () endif () if (HDF5_BUILD_JAVA) set (HDF5_JAVA_INCLUDE_DIRS ${HDF5_JAVA_JARS} ${HDF5_JAVA_LOGGING_JAR}) diff --git a/config/cmake/HDF5PluginCache.cmake b/config/cmake/HDF5PluginCache.cmake index 8c667077b88..6ad49bd3060 100644 --- a/config/cmake/HDF5PluginCache.cmake +++ b/config/cmake/HDF5PluginCache.cmake @@ -27,6 +27,10 @@ if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT") set (ENABLE_LZF OFF CACHE BOOL "" FORCE) endif () +if (WIN32 AND (CMAKE_C_COMPILER_ID MATCHES "Intel[Ll][Ll][Vv][Mm]" OR CMAKE_C_COMPILER_ID MATCHES "Intel")) + set (ENABLE_ZFP OFF CACHE BOOL "" FORCE) +endif () + if (NOT DEFINED H5PL_TGZPATH) set (H5PL_TGZPATH "${TGZPATH}" CACHE PATH "PATH for finding plugin tgz file" FORCE) endif () diff --git a/config/cmake/HDF5PluginMacros.cmake b/config/cmake/HDF5PluginMacros.cmake index b361917bcf2..f8c59b1651d 100644 --- a/config/cmake/HDF5PluginMacros.cmake +++ b/config/cmake/HDF5PluginMacros.cmake @@ -60,6 +60,6 @@ endmacro () #------------------------------------------------------------------------------- macro (PACKAGE_PLUGIN_LIBRARY compress_type) if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "TGZ") - message (STATUS "Filter PLUGIN is to be packaged") + message (VERBOSE "Filter PLUGIN is to be packaged") endif () endmacro () diff --git a/config/cmake/HDFLibMacros.cmake b/config/cmake/HDFLibMacros.cmake index 09f40680b72..364b35dc547 100644 --- a/config/cmake/HDFLibMacros.cmake +++ b/config/cmake/HDFLibMacros.cmake @@ -40,6 +40,11 @@ macro (EXTERNAL_ZLIB_LIBRARY compress_type) add_library(${HDF_PACKAGE_NAMESPACE}zlib-static ALIAS zlib-static) set (H5_ZLIB_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}zlib-static") set (H5_ZLIB_LIBRARIES ${H5_ZLIB_STATIC_LIBRARY}) + if (HDF5_USE_ZLIB_NG) + set (H5_ZLIB_HEADER "zlib-ng.h") + else () + set (H5_ZLIB_HEADER "zlib.h") + endif () set (H5_ZLIB_INCLUDE_DIR_GEN "${hdf5_zlib_BINARY_DIR}") set (H5_ZLIB_INCLUDE_DIR "${hdf5_zlib_SOURCE_DIR}") diff --git a/config/cmake/LIBAEC/CMakeLists.txt b/config/cmake/LIBAEC/CMakeLists.txt index 5d978275565..931ef350aae 100644 --- a/config/cmake/LIBAEC/CMakeLists.txt +++ b/config/cmake/LIBAEC/CMakeLists.txt @@ -121,21 +121,6 @@ if (WIN32) add_compile_definitions (_CONSOLE) endif () -#----------------------------------------------------------------------------- -# Compiler specific flags : Shouldn't there be compiler tests for these -#----------------------------------------------------------------------------- -if (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" OR CMAKE_C_COMPILER_ID MATCHES "[Cc]lang") - set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}") -endif () - -#----------------------------------------------------------------------------- -# This is in here to help some of the GCC based IDES like Eclipse -# and code blocks parse the compiler errors and warnings better. -#----------------------------------------------------------------------------- -if (CMAKE_C_COMPILER_ID STREQUAL "GNU") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0") -endif () - #----------------------------------------------------------------------------- # Generate the aec_config.h file containing user settings needed by compilation #----------------------------------------------------------------------------- @@ -166,6 +151,12 @@ target_include_directories (${LIBAEC_LIB_TARGET} PUBLIC "$" "$" "$") +if (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" OR (CMAKE_C_COMPILER_ID MATCHES "[Cc]lang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0)) + target_compile_options(${LIBAEC_LIB_TARGET} PRIVATE -Wno-deprecated-non-prototype) +endif () +if (CMAKE_C_COMPILER_ID STREQUAL "GNU") + target_compile_options(${LIBAEC_LIB_TARGET} PRIVATE -fmessage-length=0) +endif () TARGET_C_PROPERTIES (${LIBAEC_LIB_TARGET} STATIC) H5_SET_LIB_OPTIONS (${LIBAEC_LIB_TARGET} ${LIBAEC_LIB_NAME} STATIC 0) set_target_properties (${LIBAEC_LIB_TARGET} PROPERTIES diff --git a/config/cmake/SignPackageFiles.cmake b/config/cmake/SignPackageFiles.cmake index 81cc5bfff21..32202c3209a 100644 --- a/config/cmake/SignPackageFiles.cmake +++ b/config/cmake/SignPackageFiles.cmake @@ -1,5 +1,5 @@ # This script signs the targets for the package -message(STATUS "Signing script in ${CPACK_TEMPORARY_INSTALL_DIRECTORY} and ${CPACK_PACKAGE_INSTALL_DIRECTORY}") +message(VERBOSE "Signing script in ${CPACK_TEMPORARY_INSTALL_DIRECTORY} and ${CPACK_PACKAGE_INSTALL_DIRECTORY}") # RPM needs ALL_COMPONENTS_IN_ONE added to path between ${CPACK_TEMPORARY_INSTALL_DIRECTORY} and ${CPACK_PACKAGE_INSTALL_DIRECTORY} if (CPACK_GENERATOR MATCHES "RPM") diff --git a/config/cmake/ZLIB/CMakeLists.txt b/config/cmake/ZLIB/CMakeLists.txt index 3dba6a89657..b3ef6cce1bb 100644 --- a/config/cmake/ZLIB/CMakeLists.txt +++ b/config/cmake/ZLIB/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.18) set (CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) project (ZLIB C) -set (VERSION "1.3") +set(VERSION "1.3.1") #----------------------------------------------------------------------------- # Basic ZLIB stuff here @@ -131,6 +131,7 @@ set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES if (MSVC) set(CMAKE_DEBUG_POSTFIX "d") add_definitions (-D_BIND_TO_CURRENT_VCLIBS_VERSION=1) + add_definitions (-D_CRT_SECURE_NO_DEPRECATE) add_definitions (-D_CRT_SECURE_NO_WARNINGS) add_definitions (-D_CONSOLE) add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) @@ -191,7 +192,10 @@ set(ZLIB_SRCS ) add_library(${ZLIB_LIB_TARGET} STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -target_include_directories(${ZLIB_LIB_TARGET} PRIVATE "${CMAKE_BINARY_DIR}") +target_include_directories(${ZLIB_LIB_TARGET} + PRIVATE "${CMAKE_BINARY_DIR}" + PUBLIC "${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}" +) if (MSVC AND CMAKE_CL_64) set_target_properties (${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") endif () diff --git a/config/cmake/ZLIBNG/CMakeLists.txt b/config/cmake/ZLIBNG/CMakeLists.txt index 5bb5da961e1..22305f22091 100644 --- a/config/cmake/ZLIBNG/CMakeLists.txt +++ b/config/cmake/ZLIBNG/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.18) -project(ZLIB VERSION ${ZLIB_HEADER_VERSION} LANGUAGES C) +project(ZLIB LANGUAGES C) message(STATUS "Using CMake version ${CMAKE_VERSION}") @@ -71,6 +71,7 @@ include(CheckCSourceCompiles) include(CheckCSourceRuns) include(CheckCCompilerFlag) include(CMakeDependentOption) +include(CMakePackageConfigHelpers) include(FeatureSummary) include(cmake/detect-arch.cmake) @@ -80,6 +81,10 @@ include(cmake/detect-intrinsics.cmake) include(cmake/detect-sanitizer.cmake) include(cmake/fallback-macros.cmake) +if(CMAKE_TOOLCHAIN_FILE) + message(STATUS "Using CMake toolchain: ${CMAKE_TOOLCHAIN_FILE}") +endif() + # Make sure we use an appropriate BUILD_TYPE by default, "Release" to be exact # this should select the maximum generic optimisation on the current platform (i.e. -O3 for gcc/clang) get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) @@ -98,7 +103,7 @@ endif() # Options parsing # option(WITH_GZFILEOP "Compile with support for gzFile related functions" ON) -option(ZLIB_COMPAT "Compile with zlib compatible API" ON) +option(ZLIB_COMPAT "Compile with zlib compatible API" OFF) option(ZLIB_ENABLE_TESTS "Build test binaries" OFF) option(ZLIBNG_ENABLE_TESTS "Test zlib-ng specific API" OFF) option(WITH_GTEST "Build gtest_zlib" OFF) @@ -110,6 +115,7 @@ option(WITH_REDUCED_MEM "Reduced memory usage for special cases (reduces perform option(WITH_NEW_STRATEGIES "Use new strategies" ON) option(WITH_NATIVE_INSTRUCTIONS "Instruct the compiler to use the full instruction set on this host (gcc/clang -march=native)" OFF) +option(WITH_RUNTIME_CPU_DETECTION "Build with runtime detection of CPU architecture" ON) option(WITH_MAINTAINER_WARNINGS "Build with project maintainer warnings" OFF) option(WITH_CODE_COVERAGE "Enable code coverage reporting" OFF) option(WITH_INFLATE_STRICT "Build with strict inflate distance checking" OFF) @@ -139,14 +145,14 @@ elseif(BASEARCH_S360_FOUND) option(WITH_DFLTCC_INFLATE "Build with DFLTCC intrinsics for decompression on IBM Z" OFF) option(WITH_CRC32_VX "Build with vectorized CRC32 on IBM Z" ON) elseif(BASEARCH_X86_FOUND) - option(WITH_AVX2 "Build with AVX2" ON) - option(WITH_AVX512 "Build with AVX512" ON) - option(WITH_AVX512VNNI "Build with AVX512 VNNI extensions" ON) option(WITH_SSE2 "Build with SSE2" ON) - option(WITH_SSSE3 "Build with SSSE3" ON) - option(WITH_SSE42 "Build with SSE42" ON) - option(WITH_PCLMULQDQ "Build with PCLMULQDQ" ON) - option(WITH_VPCLMULQDQ "Build with VPCLMULQDQ" ON) + cmake_dependent_option(WITH_SSSE3 "Build with SSSE3" ON "WITH_SSE2" OFF) + cmake_dependent_option(WITH_SSE42 "Build with SSE42" ON "WITH_SSSE3" OFF) + cmake_dependent_option(WITH_PCLMULQDQ "Build with PCLMULQDQ" ON "WITH_SSE42" OFF) + cmake_dependent_option(WITH_AVX2 "Build with AVX2" ON "WITH_SSE42" OFF) + cmake_dependent_option(WITH_AVX512 "Build with AVX512" ON "WITH_AVX2" OFF) + cmake_dependent_option(WITH_AVX512VNNI "Build with AVX512 VNNI extensions" ON "WITH_AVX512" OFF) + cmake_dependent_option(WITH_VPCLMULQDQ "Build with VPCLMULQDQ" ON "WITH_PCLMULQDQ;WITH_AVX512" OFF) endif() option(INSTALL_UTILS "Copy minigzip and minideflate during install" OFF) @@ -198,6 +204,12 @@ if(CMAKE_C_COMPILER_ID MATCHES "^Intel") set(WARNFLAGS_MAINTAINER /W5) set(WARNFLAGS_DISABLE) endif() + check_c_compiler_flag(-diag-disable=10441 HAVE_DIAG_10441) + if(HAVE_DIAG_10441) + list(APPEND WARNFLAGS_DISABLE "-diag-disable=10441") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -diag-disable=10441") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -diag-disable=10441") + endif() elseif(MSVC) # Minimum supported MSVC version is 1800 = Visual Studio 12.0/2013 # See also https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html @@ -208,9 +220,9 @@ elseif(MSVC) # (who'd use cmake from an IDE...) but checking for ICC before checking for MSVC should # avoid mistakes. # /Oi ? - set(WARNFLAGS /W3) + set(WARNFLAGS /W3 /w34242 /WX) set(WARNFLAGS_MAINTAINER /W4) - set(WARNFLAGS_DISABLE) + set(WARNFLAGS_DISABLE /wd4206 /wd4054) if(BASEARCH_ARM_FOUND) add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE) if(NOT "${ARCH}" MATCHES "aarch64") @@ -280,27 +292,68 @@ endif() # Set native march/mcpu if(WITH_NATIVE_INSTRUCTIONS) - if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang") - check_c_compiler_flag(-march=native HAVE_MARCH_NATIVE) - if(HAVE_MARCH_NATIVE) - set(NATIVEFLAG "-march=native") - else() - check_c_compiler_flag(-mcpu=native HAVE_MCPU_NATIVE) - if(HAVE_MCPU_NATIVE) - set(NATIVEFLAG "-mcpu=native") + if(NATIVE_ARCH_OVERRIDE) + message(STATUS "WARNING: WITH_NATIVE_INSTRUCTIONS enabled, but running with NATIVE_ARCH_OVERRIDE: ${NATIVE_ARCH_OVERRIDE}") + set(NATIVEFLAG "${NATIVE_ARCH_OVERRIDE}") + else() + if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang") + check_c_compiler_flag(-march=native HAVE_MARCH_NATIVE) + if(HAVE_MARCH_NATIVE) + set(NATIVEFLAG "-march=native") + else() + check_c_compiler_flag(-mcpu=native HAVE_MCPU_NATIVE) + if(HAVE_MCPU_NATIVE) + set(NATIVEFLAG "-mcpu=native") + endif() endif() + # Fall through endif() - # Fall through endif() if(NATIVEFLAG) - # Apply flag to all source files and compilation checks - add_compile_options(${NATIVEFLAG}) + # Apply flags to all source files and compilation checks + if(WIN32) + separate_arguments(NATIVEOPTIONS WINDOWS_COMMAND "${NATIVEFLAG}") + else() + separate_arguments(NATIVEOPTIONS UNIX_COMMAND "${NATIVEFLAG}") + endif() + add_compile_options(${NATIVEOPTIONS}) + set(WITH_RUNTIME_CPU_DETECTION OFF) else() message(STATUS "Ignoring WITH_NATIVE_INSTRUCTIONS; not implemented yet on this configuration") set(WITH_NATIVE_INSTRUCTIONS OFF) endif() endif() +# Compile without functable or CPU detection +if(NOT WITH_RUNTIME_CPU_DETECTION) + if(MSVC AND BASEARCH_X86_FOUND) + message(STATUS "WARNING: Microsoft Visual Studio does not support compile time detection of CPU features for \"/arch\" before \"AVX\"") + # Workaround for MSVC. By default MSVC does not define the __SSE*__ macros. + # Fix it if AVX is enabled. + set(CMAKE_REQUIRED_FLAGS "${NATIVEFLAG}") + check_c_source_compiles( + "#ifndef __AVX__ + # error \"AVX is not enabled.\" + #endif + int main(void) { return 0; }" + MSVC_IS_ENABLED_AVX + ) + set(CMAKE_REQUIRED_FLAGS) + if(MSVC_IS_ENABLED_AVX) + add_definitions( + -D__SSE__=1 + -D__SSE2__=1 + -D__SSE3__=1 + -D__SSSE3__=1 + -D__SSE4_1__=1 + -D__SSE4_2__=1 + -D__PCLMUL__=1 + ) + endif() + endif() + add_definitions(-DDISABLE_RUNTIME_CPU_DETECTION) +endif() + # Force disable LTO if WITH_NATIVE_INSTRUCTIONS is not active if(NOT WITH_NATIVE_INSTRUCTIONS) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION OFF) @@ -351,6 +404,14 @@ if(HAVE_SYS_SDT_H) endif() check_include_file(unistd.h HAVE_UNISTD_H) +# +# Check for Linux includes +# +check_include_file(linux/auxvec.h HAVE_LINUX_AUXVEC_H) +if(HAVE_LINUX_AUXVEC_H) + add_definitions(-DHAVE_LINUX_AUXVEC_H) +endif() + # # Check to see if we have large file support # @@ -452,6 +513,22 @@ if(HAVE_ATTRIBUTE_ALIGNED) add_definitions(-DHAVE_ATTRIBUTE_ALIGNED) endif() +# +# Check for __builtin_assume_aligned(x,n) support in the compiler +# +check_c_source_compiles( + "char *test(char *buffer) { + char *abuffer = __builtin_assume_aligned(buffer,64); + return abuffer; + } + int main() { + return 0; + }" + HAVE_BUILTIN_ASSUME_ALIGNED) +if(HAVE_BUILTIN_ASSUME_ALIGNED) + add_definitions(-DHAVE_BUILTIN_ASSUME_ALIGNED) +endif() + # # check for __builtin_ctz() support in the compiler # @@ -515,12 +592,8 @@ add_compile_options($<$:-DZLIB_DEBUG>) if(MSVC) set(CMAKE_DEBUG_POSTFIX "d") - add_definitions (-D_BIND_TO_CURRENT_VCLIBS_VERSION=1) - add_definitions (-D_CRT_SECURE_NO_WARNINGS) - add_definitions (-D_CONSOLE) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) endif() if(BASEARCH_X86_FOUND) @@ -557,14 +630,15 @@ endif() # Enable reduced memory configuration # if(WITH_REDUCED_MEM) - add_definitions(-DHASH_SIZE=32768u -DGZBUFSIZE=8192) + add_definitions(-DHASH_SIZE=32768u -DGZBUFSIZE=8192 -DNO_LIT_MEM) message(STATUS "Configured for reduced memory environment") endif() +set(GENERIC_ARCHDIR "arch/generic") set(ZLIB_ARCH_SRCS) -set(ZLIB_ARCH_HDRS) -set(ARCHDIR "arch/generic") +set(ZLIB_ARCH_HDRS ${GENERIC_ARCHDIR}/generic_functions.h) + if(BASEARCH_ARM_FOUND) set(ARCHDIR "arch/arm") elseif(BASEARCH_PPC_FOUND) @@ -579,6 +653,7 @@ elseif(BASEARCH_X86_FOUND) add_feature_info(SSE2 1 "Support the SSE2 instruction set, using \"${SSE2FLAG}\"") endif() else() + set(ARCHDIR ${GENERIC_ARCHDIR}) message(STATUS "No optimized architecture: using ${ARCHDIR}") endif() @@ -649,13 +724,17 @@ if(WITH_OPTIM) endif() endif() endif() - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm_features.h) - list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/arm_features.c) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm_functions.h) + if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm_features.h) + list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/arm_features.c) + endif() + if(WITH_ACLE) check_acle_compiler_flag() if(HAVE_ACLE_FLAG) add_definitions(-DARM_ACLE) - set(ACLE_SRCS ${ARCHDIR}/crc32_acle.c ${ARCHDIR}/insert_string_acle.c) + set(ACLE_SRCS ${ARCHDIR}/crc32_acle.c) set_property(SOURCE ${ACLE_SRCS} PROPERTY COMPILE_FLAGS "${ACLEFLAG} ${NOLTOFLAG}") list(APPEND ZLIB_ARCH_SRCS ${ACLE_SRCS}) add_feature_info(ACLE_CRC 1 "Support ACLE optimized CRC hash generation, using \"${ACLEFLAG}\"") @@ -714,10 +793,18 @@ if(WITH_OPTIM) if(WITH_POWER9) check_power9_intrinsics() endif() - if(HAVE_VMX OR HAVE_POWER8_INTRIN OR HAVE_POWER9_INTRIN) + if(POWER8_NEED_AUXVEC_H OR POWER9_NEED_AUXVEC_H) + add_definitions(-DPOWER_NEED_AUXVEC_H) + endif() + if(HAVE_POWER8_INTRIN OR HAVE_POWER9_INTRIN) add_definitions(-DPOWER_FEATURES) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/power_features.h) - list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/power_features.c) + endif() + if(HAVE_VMX OR HAVE_POWER8_INTRIN OR HAVE_POWER9_INTRIN) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/power_functions.h) + if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/power_features.h) + list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/power_features.c) + endif() endif() # VMX specific options and files if(WITH_ALTIVEC) @@ -766,11 +853,17 @@ if(WITH_OPTIM) if(HAVE_RVV_INTRIN) add_definitions(-DRISCV_FEATURES) add_definitions(-DRISCV_RVV) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/riscv_features.h) - list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/riscv_features.c) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/riscv_functions.h) + if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/riscv_features.h) + list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/riscv_features.c) + endif() # FIXME: we will not set compile flags for riscv_features.c when # the kernels update hwcap or hwprobe for riscv - set(RVV_SRCS ${ARCHDIR}/riscv_features.c ${ARCHDIR}/adler32_rvv.c ${ARCHDIR}/chunkset_rvv.c ${ARCHDIR}/compare256_rvv.c ${ARCHDIR}/slide_hash_rvv.c) + set(RVV_SRCS ${ARCHDIR}/adler32_rvv.c ${ARCHDIR}/chunkset_rvv.c ${ARCHDIR}/compare256_rvv.c ${ARCHDIR}/slide_hash_rvv.c) + if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND RVV_SRCS ${ARCHDIR}/riscv_features.c) + endif() list(APPEND ZLIB_ARCH_SRCS ${RVV_SRCS}) set_property(SOURCE ${RVV_SRCS} PROPERTY COMPILE_FLAGS "${RISCVFLAG} ${NOLTOFLAG}") else() @@ -781,11 +874,11 @@ if(WITH_OPTIM) check_s390_intrinsics() if(HAVE_S390_INTRIN) add_definitions(-DS390_FEATURES) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/s390_features.h) - list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/s390_features.c) - endif() - if(WITH_DFLTCC_DEFLATE OR WITH_DFLTCC_INFLATE) - list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/dfltcc_common.c) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/s390_functions.h) + if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/s390_features.h) + list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/s390_features.c) + endif() endif() if(WITH_DFLTCC_DEFLATE) add_definitions(-DS390_DFLTCC_DEFLATE) @@ -808,14 +901,80 @@ if(WITH_OPTIM) endif() elseif(BASEARCH_X86_FOUND) add_definitions(-DX86_FEATURES) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/x86_features.h) - list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/x86_features.c) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/x86_functions.h) + if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/x86_features.h) + list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/x86_features.c) + endif() if(MSVC) list(APPEND ZLIB_ARCH_HDRS fallback_builtins.h) endif() + check_xsave_intrinsics() + if(HAVE_XSAVE_INTRIN) + add_feature_info(XSAVE 1 "Support XSAVE intrinsics using \"${XSAVEFLAG}\"") + if(WITH_RUNTIME_CPU_DETECTION) + set_property(SOURCE ${ARCHDIR}/x86_features.c PROPERTY COMPILE_FLAGS "${XSAVEFLAG}") + endif() + if(NOT (CMAKE_C_COMPILER_ID MATCHES "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS 8.2)) + add_definitions(-DX86_HAVE_XSAVE_INTRIN) + endif() + endif() + if(WITH_SSE2) + check_sse2_intrinsics() + if(HAVE_SSE2_INTRIN) + add_definitions(-DX86_SSE2) + set(SSE2_SRCS ${ARCHDIR}/chunkset_sse2.c ${ARCHDIR}/compare256_sse2.c ${ARCHDIR}/slide_hash_sse2.c) + list(APPEND ZLIB_ARCH_SRCS ${SSE2_SRCS}) + if(NOT ${ARCH} MATCHES "x86_64") + set_property(SOURCE ${SSE2_SRCS} PROPERTY COMPILE_FLAGS "${SSE2FLAG} ${NOLTOFLAG}") + add_feature_info(FORCE_SSE2 FORCE_SSE2 "Assume CPU is SSE2 capable") + if(FORCE_SSE2) + add_definitions(-DX86_NOCHECK_SSE2) + endif() + endif() + else() + set(WITH_SSE2 OFF) + endif() + endif() + if(WITH_SSSE3) + check_ssse3_intrinsics() + if(HAVE_SSSE3_INTRIN AND WITH_SSE2) + add_definitions(-DX86_SSSE3) + set(SSSE3_SRCS ${ARCHDIR}/adler32_ssse3.c ${ARCHDIR}/chunkset_ssse3.c) + add_feature_info(SSSE3_ADLER32 1 "Support SSSE3-accelerated adler32, using \"${SSSE3FLAG}\"") + list(APPEND ZLIB_ARCH_SRCS ${SSSE3_SRCS}) + set_property(SOURCE ${SSSE3_SRCS} PROPERTY COMPILE_FLAGS "${SSSE3FLAG} ${NOLTOFLAG}") + else() + set(WITH_SSSE3 OFF) + endif() + endif() + if(WITH_SSE42) + check_sse42_intrinsics() + if(HAVE_SSE42_INTRIN AND WITH_SSSE3) + add_definitions(-DX86_SSE42) + set(SSE42_SRCS ${ARCHDIR}/adler32_sse42.c) + add_feature_info(SSE42_CRC 1 "Support SSE4.2 optimized adler32 hash generation, using \"${SSE42FLAG}\"") + list(APPEND ZLIB_ARCH_SRCS ${SSE42_SRCS}) + set_property(SOURCE ${SSE42_SRCS} PROPERTY COMPILE_FLAGS "${SSE42FLAG} ${NOLTOFLAG}") + else() + set(WITH_SSE42 OFF) + endif() + endif() + if(WITH_PCLMULQDQ) + check_pclmulqdq_intrinsics() + if(HAVE_PCLMULQDQ_INTRIN AND WITH_SSE42) + add_definitions(-DX86_PCLMULQDQ_CRC) + set(PCLMULQDQ_SRCS ${ARCHDIR}/crc32_pclmulqdq.c) + add_feature_info(PCLMUL_CRC 1 "Support CRC hash generation using PCLMULQDQ, using \"${SSE42FLAG} ${PCLMULFLAG}\"") + list(APPEND ZLIB_ARCH_SRCS ${PCLMULQDQ_SRCS}) + set_property(SOURCE ${PCLMULQDQ_SRCS} PROPERTY COMPILE_FLAGS "${SSE42FLAG} ${PCLMULFLAG} ${NOLTOFLAG}") + else() + set(WITH_PCLMULQDQ OFF) + endif() + endif() if(WITH_AVX2) check_avx2_intrinsics() - if(HAVE_AVX2_INTRIN) + if(HAVE_AVX2_INTRIN AND WITH_SSE42) add_definitions(-DX86_AVX2) set(AVX2_SRCS ${ARCHDIR}/slide_hash_avx2.c) add_feature_info(AVX2_SLIDEHASH 1 "Support AVX2 optimized slide_hash, using \"${AVX2FLAG}\"") @@ -833,15 +992,12 @@ if(WITH_OPTIM) endif() if(WITH_AVX512) check_avx512_intrinsics() - if(HAVE_AVX512_INTRIN) + if(HAVE_AVX512_INTRIN AND WITH_AVX2) add_definitions(-DX86_AVX512) list(APPEND AVX512_SRCS ${ARCHDIR}/adler32_avx512.c) add_feature_info(AVX512_ADLER32 1 "Support AVX512-accelerated adler32, using \"${AVX512FLAG}\"") list(APPEND ZLIB_ARCH_SRCS ${AVX512_SRCS}) list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/adler32_avx512_p.h) - if(HAVE_MASK_INTRIN) - add_definitions(-DX86_MASK_INTRIN) - endif() set_property(SOURCE ${AVX512_SRCS} PROPERTY COMPILE_FLAGS "${AVX512FLAG} ${NOLTOFLAG}") else() set(WITH_AVX512 OFF) @@ -849,7 +1005,7 @@ if(WITH_OPTIM) endif() if(WITH_AVX512VNNI) check_avx512vnni_intrinsics() - if(HAVE_AVX512VNNI_INTRIN) + if(HAVE_AVX512VNNI_INTRIN AND WITH_AVX2) add_definitions(-DX86_AVX512VNNI) add_feature_info(AVX512VNNI_ADLER32 1 "Support AVX512VNNI adler32, using \"${AVX512VNNIFLAG}\"") list(APPEND AVX512VNNI_SRCS ${ARCHDIR}/adler32_avx512_vnni.c) @@ -859,82 +1015,17 @@ if(WITH_OPTIM) set(WITH_AVX512VNNI OFF) endif() endif() - if(WITH_SSE42) - check_sse42_intrinsics() - if(HAVE_SSE42_INTRIN) - add_definitions(-DX86_SSE42) - set(SSE42_SRCS ${ARCHDIR}/adler32_sse42.c ${ARCHDIR}/insert_string_sse42.c) - add_feature_info(SSE42_CRC 1 "Support SSE4.2 optimized CRC hash generation, using \"${SSE42FLAG}\"") - list(APPEND ZLIB_ARCH_SRCS ${SSE42_SRCS}) - set_property(SOURCE ${SSE42_SRCS} PROPERTY COMPILE_FLAGS "${SSE42FLAG} ${NOLTOFLAG}") - else() - set(WITH_SSE42 OFF) - endif() - endif() - if(WITH_SSE2) - check_sse2_intrinsics() - if(HAVE_SSE2_INTRIN) - add_definitions(-DX86_SSE2) - set(SSE2_SRCS ${ARCHDIR}/chunkset_sse2.c ${ARCHDIR}/compare256_sse2.c ${ARCHDIR}/slide_hash_sse2.c) - list(APPEND ZLIB_ARCH_SRCS ${SSE2_SRCS}) - if(NOT ${ARCH} MATCHES "x86_64") - set_property(SOURCE ${SSE2_SRCS} PROPERTY COMPILE_FLAGS "${SSE2FLAG} ${NOLTOFLAG}") - add_feature_info(FORCE_SSE2 FORCE_SSE2 "Assume CPU is SSE2 capable") - if(FORCE_SSE2) - add_definitions(-DX86_NOCHECK_SSE2) - endif() - endif() - else() - set(WITH_SSE2 OFF) - endif() - endif() - if(WITH_SSSE3) - check_ssse3_intrinsics() - if(HAVE_SSSE3_INTRIN) - add_definitions(-DX86_SSSE3) - set(SSSE3_SRCS ${ARCHDIR}/adler32_ssse3.c ${ARCHDIR}/chunkset_ssse3.c) - add_feature_info(SSSE3_ADLER32 1 "Support SSSE3-accelerated adler32, using \"${SSSE3FLAG}\"") - list(APPEND ZLIB_ARCH_SRCS ${SSSE3_SRCS}) - set_property(SOURCE ${SSSE3_SRCS} PROPERTY COMPILE_FLAGS "${SSSE3FLAG} ${NOLTOFLAG}") - else() - set(WITH_SSSE3 OFF) - endif() - endif() - if(WITH_PCLMULQDQ AND WITH_SSSE3 AND WITH_SSE42) - check_pclmulqdq_intrinsics() - if(HAVE_PCLMULQDQ_INTRIN AND HAVE_SSSE3_INTRIN) - add_definitions(-DX86_PCLMULQDQ_CRC) - set(PCLMULQDQ_SRCS ${ARCHDIR}/crc32_pclmulqdq.c) - add_feature_info(PCLMUL_CRC 1 "Support CRC hash generation using PCLMULQDQ, using \"${SSSE3FLAG} ${SSE42FLAG} ${PCLMULFLAG}\"") - list(APPEND ZLIB_ARCH_SRCS ${PCLMULQDQ_SRCS}) - set_property(SOURCE ${PCLMULQDQ_SRCS} PROPERTY COMPILE_FLAGS "${SSSE3FLAG} ${SSE42FLAG} ${PCLMULFLAG} ${NOLTOFLAG}") - - if(WITH_VPCLMULQDQ AND WITH_AVX512) - check_vpclmulqdq_intrinsics() - if(HAVE_VPCLMULQDQ_INTRIN AND HAVE_AVX512_INTRIN) - add_definitions(-DX86_VPCLMULQDQ_CRC) - set(VPCLMULQDQ_SRCS ${ARCHDIR}/crc32_vpclmulqdq.c) - add_feature_info(VPCLMUL_CRC 1 "Support CRC hash generation using VPCLMULQDQ, using \"${VPCLMULFLAG} ${AVX512FLAG}\"") - list(APPEND ZLIB_ARCH_SRCS ${VPCLMULQDQ_SRCS}) - set_property(SOURCE ${VPCLMULQDQ_SRCS} PROPERTY COMPILE_FLAGS "${SSSE3FLAG} ${SSE42FLAG} ${PCLMULFLAG} ${VPCLMULFLAG} ${AVX512FLAG} ${NOLTOFLAG}") - else() - set(WITH_VPCLMULQDQ OFF) - endif() - else() - set(WITH_VPCLMULQDQ OFF) - endif() + if(WITH_VPCLMULQDQ) + check_vpclmulqdq_intrinsics() + if(HAVE_VPCLMULQDQ_INTRIN AND WITH_PCLMULQDQ AND WITH_AVX512) + add_definitions(-DX86_VPCLMULQDQ_CRC) + set(VPCLMULQDQ_SRCS ${ARCHDIR}/crc32_vpclmulqdq.c) + add_feature_info(VPCLMUL_CRC 1 "Support CRC hash generation using VPCLMULQDQ, using \"${PCLMULFLAG} ${VPCLMULFLAG} ${AVX512FLAG}\"") + list(APPEND ZLIB_ARCH_SRCS ${VPCLMULQDQ_SRCS}) + set_property(SOURCE ${VPCLMULQDQ_SRCS} PROPERTY COMPILE_FLAGS "${PCLMULFLAG} ${VPCLMULFLAG} ${AVX512FLAG} ${NOLTOFLAG}") else() - set(WITH_PCLMULQDQ OFF) set(WITH_VPCLMULQDQ OFF) endif() - else() - set(WITH_PCLMULQDQ OFF) - set(WITH_VPCLMULQDQ OFF) - endif() - check_xsave_intrinsics() - if(HAVE_XSAVE_INTRIN) - add_feature_info(XSAVE 1 "Support XSAVE intrinsics using \"${XSAVEFLAG}\"") - set_property(SOURCE ${ARCHDIR}/x86_features.c PROPERTY COMPILE_FLAGS "${XSAVEFLAG}") endif() endif() endif() @@ -982,6 +1073,19 @@ if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) endif() endif() +# The user is allowed (but discouraged) to set absolute CMAKE_INSTALL_*DIR paths. +# If they do, we copy these non-relocatable paths into the pkg-config file. +if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}") + set(PC_INC_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}") +else() + set(PC_INC_INSTALL_DIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +endif() + +if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") + set(PC_LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}") +else() + set(PC_LIB_INSTALL_DIR "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +endif() #----------------------------------------------------------------------------- # Define ZLIB Library @@ -996,11 +1100,10 @@ set(ZLIB_PRIVATE_HDRS adler32_p.h chunkset_tpl.h compare256_rle.h - cpu_features.h + arch_functions.h crc32_braid_p.h crc32_braid_comb_p.h crc32_braid_tbl.h - crc32_fold.h deflate.h deflate_p.h functable.h @@ -1019,15 +1122,17 @@ set(ZLIB_PRIVATE_HDRS zutil.h ) set(ZLIB_SRCS + arch/generic/adler32_c.c + arch/generic/adler32_fold_c.c + arch/generic/chunkset_c.c + arch/generic/compare256_c.c + arch/generic/crc32_braid_c.c + arch/generic/crc32_fold_c.c + arch/generic/slide_hash_c.c adler32.c - adler32_fold.c - chunkset.c - compare256.c compress.c - cpu_features.c - crc32_braid.c + crc32.c crc32_braid_comb.c - crc32_fold.c deflate.c deflate_fast.c deflate_huff.c @@ -1042,12 +1147,16 @@ set(ZLIB_SRCS inftrees.c insert_string.c insert_string_roll.c - slide_hash.c trees.c uncompr.c zutil.c ) +if(WITH_RUNTIME_CPU_DETECTION) + list(APPEND ZLIB_PRIVATE_HDRS cpu_features.h) + list(APPEND ZLIB_SRCS cpu_features.c) +endif() + set(ZLIB_GZFILE_PRIVATE_HDRS gzguts.h ) @@ -1074,6 +1183,10 @@ endif() set_global_variable (ZLIB_LIBRARIES_TO_EXPORT "zlib-static") set (install_targets zlib-static) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +include_directories(${ARCHDIR}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/arch/generic) + #----------------------------------------------------------------------------- # Compiler specific flags #----------------------------------------------------------------------------- @@ -1106,9 +1219,12 @@ else() SET(ZCONF_PTRDIFF_LINE "#ifdef NEED_PTRDIFF_T /* may be set to #if 1 by configure/cmake/etc */") endif() +set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib${SUFFIX}.pc) if(WITH_GZFILEOP) set(PKG_CONFIG_CFLAGS "-DWITH_GZFILEOP") endif() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein + ${ZLIB_PC} @ONLY) configure_file(${CMAKE_CURRENT_BINARY_DIR}/zconf${SUFFIX}.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/zconf${SUFFIX}.h @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zlib${SUFFIX}.h.in @@ -1235,6 +1351,7 @@ add_feature_info(WITH_OPTIM WITH_OPTIM "Build with optimisation") add_feature_info(WITH_NEW_STRATEGIES WITH_NEW_STRATEGIES "Use new strategies") add_feature_info(WITH_NATIVE_INSTRUCTIONS WITH_NATIVE_INSTRUCTIONS "Instruct the compiler to use the full instruction set on this host (gcc/clang -march=native)") +add_feature_info(WITH_RUNTIME_CPU_DETECTION WITH_RUNTIME_CPU_DETECTION "Build with runtime CPU detection") add_feature_info(WITH_MAINTAINER_WARNINGS WITH_MAINTAINER_WARNINGS "Build with project maintainer warnings") add_feature_info(WITH_CODE_COVERAGE WITH_CODE_COVERAGE "Enable code coverage reporting") add_feature_info(WITH_INFLATE_STRICT WITH_INFLATE_STRICT "Build with strict inflate distance checking") diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake index 24299c6a378..40307531779 100644 --- a/config/cmake/cacheinit.cmake +++ b/config/cmake/cacheinit.cmake @@ -47,15 +47,15 @@ set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) # compression options ######################## set (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" FORCE) -set (ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) -set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3" CACHE STRING "Use ZLIB from original location" FORCE) +set (ZLIB_TGZ_NAME "zlib-1.3.1.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) +set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3.1" CACHE STRING "Use ZLIB from original location" FORCE) set (ZLIB_USE_LOCALCONTENT ON CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) set (ZLIB_GIT_URL "https://github.com/madler/zlib.git" CACHE STRING "Use ZLIB from GitHub repository" FORCE) set (ZLIB_GIT_BRANCH "develop" CACHE STRING "" FORCE) set (HDF5_USE_ZLIB_STATIC ON CACHE BOOL "Use static zlib library" FORCE) set (ZLIBNG_PACKAGE_NAME "zlib-ng" CACHE STRING "Name of ZLIBNG package" FORCE) -set (ZLIBNG_TGZ_NAME "2.1.6.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) +set (ZLIBNG_TGZ_NAME "2.2.2.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) set (ZLIBNG_TGZ_ORIGPATH "https://github.com/zlib-ng/zlib-ng/archive/refs/tags" CACHE STRING "Use ZLIBNG from original location" FORCE) set (ZLIBNG_GIT_URL "https://github.com/zlib-ng/zlib-ng.git" CACHE STRING "Use ZLIBNG from GitHub repository" FORCE) set (ZLIBNG_GIT_BRANCH "develop" CACHE STRING "" FORCE) @@ -79,7 +79,7 @@ set (KWSYS_USE_LOCALCONTENT OFF CACHE BOOL "Use local file for KWSYS FetchConten # filter plugin options ######################## -set (PLUGIN_TGZ_ORIGPATH "https://github.com/HDFGroup/hdf5_plugins/releases/download/snapshots" CACHE STRING "Use PLUGINS from original location" FORCE) +set (PLUGIN_TGZ_ORIGPATH "https://github.com/HDFGroup/hdf5_plugins/releases/download/snapshot" CACHE STRING "Use PLUGINS from original location" FORCE) set (PLUGIN_TGZ_NAME "hdf5_plugins-1.14.tar.gz" CACHE STRING "Use PLUGINS from compressed file" FORCE) set (PLUGIN_USE_LOCALCONTENT ON CACHE BOOL "Use local file for PLUGIN FetchContent" FORCE) set (PLUGIN_PACKAGE_NAME "pl" CACHE STRING "Name of PLUGIN package" FORCE) @@ -109,7 +109,7 @@ set (BLOSC_GIT_URL "https://github.com/Blosc/c-blosc.git" CACHE STRING "Use BLOS set (BLOSC_GIT_BRANCH "main" CACHE STRING "" FORCE) set (BLOSC_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) -set (BLOSC_TGZ_NAME "c-blosc-1.21.5.tar.gz" CACHE STRING "Use BLOSC from compressed file" FORCE) +set (BLOSC_TGZ_NAME "c-blosc-1.21.6.tar.gz" CACHE STRING "Use BLOSC from compressed file" FORCE) set (BLOSC_PACKAGE_NAME "blosc" CACHE STRING "Name of BLOSC package" FORCE) @@ -129,7 +129,7 @@ set (BLOSC2_GIT_URL "https://github.com/Blosc/c-blosc2.git" CACHE STRING "Use BL set (BLOSC2_GIT_BRANCH "main" CACHE STRING "" FORCE) set (BLOSC2_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) -set (BLOSC2_TGZ_NAME "c-blosc2-2.14.4.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) +set (BLOSC2_TGZ_NAME "c-blosc2-2.15.1.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) set (BLOSC2_PACKAGE_NAME "blosc2" CACHE STRING "Name of BLOSC2 package" FORCE) @@ -186,8 +186,8 @@ set (BUILD_LZ4_LIBRARY_SOURCE ON CACHE BOOL "build the lz4 library within the pl set (LZ4_GIT_URL "https://github.com/lz4/lz4.git" CACHE STRING "Use LZ4 from GitHub repository" FORCE) set (LZ4_GIT_BRANCH "dev" CACHE STRING "" FORCE) -set (LZ4_TGZ_ORIGPATH "https://github.com/lz4/lz4/releases/download/v1.9.4" CACHE STRING "Use PLUGINS from original location" FORCE) -set (LZ4_TGZ_NAME "lz4-1.9.4.tar.gz" CACHE STRING "Use LZ4 from compressed file" FORCE) +set (LZ4_TGZ_ORIGPATH "https://github.com/lz4/lz4/releases/download/v1.10.0" CACHE STRING "Use PLUGINS from original location" FORCE) +set (LZ4_TGZ_NAME "lz4-1.10.0.tar.gz" CACHE STRING "Use LZ4 from compressed file" FORCE) set (LZ4_PACKAGE_NAME "lz4" CACHE STRING "Name of LZ4 package" FORCE) @@ -232,7 +232,7 @@ set (ZFP_GIT_URL "https://github.com/LLNL/zfp.git" CACHE STRING "Use ZFP from G set (ZFP_GIT_BRANCH "develop" CACHE STRING "" FORCE) set (ZFP_TGZ_ORIGPATH "https://github.com/LLNL/zfp/releases/download/1.0.0" CACHE STRING "Use PLUGINS from original location" FORCE) -set (ZFP_TGZ_NAME "zfp-1.0.0.tar.gz" CACHE STRING "Use ZFP from compressed file" FORCE) +set (ZFP_TGZ_NAME "zfp-1.0.1.tar.gz" CACHE STRING "Use ZFP from compressed file" FORCE) set (ZFP_PACKAGE_NAME "zfp" CACHE STRING "Name of ZFP package" FORCE) @@ -243,7 +243,7 @@ set (ZFP_PACKAGE_NAME "zfp" CACHE STRING "Name of ZFP package" FORCE) set (ZSTD_GIT_URL "https://github.com/facebook/zstd.git" CACHE STRING "Use ZSTD from GitHub repository" FORCE) set (ZSTD_GIT_BRANCH "dev" CACHE STRING "" FORCE) -set (ZSTD_TGZ_ORIGPATH "https://github.com/facebook/zstd/releases/download/v1.5.5" CACHE STRING "Use PLUGINS from original location" FORCE) -set (ZSTD_TGZ_NAME "zstd-1.5.5.tar.gz" CACHE STRING "Use ZSTD from compressed file" FORCE) +set (ZSTD_TGZ_ORIGPATH "https://github.com/facebook/zstd/releases/download/v1.5.6" CACHE STRING "Use PLUGINS from original location" FORCE) +set (ZSTD_TGZ_NAME "zstd-1.5.6.tar.gz" CACHE STRING "Use ZSTD from compressed file" FORCE) set (ZSTD_PACKAGE_NAME "zstd" CACHE STRING "Name of ZSTD package" FORCE) diff --git a/config/cmake/examples/HDF5_Examples_options.cmake b/config/cmake/examples/HDF5_Examples_options.cmake index 2fe145c4704..14fcd2e9cba 100644 --- a/config/cmake/examples/HDF5_Examples_options.cmake +++ b/config/cmake/examples/HDF5_Examples_options.cmake @@ -14,13 +14,14 @@ #### format: set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DXXX:YY=ZZZZ") ### #### DEFAULT: ### #### BUILD_SHARED_LIBS:BOOL=OFF ### -#### H5EX_BUILD_C:BOOL=ON ### -#### H5EX_BUILD_CXX:BOOL=OFF ### -#### H5EX_BUILD_FORTRAN:BOOL=OFF ### -#### H5EX_BUILD_JAVA:BOOL=OFF ### -#### H5EX_BUILD_FILTERS:BOOL=OFF ### -#### H5EX_BUILD_TESTING:BOOL=OFF ### -#### H5EX_ENABLE_PARALLEL:BOOL=OFF ### +#### H5EX_BUILD_C:BOOL=ON ### +#### H5EX_BUILD_HL:BOOL=ON ### +#### H5EX_BUILD_CXX:BOOL=OFF ### +#### H5EX_BUILD_FORTRAN:BOOL=OFF ### +#### H5EX_BUILD_JAVA:BOOL=OFF ### +#### H5EX_BUILD_FILTERS:BOOL=OFF ### +#### H5EX_BUILD_TESTING:BOOL=OFF ### +#### H5EX_ENABLE_PARALLEL:BOOL=OFF ### ############################################################################################# ### uncomment/comment and change the following lines for other configuration options @@ -45,6 +46,9 @@ ### disable C builds #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5EX_BUILD_C:BOOL=OFF") +### enable HL builds +#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5EX_BUILD_HL:BOOL=ON") + ### enable C++ builds #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5EX_BUILD_CXX:BOOL=ON") diff --git a/config/cmake/grepTest.cmake b/config/cmake/grepTest.cmake index 44aa1975510..8a0f7271b2d 100644 --- a/config/cmake/grepTest.cmake +++ b/config/cmake/grepTest.cmake @@ -24,7 +24,7 @@ if (NOT TEST_OUTPUT) message (FATAL_ERROR "Require TEST_OUTPUT to be defined") endif () if (NOT TEST_FILTER) - message (STATUS "Optional TEST_FILTER to be defined") + message (VERBOSE "Optional TEST_FILTER to be defined") endif () if (NOT TEST_REFERENCE) message (FATAL_ERROR "Require TEST_REFERENCE to be defined") diff --git a/config/cmake/hdf5-config.cmake.in b/config/cmake/hdf5-config.cmake.in index c052762a195..6780101a4e7 100644 --- a/config/cmake/hdf5-config.cmake.in +++ b/config/cmake/hdf5-config.cmake.in @@ -88,6 +88,7 @@ if (${HDF5_PACKAGE_NAME}_ENABLE_PARALLEL) set (${HDF5_PACKAGE_NAME}_PARALLEL_FILTERED_WRITES @PARALLEL_FILTERED_WRITES@) set (${HDF5_PACKAGE_NAME}_LARGE_PARALLEL_IO @LARGE_PARALLEL_IO@) + enable_language(C) # for MPI::MPI_C find_package(MPI QUIET REQUIRED) endif () diff --git a/config/cmake/jrunTest.cmake b/config/cmake/jrunTest.cmake index d7d83d4f709..a6e53e60c09 100644 --- a/config/cmake/jrunTest.cmake +++ b/config/cmake/jrunTest.cmake @@ -21,7 +21,7 @@ if (NOT TEST_PROGRAM) message (FATAL_ERROR "Require TEST_PROGRAM to be defined") endif () if (NOT TEST_LIBRARY_DIRECTORY) - message (STATUS "Require TEST_LIBRARY_DIRECTORY to be defined") + message (VERBOSE "Require TEST_LIBRARY_DIRECTORY to be defined") endif () if (NOT TEST_FOLDER) message (FATAL_ERROR "Require TEST_FOLDER to be defined") @@ -30,7 +30,7 @@ if (NOT TEST_OUTPUT) message (FATAL_ERROR "Require TEST_OUTPUT to be defined") endif () if (NOT TEST_CLASSPATH) - message (STATUS "Require TEST_CLASSPATH to be defined") + message (VERBOSE "Require TEST_CLASSPATH to be defined") endif () if (EXISTS "${TEST_FOLDER}/${TEST_OUTPUT}") diff --git a/config/cmake/mccacheinit.cmake b/config/cmake/mccacheinit.cmake index caa1fe034fe..a7bf063b74a 100644 --- a/config/cmake/mccacheinit.cmake +++ b/config/cmake/mccacheinit.cmake @@ -54,14 +54,14 @@ set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) # compression options ######################## set (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" FORCE) -set (ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) -set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3" CACHE STRING "Use ZLIB from original location" FORCE) +set (ZLIB_TGZ_NAME "zlib-1.3.1.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) +set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3.1" CACHE STRING "Use ZLIB from original location" FORCE) set (ZLIB_USE_LOCALCONTENT ON CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) set (ZLIB_GIT_URL "https://github.com/madler/zlib.git" CACHE STRING "Use ZLIB from GitHub repository" FORCE) set (ZLIB_GIT_BRANCH "develop" CACHE STRING "" FORCE) set (ZLIBNG_PACKAGE_NAME "zlib-ng" CACHE STRING "Name of ZLIBNG package" FORCE) -set (ZLIBNG_TGZ_NAME "2.1.6.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) +set (ZLIBNG_TGZ_NAME "2.2.2.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) set (ZLIBNG_TGZ_ORIGPATH "https://github.com/zlib-ng/zlib-ng/archive/refs/tags" CACHE STRING "Use ZLIBNG from original location" FORCE) set (ZLIBNG_GIT_URL "https://github.com/zlib-ng/zlib-ng.git" CACHE STRING "Use ZLIBNG from GitHub repository" FORCE) set (ZLIBNG_GIT_BRANCH "develop" CACHE STRING "" FORCE) diff --git a/config/cmake/runTest.cmake b/config/cmake/runTest.cmake index 8eed074ecb6..2667bb5742e 100644 --- a/config/cmake/runTest.cmake +++ b/config/cmake/runTest.cmake @@ -24,7 +24,7 @@ if (NOT TEST_OUTPUT) message (FATAL_ERROR "Require TEST_OUTPUT to be defined") endif () if (NOT TEST_EXPECT) - message (STATUS "Require TEST_EXPECT to be defined") + message (VERBOSE "Require TEST_EXPECT to be defined") endif () if (EXISTS "${TEST_FOLDER}/${TEST_OUTPUT}") diff --git a/config/cmake/scripts/HDF5config.cmake b/config/cmake/scripts/HDF5config.cmake index 6a8dc9af9fa..4a5d5604e31 100644 --- a/config/cmake/scripts/HDF5config.cmake +++ b/config/cmake/scripts/HDF5config.cmake @@ -20,6 +20,7 @@ cmake_minimum_required (VERSION 3.18) # Usage: # ctest -S HDF5config.cmake,OPTION=VALUE -C Release -VV -O test.log # where valid options for OPTION are: +# NINJA - Use Ninja build system # BUILD_GENERATOR - The cmake build generator: # MinGW * MinGW Makefiles # Unix * Unix Makefiles @@ -111,69 +112,63 @@ if (NOT DEFINED HPC) set (SITE_OS_NAME "Windows") set (SITE_OS_VERSION "WIN10") if (BUILD_GENERATOR STREQUAL "VS202264") - set (CTEST_CMAKE_GENERATOR "Visual Studio 17 2022") - set (CMAKE_GENERATOR_ARCHITECTURE "x64") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") + else () + set (CTEST_CMAKE_GENERATOR "Visual Studio 17 2022") + set (CMAKE_GENERATOR_ARCHITECTURE "x64") + endif () set (SITE_OS_BITS "64") set (SITE_COMPILER_NAME "vs2022") set (SITE_COMPILER_VERSION "17") elseif (BUILD_GENERATOR STREQUAL "VS2022") - set (CTEST_CMAKE_GENERATOR "Visual Studio 17 2022") - set (CMAKE_GENERATOR_ARCHITECTURE "Win32") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") + else () + set (CTEST_CMAKE_GENERATOR "Visual Studio 17 2022") + set (CMAKE_GENERATOR_ARCHITECTURE "Win32") + endif () set (SITE_OS_BITS "32") set (SITE_COMPILER_NAME "vs2022") set (SITE_COMPILER_VERSION "17") elseif (BUILD_GENERATOR STREQUAL "VS201964") - set (CTEST_CMAKE_GENERATOR "Visual Studio 16 2019") - set (CMAKE_GENERATOR_ARCHITECTURE "x64") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") + else () + set (CTEST_CMAKE_GENERATOR "Visual Studio 16 2019") + set (CMAKE_GENERATOR_ARCHITECTURE "x64") + endif () set (SITE_OS_BITS "64") set (SITE_COMPILER_NAME "vs2019") set (SITE_COMPILER_VERSION "16") elseif (BUILD_GENERATOR STREQUAL "VS2019") - set (CTEST_CMAKE_GENERATOR "Visual Studio 16 2019") - set (CMAKE_GENERATOR_ARCHITECTURE "Win32") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") + else () + set (CTEST_CMAKE_GENERATOR "Visual Studio 16 2019") + set (CMAKE_GENERATOR_ARCHITECTURE "Win32") + endif () set (SITE_OS_BITS "32") set (SITE_COMPILER_NAME "vs2019") set (SITE_COMPILER_VERSION "16") elseif (BUILD_GENERATOR STREQUAL "VS201764") - set (CTEST_CMAKE_GENERATOR "Visual Studio 15 2017 Win64") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") + else () + set (CTEST_CMAKE_GENERATOR "Visual Studio 15 2017 Win64") + endif () set (SITE_OS_BITS "64") set (SITE_COMPILER_NAME "vs2017") set (SITE_COMPILER_VERSION "15") elseif (BUILD_GENERATOR STREQUAL "VS2017") - set (CTEST_CMAKE_GENERATOR "Visual Studio 15 2017") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") + else () + set (CTEST_CMAKE_GENERATOR "Visual Studio 15 2017") + endif () set (SITE_OS_BITS "32") set (SITE_COMPILER_NAME "vs2017") set (SITE_COMPILER_VERSION "15") - elseif (BUILD_GENERATOR STREQUAL "VS201564") - set (CTEST_CMAKE_GENERATOR "Visual Studio 14 2015 Win64") - set (SITE_OS_BITS "64") - set (SITE_COMPILER_NAME "vs2015") - set (SITE_COMPILER_VERSION "14") - elseif (BUILD_GENERATOR STREQUAL "VS2015") - set (CTEST_CMAKE_GENERATOR "Visual Studio 14 2015") - set (SITE_OS_BITS "32") - set (SITE_COMPILER_NAME "vs2015") - set (SITE_COMPILER_VERSION "14") - elseif (BUILD_GENERATOR STREQUAL "VS201364") - set (CTEST_CMAKE_GENERATOR "Visual Studio 12 2013 Win64") - set (SITE_OS_BITS "64") - set (SITE_COMPILER_NAME "vs2013") - set (SITE_COMPILER_VERSION "12") - elseif (BUILD_GENERATOR STREQUAL "VS2013") - set (CTEST_CMAKE_GENERATOR "Visual Studio 12 2013") - set (SITE_OS_BITS "32") - set (SITE_COMPILER_NAME "vs2013") - set (SITE_COMPILER_VERSION "12") - elseif (BUILD_GENERATOR STREQUAL "VS201264") - set (CTEST_CMAKE_GENERATOR "Visual Studio 11 2012 Win64") - set (SITE_OS_BITS "64") - set (SITE_COMPILER_NAME "vs2012") - set (SITE_COMPILER_VERSION "11") - elseif (BUILD_GENERATOR STREQUAL "VS2012") - set (CTEST_CMAKE_GENERATOR "Visual Studio 11 2012") - set (SITE_OS_BITS "32") - set (SITE_COMPILER_NAME "vs2012") - set (SITE_COMPILER_VERSION "11") else () message (FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2022, VS202264, VS2019, VS201964") endif () @@ -182,10 +177,14 @@ if (NOT DEFINED HPC) set (CTEST_SITE "WIN10${BUILD_GENERATOR}-${CTEST_SITE_EXT}") endif() else () - if (MINGW) - set (CTEST_CMAKE_GENERATOR "MinGW Makefiles") + if (DEFINED NINJA) + set (CTEST_CMAKE_GENERATOR "Ninja") else () - set (CTEST_CMAKE_GENERATOR "Unix Makefiles") + if (BUILD_GENERATOR STREQUAL "MINGW") + set (CTEST_CMAKE_GENERATOR "MinGW Makefiles") + else () + set (CTEST_CMAKE_GENERATOR "Unix Makefiles") + endif () endif () ## Set the following to unique id your computer ## if (APPLE) @@ -223,7 +222,7 @@ endif () ##### Following controls source update ##### #set (LOCAL_UPDATE "TRUE") set (REPOSITORY_URL "https://github.com/HDFGroup/hdf5.git") -set (REPOSITORY_BRANCH "hdf5_1_14") +set (REPOSITORY_BRANCH "hdf5_1_14_6") #uncomment to use a compressed source file: *.tar on linux or mac *.zip on windows #set(CTEST_USE_TAR_SOURCE "${CTEST_SOURCE_VERSION}") diff --git a/config/cmake/scripts/HDF5options.cmake b/config/cmake/scripts/HDF5options.cmake index 33bdf10d7f8..340a2ecfc96 100644 --- a/config/cmake/scripts/HDF5options.cmake +++ b/config/cmake/scripts/HDF5options.cmake @@ -62,9 +62,11 @@ set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRIN ### ext libs on system #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=NO") #set(ENV{ZLIB_ROOT} "some_location") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5_ZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DH5_ZLIB_INCLUDE_DIR:PATH=some_location/include") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DZLIB_INCLUDE_DIR:PATH=some_location/include") #set(ENV{SZIP_ROOT} "some_location") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5_SZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DH5_SZIP_INCLUDE_DIR:PATH=some_location/include") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DSZIP_INCLUDE_DIR:PATH=some_location/include") +#set(ENV{libaec_ROOT} "some_location") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -Dlibaec_LIBRARY:FILEPATH=some_location/lib/libaec.lib -Dlibaec_INCLUDE_DIR:PATH=some_location/include") ### disable using ext zlib #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF") diff --git a/config/toolchain/intel.cmake b/config/toolchain/intel.cmake index f8f60b28b46..f5b227ba2a0 100644 --- a/config/toolchain/intel.cmake +++ b/config/toolchain/intel.cmake @@ -4,7 +4,11 @@ set(CMAKE_COMPILER_VENDOR "intel") set(CMAKE_C_COMPILER icx) -set(CMAKE_CXX_COMPILER icpx) +if(WIN32) + set(CMAKE_CXX_COMPILER icx) +else() + set(CMAKE_CXX_COMPILER icpx) +endif() set(CMAKE_Fortran_COMPILER ifx) # the following is used if cross-compiling diff --git a/doxygen/examples/ImageSpec.html b/doxygen/examples/ImageSpec.html index 8fea8d6a893..130d86ecf6a 100644 --- a/doxygen/examples/ImageSpec.html +++ b/doxygen/examples/ImageSpec.html @@ -756,7 +756,7 @@

a color is presented as a triplet specifying the intensity of red, green, and blue components that make up each color.
-

+

In this example, the color component numeric type is an 8 bit unsigned integer. While this is most common and recommended for general use, other diff --git a/doxygen/img/Palettes_fm_anc.gif b/doxygen/img/Palettes.fm.anc.gif similarity index 100% rename from doxygen/img/Palettes_fm_anc.gif rename to doxygen/img/Palettes.fm.anc.gif diff --git a/hl/CMakeLists.txt b/hl/CMakeLists.txt index ab4bc79cc3f..ec51d58c3ca 100644 --- a/hl/CMakeLists.txt +++ b/hl/CMakeLists.txt @@ -20,11 +20,6 @@ if (HDF5_BUILD_TOOLS) add_subdirectory (tools) endif () -#-- Add High Level Examples -if (HDF5_BUILD_EXAMPLES) - add_subdirectory (examples) -endif () - #-- Build the Unit testing if requested if (NOT HDF5_EXTERNALLY_CONFIGURED AND BUILD_TESTING AND HDF5_TEST_SERIAL) add_subdirectory (test) diff --git a/hl/c++/CMakeLists.txt b/hl/c++/CMakeLists.txt index 07e7777b2c9..703b9d4ad7f 100644 --- a/hl/c++/CMakeLists.txt +++ b/hl/c++/CMakeLists.txt @@ -6,13 +6,6 @@ project (HDF5_HL_CPP CXX) #----------------------------------------------------------------------------- add_subdirectory (src) -# -------------------------------------------------------------------- -# Add in the examples for the Packet Table codes -# -------------------------------------------------------------------- -if (HDF5_BUILD_EXAMPLES) - add_subdirectory (examples) -endif () - # -------------------------------------------------------------------- # Add in the unit tests for the packet table c++ wrapper # -------------------------------------------------------------------- diff --git a/hl/c++/Makefile.am b/hl/c++/Makefile.am index 4bdab417fcc..607435ab49f 100644 --- a/hl/c++/Makefile.am +++ b/hl/c++/Makefile.am @@ -24,22 +24,7 @@ else endif SUBDIRS=src $(TESTSERIAL_DIR) -DIST_SUBDIRS=src test examples +DIST_SUBDIRS=src test -# Install examples -install-examples uninstall-examples: - @(cd examples && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; - -installcheck-local: - @(cd examples && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; - -# Clean examples when check-clean is invoked -check-clean :: - @$(MAKE) $(AM_MAKEFLAGS) build-$@ || exit 1; - @for d in X $(SUBDIRS) examples; do \ - if test $$d != X && test $$d != .; then \ - (set -x; cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \ - fi; \ - done include $(top_srcdir)/config/conclude.am diff --git a/hl/c++/test/CMakeLists.txt b/hl/c++/test/CMakeLists.txt index 192fb1398ed..94cee4f2c43 100644 --- a/hl/c++/test/CMakeLists.txt +++ b/hl/c++/test/CMakeLists.txt @@ -3,7 +3,7 @@ project (HDF5_HL_CPP_TEST CXX) add_executable (hl_ptableTest ${HDF5_HL_CPP_TEST_SOURCE_DIR}/ptableTest.cpp) target_compile_options(hl_ptableTest PRIVATE "${HDF5_CMAKE_CXX_FLAGS}") -target_include_directories (hl_ptableTest PRIVATE "${HDF5_HL_SRC_DIR}/test;${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") +target_include_directories (hl_ptableTest PRIVATE "${HDF5_HL_TST_DIR};${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") if (NOT BUILD_SHARED_LIBS) TARGET_C_PROPERTIES (hl_ptableTest STATIC) target_link_libraries (hl_ptableTest PRIVATE diff --git a/hl/fortran/CMakeLists.txt b/hl/fortran/CMakeLists.txt index ad6faa4f52b..50fdf2b54cc 100644 --- a/hl/fortran/CMakeLists.txt +++ b/hl/fortran/CMakeLists.txt @@ -6,13 +6,6 @@ project (HDF5_HL_F90 C Fortran) #----------------------------------------------------------------------------- add_subdirectory (src) -#----------------------------------------------------------------------------- -# Build the HL Fortran Examples -#----------------------------------------------------------------------------- -if (HDF5_BUILD_EXAMPLES) - add_subdirectory (examples) -endif () - #----------------------------------------------------------------------------- # Testing #----------------------------------------------------------------------------- diff --git a/hl/tools/h5watch/CMakeLists.txt b/hl/tools/h5watch/CMakeLists.txt index 7b00431cae1..e802075d2c8 100644 --- a/hl/tools/h5watch/CMakeLists.txt +++ b/hl/tools/h5watch/CMakeLists.txt @@ -36,7 +36,7 @@ if (BUILD_TESTING AND HDF5_TEST_SWMR AND HDF5_TEST_SERIAL) ) add_executable (extend_dset ${extend_dset_SOURCES}) target_compile_options(extend_dset PRIVATE "${HDF5_CMAKE_C_FLAGS}") - target_include_directories (extend_dset PRIVATE "${HDF5_HL_SRC_DIR}/test;${HDF5_HL_SRC_DIR}/src;${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") + target_include_directories (extend_dset PRIVATE "${HDF5_HL_TST_DIR};${HDF5_HL_SRC_DIR};${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") if (HDF5_BUILD_STATIC_TOOLS) TARGET_C_PROPERTIES (extend_dset STATIC) target_link_libraries (extend_dset PRIVATE ${HDF5_HL_LIB_TARGET} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) @@ -55,7 +55,7 @@ if (BUILD_TESTING AND HDF5_TEST_SWMR AND HDF5_TEST_SERIAL) add_executable (h5watchgentest ${HDF5_HL_TOOLS_H5WATCH_SOURCE_DIR}/h5watchgentest.c) target_compile_options(h5watchgentest PRIVATE "${HDF5_CMAKE_C_FLAGS}") - target_include_directories (h5watchgentest PRIVATE "${HDF5_HL_SRC_DIR}/src;${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") + target_include_directories (h5watchgentest PRIVATE "${HDF5_HL_SRC_DIR};${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") if (HDF5_BUILD_STATIC_TOOLS) TARGET_C_PROPERTIES (h5watchgentest STATIC) target_link_libraries (h5watchgentest PRIVATE ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET}) diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt index b7dc4444062..5cc662bea4b 100644 --- a/release_docs/INSTALL_CMake.txt +++ b/release_docs/INSTALL_CMake.txt @@ -59,7 +59,7 @@ HDF Group recommends using the ctest script mode to build HDF5. ------------------------------------------------------------------------- Individual files needed as mentioned in this document ------------------------------------------------------------------------- -Download from https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/config/cmake/scripts: +Download from https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/config/cmake/scripts: CTestScript.cmake -- CMake build script HDF5config.cmake -- CMake configuration script @@ -69,8 +69,8 @@ External compression plugin libraries from https://github.com/HDFGroup/hdf5_plug hdf5_plugins.tar.gz External compression szip and zlib libraries: - ZLIB "https://github.com/madler/zlib/releases/download/v1.3/zlib-1.3.tar.gz" - ZLIBNG "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.1.6.tar.gz" + ZLIB "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz" + ZLIBNG "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.2.2.tar.gz" LIBAEC "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3/libaec-1.1.3.tar.gz" ------------------------------------------------------------------------- ------------------------------------------------------------------------- @@ -144,7 +144,7 @@ To build HDF5 with the SZIP and ZLIB external libraries you will need to: ------bin ------include ------lib - --------plugins + --------plugin ------cmake On Linux, change to the install destination directory @@ -163,7 +163,7 @@ To build HDF5 with the SZIP and ZLIB external libraries you will need to: ------bin ------include ------lib - --------plugins + --------plugin ------share On Mac you will find HDF5-1.14."X"-Darwin.dmg in the myhdfstuff folder. Click @@ -175,7 +175,7 @@ To build HDF5 with the SZIP and ZLIB external libraries you will need to: ------bin ------include ------lib - --------plugins + --------plugin ------share By default the installation will create the bin, include, lib and cmake @@ -186,7 +186,7 @@ To build HDF5 with the SZIP and ZLIB external libraries you will need to: Linux will set the default to: "myhdfstuff/HDF_Group/HDF5/1.14."X" The default can be changed by adding ",INSTALLDIR=" to the - "ctest -S HDF5config.cmake..." command. For example on linux: + "ctest -S HDF5config.cmake..." command. For example on linux: ctest -S HDF5config.cmake,INSTALLDIR=/usr/local/myhdf5,BUILD_GENERATOR=Unix -C Release -VV -O hdf5.log @@ -242,7 +242,7 @@ Notes: This short set of instructions is written for users who want to ------bin ------include ------lib - --------plugins + --------plugin ------cmake On Linux, change to the install destination directory @@ -261,7 +261,7 @@ Notes: This short set of instructions is written for users who want to ------bin ------include ------lib - --------plugins + --------plugin ------share On Mac you will find HDF5-1.14."X"-Darwin.dmg in the build folder. Click @@ -273,7 +273,7 @@ Notes: This short set of instructions is written for users who want to ------bin ------include ------lib - --------plugins + --------plugin ------share @@ -285,28 +285,36 @@ IV. Further considerations web site. The HDF5 1.14."X" product requires a minimum CMake version 3.18. If you are using VS2022, the CMake minimum version is 3.21. - 2. If you plan to use Zlib or Szip: + 2. If you plan to use Zlib or Szip (aka libaec): A. Download the binary packages and install them in a central location. For example on Windows, create a folder extlibs and install the packages there. Add the following CMake options: - -DH5_ZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib - -DH5_ZLIB_INCLUDE_DIR:PATH=some_location/include + -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib + -DZLIB_INCLUDE_DIR:PATH=some_location/include -DZLIB_USE_EXTERNAL:BOOL=OFF - -DH5_SZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib - -DH5_SZIP_INCLUDE_DIR:PATH=some_location/include + -DSZIP_LIBRARY:FILEPATH=some_location/lib/libszaec.lib + -DSZIP_INCLUDE_DIR:PATH=some_location/include + -Dlibaec_LIBRARY:FILEPATH=some_location/lib/libaec.lib + -Dlibaec_INCLUDE_DIR:PATH=some_location/include -DSZIP_USE_EXTERNAL:BOOL=OFF where "some_location" is the full path to the extlibs folder. - Also the appropriate environment variable must be set; + Also if the appropriate environment variable is set, the above options are not required; set(ENV{ZLIB_ROOT} "some_location") set(ENV{SZIP_ROOT} "some_location") + set(ENV{libaec_ROOT} "some_location") + + Note that if there is a problem finding the libraries, try adding the + CMake variable CMAKE_FIND_DEBUG_MODE:BOOL=ON to the command line. B. Use source packages from an GIT server by adding the following CMake options: HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="GIT" - ZLIB_GIT_URL:STRING="https://some_location/zlib" - ZLIB_GIT_BRANCH="some_branch" + ZLIB_GIT_URL:STRING="https://some_location/zlib" or ZLIBNG_GIT_URL:STRING="https://some_location/zlibng" + ZLIB_GIT_BRANCH="some_branch" or ZLIBNG_GIT_BRANCH="some_branch" SZIP_GIT_URL:STRING="https://some_location/szip" SZIP_GIT_BRANCH="some_branch" + LIBAEC_GIT_URL:STRING="https://some_location/libaec" + LIBAEC_GIT_BRANCH="some_branch" where "some_location" is the URL to the GIT repository and "some_branch" is a branch in the repository, usually the default. Also set CMAKE_BUILD_TYPE to the configuration type. @@ -314,7 +322,7 @@ IV. Further considerations C. Use source packages from a compressed file by adding the following CMake options: HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" - ZLIB_TGZ_NAME:STRING="zlib_src.ext" + ZLIB_TGZ_NAME:STRING="zlib_src.ext" or ZLIBNG_TGZ_NAME:STRING="zlibng_src.ext" LIBAEC_TGZ_NAME:STRING="libaec_src.ext" TGZPATH:STRING="some_location" where "some_location" is the URL or full path to the compressed @@ -327,8 +335,8 @@ IV. Further considerations LIBAEC_TGZ_NAME:STRING="szip_src.ext" LIBAEC_TGZ_ORIGPATH:STRING="some_location" - ZLIB_TGZ_NAME:STRING="zlib_src.ext" - ZLIB_TGZ_ORIGPATH:STRING="some_location" + ZLIB_TGZ_NAME:STRING="zlib_src.ext" or ZLIBNG_TGZ_NAME:STRING="zlibng_src.ext" + ZLIB_TGZ_ORIGPATH:STRING="some_location" or ZLIBNG_TGZ_ORIGPATH:STRING="some_location" HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" where "some_location" is the URL and by setting @@ -423,9 +431,9 @@ Notes: CMake and HDF5 2. CMake support for HDF5 development should be usable on any system where CMake is supported. Please send us any comments on how CMake support can be improved on any system. Visit the - KitWare site for more information about CMake. + Kitware site for more information about CMake. - 3. Build and test results can be submitted to our CDash server: + 3. Build and test results can be submitted to our HDF5 CDash server: The CDash server for community submissions of hdf5 is at https://my.cdash.org. @@ -443,7 +451,7 @@ Notes: CMake and HDF5 Notes: CMake in General - 1. More information about using CMake can be found at the KitWare site at + 1. More information about using CMake can be found at the Kitware site at www.cmake.org. 2. CMake uses the command line; however, the visual CMake tool is @@ -473,6 +481,11 @@ These five steps are described in detail below. available in your Start menu. For Linux, UNIX, and Mac users the executable is named "cmake-gui" and can be found where CMake was installed. + Another option is to use the presets file, CMakePresets.json, to configure, + build, test, and package HDF5. See section X: Using CMakePresets.json for compiling + for use of that file. You can create a CMakeUserPresets.json file to create a + specific configuration for your environment. Note that Visual Studio and XCode can + use the presets files. Specify the source and build directories. @@ -495,49 +508,49 @@ These five steps are described in detail below. * MinGW Makefiles * NMake Makefiles * Unix Makefiles - * Visual Studio 14 2015 - * Visual Studio 14 2015 Win64 + * Ninja * Visual Studio 15 2017 * Visual Studio 15 2017 Win64 * Visual Studio 16 2019 * Visual Studio 17 2022 is: - * H5_SZIP_INCLUDE_DIR:PATH= - * H5_SZIP_LIBRARY:FILEPATH= - * H5_ZLIB_INCLUDE_DIR:PATH= - * H5_ZLIB_LIBRARY:FILEPATH= + For installed SZIP/libaec: + * SZIP_INCLUDE_DIR:PATH= + * SZIP_LIBRARY:FILEPATH= + * libaec_INCLUDE_DIR:PATH= + * libaec_LIBRARY:FILEPATH= + or + * SZIP_ROOT:PATH= + * libaec_ROOT:PATH= + For installed ZLIB/ZLIBNG: + * ZLIB_INCLUDE_DIR:PATH= + * ZLIB_LIBRARY:FILEPATH= + or + * ZLIB_ROOT:PATH= * :BOOL=[ON | OFF] - is: + highlights are: # This is the CMakeCache file used by HDF Group for daily tests. set (CMAKE_INSTALL_FRAMEWORK_PREFIX "Library/Frameworks" CACHE STRING "Frameworks installation directory" FORCE) - set (HDF_PACKAGE_EXT "" CACHE STRING "Name of HDF package extension" FORCE) set (HDF_PACKAGE_NAMESPACE "hdf5::" CACHE STRING "Name for HDF package namespace (can be empty)" FORCE) set (HDF5_BUILD_CPP_LIB ON CACHE BOOL "Build C++ support" FORCE) set (HDF5_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE) set (HDF5_BUILD_JAVA ON CACHE BOOL "Build JAVA support" FORCE) - set (HDF5_INSTALL_MOD_FORTRAN "NO" CACHE STRING "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" FORCE) - set_property (CACHE HDF5_INSTALL_MOD_FORTRAN PROPERTY STRINGS NO SHARED STATIC) - set (HDF5_BUILD_GENERATORS ON CACHE BOOL "Build Test Generators" FORCE) - set (MPIEXEC_MAX_NUMPROCS "4" CACHE STRING "Minimum number of processes for HDF parallel tests" FORCE) set (HDF5_ENABLE_ALL_WARNINGS ON CACHE BOOL "Enable all warnings" FORCE) - set (HDF_TEST_EXPRESS "2" CACHE STRING "Control testing framework (0-3)" FORCE) - set (HDF5_MINGW_STATIC_GCC_LIBS ON CACHE BOOL "Statically link libgcc/libstdc++" FORCE) set (HDF5_ALLOW_EXTERNAL_SUPPORT "TGZ" CACHE STRING "Allow External Library Building (NO GIT TGZ)" FORCE) - set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) ######################## # compression options ######################## set (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" FORCE) - set (ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) - set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3" CACHE STRING "Use ZLIB from original location" FORCE) + set (ZLIB_TGZ_NAME "zlib-1.3.1.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) + set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3.1" CACHE STRING "Use ZLIB from original location" FORCE) set (ZLIB_USE_LOCALCONTENT ON CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) set (ZLIB_GIT_URL "https://github.com/madler/zlib.git" CACHE STRING "Use ZLIB from GitHub repository" FORCE) set (ZLIB_GIT_BRANCH "develop" CACHE STRING "" FORCE) set (HDF5_USE_ZLIB_NG OFF CACHE BOOL "Use zlib-ng library as zlib library" FORCE) set (ZLIBNG_PACKAGE_NAME "zlib-ng" CACHE STRING "Name of ZLIBNG package" FORCE) - set (ZLIBNG_TGZ_NAME "2.1.6.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) + set (ZLIBNG_TGZ_NAME "2.2.2.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) set (ZLIBNG_TGZ_ORIGPATH "https://github.com/zlib-ng/zlib-ng/archive/refs/tags" CACHE STRING "Use ZLIBNG from original location" FORCE) set (ZLIBNG_GIT_URL "https://github.com/zlib-ng/zlib-ng.git" CACHE STRING "Use ZLIBNG from GitHub repository" FORCE) set (ZLIBNG_GIT_BRANCH "develop" CACHE STRING "" FORCE) @@ -556,117 +569,12 @@ These five steps are described in detail below. ######################## # filter plugin options ######################## - set (PLUGIN_TGZ_ORIGPATH "https://github.com/HDFGroup/hdf5_plugins/releases/download/snapshots" CACHE STRING "Use PLUGINS from original location" FORCE) + set (PLUGIN_TGZ_ORIGPATH "https://github.com/HDFGroup/hdf5_plugins/releases/download/snapshot" CACHE STRING "Use PLUGINS from original location" FORCE) set (PLUGIN_TGZ_NAME "hdf5_plugins-1.14.tar.gz" CACHE STRING "Use PLUGINS from compressed file" FORCE) set (PLUGIN_USE_LOCALCONTENT ON CACHE BOOL "Use local file for PLUGIN FetchContent" FORCE) set (PLUGIN_PACKAGE_NAME "pl" CACHE STRING "Name of PLUGIN package" FORCE) set (PLUGIN_GIT_URL "https://github.com/HDFGroup/hdf5_plugins.git" CACHE STRING "Use plugins from HDF Group repository" FORCE) set (PLUGIN_GIT_BRANCH "master" CACHE STRING "" FORCE) - ############# - # bitshuffle - ############# - set (BSHUF_GIT_URL "https://github.com/kiyo-masui/bitshuffle.git" CACHE STRING "Use BSHUF from HDF repository" FORCE) - set (BSHUF_GIT_BRANCH "master" CACHE STRING "" FORCE) - set (BSHUF_TGZ_ORIGPATH "https://github.com/kiyo-masui/bitshuffle/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) - set (BSHUF_TGZ_NAME "bitshuffle-0.5.1.tar.gz" CACHE STRING "Use BSHUF from compressed file" FORCE) - set (BSHUF_PACKAGE_NAME "bshuf" CACHE STRING "Name of BSHUF package" FORCE) - ######## - # blosc - ######## - set (BLOSC_GIT_URL "https://github.com/Blosc/c-blosc.git" CACHE STRING "Use BLOSC from Github repository" FORCE) - set (BLOSC_GIT_BRANCH "main" CACHE STRING "" FORCE) - set (BLOSC_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) - set (BLOSC_TGZ_NAME "c-blosc-1.21.5.tar.gz" CACHE STRING "Use BLOSC from compressed file" FORCE) - set (BLOSC_PACKAGE_NAME "blosc" CACHE STRING "Name of BLOSC package" FORCE) - set (BLOSC_ZLIB_GIT_URL "https://github.com/madler/zlib.git" CACHE STRING "Use ZLIB from GitHub repository" FORCE) - set (BLOSC_ZLIB_GIT_BRANCH "develop" CACHE STRING "" FORCE) - set (BLOSC_ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3" CACHE STRING "Use PLUGINS from original location" FORCE) - set (BLOSC_ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) - set (BLOSC_ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of BLOSC_ZLIB package" FORCE) - ######## - # blosc2 - ######## - set (BLOSC2_GIT_URL "https://github.com/Blosc/c-blosc2.git" CACHE STRING "Use BLOSC2 from Github repository" FORCE) - set (BLOSC2_GIT_BRANCH "main" CACHE STRING "" FORCE) - set (BLOSC2_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) - set (BLOSC2_TGZ_NAME "c-blosc2-2.14.4.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) - set (BLOSC2_PACKAGE_NAME "blosc2" CACHE STRING "Name of BLOSC2 package" FORCE) - set (BLOSC2_ZLIB_GIT_URL "https://github.com/madler/zlib.git" CACHE STRING "Use ZLIB from GitHub repository" FORCE) - set (BLOSC2_ZLIB_GIT_BRANCH "develop" CACHE STRING "" FORCE) - set (BLOSC2_ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.3" CACHE STRING "Use PLUGINS from original location" FORCE) - set (BLOSC2_ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) - set (BLOSC2_ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of BLOSC2_ZLIB package" FORCE) - ######## - # bzip2 - ######## - set (BZ2_GIT_URL "https://github.com/libarchive/bzip2.git" CACHE STRING "Use BZ2 from GitHub repository" FORCE) - set (BZ2_GIT_BRANCH "bzip2-1.0.8" CACHE STRING "" FORCE) - set (BZ2_TGZ_ORIGPATH "https://github.com/libarchive/bzip2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) - set (BZ2_TGZ_NAME "bzip2-bzip2-1.0.8.tar.gz" CACHE STRING "Use BZ2 from compressed file" FORCE) - set (BZ2_PACKAGE_NAME "bz2" CACHE STRING "Name of BZ2 package" FORCE) - ######## - # fpzip - ######## - set (FPZIP_GIT_URL "https://github.com/LLNL/fpzip.git" CACHE STRING "Use FPZIP from GitHub repository" FORCE) - set (FPZIP_GIT_BRANCH "develop" CACHE STRING "" FORCE) - set (FPZIP_TGZ_ORIGPATH "https://github.com/LLNL/fpzip/releases/download/1.3.0" CACHE STRING "Use PLUGINS from original location" FORCE) - set (FPZIP_TGZ_NAME "fpzip-1.3.0.tar.gz" CACHE STRING "Use FPZIP from compressed file" FORCE) - set (FPZIP_PACKAGE_NAME "fpzip" CACHE STRING "Name of FPZIP package" FORCE) - ####### - # jpeg - ####### - set (JPEG_GIT_URL "https://github.com/libjpeg-turbo/libjpeg-turbo.git" CACHE STRING "Use JPEG from TurboJPEG" FORCE) - set (JPEG_GIT_BRANCH "jpeg-9e" CACHE STRING "" FORCE) - set (JPEG_TGZ_ORIGPATH "https://www.ijg.org/files" CACHE STRING "Use PLUGINS from original location" FORCE) - set (JPEG_TGZ_NAME "jpegsrc.v9e.tar.gz" CACHE STRING "Use JPEG from compressed file" FORCE) - set (JPEG_PACKAGE_NAME "jpeg" CACHE STRING "Name of JPEG package" FORCE) - ###### - # lz4 - ###### - set (BUILD_LZ4_LIBRARY_SOURCE ON CACHE BOOL "build the lz4 library within the plugin" FORCE) - set (LZ4_GIT_URL "https://github.com/lz4/lz4.git" CACHE STRING "Use LZ4 from GitHub repository" FORCE) - set (LZ4_GIT_BRANCH "dev" CACHE STRING "" FORCE) - set (LZ4_TGZ_ORIGPATH "https://github.com/lz4/lz4/releases/download/v1.9.4" CACHE STRING "Use PLUGINS from original location" FORCE) - set (LZ4_TGZ_NAME "lz4-1.9.4.tar.gz" CACHE STRING "Use LZ4 from compressed file" FORCE) - set (LZ4_PACKAGE_NAME "lz4" CACHE STRING "Name of LZ4 package" FORCE) - ###### - # lzf - ###### - set (LZF_URL "http://software.schmorp.de/pkg/liblzf.html" CACHE STRING "LZF home" FORCE) - set (LZF_TGZ_ORIGPATH "http://dist.schmorp.de/liblzf" CACHE STRING "Use LZF from original location" FORCE) - set (LZF_TGZ_NAME "liblzf-3.6.tar.gz" CACHE STRING "Use LZF from compressed file" FORCE) - set (LZF_PACKAGE_NAME "lzf" CACHE STRING "Name of LZF package" FORCE) - ######### - # mafisc - ######### - #set (BUILD_MAFISC_LIBRARY_SOURCE OFF CACHE BOOL "build the mafisc library within the plugin" FORCE) - #set (MAFISC_TGZ_ORIGPATH "" CACHE STRING "Use PLUGINS from original location" FORCE) - #set (MAFISC_TGZ_NAME ".tar.gz" CACHE STRING "Use MAFISC from compressed file" FORCE) - #set (MAFISC_PACKAGE_NAME "mafisc" CACHE STRING "Name of MAFISC package" FORCE) - ##### - # sz - ##### - set (SZ_GIT_URL "https://github.com/szcompressor/SZ.git" CACHE STRING "Use SZ filter from GitHub repository" FORCE) - set (SZ_GIT_BRANCH "master" CACHE STRING "" FORCE) - set (SZ_TGZ_ORIGPATH "https://github.com/szcompressor/SZ/releases/download/v2.1.12.5" CACHE STRING "Use PLUGINS from original location" FORCE) - set (SZ_TGZ_NAME "SZ-2.1.12.5.tar.gz" CACHE STRING "Use SZ filter from compressed file" FORCE) - set (SZ_PACKAGE_NAME "SZ" CACHE STRING "Name of SZ filter package" FORCE) - ###### - # zfp - ###### - set (ZFP_GIT_URL "https://github.com/LLNL/zfp.git" CACHE STRING "Use ZFP from GitHub repository" FORCE) - set (ZFP_GIT_BRANCH "develop" CACHE STRING "" FORCE) - set (ZFP_TGZ_ORIGPATH "https://github.com/LLNL/zfp/releases/download/1.0.0" CACHE STRING "Use PLUGINS from original location" FORCE) - set (ZFP_TGZ_NAME "zfp-1.0.0.tar.gz" CACHE STRING "Use ZFP from compressed file" FORCE) - set (ZFP_PACKAGE_NAME "zfp" CACHE STRING "Name of ZFP package" FORCE) - ###### - # zstd - ###### - set (ZSTD_GIT_URL "https://github.com/facebook/zstd.git" CACHE STRING "Use ZSTD from GitHub repository" FORCE) - set (ZSTD_GIT_BRANCH "dev" CACHE STRING "" FORCE) - set (ZSTD_TGZ_ORIGPATH "https://github.com/facebook/zstd/releases/download/v1.5.5" CACHE STRING "Use PLUGINS from original location" FORCE) - set (ZSTD_TGZ_NAME "zstd-1.5.5.tar.gz" CACHE STRING "Use ZSTD from compressed file" FORCE) - set (ZSTD_PACKAGE_NAME "zstd" CACHE STRING "Name of ZSTD package" FORCE) 2. Configure the cache settings @@ -729,6 +637,8 @@ These five steps are described in detail below. ZLIB_GIT_BRANCH="${git_branch}" SZIP_GIT_URL:STRING="https://${git_url}/szip" SZIP_GIT_BRANCH="${git_branch}" + LIBAEC_GIT_URL:STRING="https://${git_url}/libaec" + LIBAEC_GIT_BRANCH="${git_branch}" PLUGIN_GIT_URL:STRING="https://${git_url}/plugin" PLUGIN_GIT_BRANCH="${git_branch}" ${git_url} should be changed to your location and ${git_branch} is @@ -787,7 +697,7 @@ These five steps are described in detail below. The HDF Group for daily testing. It should be altered/ignored for the user's installation and needs. - 7. More information about using CMake can be found at the KitWare site, + 7. More information about using CMake can be found at the Kitware site, www.cmake.org. 8. Nullsoft Scriptable Install System @@ -802,6 +712,36 @@ These five steps are described in detail below. WiX--the Windows Installer XML toolset--lets developers create installers for Windows Installer, the Windows installation engine. See http://wixtoolset.org. + 10. Backward compatibility + The 1.14.6 version of the HDF5 library can be configured to + set all versioned functions to the version that was available in one of these DEFAULT_API_VERSIONs + DEFAULT_API_VERSION:STRING=v114 + DEFAULT_API_VERSION:STRING=v112 + DEFAULT_API_VERSION:STRING=v110 + DEFAULT_API_VERSION:STRING=v18 + DEFAULT_API_VERSION:STRING=v16 + This allows existing code to be compiled with the + v1.14.6 library without requiring immediate changes to the application + source code. + + For additional configuration options and other details, + see "API Compatibility Macros": + https://hdfgroup.github.io/hdf5/develop/api-compat-macros.html + + 11. Building doxygen + One can optionally build the doxygen files for the HDF5 C library. + By default, this option is disabled. To build the html files, specify + 'HDF5_BUILD_DOC'. + + cmake -G "" -DHDF5_BUILD_DOC:BOOL=ON + + Configuration will halt if the required applications are not available. + To build: + + cmake --build . --config {Debug | Release} + or + make doxygen + ======================================================================== VI. CMake Option Defaults for HDF5 @@ -809,15 +749,15 @@ VI. CMake Option Defaults for HDF5 In the options listed below, there are three columns of information: Option Name, Option Description, and Option Default. -The config/cmake/cacheinit.cmake file can override the following values. +The config/cmake/cacheinit.cmake or CMakePresets.json file can override the following values. ---------------- General Build Options ------------------------------------- -BUILD_SHARED_LIBS "Build Shared Libraries" ON -BUILD_STATIC_LIBS "Build Static Libraries" ON -BUILD_STATIC_EXECS "Build Static Executables" OFF -BUILD_TESTING "Build HDF5 Unit Testing" ON +BUILD_SHARED_LIBS "Build Shared Libraries" ON +BUILD_STATIC_LIBS "Build Static Libraries" ON +BUILD_STATIC_EXECS "Build Static Executables" OFF +BUILD_TESTING "Build HDF5 Unit Testing" ON if (WINDOWS) - DISABLE_PDB_FILES "Do not install PDB files" OFF + DISABLE_PDB_FILES "Do not install PDB files" OFF ---------------- HDF5 Build Options ---------------------------------------- HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" OFF @@ -845,7 +785,7 @@ HDF5_INSTALL_DOC_DIR "HDF5_INSTALL_DATA_DIR" HDF5_USE_GNU_DIRS "ON to use GNU Coding Standard install directory variables, OFF to use historical settings" OFF -Defaults as defined by the `GNU Coding Standards` +Defaults as defined by the 'GNU Coding Standards' HDF5_INSTALL_BIN_DIR "bin" HDF5_INSTALL_LIB_DIR "lib" HDF5_INSTALL_INCLUDE_DIR "include" @@ -888,20 +828,20 @@ HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" HDF5_WANT_DATA_ACCURACY "IF data accuracy is guaranteed during data conversions" ON HDF5_WANT_DCONV_EXCEPTION "exception handling functions is checked during data conversions" ON -DEFAULT_API_VERSION "Enable default API (v16, v18, v110, v112, v114)" "v114" +DEFAULT_API_VERSION "Enable default API (v16, v18, v110, v112, v114)" "v114" HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON HDF5_MSVC_NAMING_CONVENTION "Use MSVC Naming conventions for Shared Libraries" OFF HDF5_MINGW_STATIC_GCC_LIBS "Statically link libgcc/libstdc++" OFF if (APPLE) HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF if (CMAKE_BUILD_TYPE MATCHES Debug) - HDF5_ENABLE_INSTRUMENT "Instrument The library" OFF + HDF5_ENABLE_INSTRUMENT "Instrument The library" OFF if (HDF5_BUILD_FORTRAN) - HDF5_INSTALL_MOD_FORTRAN "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" SHARED - if (BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED - if (BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED - if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is STATIC - if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED + HDF5_INSTALL_MOD_FORTRAN "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" SHARED + if (BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED + if (BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED + if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is STATIC + if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED HDF5_ENABLE_ANALYZER_TOOLS "enable the use of Clang tools" OFF HDF5_ENABLE_SANITIZERS "execute the Clang sanitizer" OFF @@ -937,31 +877,34 @@ if (BUILD_TESTING) HDF5_DISABLE_TESTS_REGEX "Regex pattern to set execution of specific tests to DISABLED" "" HDF5_USING_ANALYSIS_TOOL "Indicate that an analysis checker is used" ON ---------------- External Library Options --------------------- -HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO" -HDF5_ENABLE_PLUGIN_SUPPORT "Enable PLUGIN Filters" OFF -HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF -HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON +HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO" +HDF5_ENABLE_PLUGIN_SUPPORT "Enable PLUGIN Filters" OFF +HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF +HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON if (HDF5_USE_ZLIB_NG) - ZLIBNG_USE_EXTERNAL "Use External Library Building for ZLIBNG" OFF - ZLIBNG_TGZ_ORIGPATH "Use ZLIBNG from original location" "https://github.com/zlib-ng/zlib-ng/releases/tag/2.1.6" - ZLIBNG_TGZ_NAME "Use ZLIBNG from original compressed file" "2.1.6.tar.gz" + ZLIBNG_USE_EXTERNAL "Use External Library Building for ZLIBNG" OFF + ZLIBNG_TGZ_ORIGPATH "Use ZLIBNG from original location" "https://github.com/zlib-ng/zlib-ng/releases/tag/2.2.2" + ZLIBNG_TGZ_NAME "Use ZLIBNG from original compressed file" "2.2.2.tar.gz" else - ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF - ZLIB_TGZ_ORIGPATH "Use ZLIB from original location" "https://github.com/madler/zlib/releases/download/v1.2.13" - ZLIB_TGZ_NAME "Use ZLIB from original compressed file" "zlib-1.2.13.tar.gz" -ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" ON -HDF5_USE_ZLIB_STATIC "Find static zlib library" OFF + ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF + ZLIB_TGZ_ORIGPATH "Use ZLIB from original location" "https://github.com/madler/zlib/releases/download/v1.3.1" + ZLIB_TGZ_NAME "Use ZLIB from original compressed file" "zlib-1.3.1.tar.gz" +ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" OFF +HDF5_USE_ZLIB_STATIC "Find static zlib library" OFF -SZIP_USE_EXTERNAL "Use External Library Building for SZIP else search" OFF +SZIP_USE_EXTERNAL "Use External Library Building for SZIP else search" OFF if (HDF5_ENABLE_SZIP_SUPPORT) - HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON -LIBAEC_TGZ_ORIGPATH "Use LIBAEC from original location" "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3" -LIBAEC_TGZ_NAME "Use LIBAEC from original compressed file" "libaec-1.1.3.tar.gz" -LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" ON -HDF5_USE_LIBAEC_STATIC "Find static AEC library" OFF - -PLUGIN_USE_EXTERNAL "Use External Library Building for PLUGINS else search" OFF + HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON +LIBAEC_TGZ_ORIGPATH "Use LIBAEC from original location" "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3" +LIBAEC_TGZ_NAME "Use LIBAEC from original compressed file" "libaec-1.1.3.tar.gz" +LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" OFF +HDF5_USE_LIBAEC_STATIC "Find static AEC library" OFF + +PLUGIN_USE_EXTERNAL "Use External Library Building for PLUGINS else search" OFF +PLUGIN_TGZ_ORIGPATH "Use PLUGIN from original location" "https://github.com/HDFGroup/hdf5_plugins/releases/download/snapshot" +PLUGIN_TGZ_NAME "Use PLUGIN from original compressed file" "hdf5_plugins-master.tar.gz" +PLUGIN_USE_LOCALCONTENT "Use local file for PLUGIN FetchContent" OFF if (WINDOWS) H5_DEFAULT_PLUGINDIR "%ALLUSERSPROFILE%/hdf5/lib/plugin" else () @@ -987,7 +930,9 @@ NOTE: The high-level, C++, Fortran and Java interfaces are not compatible with the HDF5_ENABLE_THREADSAFE option because the lock is not hoisted - into the higher-level API calls. + into the higher-level API calls. Unless ALLOW_UNSUPPORTED has been + specified, the following options must be disabled: + HDF5_BUILD_HL_LIB, HDF5_BUILD_CPP_LIB, HDF5_BUILD_FORTRAN, HDF5_BUILD_JAVA Unless ALLOW_UNSUPPORTED has been specified, the following options must be disabled: HDF5_BUILD_HL_LIB, HDF5_BUILD_CPP_LIB, HDF5_BUILD_FORTRAN, HDF5_BUILD_JAVA @@ -1120,7 +1065,7 @@ HDF-provided CMakePresets.json ------------------------------- The CMakePresets.json provided by HDF requires CMake version 3.25, which supports package and workflow presets, and ninja build system. The top-level configuration group is intended to be -a standard set of options to produce a package of shared and staic libraries and tools. Other configurations +a standard set of options to produce a package of shared and static libraries and tools. Other configurations used for inheriting settings are in the included json file in "config/cmake-presets/hidden-presets.json". Available configurations presets can be displayed by executing: diff --git a/release_docs/RELEASE_PROCESS.md b/release_docs/RELEASE_PROCESS.md index 9f7043e24ec..339f58900f5 100644 --- a/release_docs/RELEASE_PROCESS.md +++ b/release_docs/RELEASE_PROCESS.md @@ -182,30 +182,36 @@ For more information on the HDF5 versioning and backward and forward compatibili 3. Run `bin/release` (similar to 8.2) and commit all the changed files. 4. Select release build from workflow. - Choose the release branch - - Change ‘Release version tag’ name to 'hdf5_X.Y.Z' + - Change ‘Release version tag’ name to 'hdf5_X.Y.Z' - Press "Run Workflow" 5. Review the release files in Github 6. Edit the Github Release and change status to Release - Change status from Pre-release to Release +7. Select publish-release build from workflow. + - Choose the release branch + - Change ‘HDF5 Release version tag’ name to 'hdf5_X.Y.Z' + - Change 'HDF5 Release file name base' to 'hdf5-X.Y.Z' + - Change 'HDF5 target bucket directory' to 'vX_Y/vX_Y_Z' + - Press "Run Workflow" -### 10. Add the contents of the RELEASE.txt file in the release code to the HISTORY file in the **support** branch, just below the introductory lines at the top of the HISTORY file. +### 10. Add the contents of the RELEASE.txt file in the release code to the HISTORY-X_Y file in the **support** branch, just below the introductory lines at the top of the HISTORY file. ### 11. Conduct Release Retrospective (Release Manager) 1. Schedule time and solicit comments from retrospective 2. Identify issues and document them -[u1]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/release_docs/RELEASE.txt -[u2]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/README.md -[u3]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/COPYING -[u4]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/release_docs -[u5]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/release_docs/INSTALL -[u6]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/release_docs/INSTALL_Autotools.txt -[u7]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/release_docs/INSTALL_CMake.txt -[u8]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/.github/workflows/release.yml -[u9]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/config/lt_vers.am -[u10]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/bin/h5vers -[u11]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/src/CMakeLists.txt -[u12]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/configure.ac -[u13]: https://support.hdfgroup.org/releases/hdf5/v1_14/v1_14_5/documentation/doxygen/api-compat-macros.html +[u1]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/release_docs/RELEASE.txt +[u2]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/README.md +[u3]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/COPYING +[u4]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/release_docs +[u5]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/release_docs/INSTALL +[u6]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/release_docs/INSTALL_Autotools.txt +[u7]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/release_docs/INSTALL_CMake.txt +[u8]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/.github/workflows/release.yml +[u9]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/config/lt_vers.am +[u10]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/bin/h5vers +[u11]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/src/CMakeLists.txt +[u12]: https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/configure.ac +[u13]: https://support.hdfgroup.org/releases/hdf5/v1_14/v1_14_6/documentation/doxygen/api-compat-macros.html [u14]: https://github.com/HDFGroup/hdf5/releases/tag/snapshot-1.14 [u15]: https://github.com/HDFGroup/hdf5/releases/tag/snapshot diff --git a/release_docs/USING_CMake_Examples.txt b/release_docs/USING_CMake_Examples.txt index ceb113e4014..c9383b075ad 100644 --- a/release_docs/USING_CMake_Examples.txt +++ b/release_docs/USING_CMake_Examples.txt @@ -9,7 +9,7 @@ Notes: This short instruction is written for users who want to quickly installations. For more information, see the USING_HDF5_CMake.txt file. - More information about using CMake can be found at the KitWare + More information about using CMake can be found at the Kitware site, www.cmake.org. CMake uses the command line and these instructions use the script diff --git a/release_docs/USING_HDF5_CMake.txt b/release_docs/USING_HDF5_CMake.txt index 8011c5c6ea0..6b294d37a81 100644 --- a/release_docs/USING_HDF5_CMake.txt +++ b/release_docs/USING_HDF5_CMake.txt @@ -7,7 +7,7 @@ Notes: This short instruction is written for users who want to quickly these instructions for their own applications. For more information, see the "Minimum C Project Files for CMake" section. - More information about using CMake can be found at the KitWare + More information about using CMake can be found at the Kitware site, www.cmake.org. CMake uses the command line; however, the visual CMake tool is @@ -234,7 +234,7 @@ adjust the forward slash to double backslashes, except for the HDF_DIR environment variable. NOTE: this file is available in the HDF5 repository, for more information see: - https://github.com/HDFGroup/hdf5/blob/hdf5_1_14/release_docs/USING_CMake_Examples.txt + https://github.com/HDFGroup/hdf5/blob/hdf5_1_14_6/release_docs/USING_CMake_Examples.txt ctest -S HDF5_Examples.cmake -C Release -V -O test.log