diff options
-rw-r--r-- | .github/workflows/clang-format-check.yml | 2 | ||||
-rw-r--r-- | .github/workflows/clang-format-fix.yml | 4 | ||||
-rw-r--r-- | .github/workflows/cmake-ctest.yml | 3 | ||||
-rw-r--r-- | .github/workflows/codespell.yml | 2 | ||||
-rw-r--r-- | .github/workflows/daily-build.yml | 4 | ||||
-rw-r--r-- | .github/workflows/main.yml | 69 | ||||
-rw-r--r-- | .github/workflows/release.yml | 115 | ||||
-rw-r--r-- | .github/workflows/tarball.yml | 9 | ||||
-rw-r--r-- | CMakeFilters.cmake | 90 | ||||
-rw-r--r-- | CMakeInstallation.cmake | 2 | ||||
-rw-r--r-- | CMakeLists.txt | 12 | ||||
-rw-r--r-- | CMakePresets.json | 3 | ||||
-rw-r--r-- | config/cmake/HDF5PluginCache.cmake | 18 | ||||
-rw-r--r-- | config/cmake/HDF5PluginMacros.cmake | 19 | ||||
-rw-r--r-- | config/cmake/LIBAEC/CMakeLists.txt | 10 | ||||
-rw-r--r-- | config/cmake/ZLIB/CMakeLists.txt | 10 | ||||
-rw-r--r-- | config/cmake/cacheinit.cmake | 21 | ||||
-rw-r--r-- | config/cmake_ext_mod/HDFMacros.cmake | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | release_docs/INSTALL_CMake.txt | 171 |
20 files changed, 367 insertions, 201 deletions
diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml index 70809a1..56d2b48 100644 --- a/.github/workflows/clang-format-check.yml +++ b/.github/workflows/clang-format-check.yml @@ -1,6 +1,8 @@ name: clang-format Check on: pull_request: +permissions: + contents: read jobs: formatting-check: name: Formatting Check diff --git a/.github/workflows/clang-format-fix.yml b/.github/workflows/clang-format-fix.yml index 00d2352..5981118 100644 --- a/.github/workflows/clang-format-fix.yml +++ b/.github/workflows/clang-format-fix.yml @@ -11,11 +11,15 @@ name: clang-format Commit Changes on: workflow_dispatch: push: +permissions: + contents: read jobs: formatting-check: name: Commit Format Changes runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, 'skip-ci')" + permissions: + contents: write # In order to allow EndBug/add-and-commit to commit changes steps: - uses: actions/checkout@v3 - name: Fix C and Java formatting issues detected by clang-format diff --git a/.github/workflows/cmake-ctest.yml b/.github/workflows/cmake-ctest.yml index 365039e..4363d0f 100644 --- a/.github/workflows/cmake-ctest.yml +++ b/.github/workflows/cmake-ctest.yml @@ -9,6 +9,9 @@ on: required: true type: string +permissions: + contents: read + # A workflow run is made up of one or more jobs that can run sequentially or # in parallel jobs: diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml index 3ceda82..57b8137 100644 --- a/.github/workflows/codespell.yml +++ b/.github/workflows/codespell.yml @@ -3,6 +3,8 @@ # https://github.com/codespell-project/actions-codespell name: codespell on: [push, pull_request] +permissions: + contents: read jobs: codespell: name: Check for spelling errors diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml index 63b7dab..25768c2 100644 --- a/.github/workflows/daily-build.yml +++ b/.github/workflows/daily-build.yml @@ -20,9 +20,11 @@ jobs: if: ${{ needs.call-workflow-tarball.outputs.has_changes == 'true' }} call-workflow-release: - needs: call-workflow-ctest + needs: [call-workflow-tarball, call-workflow-ctest] uses: ./.github/workflows/release.yml with: file_base: ${{ needs.call-workflow-tarball.outputs.file_base }} + file_branch: ${{ needs.call-workflow-tarball.outputs.file_branch }} + file_sha: ${{ needs.call-workflow-tarball.outputs.file_sha }} if: ${{ needs.call-workflow-tarball.outputs.has_changes == 'true' }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 80278ad..635890b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,15 @@ on: - 'ACKNOWLEDGEMENTS' - 'COPYING**' - '**.md' - + +# Using concurrency to cancel any in-progress job or run +concurrency: + group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }} + cancel-in-progress: true + +permissions: + contents: read + # A workflow run is made up of one or more jobs that can run sequentially or # in parallel. We just have one job, but the matrix items defined below will # run in parallel. @@ -74,7 +82,9 @@ jobs: fortran: OFF java: ON libaecfc: ON + localaec: OFF zlibfc: ON + localzlib: OFF parallel: OFF mirror_vfd: OFF direct_vfd: OFF @@ -91,7 +101,9 @@ jobs: fortran: ON java: ON libaecfc: ON + localaec: OFF zlibfc: ON + localzlib: OFF parallel: OFF mirror_vfd: ON direct_vfd: ON @@ -113,6 +125,7 @@ jobs: direct_vfd: enable deprec_sym: enable default_api: v112 + szip: yes toolchain: "" generator: "autogen" flags: "" @@ -133,6 +146,7 @@ jobs: direct_vfd: disable deprec_sym: enable default_api: v112 + szip: yes toolchain: "" generator: "autogen" flags: "CC=mpicc" @@ -148,7 +162,9 @@ jobs: fortran: OFF java: ON libaecfc: ON + localaec: OFF zlibfc: ON + localzlib: OFF parallel: OFF mirror_vfd: ON direct_vfd: OFF @@ -175,6 +191,7 @@ jobs: direct_vfd: enable deprec_sym: enable default_api: v16 + szip: yes toolchain: "" generator: "autogen" flags: "" @@ -197,6 +214,7 @@ jobs: direct_vfd: enable deprec_sym: enable default_api: v18 + szip: yes toolchain: "" generator: "autogen" flags: "" @@ -219,6 +237,7 @@ jobs: direct_vfd: enable deprec_sym: enable default_api: v110 + szip: yes toolchain: "" generator: "autogen" flags: "" @@ -241,6 +260,7 @@ jobs: direct_vfd: enable deprec_sym: enable default_api: v112 + szip: yes toolchain: "" generator: "autogen" flags: "" @@ -263,6 +283,7 @@ jobs: direct_vfd: enable deprec_sym: disable default_api: v112 + szip: yes toolchain: "" generator: "autogen" flags: "" @@ -307,6 +328,7 @@ jobs: echo "CC=gcc-11" >> $GITHUB_ENV echo "CXX=g++-11" >> $GITHUB_ENV echo "FC=gfortran-11" >> $GITHUB_ENV + sudo apt install libaec0 libaec-dev if: (matrix.generator == 'autogen') && (matrix.parallel != 'enable') - name: Install Autotools Dependencies (Linux, parallel) @@ -316,6 +338,7 @@ jobs: sudo apt install openmpi-bin openmpi-common mpi-default-dev echo "CC=mpicc" >> $GITHUB_ENV echo "FC=mpif90" >> $GITHUB_ENV + sudo apt install libaec0 libaec-dev if: (matrix.generator == 'autogen') && (matrix.parallel == 'enable') - name: Install Dependencies (Windows) @@ -346,18 +369,18 @@ jobs: sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_mode.autotools }} --${{ matrix.deprec_sym }}-deprecated-symbols --with-default-api-version=${{ matrix.default_api }} --enable-shared --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java --${{ matrix.mirror_vfd }}-mirror-vfd --${{ matrix.direct_vfd }}-direct-vfd + ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_mode.autotools }} --${{ matrix.deprec_sym }}-deprecated-symbols --with-default-api-version=${{ matrix.default_api }} --enable-shared --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java --${{ matrix.mirror_vfd }}-mirror-vfd --${{ matrix.direct_vfd }}-direct-vfd --with-szlib=${{ matrix.szip }} shell: bash - if: (matrix.generator == 'autogen') && (! matrix.thread_safe.enabled) + if: (matrix.generator == 'autogen') && ! (matrix.thread_safety.enabled) - name: Autotools Configure (Thread-Safe) run: | sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_mode.autotools }} --enable-shared --enable-threadsafe --disable-hl --${{ matrix.parallel }}-parallel --${{ matrix.mirror_vfd }}-mirror-vfd --${{ matrix.direct_vfd }}-direct-vfd + ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_mode.autotools }} --enable-shared --enable-threadsafe --disable-hl --${{ matrix.mirror_vfd }}-mirror-vfd --${{ matrix.direct_vfd }}-direct-vfd --with-szlib=${{ matrix.szip }} shell: bash - if: (matrix.generator == 'autogen') && (matrix.thread_safe.enabled) + if: (matrix.generator == 'autogen') && (matrix.thread_safety.enabled) # # CMAKE CONFIGURE @@ -367,44 +390,60 @@ jobs: run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=${{ matrix.java }} -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} $GITHUB_WORKSPACE + cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=${{ matrix.java }} -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} $GITHUB_WORKSPACE shell: bash - if: (matrix.generator != 'autogen') && (! matrix.thread_safe.enabled) + if: (matrix.generator != 'autogen') && ! (matrix.thread_safety.enabled) - name: CMake Configure (Thread-Safe) run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_THREADSAFE:BOOL=ON -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_HL_LIB:BOOL=OFF -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} $GITHUB_WORKSPACE + cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_THREADSAFE:BOOL=ON -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=OFF -DHDF5_BUILD_FORTRAN:BOOL=OFF -DHDF5_BUILD_JAVA:BOOL=OFF -DHDF5_BUILD_HL_LIB:BOOL=OFF -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} $GITHUB_WORKSPACE shell: bash - if: (matrix.generator != 'autogen') && (matrix.thread_safe.enabled) + if: (matrix.generator != 'autogen') && (matrix.thread_safety.enabled) # # BUILD # - name: Autotools Build - run: make + run: make -j3 working-directory: ${{ runner.workspace }}/build if: matrix.generator == 'autogen' - name: CMake Build - run: cmake --build . --config ${{ matrix.build_mode.cmake }} + run: cmake --build . --parallel 3 --config ${{ matrix.build_mode.cmake }} working-directory: ${{ runner.workspace }}/build - if: matrix.generator != 'autogen' + if: (matrix.generator != 'autogen') # # RUN TESTS # + # NORMAL + - name: Autotools Run Tests - run: make check + run: make check -j2 working-directory: ${{ runner.workspace }}/build - if: (matrix.generator == 'autogen') && (matrix.run_tests) + if: (matrix.generator == 'autogen') && (matrix.run_tests) && ! (matrix.thread_safety.enabled) - name: CMake Run Tests - run: ctest --build . -C ${{ matrix.build_mode.cmake }} -V + run: ctest --build . --parallel 2 -C ${{ matrix.build_mode.cmake }} -V working-directory: ${{ runner.workspace }}/build # Skip Debug MSVC while we investigate H5L Java test timeouts if: (matrix.generator != 'autogen') && (matrix.run_tests) && ! ((matrix.name == 'Windows MSVC CMake') && (matrix.build_mode.cmake == 'Debug')) + + # + # INSTALL (note that this runs even when we don't run the tests) + # + + - name: Autotools Install + run: make install + working-directory: ${{ runner.workspace }}/build + if: (matrix.generator == 'autogen') + + - name: Autotools Verify Install + run: make check-install + working-directory: ${{ runner.workspace }}/build + if: (matrix.generator == 'autogen') diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e15c6b3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,115 @@ +name: hdf5 1.12 release + +# Controls when the action will run. Triggers the workflow on a schedule +on: + workflow_call: + inputs: + file_base: + description: "The common base name of the source tarballs" + required: true + type: string + file_branch: + description: "The branch name for the source tarballs" + required: true + type: string + file_sha: + description: "The sha for the source tarballs" + required: true + type: string + +# Previous workflows must pass to get here so tag the commit that created the files +jobs: + create-tag: + runs-on: ubuntu-latest + permissions: + contents: write # In order to allow tag creation + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - run: | + git checkout ${{ inputs.file_sha }} + + - uses: rickstaa/action-create-tag@v1 + id: "tag_create" + with: + commit_sha: ${{ inputs.file_sha }} + tag: "snapshot" + force_push_tag: true + message: "Latest snapshot" + + # Print result using the action output. + - run: | + echo "Tag already present: ${{ steps.tag_create.outputs.tag_exists }}" + + getfiles: + runs-on: ubuntu-latest + steps: + - name: Set file base name + id: set-file-base + run: | + FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") + echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT + + # Get files created by tarball script + - name: Get tgz-tarball (Linux) + uses: actions/download-artifact@v3 + with: + name: tgz-tarball + path: ${{ github.workspace }} + + - name: Get zip-tarball (Windows) + uses: actions/download-artifact@v3 + with: + name: zip-tarball + path: ${{ github.workspace }} + + # Get files created by cmake-ctest script + - name: Get published binary (Windows) + uses: actions/download-artifact@v3 + with: + name: zip-vs2022-binary + path: ${{ github.workspace }} + + - name: Get published binary (MacOS) + uses: actions/download-artifact@v3 + with: + name: tgz-osx12-binary + path: ${{ github.workspace }} + + - name: Get published binary (Linux) + uses: actions/download-artifact@v3 + with: + name: tgz-ubuntu-2204-binary + path: ${{ github.workspace }} + + # Get files used by release script + + PreRelease: + runs-on: ubuntu-latest + needs: [create-tag, getfiles] + environment: snapshots_1_12 + permissions: + contents: write + steps: + - name: Set file base name + id: get-file-base + run: | + FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") + echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT + + - name: PreRelease tag + uses: softprops/action-gh-release@v1 + with: + tag_name: "snapshot" + prerelease: true + files: | + ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}.zip + ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-win_vs2022.zip + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` diff --git a/.github/workflows/tarball.yml b/.github/workflows/tarball.yml index 62fd270..4a9d0d8 100644 --- a/.github/workflows/tarball.yml +++ b/.github/workflows/tarball.yml @@ -10,6 +10,15 @@ on: file_base: description: "The common base name of the source tarballs" value: ${{ jobs.create_tarball.outputs.file_base }} + file_branch: + description: "The branch used for the source tarballs" + value: ${{ jobs.check_commits.outputs.branch_ref }} + file_sha: + description: "The sha used for the source tarballs" + value: ${{ jobs.check_commits.outputs.branch_sha }} + +permissions: + contents: read # A workflow run is made up of one or more jobs that can run sequentially or # in parallel diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index cac35d4..b81d6e2 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -61,10 +61,12 @@ if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MAT if (NOT BUILD_ZLIB_WITH_FETCHCONTENT) set (ZLIB_URL ${TGZPATH}/${ZLIB_TGZ_NAME}) endif () - if (NOT EXISTS "${ZLIB_URL}") - set (HDF5_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE) - if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") - message (VERBOSE "Filter ZLIB file ${ZLIB_URL} not found") + if (ZLIB_USE_LOCALCONTENT) + if (NOT EXISTS "${ZLIB_URL}") + set (HDF5_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE) + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") + message (VERBOSE "Filter ZLIB file ${ZLIB_URL} not found") + endif () endif () endif () if (NOT BUILD_SZIP_WITH_FETCHCONTENT) @@ -73,10 +75,12 @@ if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MAT set (SZIP_URL ${TGZPATH}/${SZAEC_TGZ_NAME}) endif () endif () - if (NOT EXISTS "${SZIP_URL}") - set (HDF5_ENABLE_SZIP_SUPPORT OFF CACHE BOOL "" FORCE) - if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") - message (VERBOSE "Filter SZIP file ${SZIP_URL} not found") + if (LIBAEC_USE_LOCALCONTENT) + if (NOT EXISTS "${SZIP_URL}") + set (HDF5_ENABLE_SZIP_SUPPORT OFF CACHE BOOL "" FORCE) + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") + message (VERBOSE "Filter SZIP file ${SZIP_URL} not found") + endif () endif () endif () else () @@ -88,7 +92,7 @@ endif () #----------------------------------------------------------------------------- # Option for ZLib support #----------------------------------------------------------------------------- -option (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" OFF) +option (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON) if (HDF5_ENABLE_Z_LIB_SUPPORT) if (NOT H5_ZLIB_HEADER) if (NOT ZLIB_USE_EXTERNAL) @@ -97,9 +101,6 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) find_package (ZLIB) # Legacy find endif () if (ZLIB_FOUND) - set (H5_HAVE_FILTER_DEFLATE 1) - set (H5_HAVE_ZLIB_H 1) - set (H5_HAVE_LIBZ 1) set (H5_ZLIB_HEADER "zlib.h") set (ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR}) set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) @@ -109,24 +110,16 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) if (BUILD_ZLIB_WITH_FETCHCONTENT) # Only tgz files available ORIGINAL_ZLIB_LIBRARY ("TGZ") - set (H5_HAVE_FILTER_DEFLATE 1) - set (H5_HAVE_ZLIB_H 1) - set (H5_HAVE_LIBZ 1) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") message (VERBOSE "HDF5_ZLIB is built from fetch content") endif () set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${ZLIB_STATIC_LIBRARY}) elseif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_ZLIB_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) - set (H5_HAVE_FILTER_DEFLATE 1) - set (H5_HAVE_ZLIB_H 1) - set (H5_HAVE_LIBZ 1) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") message (VERBOSE "Filter HDF5_ZLIB is built") endif () set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${ZLIB_STATIC_LIBRARY}) - else () - message (FATAL_ERROR " ZLib is Required for ZLib support in HDF5") endif () endif () else () @@ -135,12 +128,19 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) set (H5_HAVE_ZLIB_H 1) set (H5_HAVE_LIBZ 1) endif () - if (H5_HAVE_FILTER_DEFLATE) - set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE") - endif () - INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS}) - if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") - message (VERBOSE "Filter HDF5_ZLIB is ON") + if (ZLIB_FOUND) + set (H5_HAVE_FILTER_DEFLATE 1) + set (H5_HAVE_ZLIB_H 1) + set (H5_HAVE_LIBZ 1) + if (H5_HAVE_FILTER_DEFLATE) + set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE") + endif () + INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS}) + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") + message (VERBOSE "Filter HDF5_ZLIB is ON") + endif () + else () + message (WARNING " ZLib support in HDF5 was enabled but not found") endif () endif () @@ -149,7 +149,7 @@ endif () #----------------------------------------------------------------------------- option (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF) if (HDF5_ENABLE_SZIP_SUPPORT) - option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" OFF) + option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON) if (NOT SZIP_USE_EXTERNAL) set(SZIP_FOUND FALSE) if (USE_LIBAEC) @@ -165,9 +165,6 @@ if (HDF5_ENABLE_SZIP_SUPPORT) find_package (SZIP) # Legacy find endif () if (SZIP_FOUND) - set (H5_HAVE_FILTER_SZIP 1) - set (H5_HAVE_SZLIB_H 1) - set (H5_HAVE_LIBSZ 1) set (SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR}) set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIRS} ${SZIP_INCLUDE_DIR}) set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) @@ -177,9 +174,6 @@ if (HDF5_ENABLE_SZIP_SUPPORT) if (BUILD_SZIP_WITH_FETCHCONTENT) # Only tgz files available ORIGINAL_SZIP_LIBRARY ("TGZ" ${HDF5_ENABLE_SZIP_ENCODING}) - set (H5_HAVE_FILTER_SZIP 1) - set (H5_HAVE_SZLIB_H 1) - set (H5_HAVE_LIBSZ 1) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") message (VERBOSE "SZIP is built from fetch content") endif () @@ -194,9 +188,6 @@ if (HDF5_ENABLE_SZIP_SUPPORT) set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_STATIC_LIBRARY}) elseif (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${HDF5_ENABLE_SZIP_ENCODING}) - set (H5_HAVE_FILTER_SZIP 1) - set (H5_HAVE_SZLIB_H 1) - set (H5_HAVE_LIBSZ 1) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") message (VERBOSE "Filter SZIP is built") endif () @@ -213,15 +204,22 @@ if (HDF5_ENABLE_SZIP_SUPPORT) message (FATAL_ERROR "SZIP is Required for SZIP support in HDF5") endif () endif () - INCLUDE_DIRECTORIES (${SZIP_INCLUDE_DIRS}) - if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") - message (VERBOSE "Filter SZIP is ON") - endif () - if (H5_HAVE_FILTER_SZIP) - set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE") - endif () - if (HDF5_ENABLE_SZIP_ENCODING) - set (H5_HAVE_SZIP_ENCODER 1) - set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} ENCODE") + if (SZIP_FOUND) + set (H5_HAVE_FILTER_SZIP 1) + set (H5_HAVE_SZLIB_H 1) + set (H5_HAVE_LIBSZ 1) + INCLUDE_DIRECTORIES (${SZIP_INCLUDE_DIRS}) + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") + message (VERBOSE "Filter SZIP is ON") + endif () + if (H5_HAVE_FILTER_SZIP) + set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE") + endif () + if (HDF5_ENABLE_SZIP_ENCODING) + set (H5_HAVE_SZIP_ENCODER 1) + set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} ENCODE") + endif () + else () + message (WARNING "SZIP support in HDF5 was enabled but not found") endif () endif () diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 54034a7..216028d 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -52,7 +52,7 @@ endif () # Set includes needed for build #----------------------------------------------------------------------------- set (HDF5_INCLUDES_BUILD_TIME - ${HDF5_SRC_DIR} ${HDF5_CPP_SRC_DIR} ${HDF5_HL_SRC_DIR} + ${HDF5_SRC_INCLUDE_DIRS} ${HDF5_CPP_SRC_DIR} ${HDF5_HL_SRC_DIR} ${HDF5_TOOLS_SRC_DIR} ${HDF5_SRC_BINARY_DIR} ) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e657fa..ca94ce4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -242,6 +242,8 @@ set (HDF5_JAVA_LOGGING_NOP_JAR ${HDF5_SOURCE_DIR}/java/lib/ext/slf4j-nop-1.7 set (HDF5_JAVA_LOGGING_SIMPLE_JAR ${HDF5_SOURCE_DIR}/java/lib/ext/slf4j-simple-1.7.33.jar) set (HDF5_DOXYGEN_DIR ${HDF5_SOURCE_DIR}/doxygen) +set (HDF5_SRC_INCLUDE_DIRS ${HDF5_SRC_DIR}) + #----------------------------------------------------------------------------- # parse the full version number from H5public.h and include in H5_VERS_INFO #----------------------------------------------------------------------------- @@ -637,16 +639,6 @@ if (MSVC) set (WIN_LINK_FLAGS "") endif () -set (MAKE_SYSTEM) -if (CMAKE_MAKE_PROGRAM MATCHES "make") - set (MAKE_SYSTEM 1) -endif () - -set (CFG_INIT "/${CMAKE_CFG_INTDIR}") -if (MAKE_SYSTEM) - set (CFG_INIT "") -endif () - # Do not generate test programs by default option (HDF5_BUILD_GENERATORS "Build Test Generators" OFF) diff --git a/CMakePresets.json b/CMakePresets.json index 66f31a4..13766ca 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -18,9 +18,6 @@ "hidden": true, "inherits": "ci-base-tgz", "cacheVariables": { - "HDF5_ENABLE_Z_LIB_SUPPORT": "ON", - "HDF5_ENABLE_SZIP_SUPPORT": "ON", - "HDF5_ENABLE_SZIP_ENCODING": "ON", "BUILD_ZLIB_WITH_FETCHCONTENT": "ON", "ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}, "ZLIB_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/madler/zlib/releases/download/v1.2.13"}, diff --git a/config/cmake/HDF5PluginCache.cmake b/config/cmake/HDF5PluginCache.cmake index f5334bb..0d1795d 100644 --- a/config/cmake/HDF5PluginCache.cmake +++ b/config/cmake/HDF5PluginCache.cmake @@ -8,15 +8,15 @@ set (H5PL_BUILD_TESTING ON CACHE BOOL "Enable H5PL testing" FORCE) set (BUILD_EXAMPLES ON CACHE BOOL "Build H5PL Examples" FORCE) -set (HDF5_HDF5_HEADER "H5pubconf.h" CACHE STRING "Name of HDF5 header" FORCE) -set (HDF5_LINK_LIBS ${HDF5_LIBSH_TARGET} CACHE STRING "HDF5 target" FORCE) -#set (HDF5_INCLUDE_DIR $<TARGET_PROPERTY:${HDF5_LIBSH_TARGET},INCLUDE_DIRECTORIES> CACHE PATH "HDF5 include dirs" FORCE) -set (HDF5_INCLUDE_DIR "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) -set (HDF5_INCLUDE_DIRS "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) -set (HDF5_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "HDF5 build folder" FORCE) - -set (HDF5_DUMP_EXECUTABLE $<TARGET_FILE:h5dump-shared> CACHE STRING "HDF5 h5dump target" FORCE) -set (HDF5_REPACK_EXECUTABLE $<TARGET_FILE:h5repack-shared> CACHE STRING "HDF5 h5repack target" FORCE) +#preset HDF5 cache vars to this projects libraries instead of searching +set (H5PL_HDF5_HEADER "H5pubconf.h" CACHE STRING "Name of HDF5 header" FORCE) +set (H5PL_HDF5_LINK_LIBS ${HDF5_LIBSH_TARGET} CACHE STRING "HDF5 target" FORCE) +#set (H5PL_HDF5_INCLUDE_DIRS $<TARGET_PROPERTY:${HDF5_LIBSH_TARGET},INCLUDE_DIRECTORIES> CACHE PATH "HDF5 include dirs" FORCE) +set (H5PL_HDF5_INCLUDE_DIRS "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}" CACHE PATH "HDF5 include dirs" FORCE) +set (H5PL_HDF5_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "HDF5 build folder" FORCE) + +set (H5PL_HDF5_DUMP_EXECUTABLE $<TARGET_FILE:h5dump-shared> CACHE STRING "HDF5 h5dump target" FORCE) +set (H5PL_HDF5_REPACK_EXECUTABLE $<TARGET_FILE:h5repack-shared> CACHE STRING "HDF5 h5repack target" FORCE) set (H5PL_ALLOW_EXTERNAL_SUPPORT "${HDF5_ALLOW_EXTERNAL_SUPPORT}" CACHE STRING "Allow External Library Building (NO GIT TGZ)" FORCE) diff --git a/config/cmake/HDF5PluginMacros.cmake b/config/cmake/HDF5PluginMacros.cmake index 5cb5f99..e2ace24 100644 --- a/config/cmake/HDF5PluginMacros.cmake +++ b/config/cmake/HDF5PluginMacros.cmake @@ -25,47 +25,47 @@ macro (EXTERNAL_PLUGIN_LIBRARY compress_type) if (ENABLE_BLOSC) add_dependencies (h5blosc ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_blosc ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_blosc PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_blosc PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_BSHUF) add_dependencies (h5bshuf ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_bshuf ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_bshuf PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_bshuf PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_BZIP2) add_dependencies (h5bz2 ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_bzip2 ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_bzip2 PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_bzip2 PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_JPEG) add_dependencies (h5jpeg ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_jpeg ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_jpeg PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_jpeg PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_LZ4) add_dependencies (h5lz4 ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_lz4 ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_lz4 PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_lz4 PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_LZF) add_dependencies (h5lzf ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_lzf ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_lzf PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_lzf PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_MAFISC) add_dependencies (h5mafisc ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_mafisc ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_mafisc PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_mafisc PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_SZ) add_dependencies (h5sz ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_sz ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_sz PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_sz PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_ZFP) add_dependencies (h5zfp ${HDF5_LIBSH_TARGET}) add_dependencies (h5ex_d_zfp ${HDF5_LIBSH_TARGET}) - target_include_directories (h5ex_d_zfp PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR}") + target_include_directories (h5ex_d_zfp PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR}") endif () if (ENABLE_ZSTD) add_dependencies (h5zstd ${HDF5_LIBSH_TARGET}) @@ -88,6 +88,7 @@ macro (FILTER_OPTION plname) option (ENABLE_${plname} "Enable Library Building for ${plname} plugin" ON) if (ENABLE_${plname}) option (HDF_${plname}_USE_EXTERNAL "Use External Library Building for ${PLUGIN_NAME} plugin" 0) + mark_as_advanced (HDF_${plname}_USE_EXTERNAL) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") set (HDF_${plname}_USE_EXTERNAL 1 CACHE BOOL "Use External Library Building for ${PLUGIN_NAME} plugin" FORCE) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT") diff --git a/config/cmake/LIBAEC/CMakeLists.txt b/config/cmake/LIBAEC/CMakeLists.txt index fb650ec..53950d8 100644 --- a/config/cmake/LIBAEC/CMakeLists.txt +++ b/config/cmake/LIBAEC/CMakeLists.txt @@ -123,16 +123,6 @@ if (MSVC) set (CMAKE_MFC_FLAG 0) endif () -set (MAKE_SYSTEM) -if (CMAKE_BUILD_TOOL MATCHES "make") - set (MAKE_SYSTEM 1) -endif () - -set (CFG_INIT "/${CMAKE_CFG_INTDIR}") -if (MAKE_SYSTEM) - set (CFG_INIT "") -endif () - #----------------------------------------------------------------------------- # Compiler specific flags : Shouldn't there be compiler tests for these #----------------------------------------------------------------------------- diff --git a/config/cmake/ZLIB/CMakeLists.txt b/config/cmake/ZLIB/CMakeLists.txt index 5e42fb2..12411ac 100644 --- a/config/cmake/ZLIB/CMakeLists.txt +++ b/config/cmake/ZLIB/CMakeLists.txt @@ -125,16 +125,6 @@ if (MSVC) set (CMAKE_MFC_FLAG 0) endif () -set (MAKE_SYSTEM) -if (CMAKE_BUILD_TOOL MATCHES "make") - set (MAKE_SYSTEM 1) -endif () - -set (CFG_INIT "/${CMAKE_CFG_INTDIR}") -if (MAKE_SYSTEM) - set (CFG_INIT "") -endif () - #----------------------------------------------------------------------------- # Compiler specific flags : Shouldn't there be compiler tests for these #----------------------------------------------------------------------------- diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake index 7c5cc1e..3cae5ab 100644 --- a/config/cmake/cacheinit.cmake +++ b/config/cmake/cacheinit.cmake @@ -25,17 +25,13 @@ 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 (HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE) - -set (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE) - -set (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" 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) @@ -44,24 +40,27 @@ 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 "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)" 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.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.2.13" CACHE STRING "Use ZLIB from original location" FORCE) set (ZLIB_TGZ_ORIGNAME "zlib-1.2.13.tar.gz" CACHE STRING "Use ZLIB from original compressed file" FORCE) -set (ZLIB_USE_LOCALCONTENT OFF CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) +set (ZLIB_USE_LOCALCONTENT ON CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) set (SZIP_PACKAGE_NAME "szip" CACHE STRING "Name of SZIP package" FORCE) set (LIBAEC_PACKAGE_NAME "libaec" CACHE STRING "Name of AEC SZIP package" FORCE) set (SZIP_TGZ_NAME "SZip.tar.gz" CACHE STRING "Use SZip from compressed file" FORCE) set (SZAEC_TGZ_NAME "LIBAEC.tar.gz" CACHE STRING "Use SZip AEC from compressed file" FORCE) set (USE_LIBAEC ON CACHE BOOL "Use libaec szip replacement" FORCE) -set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6/libaec-1.0.6.tar.gz" CACHE STRING "Use LIBAEC from original location" FORCE) -set (LIBAEC_TGZ_ORIGNAME "libaec-v1.0.6.tar.gz" CACHE STRING "Use LIBAEC from original compressed file" FORCE) -set (LIBAEC_USE_LOCALCONTENT OFF CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE) +set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6" CACHE STRING "Use LIBAEC from original location" FORCE) +set (LIBAEC_TGZ_ORIGNAME "libaec-1.0.6.tar.gz" CACHE STRING "Use LIBAEC from original compressed file" FORCE) +set (LIBAEC_USE_LOCALCONTENT ON CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE) ######################## # filter plugin options diff --git a/config/cmake_ext_mod/HDFMacros.cmake b/config/cmake_ext_mod/HDFMacros.cmake index ef91008..6037570 100644 --- a/config/cmake_ext_mod/HDFMacros.cmake +++ b/config/cmake_ext_mod/HDFMacros.cmake @@ -21,7 +21,7 @@ macro (SET_HDF_BUILD_TYPE) set (HDF_CFG_NAME ${CMAKE_BUILD_TYPE}) else () # set the default to the MultiConfig variable - set (HDF_CFG_NAME ${CMAKE_CFG_INTDIR}) + set (HDF_CFG_NAME "$<CONFIG>") endif () else () set (HDF_CFG_BUILD_TYPE ".") diff --git a/configure.ac b/configure.ac index e1ef78b..455fff6 100644 --- a/configure.ac +++ b/configure.ac @@ -622,7 +622,7 @@ if test "X$HDF_FORTRAN" = "Xyes"; then [fmoddir=$withval], [fmoddir="\${includedir}"]) AC_SUBST([fmoddir], [$fmoddir]) - + ## Change to the Fortran 90 language AC_LANG_PUSH(Fortran) diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt index 361e3e6..6d6660f 100644 --- a/release_docs/INSTALL_CMake.txt +++ b/release_docs/INSTALL_CMake.txt @@ -308,7 +308,7 @@ IV. Further considerations CMake options: HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" ZLIB_TGZ_NAME:STRING="zlib_src.ext" - SZIP_TGZ_NAME:STRING="szip_src.ext" + SZAEC_TGZ_NAME:STRING="szaec_src.ext" TGZPATH:STRING="some_location" where "some_location" is the URL or full path to the compressed file and ext is the type of compression file. Also set CMAKE_BUILD_TYPE @@ -326,17 +326,17 @@ IV. Further considerations ZLIB_TGZ_ORIGPATH:STRING="some_location" HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" - where "some_location" is the URL or full path to the compressed - file and ext is the type of compression file. The individual filters are - enabled by setting the BUILD_<filter>_WITH_FETCHCONTENT CMake variable to ON. + where "some_location" is the URL and by setting + ZLIB_USE_LOCALCONTENT:BOOL=OFF + LIBAEC_USE_LOCALCONTENT:BOOL=OFF + or full path to the compressed file and ext is the type of compression file. + The individual filters are enabled by setting the BUILD_<filter>_WITH_FETCHCONTENT + CMake variable to ON. Also set CMAKE_BUILD_TYPE to the configuration type during configuration. See the settings in the config/cmake/cacheinit.cmake file HDF uses for testing. The files can also be retrieved from a local path if necessary TGZPATH:STRING="some_location" - by setting - ZLIB_USE_LOCALCONTENT:BOOL=ON - LIBAEC_USE_LOCALCONTENT:BOOL=ON 3. If you plan to use compression plugins: A. Use source packages from an GIT server by adding the following CMake @@ -514,28 +514,32 @@ These five steps are described in detail below. ######################## 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_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE) - set (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE) - set (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" FORCE) - set (MPIEXEC_MAX_NUMPROCS "3" CACHE STRING "Minimum number of processes for HDF parallel tests" 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_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)" 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) set (ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of ZLIB package" FORCE) - set (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) + set (ZLIB_TGZ_NAME "ZLib.tar.gz" CACHE STRING "Use HDF5_ZLib from compressed file" FORCE) set (ZLIB_TGZ_ORIGPATH "https://github.com/madler/zlib/releases/download/v1.2.13" CACHE STRING "Use ZLIB from original location" FORCE) set (ZLIB_TGZ_ORIGNAME "zlib-1.2.13.tar.gz" CACHE STRING "Use ZLIB from original compressed file" FORCE) - set (ZLIB_USE_LOCALCONTENT OFF CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) + set (ZLIB_USE_LOCALCONTENT ON CACHE BOOL "Use local file for ZLIB FetchContent" FORCE) set (SZIP_PACKAGE_NAME "szip" CACHE STRING "Name of SZIP package" FORCE) set (LIBAEC_PACKAGE_NAME "libaec" CACHE STRING "Name of AEC SZIP package" FORCE) set (SZIP_TGZ_NAME "SZip.tar.gz" CACHE STRING "Use SZip from compressed file" FORCE) set (SZAEC_TGZ_NAME "LIBAEC.tar.gz" CACHE STRING "Use SZip AEC from compressed file" FORCE) set (USE_LIBAEC ON CACHE BOOL "Use libaec szip replacement" FORCE) - set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6/libaec-1.0.6.tar.gz" CACHE STRING "Use LIBAEC from original location" FORCE) - set (LIBAEC_TGZ_ORIGNAME "libaec-v1.0.6.tar.gz" CACHE STRING "Use LIBAEC from original compressed file" FORCE) - set (LIBAEC_USE_LOCALCONTENT OFF CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE) + set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6" CACHE STRING "Use LIBAEC from original location" FORCE) + set (LIBAEC_TGZ_ORIGNAME "libaec-1.0.6.tar.gz" CACHE STRING "Use LIBAEC from original compressed file" FORCE) + set (LIBAEC_USE_LOCALCONTENT ON CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE) ####################### # filter plugin options ####################### @@ -616,6 +620,13 @@ These five steps are described in detail below. set (ZFP_GIT_BRANCH "master" CACHE STRING "" FORCE) set (ZFP_TGZ_NAME "zfp.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" CACHE STRING "Use ZSTD from repository" FORCE) + set (ZSTD_GIT_BRANCH "dev" CACHE STRING "" FORCE) + set (ZSTD_TGZ_NAME "zstd.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 @@ -766,13 +777,13 @@ BUILD_STATIC_EXECS "Build Static Executables" OFF BUILD_TESTING "Build HDF5 Unit Testing" ON ---------------- HDF5 Build Options --------------------- -HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" OFF -HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" ON -HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF -HDF5_BUILD_JAVA "Build JAVA support" OFF -HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" ON -HDF5_BUILD_TOOLS "Build HDF5 Tools" ON -HDF5_BUILD_HL_TOOLS "Build HIGH Level HDF5 Tools" ON +HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" OFF +HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" ON +HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF +HDF5_BUILD_JAVA "Build JAVA support" OFF +HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" ON +HDF5_BUILD_TOOLS "Build HDF5 Tools" ON +HDF5_BUILD_HL_TOOLS "Build HIGH Level HDF5 Tools" ON ---------------- HDF5 Folder Build Options --------------------- Defaults relative to $<INSTALL_PREFIX> @@ -798,72 +809,84 @@ HDF5_INSTALL_DOC_DIR "HDF5_INSTALL_DATA_DIR/doc/hdf5" ---------------- HDF5 Advanced Options --------------------- HDF5_USE_GNU_DIRS "TRUE to use GNU Coding Standard install directory variables, - FALSE to use historical settings" FALSE -ONLY_SHARED_LIBS "Only Build Shared Libraries" OFF -ALLOW_UNSUPPORTED "Allow unsupported combinations of configure options" OFF -HDF5_EXTERNAL_LIB_PREFIX "Use prefix for custom library naming." "" -HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF -HDF5_ENABLE_ALL_WARNINGS "Enable all warnings" OFF -HDF5_ENABLE_CODESTACK "Enable the function stack tracing (for developer debugging)." OFF -HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF -HDF5_ENABLE_DEBUG_APIS "Turn on extra debug output in all packages" OFF -HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON -HDF5_ENABLE_DIRECT_VFD "Build the Direct I/O Virtual File Driver" OFF -HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON -HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF + FALSE to use historical settings" FALSE +ONLY_SHARED_LIBS "Only Build Shared Libraries" OFF +ALLOW_UNSUPPORTED "Allow unsupported combinations of configure options" OFF +HDF5_EXTERNAL_LIB_PREFIX "Use prefix for custom library naming." "" +HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF +HDF5_ENABLE_ALL_WARNINGS "Enable all warnings" OFF +HDF5_ENABLE_CODESTACK "Enable the function stack tracing (for developer debugging)." OFF +HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF +HDF5_ENABLE_DEBUG_APIS "Turn on extra debug output in all packages" OFF +HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON +HDF5_ENABLE_DIRECT_VFD "Build the Direct I/O Virtual File Driver" OFF +HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON +HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF HDF5_ENABLE_PREADWRITE "Use pread/pwrite in sec2/log/core VFDs in place of read/write (when available)" ON -HDF5_ENABLE_TRACE "Enable API tracing capability" OFF -HDF5_ENABLE_USING_MEMCHECKER "Indicate that a memory checker is used" OFF -HDF5_GENERATE_HEADERS "Rebuild Generated Files" ON -HDF5_BUILD_GENERATORS "Build Test Generators" OFF -HDF5_JAVA_PACK_JRE "Package a JRE installer directory" OFF -HDF5_MEMORY_ALLOC_SANITY_CHECK "Indicate that internal memory allocation sanity checks are enabled" OFF -HDF5_NO_PACKAGES "Do not include CPack Packaging" OFF -HDF5_PACK_EXAMPLES "Package the HDF5 Library Examples Compressed File" OFF -HDF5_PACK_MACOSX_FRAMEWORK "Package the HDF5 Library in a Frameworks" OFF +HDF5_ENABLE_TRACE "Enable API tracing capability" OFF +HDF5_ENABLE_USING_MEMCHECKER "Indicate that a memory checker is used" OFF +HDF5_GENERATE_HEADERS "Rebuild Generated Files" ON +HDF5_BUILD_GENERATORS "Build Test Generators" OFF +HDF5_JAVA_PACK_JRE "Package a JRE installer directory" OFF +HDF5_NO_PACKAGES "Do not include CPack Packaging" OFF +HDF5_PACK_EXAMPLES "Package the HDF5 Library Examples Compressed File" OFF +HDF5_PACK_MACOSX_FRAMEWORK "Package the HDF5 Library in a Frameworks" OFF HDF5_BUILD_FRAMEWORKS "TRUE to build as frameworks libraries, - FALSE to build according to BUILD_SHARED_LIBS" FALSE -HDF5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF -HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" OFF -HDF_TEST_EXPRESS "Control testing framework (0-3)" "3" -HDF5_TEST_VFD "Execute tests with different VFDs" OFF -HDF5_TEST_PASSTHROUGH_VOL "Execute tests with different passthrough VOL connectors" OFF -DEFAULT_API_VERSION "Enable default API (v16, v18, v110, v112)" "v112" -HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON -HDF5_WANT_DATA_ACCURACY "IF data accuracy is guaranteed during data conversions" ON + FALSE to build according to BUILD_SHARED_LIBS" FALSE +HDF5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF +HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" OFF +DEFAULT_API_VERSION "Enable default API (v16, v18, v110, v112)" "v112" +HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON +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 -HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF -HDF5_MSVC_NAMING_CONVENTION "Use MSVC Naming conventions for Shared Libraries" OFF -HDF5_MINGW_STATIC_GCC_LIBS "Statically link libgcc/libstdc++" OFF +HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF +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 -if (HDF5_TEST_VFD) - HDF5_TEST_FHEAP_VFD "Execute fheap test with different VFDs" ON if (HDF5_BUILD_FORTRAN) - HDF5_INSTALL_MOD_FORTRAN "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" "XX" - 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 + 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_BUILD_DOC "Build documentation" OFF -HDF5_ENABLE_ANALYZER_TOOLS "enable the use of Clang tools" OFF -HDF5_ENABLE_SANITIZERS "execute the Clang sanitizer" OFF -HDF5_ENABLE_FORMATTERS "format source files" OFF -TEST_SHELL_SCRIPTS "Enable shell script tests" ON +HDF5_BUILD_DOC "Build documentation" OFF +HDF5_ENABLE_ANALYZER_TOOLS "enable the use of Clang tools" OFF +HDF5_ENABLE_SANITIZERS "execute the Clang sanitizer" OFF +HDF5_ENABLE_FORMATTERS "format source files" OFF + +---------------- HDF5 Advanced Test Options --------------------- +if (BUILD_TESTING) + HDF5_TEST_SERIAL "Execute non-parallel tests" ON + HDF5_TEST_TOOLS "Execute tools tests" ON + HDF5_TEST_EXAMPLES "Execute tests on examples" ON + HDF5_TEST_SWMR "Execute SWMR tests" ON + HDF5_TEST_PARALLEL "Execute parallel tests" ON + HDF5_TEST_FORTRAN "Execute fortran tests" ON + HDF5_TEST_CPP "Execute cpp tests" ON + HDF5_TEST_JAVA "Execute java tests" ON + HDF_TEST_EXPRESS "Control testing framework (0-3)" "3" + HDF5_TEST_PASSTHROUGH_VOL "Execute tests with different passthrough VOL connectors" OFF + if (HDF5_TEST_PASSTHROUGH_VOL) + HDF5_TEST_FHEAP_PASSTHROUGH_VOL "Execute fheap test with different passthrough VOL connectors" ON + HDF5_TEST_VFD "Execute tests with different VFDs" OFF + if (HDF5_TEST_VFD) + HDF5_TEST_FHEAP_VFD "Execute fheap test with different VFDs" ON + TEST_SHELL_SCRIPTS "Enable shell script tests" 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" OFF +HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON PLUGIN_USE_EXTERNAL "Use External Library Building for PLUGINS" 0 ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" 0 SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 0 if (HDF5_ENABLE_SZIP_SUPPORT) - HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" OFF - USE_LIBAEC "Use libaec szip replacement" OFF + HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON + USE_LIBAEC "Use libaec szip replacement" ON if (WINDOWS) H5_DEFAULT_PLUGINDIR "%ALLUSERSPROFILE%/hdf5/lib/plugin" else () @@ -872,11 +895,11 @@ endif () if (BUILD_SZIP_WITH_FETCHCONTENT) LIBAEC_TGZ_ORIGPATH "Use LIBAEC from original location" "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6/libaec-1.0.6.tar.gz" LIBAEC_TGZ_ORIGNAME "Use LIBAEC from original compressed file" "libaec-v1.0.6.tar.gz" - LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" OFF + LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" ON if (BUILD_ZLIB_WITH_FETCHCONTENT) ZLIB_TGZ_ORIGPATH "Use ZLIB from original location" "https://github.com/madler/zlib/releases/download/v1.2.13" ZLIB_TGZ_ORIGNAME "Use ZLIB from original compressed file" "zlib-1.2.13.tar.gz" - ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" OFF + ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" ON NOTE: The BUILD_STATIC_EXECS ("Build Static Executables") option is only valid |