Sync develop changes May 20 - June 6 to hdf5_1_14 (#4553)

* Fix daily-build CI and correct use of *_FOUND settings for filters (#4504)

* Correct examples tests to just run under dynamic analysis (#4505)

* Remove trailing extra whitespace in hyperlink (#4509)

* Set H5 specific vars immediately if legacy find (#4512)

* Set H5 specific vars immediately if legacy find

* Correct find process vars (vs in-line build)

* Correct SZIP find

* Everything is libaec 1.0.6 or newer

* Correct option help text

* Don't update 'pos' and 'op' fields when using pread/pwrite (#4492)

Instead of reading the absolute minimal possible, use the likely value of
a v2+ superblock w/8-byte addresses & lengths.

* Fix spelling (#4522)

* Fix typo in DAPL callback documentation (#4523)

* Move/rename libhdf5.settings input files (#4525)

Move without other changes:

src/libhdf5.settings.in -> src/libhdf5.settings.autotools.in
config/cmake/libhdf5.settings.cmake.in -> src/libhdf5.settings.cmake.in

* Disable UNITY_BUILD for now - globally (#4515)

* Fix function name in USAGE for H5Pencode2() (#4519)

* Allow HDF5_LIB_INFIX to work with DLL (#4500)

* Allow HDF5_LIB_INFIX to work with DLL

* Separate individual library name into parts and add suffix option

* Java cannot use alternative names and removed extra setting

* Incorporate the underscore into the CORE name

* Fix typos in property callback documentation (#4532)

* Fix wrong int type as some systems have int as 64-bit wide (#4534)

* H5FDquery return value (#4530)

* Switch H5FDquery() return values to use library's FAIL / SUCCEED macros

* Update return value also

* Refactor to reduce code duplication (#4531)

* Update error output w/new routine name

* Fix a few function names in USAGE comments that don't match the actual (#4533)

* Fix a few function names in USAGE comments that don't match the actual
function names.

* Remove typo '['

* Switch to working url for api-compatibility-macros.html.

* Remove julia CI actions (#4540)

These have been failing for a week or two for unclear reasons, both
in the Autotools and CMake. No obvious library changes triggered
this.

See GitHub issue #4539 for more info/discussion

The Julia tests will be disabled until the root cause is found.

* Bump the github-actions group with 3 updates (#4538)

Bumps the github-actions group with 3 updates: [softprops/action-gh-release](https://github.com/softprops/action-gh-release), [ossf/scorecard-action](https://github.com/ossf/scorecard-action) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `softprops/action-gh-release` from 2.0.4 to 2.0.5
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](9d7c94cfd0...69320dbe05)

Updates `ossf/scorecard-action` from 2.3.1 to 2.3.3
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](0864cf1902...dc50aa9510)

Updates `github/codeql-action` from 3.25.3 to 3.25.7
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](d39d31e687...f079b84933)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix various mistakes in doxygen docs (#4541)

* Fix a dead link and example file names

* Add the missing content of a section

* Export HDF5 parallel status for CMake FetchContent'ed VOL connectors (#4542)

* Remove an unnecessary check for parallel and thread-safety from examples (#4543)

* Add option to use zlib-ng as zlib library (#4487)

* Export HDF5 version for CMake FetchContent'ed VOL connectors (#4548)

* Adjust h5repack userblock option to allow reserve size (#4544)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Allen Byrne <50328838+byrnHDF@users.noreply.github.com>
Co-authored-by: H. Joe Lee <hyoklee@hdfgroup.org>
Co-authored-by: Quincey Koziol <quincey@koziol.cc>
Co-authored-by: jhendersonHDF <jhenderson@hdfgroup.org>
Co-authored-by: mattjala <124107509+mattjala@users.noreply.github.com>
Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com>
Co-authored-by: Peter Chang <peter.chang@diamond.ac.uk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: bmribler <39579120+bmribler@users.noreply.github.com>
Co-authored-by: Scot Breitenfeld <brtnfld@hdfgroup.org>
This commit is contained in:
Larry Knox 2024-06-07 19:24:48 -05:00 committed by GitHub
parent 0ddccb9ab0
commit ad50867d48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
68 changed files with 2351 additions and 1163 deletions

View File

@ -99,12 +99,6 @@ jobs:
with:
build_mode: "production"
call-release-auto-julia:
name: "Autotools Julia Workflows"
uses: ./.github/workflows/julia-auto.yml
with:
build_mode: "production"
call-release-auto-xpr:
name: "Autotools TestExpress Workflows"
uses: ./.github/workflows/testxpr-auto.yml

View File

@ -102,12 +102,6 @@ jobs:
with:
build_mode: "Release"
call-release-cmake-julia:
name: "CMake Julia Workflows"
uses: ./.github/workflows/julia-cmake.yml
with:
build_mode: "Release"
call-release-cmake-xpr:
name: "CMake TestExpress Workflows"
uses: ./.github/workflows/testxpr-cmake.yml

View File

@ -1,79 +0,0 @@
name: hdf5 1.14 autotools julia
on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string
permissions:
contents: read
jobs:
julia_build_and_test:
name: "julia ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- name: Get Sources
uses: actions/checkout@v4.1.1
- name: Install Dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install autoconf automake libtool libtool-bin libaec-dev
sudo apt-get install doxygen graphviz
sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Autotools Configure
shell: bash
run: |
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
$GITHUB_WORKSPACE/configure \
--enable-build-mode=${{ inputs.build_mode }} \
--disable-fortran \
--enable-shared \
--disable-parallel \
--prefix=/tmp
- name: Autotools Build
shell: bash
run: |
make -j3
working-directory: ${{ runner.workspace }}/build
- name: Install HDF5
shell: bash
run: |
make install
working-directory: ${{ runner.workspace }}/build
- name: Install julia
uses: julia-actions/setup-julia@latest
with:
version: '1.6'
arch: 'x64'
- name: Get julia hdf5 source
uses: actions/checkout@v4.1.1
with:
repository: JuliaIO/HDF5.jl
path: .
- name: Generate LocalPreferences
run: |
echo '[HDF5]' >> LocalPreferences.toml
echo 'libhdf5 = "/tmp/lib/libhdf5.so"' >> LocalPreferences.toml
echo 'libhdf5_hl = "/tmp/lib/libhdf5_hl.so"' >> LocalPreferences.toml
- uses: julia-actions/julia-buildpkg@latest
- name: Julia Run Tests
uses: julia-actions/julia-runtest@latest
env:
JULIA_DEBUG: Main

View File

@ -1,82 +0,0 @@
name: hdf5 1.14 CMake julia
on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string
permissions:
contents: read
jobs:
julia_build_and_test:
name: "julia ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- name: Get Sources
uses: actions/checkout@v4.1.1
- name: Install Dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install ninja-build doxygen graphviz
sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
sudo apt install -y libaec-dev zlib1g-dev wget curl bzip2 flex bison cmake libzip-dev openssl build-essential
- name: CMake Configure
shell: bash
run: |
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF \
-DHDF5_ENABLE_PARALLEL:BOOL=OFF \
-DHDF5_BUILD_CPP_LIB:BOOL=OFF \
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
-DHDF5_BUILD_FORTRAN:BOOL=OFF \
-DHDF5_BUILD_JAVA:BOOL=OFF \
-DCMAKE_INSTALL_PREFIX=/tmp \
$GITHUB_WORKSPACE
- name: CMake Build
shell: bash
run: |
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build
- name: Install HDF5
shell: bash
run: |
cmake --install .
working-directory: ${{ runner.workspace }}/build
- name: Install julia
uses: julia-actions/setup-julia@latest
with:
version: '1.6'
arch: 'x64'
- name: Get julia hdf5 source
uses: actions/checkout@v4.1.1
with:
repository: JuliaIO/HDF5.jl
path: .
- name: Generate LocalPreferences
run: |
echo '[HDF5]' >> LocalPreferences.toml
echo 'libhdf5 = "/tmp/lib/libhdf5.so"' >> LocalPreferences.toml
echo 'libhdf5_hl = "/tmp/lib/libhdf5_hl.so"' >> LocalPreferences.toml
- uses: julia-actions/julia-buildpkg@latest
- name: Julia Run Tests
uses: julia-actions/julia-runtest@latest
env:
JULIA_DEBUG: Main

View File

@ -80,7 +80,7 @@ jobs:
# working-directory: ${{ runner.workspace }}/build
build_v1_10:
name: "gcc DBG v1.10 default API (build only)"
name: "gcc DBG v1.10 default API"
runs-on: ubuntu-latest
steps:
# SETUP
@ -140,7 +140,7 @@ jobs:
working-directory: ${{ runner.workspace }}/build
build_v1_12:
name: "gcc DBG v1.12 default API (build only)"
name: "gcc DBG v1.12 default API"
runs-on: ubuntu-latest
steps:
# SETUP
@ -198,3 +198,62 @@ jobs:
- name: CMake Run Tests
run: ctest . --parallel 2 -C Debug -V
working-directory: ${{ runner.workspace }}/build
build_zlibng:
name: "gcc use zlib-ng filter"
runs-on: ubuntu-latest
steps:
# SETUP
- name: Install Linux Dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build doxygen graphviz
sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
sudo apt install gcc-12 g++-12 gfortran-12
echo "CC=gcc-12" >> $GITHUB_ENV
echo "CXX=g++-12" >> $GITHUB_ENV
echo "FC=gfortran-12" >> $GITHUB_ENV
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
uses: actions/checkout@v4.1.1
#
# CMAKE CONFIGURE
#
- name: CMake Configure
run: |
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DHDF5_ENABLE_ALL_WARNINGS=ON \
-DHDF5_ENABLE_PARALLEL:BOOL=OFF \
-DHDF5_BUILD_CPP_LIB:BOOL=ON \
-DHDF5_BUILD_FORTRAN=ON \
-DHDF5_BUILD_JAVA=ON \
-DHDF5_BUILD_DOC=OFF \
-DLIBAEC_USE_LOCALCONTENT=ON \
-DZLIB_USE_LOCALCONTENT=ON \
-DHDF5_ENABLE_MIRROR_VFD:BOOL=ON \
-DHDF5_ENABLE_DIRECT_VFD:BOOL=ON \
-DHDF5_ENABLE_ROS3_VFD:BOOL=ON \
-DHDF5_USE_ZLIBNG:BOOL=ON \
$GITHUB_WORKSPACE
shell: bash
#
# BUILD
#
- name: CMake Build
run: cmake --build . --parallel 3 --config Release
working-directory: ${{ runner.workspace }}/build
#
# RUN TESTS
#
- name: CMake Run Tests
run: ctest . --parallel 2 -C Release -V
working-directory: ${{ runner.workspace }}/build

View File

@ -178,6 +178,7 @@ jobs:
sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}.html.abi.reports.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt
- name: Create sha256 sums for files for nonversioned files
if: ${{ (inputs.use_environ == 'release') }}
run: |
sha256sum hdf5.zip >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt
sha256sum hdf5.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt
@ -199,7 +200,7 @@ jobs:
- name: PreRelease tag
id: create_prerelease
if: ${{ (inputs.use_environ == 'snapshots') }}
uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4
uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v2.0.5
with:
tag_name: "${{ inputs.use_tag }}"
prerelease: true
@ -224,7 +225,7 @@ jobs:
- name: Release tag
id: create_release
if: ${{ (inputs.use_environ == 'release') }}
uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4
uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v2.0.5
with:
tag_name: "${{ inputs.use_tag }}"
prerelease: false

View File

@ -37,7 +37,7 @@ jobs:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
with:
results_file: results.sarif
results_format: sarif
@ -67,6 +67,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3
uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7
with:
sarif_file: results.sarif

View File

@ -9,14 +9,23 @@
# If you do not have access to either file, you may request a copy from
# help@hdfgroup.org.
#
option (USE_LIBAEC_STATIC "Use static AEC library" OFF)
option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB else search" OFF)
option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP else search" OFF)
option (HDF5_USE_ZLIB_NG "Use zlib-ng library as zlib library" OFF)
option (HDF5_USE_LIBAEC_STATIC "Use 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)
if (NOT ZLIB_USE_LOCALCONTENT)
set (ZLIB_URL ${ZLIB_TGZ_ORIGPATH}/${ZLIB_TGZ_NAME})
if (HDF5_USE_ZLIB_NG)
set (ZLIB_URL ${ZLIBNG_TGZ_ORIGPATH}/${ZLIBNG_TGZ_NAME})
else ()
set (ZLIB_URL ${ZLIB_TGZ_ORIGPATH}/${ZLIB_TGZ_NAME})
endif ()
else ()
set (ZLIB_URL ${TGZPATH}/${ZLIB_TGZ_NAME})
if (HDF5_USE_ZLIB_NG)
set (ZLIB_URL ${TGZPATH}/${ZLIBNG_TGZ_NAME})
else ()
set (ZLIB_URL ${TGZPATH}/${ZLIB_TGZ_NAME})
endif ()
endif ()
message (VERBOSE "Filter ZLIB file is ${ZLIB_URL}")
@ -71,8 +80,13 @@ 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)
if (HDF5_USE_ZLIB_NG)
set (PACKAGE_NAME ${ZLIBNG_PACKAGE_NAME}${HDF_PACKAGE_EXT})
else ()
set (PACKAGE_NAME ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT})
endif ()
set(ZLIB_FOUND FALSE)
find_package (ZLIB NAMES ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared)
find_package (ZLIB NAMES ${PACKAGE_NAME} COMPONENTS static shared)
if (NOT ZLIB_FOUND)
find_package (ZLIB) # Legacy find
endif ()
@ -119,9 +133,14 @@ if (HDF5_ENABLE_SZIP_SUPPORT)
if (NOT SZIP_USE_EXTERNAL)
set(libaec_USE_STATIC_LIBS ${HDF5_USE_LIBAEC_STATIC})
set(SZIP_FOUND FALSE)
find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared)
if (NOT SZIP_FOUND)
find_package (SZIP) # Legacy find
find_package (libaec 1.0.5 CONFIG)
if (SZIP_FOUND)
set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_LIBRARIES})
else ()
find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared)
if (NOT SZIP_FOUND)
find_package (SZIP) # Legacy find
endif ()
endif ()
set(H5_SZIP_FOUND ${SZIP_FOUND})
if (H5_SZIP_FOUND)

View File

@ -120,7 +120,7 @@ else ()
set (BYTESEX little-endian)
endif ()
configure_file (
${HDF_RESOURCES_DIR}/libhdf5.settings.cmake.in
${HDF5_SOURCE_DIR}/src/libhdf5.settings.cmake.in
${HDF5_SRC_BINARY_DIR}/libhdf5.settings ESCAPE_QUOTES @ONLY
)
install (

View File

@ -76,6 +76,13 @@ mark_as_advanced (HDF5_LIB_INFIX)
# e.g. the infix '_openmpi' results in the library name 'libhdf5_openmpi.so'
# This name is used in packages on debian based systems.
# (see https://packages.debian.org/jessie/amd64/libhdf5-openmpi-8/filelist)
#option (HDF5_EXTERNAL_LIB_SUFFIX "Use prefix for custom library naming." "")
set (HDF5_EXTERNAL_LIB_SUFFIX "" CACHE STRING "Use suffix for custom library naming.")
mark_as_advanced (HDF5_EXTERNAL_LIB_SUFFIX)
# HDF5_EXTERNAL_LIB_SUFFIX :
# If the parent project needs to install hdf libraries, but avoid
# name conflicts with system versions, then a suffix may be added
# to ensure that the correct versions configured are used.
#
# HDF5_INSTALL_BIN_DIR, HDF5_INSTALL_LIB_DIR, HDF5_INSTALL_INCLUDE_DIR, HDF5_INSTALL_DATA_DIR :
# Customize the 'bin', 'lib', 'include', and 'share' installation directories.
@ -133,44 +140,65 @@ option (ALLOW_UNSUPPORTED "Allow unsupported combinations of configure options"
mark_as_advanced (ALLOW_UNSUPPORTED)
#-----------------------------------------------------------------------------
# Set the core names of all the libraries
# Set the core names of all the libraries CORENAME is the base library name
# for targets, BASE_CORE
# filename are made of PREFIX_BASE_INFIX_CORE_SUFFIX
#-----------------------------------------------------------------------------
set (HDF5_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}")
set (HDF5_TEST_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_test")
set (HDF5_CPP_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_cpp")
set (HDF5_HL_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_hl")
set (HDF5_HL_CPP_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_hl_cpp")
set (HDF5_TOOLS_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_tools")
set (HDF5_UTILS_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_utils")
set (HDF5_F90_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_fortran")
set (HDF5_F90_C_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_f90cstub")
set (HDF5_F90_TEST_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_test_fortran")
set (HDF5_F90_C_TEST_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_test_f90cstub")
set (HDF5_HL_F90_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_hl_fortran")
set (HDF5_HL_F90_C_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_hl_f90cstub")
set (HDF5_JAVA_JNI_LIB_CORENAME "hdf5${HDF5_LIB_INFIX}_java")
set (HDF5_LIB_BASE "hdf5")
set (HDF5_LIB_CORE "")
set (HDF5_TEST_LIB_CORE "_test")
set (HDF5_CPP_LIB_CORE "_cpp")
set (HDF5_HL_LIB_CORE "_hl")
set (HDF5_HL_CPP_LIB_CORE "_hl_cpp")
set (HDF5_TOOLS_LIB_CORE "_tools")
set (HDF5_UTILS_LIB_CORE "_utils")
set (HDF5_F90_LIB_CORE "_fortran")
set (HDF5_F90_C_LIB_CORE "_f90cstub")
set (HDF5_F90_TEST_LIB_CORE "_test_fortran")
set (HDF5_F90_C_TEST_LIB_CORE "_test_f90cstub")
set (HDF5_HL_F90_LIB_CORE "_hl_fortran")
set (HDF5_HL_F90_C_LIB_CORE "_hl_f90cstub")
set (HDF5_JAVA_JNI_LIB_CORE "_java")
set (HDF5_LIB_CORENAME "${HDF5_LIB_BASE}")
set (HDF5_TEST_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_TEST_LIB_CORE}")
set (HDF5_CPP_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_CPP_LIB_CORE}")
set (HDF5_HL_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_HL_LIB_CORE}")
set (HDF5_HL_CPP_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_HL_CPP_LIB_CORE}")
set (HDF5_TOOLS_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_TOOLS_LIB_CORE}")
set (HDF5_UTILS_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_UTILS_LIB_CORE}")
set (HDF5_F90_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_F90_LIB_CORE}")
set (HDF5_F90_C_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_F90_C_LIB_CORE}")
set (HDF5_F90_TEST_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_F90_TEST_LIB_CORE}")
set (HDF5_F90_C_TEST_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_F90_C_TEST_LIB_CORE}")
set (HDF5_HL_F90_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_HL_F90_LIB_CORE}")
set (HDF5_HL_F90_C_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_HL_F90_C_LIB_CORE}")
set (HDF5_JAVA_JNI_LIB_CORENAME "${HDF5_LIB_BASE}${HDF5_JAVA_JNI_LIB_CORE}")
set (HDF5_JAVA_HDF5_LIB_CORENAME "jarhdf5")
set (HDF5_JAVA_TEST_LIB_CORENAME "jartest5")
#-----------------------------------------------------------------------------
# Set the true names of all the libraries if customized by external project
#-----------------------------------------------------------------------------
set (HDF5_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_CORENAME}")
set (HDF5_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_LIB_CORENAME}")
set (HDF5_CPP_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_CPP_LIB_CORENAME}")
set (HDF5_HL_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_LIB_CORENAME}")
set (HDF5_HL_CPP_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_CPP_LIB_CORENAME}")
set (HDF5_TOOLS_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOLS_LIB_CORENAME}")
set (HDF5_UTILS_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_UTILS_LIB_CORENAME}")
set (HDF5_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_LIB_CORENAME}")
set (HDF5_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_LIB_CORENAME}")
set (HDF5_F90_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_TEST_LIB_CORENAME}")
set (HDF5_F90_C_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_TEST_LIB_CORENAME}")
set (HDF5_HL_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_LIB_CORENAME}")
set (HDF5_HL_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_C_LIB_CORENAME}")
set (HDF5_JAVA_JNI_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_JNI_LIB_CORENAME}")
set (HDF5_JAVA_HDF5_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_HDF5_LIB_CORENAME}")
set (HDF5_JAVA_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_TEST_LIB_CORENAME}")
set (HDF5_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_TEST_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_CPP_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_CPP_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_HL_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_HL_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_HL_CPP_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_HL_CPP_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_TOOLS_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_TOOLS_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_UTILS_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_UTILS_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_F90_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_F90_C_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_F90_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_F90_TEST_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_F90_C_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_F90_C_TEST_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_HL_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_HL_F90_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_HL_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_HL_F90_C_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
#Because the loading mechanism of the JNI library requires a fixed name, the name of the JNI library cannot be customized
#set (HDF5_JAVA_JNI_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_BASE}${HDF5_LIB_INFIX}${HDF5_JAVA_JNI_LIB_CORE}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_JAVA_JNI_LIB_NAME "${HDF5_LIB_BASE}${HDF5_JAVA_JNI_LIB_CORE}")
set (HDF5_JAVA_HDF5_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_HDF5_LIB_CORENAME}${HDF5_LIB_INFIX}${HDF5_EXTERNAL_LIB_SUFFIX}")
set (HDF5_JAVA_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_TEST_LIB_CORENAME}${HDF5_LIB_INFIX}${HDF5_EXTERNAL_LIB_SUFFIX}")
#-----------------------------------------------------------------------------
# Set the target names of all the libraries

View File

@ -20,9 +20,12 @@
"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"},
"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"},
"LIBAEC_PACKAGE_NAME": {"type": "STRING", "value": "libaec"},
"LIBAEC_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6"},
"LIBAEC_TGZ_NAME": {"type": "STRING", "value": "libaec-1.0.6.tar.gz"}
"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"}
}
},
{
@ -31,6 +34,7 @@
"inherits": ["ci-base-tgz", "ci-CompressionVars"],
"cacheVariables": {
"HDF5_PACKAGE_EXTLIBS": "ON",
"HDF5_USE_ZLIB_NG": "OFF",
"ZLIB_USE_LOCALCONTENT": "OFF",
"LIBAEC_USE_LOCALCONTENT": "OFF"
}

View File

@ -76,6 +76,8 @@ if (HDF5_VOL_ALLOW_EXTERNAL MATCHES "GIT" OR HDF5_VOL_ALLOW_EXTERNAL MATCHES "LO
set (HDF5_FOUND 1)
set (HDF5_LIBRARIES "${HDF5_LIBSH_TARGET};${LINK_LIBS};${LINK_COMP_LIBS};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:MPI::MPI_C>")
set (HDF5_INCLUDE_DIRS "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
set (HDF5_IS_PARALLEL ${H5_HAVE_PARALLEL})
set (HDF5_VERSION ${HDF5_PACKAGE_VERSION})
set (HDF5_C_LIBRARIES "${HDF5_LIBRARIES}")

View File

@ -98,11 +98,11 @@ endif ()
# Note: Currently CMake only allows configuring of threadsafe on WINDOWS.
#-----------------------------------------------------------------------------
option (HDF_ENABLE_THREADSAFE "Enable Threadsafety" OFF)
if (HDF_ENABLE_THREADSAFE)
# check for unsupported options
if (HDF_ENABLE_PARALLEL)
message (FATAL " **** Parallel and Threadsafe options are mutually exclusive **** ")
endif ()
# Note that HDF_ENABLE_THREADSAFE is the CMake option for determining
# whether to enable thread-safety in the examples. HDF5_ENABLE_THREADSAFE
# is the CMake option determining whether HDF5 was configured with
# thread-safety enabled.
if (HDF_ENABLE_THREADSAFE AND HDF5_ENABLE_THREADSAFE)
if (WIN32)
set (H5_HAVE_WIN_THREADS 1)
set (H5_HAVE_THREADSAFE 1)

View File

@ -175,9 +175,9 @@ set (_PKG_CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
set (_PKG_CONFIG_EXEC_PREFIX \${prefix})
set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR})
set (_PKG_CONFIG_INCLUDEDIR \${prefix}/${HDF5_INSTALL_INCLUDE_DIR})
set (_PKG_CONFIG_LIBNAME "${HDF5_CPP_LIB_CORENAME}")
set (_PKG_CONFIG_LIBNAME "${HDF5_CPP_LIB_NAME}")
set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}")
set (PKG_CONFIG_LIBNAME "${HDF5_CPP_LIB_CORENAME}")
set (PKG_CONFIG_LIBNAME "${HDF5_CPP_LIB_NAME}")
if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer")
set (PKG_CONFIG_LIBNAME "${PKG_CONFIG_LIBNAME}${CMAKE_DEBUG_POSTFIX}")
endif ()
@ -191,8 +191,8 @@ if (BUILD_SHARED_LIBS)
set (_PKG_CONFIG_SH_LIBS "${_PKG_CONFIG_SH_LIBS} -l${PKG_CONFIG_LIBNAME}")
endif ()
set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
configure_file (
${HDF_CONFIG_DIR}/libhdf5.pc.in

View File

@ -28,7 +28,11 @@ macro (EXTERNAL_ZLIB_LIBRARY compress_type)
FetchContent_Populate(HDF5_ZLIB)
# Copy an additional/replacement files into the populated source
file(COPY ${HDF_RESOURCES_DIR}/ZLIB/CMakeLists.txt DESTINATION ${hdf5_zlib_SOURCE_DIR})
if (HDF5_USE_ZLIB_NG)
file(COPY ${HDF_RESOURCES_DIR}/ZLIBNG/CMakeLists.txt DESTINATION ${hdf5_zlib_SOURCE_DIR})
else ()
file(COPY ${HDF_RESOURCES_DIR}/ZLIB/CMakeLists.txt DESTINATION ${hdf5_zlib_SOURCE_DIR})
endif ()
add_subdirectory(${hdf5_zlib_SOURCE_DIR} ${hdf5_zlib_BINARY_DIR})
endif()

View File

@ -271,6 +271,8 @@ macro (TARGET_C_PROPERTIES wintarget libtype)
if(MSVC)
set_property(TARGET ${wintarget} APPEND PROPERTY LINK_FLAGS "${WIN_LINK_FLAGS}")
endif()
#Disable UNITY_BUILD for now
set_property(TARGET ${wintarget} APPEND PROPERTY UNITY_BUILD OFF)
endmacro ()
#-----------------------------------------------------------------------------

View File

@ -5,6 +5,8 @@ PROJECT (LIBAEC C)
# Basic LIBAEC stuff here
#-----------------------------------------------------------------------------
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set (LIBAEC_PACKAGE_EXT ${HDF_PACKAGE_EXT})
set (HDF_USE_GNU_DIRS ${HDF5_USE_GNU_DIRS})
@ -20,10 +22,12 @@ if (WINDOWS)
endif ()
if (NOT WINDOWS)
TEST_BIG_ENDIAN (WORDS_BIGENDIAN)
include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)
endif ()
# Check for __builtin_clzll for faster decoding
include(CheckCSourceCompiles)
check_c_source_compiles(
"int main(void)\n{return __builtin_clzll(1LL);}"
HAVE_DECL___BUILTIN_CLZLL)
@ -36,6 +40,13 @@ return _BitScanReverse64(&foo, bar);}"
HAVE_BSR64)
endif()
include(CheckSymbolExists)
check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF)
if(NOT HAVE_SNPRINTF)
check_symbol_exists(_snprintf "stdio.h" HAVE__SNPRINTF)
check_symbol_exists(_snprintf_s "stdio.h" HAVE__SNPRINTF_S)
endif()
#-----------------------------------------------------------------------------
# Define some CMake variables for use later in the project
#-----------------------------------------------------------------------------
@ -62,8 +73,8 @@ set (LIBAEC_LIB_TARGET "${LIBAEC_LIB_CORENAME}-static")
set (SZIP_LIB_TARGET "${SZIP_LIB_CORENAME}-static")
set (libaec_VERS_MAJOR 1)
set (libaec_VERS_MINOR 0)
set (libaec_VERS_RELEASE 6)
set (libaec_VERS_MINOR 1)
set (libaec_VERS_RELEASE 3)
#-----------------------------------------------------------------------------
set (LIBAEC_PACKAGE "libaec")
@ -142,6 +153,10 @@ endif ()
# Generate the aec_config.h file containing user settings needed by compilation
#-----------------------------------------------------------------------------
configure_file (${LIBAEC_RESOURCES_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
# Create libaec.h with current version information
configure_file(
"include/libaec.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/libaec.h")
#-----------------------------------------------------------------------------
# All libs/tests/examples need the main include directories
@ -157,10 +172,11 @@ set(LIBAEC_SRCS
${LIBAEC_SRC_DIR}/encode.c
${LIBAEC_SRC_DIR}/encode_accessors.c
${LIBAEC_SRC_DIR}/decode.c
${LIBAEC_SRC_DIR}/vector.c
)
set (LIBAEC_PUBLIC_HEADERS
${LIBAEC_INC_DIR}/libaec.h
${CMAKE_CURRENT_BINARY_DIR}/libaec.h
)
add_library (${LIBAEC_LIB_TARGET} STATIC ${LIBAEC_SRCS} ${LIBAEC_PUBLIC_HEADERS})
@ -224,18 +240,6 @@ endif ()
include (CMakePackageConfigHelpers)
#-----------------------------------------------------------------------------
# Check for Installation Utilities
#-----------------------------------------------------------------------------
if (WIN32)
set (PF_ENV_EXT "(x86)")
find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS")
if(NOT CPACK_WIX_ROOT)
file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
endif ()
find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin")
endif ()
#-----------------------------------------------------------------------------
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
@ -324,145 +328,3 @@ if (NOT LIBAEC_EXTERNALLY_CONFIGURED)
)
endif ()
#-----------------------------------------------------------------------------
# Check for Installation Utilities
#-----------------------------------------------------------------------------
if (WIN32)
set (PF_ENV_EXT "(x86)")
find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS")
if(NOT CPACK_WIX_ROOT)
file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
endif()
find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin")
endif ()
configure_file (${LIBAEC_SOURCE_DIR}/LICENSE.txt ${LIBAEC_BINARY_DIR}/LIBAEC_LICENSE.txt @ONLY)
configure_file (${LIBAEC_SOURCE_DIR}/README.SZIP ${LIBAEC_BINARY_DIR}/LIBAEC_README.SZIP @ONLY)
configure_file (${LIBAEC_SOURCE_DIR}/README.md ${LIBAEC_BINARY_DIR}/LIBAEC_README.md @ONLY)
#-----------------------------------------------------------------------------
# Set the cpack variables
#-----------------------------------------------------------------------------
if (NOT LIBAEC_EXTERNALLY_CONFIGURED)
set (CPACK_PACKAGE_VENDOR "HDF_Group")
set (CPACK_PACKAGE_NAME "${LIBAEC_PACKAGE_NAME}")
if (NOT WIN32 OR LIBAEC_VERS_SUBRELEASE MATCHES "^[0-9]+$")
set (CPACK_PACKAGE_VERSION "${LIBAEC_PACKAGE_VERSION_STRING}")
else ()
set (CPACK_PACKAGE_VERSION "${LIBAEC_PACKAGE_VERSION}")
endif ()
set (CPACK_PACKAGE_VERSION_MAJOR "${LIBAEC_PACKAGE_VERSION_MAJOR}")
set (CPACK_PACKAGE_VERSION_MINOR "${LIBAEC_PACKAGE_VERSION_MINOR}")
set (CPACK_PACKAGE_VERSION_PATCH "")
set (CPACK_RESOURCE_FILE_LICENSE "${LIBAEC_BINARY_DIR}/LIBAEC_LICENSE.txt")
set (CPACK_PACKAGE_DESCRIPTION_FILE "${LIBAEC_BINARY_DIR}/LIBAEC_README.SZIP")
set (CPACK_RESOURCE_FILE_README "${LIBAEC_BINARY_DIR}/LIBAEC_README.md")
set (CPACK_PACKAGE_RELOCATABLE TRUE)
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "libaec - Adaptive Entropy Coding library by Deutsches Klimarechenzentrum GmbH")
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}")
set (CPACK_GENERATOR "TGZ")
if (WIN32)
set (CPACK_GENERATOR "ZIP")
if (NSIS_EXECUTABLE)
list (APPEND CPACK_GENERATOR "NSIS")
endif ()
# Installers for 32- vs. 64-bit CMake:
# - Root install directory (displayed to end user at installer-run time)
# - "NSIS package/display name" (text used in the installer GUI)
# - Registry key used to store info about the installation
set (CPACK_NSIS_PACKAGE_NAME "${LIBAEC_PACKAGE_STRING}")
if (CMAKE_CL_64)
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)")
else ()
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
endif ()
set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}")
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${CPACK_PACKAGE_VERSION}")
set (CPACK_NSIS_CONTACT "${LIBAEC_PACKAGE_BUGREPORT}")
set (CPACK_NSIS_MODIFY_PATH ON)
set (CPACK_NSIS_PACKAGE_NAME "LIBAEC ${LIBAEC_PACKAGE_VERSION}")
if (WIX_EXECUTABLE)
list (APPEND CPACK_GENERATOR "WIX")
endif ()
#WiX variables
set (CPACK_WIX_UNINSTALL "1")
set (CPACK_RESOURCE_FILE_LICENSE "${LIBAEC_BINARY_DIR}/LIBAEC_LICENSE.txt")
elseif (APPLE)
list (APPEND CPACK_GENERATOR "STGZ")
list (APPEND CPACK_GENERATOR "DragNDrop")
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
#set (CPACK_PACKAGE_ICON "${LIBAEC_RESOURCES_DIR}/hdf.icns")
option (LIBAEC_PACK_MACOSX_FRAMEWORK "Package the LIBAEC Library in a Framework" OFF)
if (LIBAEC_PACK_MACOSX_FRAMEWORK AND LIBAEC_BUILD_FRAMEWORKS)
set (CPACK_BUNDLE_NAME "${LIBAEC_PACKAGE_STRING}")
set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in /
set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/")
set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
#-----------------------------------------------------------------------------
# Configure the Info.plist file for the install bundle
#-----------------------------------------------------------------------------
configure_file (
${LIBAEC_RESOURCES_DIR}/CPack.Info.plist.in
${LIBAEC_BINARY_DIR}/CMakeFiles/Info.plist @ONLY
)
configure_file (
${LIBAEC_RESOURCES_DIR}/PkgInfo.in
${LIBAEC_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY
)
install (
FILES ${LIBAEC_BINARY_DIR}/CMakeFiles/PkgInfo
DESTINATION ..
)
endif ()
else ()
list (APPEND CPACK_GENERATOR "STGZ")
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${LIBAEC_PACKAGE_BUGREPORT}")
# list (APPEND CPACK_GENERATOR "RPM")
set (CPACK_RPM_PACKAGE_RELEASE "1")
set (CPACK_RPM_COMPONENT_INSTALL ON)
set (CPACK_RPM_PACKAGE_RELOCATABLE ON)
endif ()
# By default, do not warn when built on machines using only VS Express:
if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
endif ()
include (InstallRequiredSystemLibraries)
set (CPACK_INSTALL_CMAKE_PROJECTS "${LIBAEC_BINARY_DIR};LIBAEC;libraries;/")
set (CPACK_INSTALL_CMAKE_PROJECTS "${LIBAEC_BINARY_DIR};LIBAEC;configinstall;/")
set (CPACK_ALL_INSTALL_TYPES Full Developer User)
set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything")
set(CPACK_COMPONENTS_ALL libraries headers documents configinstall)
include (CPack)
cpack_add_component_group(Runtime)
cpack_add_component (libraries
DISPLAY_NAME "LIBAEC Libraries"
REQUIRED
GROUP Runtime
INSTALL_TYPES Full Developer User
)
cpack_add_component (configinstall
DISPLAY_NAME "LIBAEC CMake files"
DEPENDS libraries
GROUP Development
INSTALL_TYPES Full Developer User
)
endif ()

View File

@ -1,36 +1,6 @@
#cmakedefine WORDS_BIGENDIAN
#cmakedefine01 HAVE_DECL___BUILTIN_CLZLL
#cmakedefine01 HAVE_BSR64
#cmakedefine HAVE_BSR64
#cmakedefine HAVE_SNPRINTF
#cmakedefine HAVE__SNPRINTF
#cmakedefine HAVE__SNPRINTF_S
/* Name of package */
#cmakedefine LIBAEC_PACKAGE "@LIBAEC_PACKAGE@"
/* Define to the address where bug reports for this package should be sent. */
#cmakedefine LIBAEC_PACKAGE_BUGREPORT "@LIBAEC_PACKAGE_BUGREPORT@"
/* Define to the full name of this package. */
#cmakedefine LIBAEC_PACKAGE_NAME "@LIBAEC_PACKAGE_NAME@"
/* Define to the full name and version of this package. */
#cmakedefine LIBAEC_PACKAGE_STRING "@LIBAEC_PACKAGE_STRING@"
/* Define to the one symbol short name of this package. */
#cmakedefine LIBAEC_PACKAGE_TARNAME "@LIBAEC_PACKAGE_TARNAME@"
/* Define to the version of this package. */
#cmakedefine LIBAEC_PACKAGE_VERSION "@LIBAEC_PACKAGE_VERSION@"
/* Define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS @STDC_HEADERS@
/* Version number of package */
#define VERSION "@LIBAEC_PACKAGE_VERSION@"
/* Define to empty if `const' does not conform to ANSI C. */
#cmakedefine const
/* Define to `unsigned int' if <sys/types.h> does not define. */
#cmakedefine size_t

View File

@ -1,42 +1,15 @@
#-----------------------------------------------------------------------------
# LIBAEC Version file for install directory
#-----------------------------------------------------------------------------
set(PACKAGE_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
set(PACKAGE_VERSION_MINOR @PROJECT_VERSION_MINOR@)
set(PACKAGE_VERSION_PATCH @PROJECT_VERSION_PATCH@)
set(PACKAGE_VERSION @PROJECT_VERSION@)
set (PACKAGE_VERSION "@LIBAEC_VERSION_STRING@")
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION OR
PACKAGE_VERSION_MAJOR GREATER PACKAGE_FIND_VERSION_MAJOR)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if ("${PACKAGE_FIND_VERSION_MAJOR}" STREQUAL "@LIBAEC_VERSION_MAJOR@")
# exact match for version @LIBAEC_VERSION_MAJOR@.@LIBAEC_VERSION_MINOR@
if ("${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "@LIBAEC_VERSION_MINOR@")
# compatible with any version @LIBAEC_VERSION_MAJOR@.@LIBAEC_VERSION_MINOR@.x
set (PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_FIND_VERSION_PATCH}" STREQUAL "@LIBAEC_VERSION_RELEASE@")
set (PACKAGE_VERSION_EXACT TRUE)
if ("${PACKAGE_FIND_VERSION_TWEAK}" STREQUAL "@LIBAEC_VERSION_SUBRELEASE@")
# not using this yet
endif ()
endif ()
else ()
set (PACKAGE_VERSION_COMPATIBLE FALSE)
endif ()
endif ()
endif ()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
return()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if(PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@")
math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

View File

@ -1,59 +1,101 @@
#-----------------------------------------------------------------------------
# LIBAEC Config file for compiling against LIBAEC build directory
#-----------------------------------------------------------------------------
@PACKAGE_INIT@
# libaec-config.cmake
# ----------------
#
# Finds the AEC library, specify the starting search path in libaec_ROOT.
#
# Static vs. shared
# -----------------
# To make use of the static library instead of the shared one, one needs
# to set the variable libaec_USE_STATIC_LIBS to ON before calling find_package.
# Example:
# set(libaec_USE_STATIC_LIBS ON)
# find_package(libaec CONFIG)
#
# This will define the following variables:
#
# libaec_FOUND - True if the system has the AEC library.
# libaec_VERSION - The version of the AEC library which was found.
# SZIP_FOUND - True if the system has the SZIP library.
# SZIP_VERSION - The version of the SZIP library which was found.
# SZIP_LIBRARIES - All the required libraries to make use of SZIP.
#
# and the following imported targets:
#
# libaec::aec - The AEC library.
# libaec::sz - The SZIP compatible version of the AEC library.
string(TOUPPER @LIBAEC_PACKAGE@ LIBAEC_PACKAGE_NAME)
set (${LIBAEC_PACKAGE_NAME}_VALID_COMPONENTS static shared)
#-----------------------------------------------------------------------------
# User Options
#-----------------------------------------------------------------------------
set (${LIBAEC_PACKAGE_NAME}_ENABLE_ENCODING @LIBAEC_ENABLE_ENCODING@)
set (${LIBAEC_PACKAGE_NAME}_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@)
set (${LIBAEC_PACKAGE_NAME}_EXPORT_LIBRARIES @LIBAEC_LIBRARIES_TO_EXPORT@)
#-----------------------------------------------------------------------------
# Directories
#-----------------------------------------------------------------------------
set (${LIBAEC_PACKAGE_NAME}_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
set (${LIBAEC_PACKAGE_NAME}_SHARE_DIR "@PACKAGE_SHARE_INSTALL_DIR@")
set_and_check (${LIBAEC_PACKAGE_NAME}_BUILD_DIR "@PACKAGE_CURRENT_BUILD_DIR@")
#-----------------------------------------------------------------------------
# Version Strings
#-----------------------------------------------------------------------------
set (${LIBAEC_PACKAGE_NAME}_VERSION_STRING @LIBAEC_VERSION_STRING@)
set (${LIBAEC_PACKAGE_NAME}_VERSION_MAJOR @LIBAEC_VERSION_MAJOR@)
set (${LIBAEC_PACKAGE_NAME}_VERSION_MINOR @LIBAEC_VERSION_MINOR@)
#-----------------------------------------------------------------------------
# Don't include targets if this file is being picked up by another
# project which has already build LIBAEC as a subproject
#-----------------------------------------------------------------------------
if (NOT TARGET "@LIBAEC_PACKAGE@")
include (@PACKAGE_SHARE_INSTALL_DIR@/@LIBAEC_PACKAGE@@LIBAEC_PACKAGE_EXT@-targets.cmake)
find_path(libaec_INCLUDE_DIR NAMES libaec.h DOC "AEC include directory")
find_path(SZIP_INCLUDE_DIR NAMES szlib.h DOC "SZIP include directory")
if (libaec_USE_STATIC_LIBS)
if (MSVC)
find_library(libaec_LIBRARY NAMES aec-static.lib DOC "AEC library")
find_library(SZIP_LIBRARY NAMES szip-static.lib DOC "SZIP compatible version of the AEC library")
else ()
find_library(libaec_LIBRARY NAMES libaec.a DOC "AEC library")
find_library(SZIP_LIBRARY NAMES libsz.a DOC "SZIP compatible version of the AEC library")
endif ()
else ()
find_library(libaec_LIBRARY NAMES aec DOC "AEC library")
find_library(SZIP_LIBRARY NAMES sz szip DOC "SZIP compatible version of the AEC library")
endif ()
# Handle default component(static) :
if (NOT ${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS)
set (${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS static)
set (${LIBAEC_PACKAGE_NAME}_FIND_REQUIRED_static true)
# Check version here
if (libaec_INCLUDE_DIR AND libaec_LIBRARY)
set(libaec_VERSION "@PROJECT_VERSION@")
set(SZIP_VERSION "2.0.1")
endif ()
# Handle requested components:
list (REMOVE_DUPLICATES ${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS)
foreach (comp IN LISTS ${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS)
list (FIND ${LIBAEC_PACKAGE_NAME}_EXPORT_LIBRARIES "@LIBAEC_LIB_CORENAME@-${comp}" HAVE_COMP)
if (${HAVE_COMP} LESS 0)
set (${LIBAEC_PACKAGE_NAME}_${comp}_FOUND 0)
else ()
set (${LIBAEC_PACKAGE_NAME}_${comp}_FOUND 1)
string(TOUPPER ${LIBAEC_PACKAGE_NAME}_${comp}_LIBRARY COMP_LIBRARY)
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @LIBAEC_LIB_CORENAME@-${comp})
include(FindPackageHandleStandardArgs)
set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG "${CMAKE_CURRENT_LIST_FILE}")
find_package_handle_standard_args(libaec
FOUND_VAR libaec_FOUND
REQUIRED_VARS libaec_LIBRARY libaec_INCLUDE_DIR SZIP_LIBRARY SZIP_INCLUDE_DIR
VERSION_VAR libaec_VERSION
CONFIG_MODE
)
if (libaec_FOUND)
if (libaec_USE_STATIC_LIBS)
add_library(libaec::aec STATIC IMPORTED)
else ()
add_library(libaec::aec SHARED IMPORTED)
target_compile_definitions(libaec::aec INTERFACE LIBAEC_SHARED)
if (MSVC)
set_target_properties(libaec::aec PROPERTIES
IMPORTED_IMPLIB "${libaec_LIBRARY}"
)
endif ()
endforeach ()
endif ()
set_target_properties(libaec::aec PROPERTIES
IMPORTED_LOCATION "${libaec_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${libaec_INCLUDE_DIR}"
)
check_required_components (${LIBAEC_PACKAGE_NAME})
# SZIP
if (libaec_USE_STATIC_LIBS)
add_library(libaec::sz STATIC IMPORTED)
else ()
add_library(libaec::sz SHARED IMPORTED)
target_compile_definitions(libaec::sz INTERFACE LIBAEC_SHARED)
if (MSVC)
set_target_properties(libaec::sz PROPERTIES
IMPORTED_IMPLIB "${SZIP_LIBRARY}"
)
endif ()
endif ()
set_target_properties(libaec::sz PROPERTIES
IMPORTED_LOCATION "${SZIP_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SZIP_INCLUDE_DIR}"
)
# Set SZIP variables.
set(SZIP_FOUND TRUE)
set(SZIP_LIBRARIES "${SZIP_LIBRARY}")
endif ()
mark_as_advanced(
libaec_LIBRARY
libaec_INCLUDE_DIR
SZIP_LIBRARY
SZIP_INCLUDE_DIR
)

View File

@ -1,5 +1,9 @@
cmake_minimum_required (VERSION 3.12)
PROJECT (ZLIB C)
cmake_minimum_required(VERSION 3.12.0)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
project(ZLIB C)
set(VERSION "1.3")
#-----------------------------------------------------------------------------
# Basic ZLIB stuff here
@ -16,12 +20,6 @@ if (WINDOWS)
set (HAVE_STDDEF_H 1)
set (HAVE_SYS_TYPES_H 1)
endif ()
#
# Check for unistd.h
#
check_include_file(unistd.h Z_HAVE_UNISTD_H)
CHECK_FUNCTION_EXISTS (memcpy HAVE_MEMCPY)
CHECK_FUNCTION_EXISTS (vsnprintf HAVE_VSNPRINTF)
#-----------------------------------------------------------------------------
# Define some CMake variables for use later in the project
@ -29,66 +27,6 @@ CHECK_FUNCTION_EXISTS (vsnprintf HAVE_VSNPRINTF)
set (ZLIB_RESOURCES_DIR ${HDF_RESOURCES_DIR}/ZLIB)
set (ZLIB_SRC_DIR ${ZLIB_SOURCE_DIR})
#-----------------------------------------------------------------------------
# Set the core names of all the libraries
#-----------------------------------------------------------------------------
set (ZLIB_LIB_CORENAME "zlib")
#-----------------------------------------------------------------------------
# Set the true names of all the libraries if customized by external project
#-----------------------------------------------------------------------------
set (ZLIB_LIB_NAME "${ZLIB_EXTERNAL_LIB_PREFIX}${ZLIB_LIB_CORENAME}")
#-----------------------------------------------------------------------------
# Set the target names of all the libraries
#-----------------------------------------------------------------------------
set (ZLIB_LIB_TARGET "${ZLIB_LIB_CORENAME}-static")
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein ${ZLIB_PC} @ONLY)
#-----------------------------------------------------------------------------
# Generate the zconf.h file containing user settings needed by compilation
#-----------------------------------------------------------------------------
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
if (DEFINED ADDITIONAL_CMAKE_PREFIX_PATH AND EXISTS "${ADDITIONAL_CMAKE_PREFIX_PATH}")
set (CMAKE_PREFIX_PATH ${ADDITIONAL_CMAKE_PREFIX_PATH} ${CMAKE_PREFIX_PATH})
endif ()
#-----------------------------------------------------------------------------
# parse the full version number from zlib.h and include in ZLIB_VERS_INFO
#-----------------------------------------------------------------------------
file (READ ${ZLIB_SRC_DIR}/zlib.h _zlib_h_contents)
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_MAJOR[ \t]+([0-9]*).*$"
"\\1" ZLIB_VERS_MAJOR ${_zlib_h_contents})
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_MINOR[ \t]+([0-9]*).*$"
"\\1" ZLIB_VERS_MINOR ${_zlib_h_contents})
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_REVISION[ \t]+([0-9]*).*$"
"\\1" ZLIB_VERS_RELEASE ${_zlib_h_contents})
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_SUBREVISION[ \t]+([0-9]*).*$"
"\\1" ZLIB_VERS_SUBRELEASE ${_zlib_h_contents})
#message (STATUS "VERSION: ${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}.${ZLIB_VERS_RELEASE}-${ZLIB_VERS_SUBRELEASE}")
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([0-9A-Za-z.]+)\".*"
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
#message (STATUS "VERSION: ${ZLIB_FULL_VERSION}")
#-----------------------------------------------------------------------------
set (ZLIB_PACKAGE "zlib")
set (ZLIB_PACKAGE_NAME "ZLIB")
set (ZLIB_PACKAGE_VERSION "${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}")
set (ZLIB_PACKAGE_VERSION_MAJOR "${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}")
set (ZLIB_PACKAGE_VERSION_MINOR "${ZLIB_VERS_RELEASE}")
set (ZLIB_PACKAGE_STRING "${ZLIB_PACKAGE_NAME} ${ZLIB_PACKAGE_VERSION}-${ZLIB_VERS_SUBRELEASE}")
set (ZLIB_PACKAGE_TARNAME "zlib")
set (ZLIB_PACKAGE_URL "http://www.hdfgroup.org")
set (ZLIB_PACKAGE_BUGREPORT "help@hdfgroup.org")
set (ZLIB_PACKAGE_SOVERSION "${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}.${ZLIB_VERS_RELEASE}")
set (ZLIB_PACKAGE_SOVERSION_MAJOR "${ZLIB_VERS_MAJOR}")
HDF_DIR_PATHS(${ZLIB_PACKAGE_NAME})
#-----------------------------------------------------------------------------
# Targets built within this project are exported at Install time for use
# by other projects
@ -97,51 +35,9 @@ if (NOT ZLIB_EXPORTED_TARGETS)
set (ZLIB_EXPORTED_TARGETS "zlib-targets")
endif ()
#-----------------------------------------------------------------------------
# To include a library in the list exported by the project AT BUILD TIME,
# add it to this variable. This is NOT used by Make Install, but for projects
# which include zlib as a sub-project within their build tree
#-----------------------------------------------------------------------------
set_global_variable (ZLIB_LIBRARIES_TO_EXPORT "")
set (CMAKE_POSITION_INDEPENDENT_CODE ON)
#-----------------------------------------------------------------------------
# When building utility executables that generate other (source) files :
# we make use of the following variables defined in the root CMakeLists.
# Certain systems may add /Debug or /Release to output paths
# and we need to call the executable from inside the CMake configuration
#-----------------------------------------------------------------------------
set (EXE_EXT "")
if (WIN32)
set (EXE_EXT ".exe")
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)
endif ()
if (MSVC)
set (CMAKE_MFC_FLAG 0)
endif ()
#-----------------------------------------------------------------------------
# Compiler specific flags : Shouldn't there be compiler tests for these
#-----------------------------------------------------------------------------
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -Wno-strict-prototypes -Wno-implicit-function-declaration")
endif ()
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} -Wno-implicit-function-declaration")
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 ()
HDF_DIR_PATHS(ZLIB)
#-----------------------------------------------------------------------------
# All libs/tests/examples need the main include directories
@ -150,13 +46,79 @@ set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES
"${ZLIB_BINARY_DIR};${ZLIB_SOURCE_DIR};${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
)
include(CheckTypeSize)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckCSourceCompiles)
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(stdint.h HAVE_STDINT_H)
check_include_file(stddef.h HAVE_STDDEF_H)
#
# Check to see if we have large file support
#
set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1)
# We add these other definitions here because CheckTypeSize.cmake
# in CMake 2.4.x does not automatically do so and we want
# compatibility with CMake 2.4.x.
if(HAVE_SYS_TYPES_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H)
endif()
if(HAVE_STDINT_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H)
endif()
if(HAVE_STDDEF_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H)
endif()
check_type_size(off64_t OFF64_T)
if(HAVE_OFF64_T)
add_definitions(-D_LARGEFILE64_SOURCE=1)
endif()
set(CMAKE_REQUIRED_DEFINITIONS) # clear variable
#
# Check for fseeko
#
check_function_exists(fseeko HAVE_FSEEKO)
if(NOT HAVE_FSEEKO)
add_definitions(-DNO_FSEEKO)
endif()
#
# Check for unistd.h
#
check_include_file(unistd.h Z_HAVE_UNISTD_H)
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)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
endif()
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
# If we're doing an out of source build and the user has a zconf.h
# in their source tree...
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h)
message(STATUS "Renaming")
message(STATUS " ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h")
message(STATUS "to 'zconf.h.included' because this file is included with zlib")
message(STATUS "but CMake generates it automatically in the build directory.")
file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included)
endif()
endif()
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
#============================================================================
# zlib
#============================================================================
#-----------------------------------------------------------------------------
# Define zlib Library
#-----------------------------------------------------------------------------
set(ZLIB_PUBLIC_HDRS
${CMAKE_CURRENT_BINARY_DIR}/zconf.h
zlib.h
@ -190,77 +152,47 @@ set(ZLIB_SRCS
zutil.c
)
if(NOT MINGW)
set(ZLIB_DLL_SRCS
win32/zlib1.rc # If present will override custom build rule below.
)
endif()
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
if(ASM686)
set(ZLIB_ASMS contrib/asm686/match.S)
elseif (AMD64)
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
endif ()
if(ZLIB_ASMS)
add_definitions(-DASMV)
set_source_files_properties (${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
endif()
endif()
if(MSVC)
if(ASM686)
enable_language(ASM_MASM)
set(ZLIB_ASMS
contrib/masmx86/inffas32.asm
contrib/masmx86/match686.asm
)
elseif (AMD64)
enable_language(ASM_MASM)
set(ZLIB_ASMS
contrib/masmx64/gvmat64.asm
contrib/masmx64/inffasx64.asm
)
endif()
if(ZLIB_ASMS)
add_definitions(-DASMV -DASMINF)
endif()
endif()
if(MINGW)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
COMMAND ${CMAKE_RC_COMPILER}
-D GCC_WINDRES
-I ${CMAKE_CURRENT_SOURCE_DIR}
-I ${CMAKE_CURRENT_BINARY_DIR}
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif()
add_library (${ZLIB_LIB_TARGET} STATIC ${ZLIB_SRCS} ${ZLIB_PRIVATE_HDRS} ${ZLIB_PUBLIC_HDRS})
add_library(zlib-static STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
if (MSVC AND CMAKE_CL_64)
set_target_properties (${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
set_target_properties (zlib-static PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
endif ()
target_include_directories(${ZLIB_LIB_TARGET} PRIVATE "${CMAKE_BINARY_DIR}")
TARGET_C_PROPERTIES (${ZLIB_LIB_TARGET} STATIC)
target_link_libraries (${ZLIB_LIB_TARGET} PRIVATE ${LINK_LIBS})
H5_SET_LIB_OPTIONS (${ZLIB_LIB_TARGET} ${ZLIB_LIB_NAME} STATIC 0)
set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES
target_include_directories(zlib-static PRIVATE "${CMAKE_BINARY_DIR}")
set_target_properties(zlib-static PROPERTIES
PUBLIC_HEADER ""
LINKER_LANGUAGE C
INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
)
set_global_variable (ZLIB_LIBRARIES_TO_EXPORT ${ZLIB_LIB_TARGET})
set (install_targets ${ZLIB_LIB_TARGET})
set_global_variable (ZLIB_LIBRARIES_TO_EXPORT "zlib-static")
set (install_targets zlib-static)
#-----------------------------------------------------------------------------
# Compiler specific flags : Shouldn't there be compiler tests for these
#-----------------------------------------------------------------------------
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
target_compile_options(zlib-static PRIVATE -Wno-strict-prototypes -Wno-implicit-function-declaration)
endif ()
if (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" OR CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
target_compile_options(zlib-static PRIVATE -Wno-implicit-function-declaration)
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")
target_compile_options(zlib-static PRIVATE -fmessage-length=0)
endif ()
#-----------------------------------------------------------------------------
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
if (ZLIB_EXPORTED_TARGETS)
INSTALL_TARGET_PDB (${ZLIB_LIB_TARGET} ${ZLIB_INSTALL_BIN_DIR} libraries)
INSTALL_TARGET_PDB (zlib-static ${ZLIB_INSTALL_BIN_DIR} libraries)
install (
TARGETS
@ -277,57 +209,6 @@ endif ()
include (CMakePackageConfigHelpers)
#-----------------------------------------------------------------------------
# Check for Installation Utilities
#-----------------------------------------------------------------------------
if (WIN32)
set (PF_ENV_EXT "(x86)")
find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS")
if(NOT CPACK_WIX_ROOT)
file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
endif ()
find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin")
endif ()
#-----------------------------------------------------------------------------
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
install (
EXPORT ${ZLIB_EXPORTED_TARGETS}
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
FILE ${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-targets.cmake
NAMESPACE ${PACKAGE_NAMESPACE}
COMPONENT configinstall
)
endif ()
#-----------------------------------------------------------------------------
# Export all exported targets to the build tree for use by parent project
#-----------------------------------------------------------------------------
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
export (
TARGETS ${ZLIB_LIBRARIES_TO_EXPORT} ${ZLIB_LIB_DEPENDENCIES}
FILE ${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-targets.cmake
NAMESPACE ${PACKAGE_NAMESPACE}
)
export (PACKAGE ${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT})
endif ()
#-----------------------------------------------------------------------------
# Set includes needed for build
#-----------------------------------------------------------------------------
set (ZLIB_INCLUDES_BUILD_TIME
${ZLIB_SRC_DIR} ${ZLIB_BINARY_DIR}
)
#-----------------------------------------------------------------------------
# Set variables needed for installation
#-----------------------------------------------------------------------------
set (ZLIB_VERSION_STRING ${ZLIB_PACKAGE_VERSION})
set (ZLIB_VERSION_MAJOR ${ZLIB_PACKAGE_VERSION_MAJOR})
set (ZLIB_VERSION_MINOR ${ZLIB_PACKAGE_VERSION_MINOR})
#-----------------------------------------------------------------------------
# Configure the zlib-config.cmake file for the build directory
#-----------------------------------------------------------------------------
@ -336,7 +217,7 @@ set (SHARE_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ZLIB_INSTALL_CMAKE_DIR}" )
set (CURRENT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}" )
configure_package_config_file (
${ZLIB_RESOURCES_DIR}/zlib-config.cmake.in
"${ZLIB_BINARY_DIR}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config.cmake"
"${ZLIB_BINARY_DIR}/zlib-config.cmake"
INSTALL_DESTINATION "${ZLIB_INSTALL_CMAKE_DIR}"
PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR
INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
@ -350,13 +231,13 @@ set (SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${ZLIB_INSTALL_CMAKE_DIR}" )
set (CURRENT_BUILD_DIR "${CMAKE_INSTALL_PREFIX}" )
configure_package_config_file (
${ZLIB_RESOURCES_DIR}/zlib-config.cmake.in
"${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config.cmake"
"${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/zlib-config.cmake"
INSTALL_DESTINATION "${ZLIB_INSTALL_CMAKE_DIR}"
PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR
)
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
install (
FILES ${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config.cmake
FILES ${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/zlib-config.cmake
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
COMPONENT configinstall
)
@ -368,160 +249,37 @@ endif ()
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
configure_file (
${ZLIB_RESOURCES_DIR}/zlib-config-version.cmake.in
${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config-version.cmake @ONLY
${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/zlib-config-version.cmake @ONLY
)
install (
FILES ${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config-version.cmake
FILES ${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/zlib-config-version.cmake
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
COMPONENT configinstall
)
endif ()
#-----------------------------------------------------------------------------
# Check for Installation Utilities
#-----------------------------------------------------------------------------
if (WIN32)
set (PF_ENV_EXT "(x86)")
find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS")
if(NOT CPACK_WIX_ROOT)
file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
endif()
find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin")
endif ()
#-----------------------------------------------------------------------------
# Configure the LICENSE.txt file for the windows binary package
#-----------------------------------------------------------------------------
if (WIN32)
configure_file (${ZLIB_SOURCE_DIR}/LICENSE ${ZLIB_BINARY_DIR}/ZLIB_LICENSE.txt @ONLY)
else ()
configure_file (${ZLIB_SOURCE_DIR}/LICENSE ${ZLIB_BINARY_DIR}/ZLIB_LICENSE @ONLY)
endif ()
configure_file (${ZLIB_SOURCE_DIR}/README ${ZLIB_BINARY_DIR}/ZLIB_README @ONLY)
#-----------------------------------------------------------------------------
# Set the cpack variables
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
set (CPACK_PACKAGE_VENDOR "HDF_Group")
set (CPACK_PACKAGE_NAME "${ZLIB_PACKAGE_NAME}")
if (NOT WIN32 OR ZLIB_VERS_SUBRELEASE MATCHES "^[0-9]+$")
set (CPACK_PACKAGE_VERSION "${ZLIB_PACKAGE_VERSION_STRING}")
else ()
set (CPACK_PACKAGE_VERSION "${ZLIB_PACKAGE_VERSION}")
endif ()
set (CPACK_PACKAGE_VERSION_MAJOR "${ZLIB_PACKAGE_VERSION_MAJOR}")
set (CPACK_PACKAGE_VERSION_MINOR "${ZLIB_PACKAGE_VERSION_MINOR}")
set (CPACK_PACKAGE_VERSION_PATCH "")
set (CPACK_RESOURCE_FILE_LICENSE "${ZLIB_BINARY_DIR}/ZLIB_LICENSE")
set (CPACK_PACKAGE_DESCRIPTION_FILE "${ZLIB_BINARY_DIR}/ZLIB_README")
set (CPACK_RESOURCE_FILE_README "${ZLIB_BINARY_DIR}/ZLIB_README")
set (CPACK_PACKAGE_RELOCATABLE TRUE)
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "zlib Installation")
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}")
set (CPACK_GENERATOR "TGZ")
if (WIN32)
set (CPACK_GENERATOR "ZIP")
if (NSIS_EXECUTABLE)
list (APPEND CPACK_GENERATOR "NSIS")
endif ()
# Installers for 32- vs. 64-bit CMake:
# - Root install directory (displayed to end user at installer-run time)
# - "NSIS package/display name" (text used in the installer GUI)
# - Registry key used to store info about the installation
set (CPACK_NSIS_PACKAGE_NAME "${ZLIB_PACKAGE_STRING}")
if (CMAKE_CL_64)
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)")
else ()
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
endif ()
set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}")
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${CPACK_PACKAGE_VERSION}")
set (CPACK_NSIS_CONTACT "${ZLIB_PACKAGE_BUGREPORT}")
set (CPACK_NSIS_MODIFY_PATH ON)
set (CPACK_NSIS_PACKAGE_NAME "ZLIB ${ZLIB_PACKAGE_VERSION}")
if (WIX_EXECUTABLE)
list (APPEND CPACK_GENERATOR "WIX")
endif ()
#WiX variables
set (CPACK_WIX_UNINSTALL "1")
set (CPACK_RESOURCE_FILE_LICENSE "${ZLIB_BINARY_DIR}/ZLIB_LICENSE.txt")
elseif (APPLE)
list (APPEND CPACK_GENERATOR "STGZ")
list (APPEND CPACK_GENERATOR "DragNDrop")
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
#set (CPACK_PACKAGE_ICON "${ZLIB_RESOURCES_DIR}/hdf.icns")
option (ZLIB_PACK_MACOSX_FRAMEWORK "Package the ZLIB Library in a Framework" OFF)
if (ZLIB_PACK_MACOSX_FRAMEWORK AND ZLIB_BUILD_FRAMEWORKS)
set (CPACK_BUNDLE_NAME "${ZLIB_PACKAGE_STRING}")
set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in /
set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/")
set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
#-----------------------------------------------------------------------------
# Configure the Info.plist file for the install bundle
#-----------------------------------------------------------------------------
configure_file (
${ZLIB_RESOURCES_DIR}/CPack.Info.plist.in
${ZLIB_BINARY_DIR}/CMakeFiles/Info.plist @ONLY
)
configure_file (
${ZLIB_RESOURCES_DIR}/PkgInfo.in
${ZLIB_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY
)
install (
FILES ${ZLIB_BINARY_DIR}/CMakeFiles/PkgInfo
DESTINATION ..
)
endif ()
else ()
list (APPEND CPACK_GENERATOR "STGZ")
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${ZLIB_PACKAGE_BUGREPORT}")
# list (APPEND CPACK_GENERATOR "RPM")
set (CPACK_RPM_PACKAGE_RELEASE "1")
set (CPACK_RPM_COMPONENT_INSTALL ON)
set (CPACK_RPM_PACKAGE_RELOCATABLE ON)
endif ()
# By default, do not warn when built on machines using only VS Express:
if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
endif ()
include (InstallRequiredSystemLibraries)
set (CPACK_INSTALL_CMAKE_PROJECTS "${ZLIB_BINARY_DIR};ZLIB;libraries;/")
set (CPACK_INSTALL_CMAKE_PROJECTS "${ZLIB_BINARY_DIR};ZLIB;configinstall;/")
set (CPACK_ALL_INSTALL_TYPES Full Developer User)
set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything")
set(CPACK_COMPONENTS_ALL libraries headers documents configinstall)
include (CPack)
cpack_add_component_group(Runtime)
cpack_add_component (libraries
DISPLAY_NAME "ZLIB Libraries"
REQUIRED
GROUP Runtime
INSTALL_TYPES Full Developer User
install (
EXPORT ${ZLIB_EXPORTED_TARGETS}
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
FILE zlib-targets.cmake
NAMESPACE ${PACKAGE_NAMESPACE}
COMPONENT configinstall
)
cpack_add_component (configinstall
DISPLAY_NAME "ZLIB CMake files"
DEPENDS libraries
GROUP Development
INSTALL_TYPES Full Developer User
)
endif ()
#-----------------------------------------------------------------------------
# Export all exported targets to the build tree for use by parent project
#-----------------------------------------------------------------------------
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
export (
TARGETS ${ZLIB_LIBRARIES_TO_EXPORT}
FILE zlib-targets.cmake
NAMESPACE ${PACKAGE_NAMESPACE}
)
export (PACKAGE zlib)
endif ()

View File

@ -40,6 +40,9 @@
# define crc32 z_crc32
# define crc32_combine z_crc32_combine
# define crc32_combine64 z_crc32_combine64
# define crc32_combine_gen z_crc32_combine_gen
# define crc32_combine_gen64 z_crc32_combine_gen64
# define crc32_combine_op z_crc32_combine_op
# define crc32_z z_crc32_z
# define deflate z_deflate
# define deflateBound z_deflateBound
@ -240,7 +243,11 @@
#endif
#ifdef Z_SOLO
typedef unsigned long z_size_t;
# ifdef _WIN64
typedef unsigned long long z_size_t;
# else
typedef unsigned long z_size_t;
# endif
#else
# define z_longlong long long
# if defined(NO_SIZE_T)
@ -351,6 +358,9 @@
# ifdef FAR
# undef FAR
# endif
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
/* No need for _export, use ZLIB.DEF instead. */
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
@ -469,11 +479,18 @@ typedef uLong FAR uLongf;
# undef _LARGEFILE64_SOURCE
#endif
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
# define Z_HAVE_UNISTD_H
#ifndef Z_HAVE_UNISTD_H
# ifdef __WATCOMC__
# define Z_HAVE_UNISTD_H
# endif
#endif
#ifndef Z_HAVE_UNISTD_H
# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
# define Z_HAVE_UNISTD_H
# endif
#endif
#ifndef Z_SOLO
# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
# if defined(Z_HAVE_UNISTD_H)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifdef VMS
# include <unixio.h> /* for off_t */
@ -509,7 +526,7 @@ typedef uLong FAR uLongf;
#if !defined(_WIN32) && defined(Z_LARGE64)
# define z_off64_t off64_t
#else
# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
# if defined(_WIN32) && !defined(__GNUC__)
# define z_off64_t __int64
# else
# define z_off64_t z_off_t

View File

@ -10,7 +10,6 @@ set (${ZLIB_PACKAGE_NAME}_VALID_COMPONENTS static shared)
#-----------------------------------------------------------------------------
# User Options
#-----------------------------------------------------------------------------
set (${ZLIB_PACKAGE_NAME}_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@)
set (${ZLIB_PACKAGE_NAME}_EXPORT_LIBRARIES @ZLIB_LIBRARIES_TO_EXPORT@)
#-----------------------------------------------------------------------------

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>@CPACK_PACKAGE_FILE_NAME@</string>
<key>CFBundleIconFile</key>
<string>@CPACK_BUNDLE_ICON@</string>
<key>CFBundleIdentifier</key>
<string>org.@CPACK_PACKAGE_VENDOR@.@CPACK_PACKAGE_NAME@@CPACK_MODULE_VERSION_SUFFIX@</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>@CPACK_PACKAGE_VERSIO@</string>
<key>CFBundleShortVersionString</key>
<string>@CPACK_SHORT_VERSION_STRING@</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,206 @@
/* zconf.h -- configuration of the zlib compression library
* Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#ifndef ZCONF_H
#define ZCONF_H
#include "zlib_name_mangling.h"
#if !defined(_WIN32) && defined(__WIN32__)
# define _WIN32
#endif
/* Clang macro for detecting declspec support
* https://clang.llvm.org/docs/LanguageExtensions.html#has-declspec-attribute
*/
#ifndef __has_declspec_attribute
# define __has_declspec_attribute(x) 0
#endif
#if defined(ZLIB_CONST) && !defined(z_const)
# define z_const const
#else
# define z_const
#endif
/* Maximum value for memLevel in deflateInit2 */
#ifndef MAX_MEM_LEVEL
# define MAX_MEM_LEVEL 9
#endif
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
* created by gzip. (Files created by minigzip can still be extracted by
* gzip.)
*/
#ifndef MIN_WBITS
# define MIN_WBITS 8 /* 256 LZ77 window */
#endif
#ifndef MAX_WBITS
# define MAX_WBITS 15 /* 32K LZ77 window */
#endif
/* The memory requirements for deflate are (in bytes):
(1 << (windowBits+2)) + (1 << (memLevel+9))
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
plus a few kilobytes for small objects. For example, if you want to reduce
the default memory requirements from 256K to 128K, compile with
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
Of course this will generally degrade compression (there's no free lunch).
The memory requirements for inflate are (in bytes) 1 << windowBits
that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
for small objects.
*/
/* Type declarations */
#ifndef OF /* function prototypes */
# define OF(args) args
#endif
#ifdef ZLIB_INTERNAL
# define Z_INTERNAL ZLIB_INTERNAL
#endif
/* If building or using zlib as a DLL, define ZLIB_DLL.
* This is not mandatory, but it offers a little performance increase.
*/
#if defined(ZLIB_DLL) && (defined(_WIN32) || (__has_declspec_attribute(dllexport) && __has_declspec_attribute(dllimport)))
# ifdef Z_INTERNAL
# define Z_EXTERN extern __declspec(dllexport)
# else
# define Z_EXTERN extern __declspec(dllimport)
# endif
#endif
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
* define ZLIB_WINAPI.
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
*/
#if defined(ZLIB_WINAPI) && defined(_WIN32)
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
/* No need for _export, use ZLIB.DEF instead. */
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
# define Z_EXPORT WINAPI
# define Z_EXPORTVA WINAPIV
#endif
#ifndef Z_EXTERN
# define Z_EXTERN extern
#endif
#ifndef Z_EXPORT
# define Z_EXPORT
#endif
#ifndef Z_EXPORTVA
# define Z_EXPORTVA
#endif
/* Conditional exports */
#define ZNG_CONDEXPORT Z_INTERNAL
/* For backwards compatibility */
#ifndef ZEXTERN
# define ZEXTERN Z_EXTERN
#endif
#ifndef ZEXPORT
# define ZEXPORT Z_EXPORT
#endif
#ifndef ZEXPORTVA
# define ZEXPORTVA Z_EXPORTVA
#endif
#ifndef FAR
# define FAR
#endif
/* Legacy zlib typedefs for backwards compatibility. Don't assume stdint.h is defined. */
typedef unsigned char Byte;
typedef Byte Bytef;
typedef unsigned int uInt; /* 16 bits or more */
typedef unsigned long uLong; /* 32 bits or more */
typedef char charf;
typedef int intf;
typedef uInt uIntf;
typedef uLong uLongf;
typedef void const *voidpc;
typedef void *voidpf;
typedef void *voidp;
typedef unsigned int z_crc_t;
#ifdef HAVE_UNISTD_H /* may be set to #if 1 by configure/cmake/etc */
# define Z_HAVE_UNISTD_H
#endif
#ifdef NEED_PTRDIFF_T /* may be set to #if 1 by configure/cmake/etc */
typedef PTRDIFF_TYPE ptrdiff_t;
#endif
#include <sys/types.h> /* for off_t */
#include <stddef.h> /* for wchar_t and NULL */
/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
* "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
* though the former does not conform to the LFS document), but considering
* both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
* equivalently requesting no 64-bit operations
*/
#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
# undef _LARGEFILE64_SOURCE
#endif
#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifndef z_off_t
# define z_off_t off_t
# endif
#endif
#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
# define Z_LFS64
#endif
#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
# define Z_LARGE64
#endif
#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
# define Z_WANT64
#endif
#if !defined(SEEK_SET)
# define SEEK_SET 0 /* Seek from beginning of file. */
# define SEEK_CUR 1 /* Seek from current position. */
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
#endif
#ifndef z_off_t
# define z_off_t long
#endif
#if !defined(_WIN32) && defined(Z_LARGE64)
# define z_off64_t off64_t
#else
# if defined(__MSYS__)
# define z_off64_t _off64_t
# elif defined(_WIN32) && !defined(__GNUC__)
# define z_off64_t __int64
# else
# define z_off64_t z_off_t
# endif
#endif
typedef size_t z_size_t;
#endif /* ZCONF_H */

View File

@ -0,0 +1,42 @@
#-----------------------------------------------------------------------------
# ZLIB Version file for install directory
#-----------------------------------------------------------------------------
set (PACKAGE_VERSION "@ZLIB_VERSION_STRING@")
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if ("${PACKAGE_FIND_VERSION_MAJOR}" STREQUAL "@ZLIB_VERSION_MAJOR@")
# exact match for version @ZLIB_VERSION_MAJOR@.@ZLIB_VERSION_MINOR@
if ("${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "@ZLIB_VERSION_MINOR@")
# compatible with any version @ZLIB_VERSION_MAJOR@.@ZLIB_VERSION_MINOR@.x
set (PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_FIND_VERSION_PATCH}" STREQUAL "@ZLIB_VERSION_RELEASE@")
set (PACKAGE_VERSION_EXACT TRUE)
if ("${PACKAGE_FIND_VERSION_TWEAK}" STREQUAL "@ZLIB_VERSION_SUBRELEASE@")
# not using this yet
endif ()
endif ()
else ()
set (PACKAGE_VERSION_COMPATIBLE FALSE)
endif ()
endif ()
endif ()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@")
math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

View File

@ -0,0 +1,57 @@
#-----------------------------------------------------------------------------
# ZLIB Config file for compiling against ZLIB build directory
#-----------------------------------------------------------------------------
@PACKAGE_INIT@
string(TOUPPER @ZLIB_PACKAGE@ ZLIB_PACKAGE_NAME)
set (${ZLIB_PACKAGE_NAME}_VALID_COMPONENTS static shared)
#-----------------------------------------------------------------------------
# User Options
#-----------------------------------------------------------------------------
set (${ZLIB_PACKAGE_NAME}_EXPORT_LIBRARIES @ZLIB_LIBRARIES_TO_EXPORT@)
#-----------------------------------------------------------------------------
# Directories
#-----------------------------------------------------------------------------
set (${ZLIB_PACKAGE_NAME}_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
set (${ZLIB_PACKAGE_NAME}_SHARE_DIR "@PACKAGE_SHARE_INSTALL_DIR@")
set_and_check (${ZLIB_PACKAGE_NAME}_BUILD_DIR "@PACKAGE_CURRENT_BUILD_DIR@")
#-----------------------------------------------------------------------------
# Version Strings
#-----------------------------------------------------------------------------
set (${ZLIB_PACKAGE_NAME}_VERSION_STRING @ZLIB_VERSION_STRING@)
set (${ZLIB_PACKAGE_NAME}_VERSION_MAJOR @ZLIB_VERSION_MAJOR@)
set (${ZLIB_PACKAGE_NAME}_VERSION_MINOR @ZLIB_VERSION_MINOR@)
#-----------------------------------------------------------------------------
# Don't include targets if this file is being picked up by another
# project which has already built ZLIB as a subproject
#-----------------------------------------------------------------------------
if (NOT TARGET "@ZLIB_PACKAGE@")
include (@PACKAGE_SHARE_INSTALL_DIR@/@ZLIB_PACKAGE@@ZLIB_PACKAGE_EXT@-targets.cmake)
endif ()
# Handle default component(static) :
if (NOT ${ZLIB_PACKAGE_NAME}_FIND_COMPONENTS)
set (${ZLIB_PACKAGE_NAME}_FIND_COMPONENTS static)
set (${ZLIB_PACKAGE_NAME}_FIND_REQUIRED_static true)
endif ()
# Handle requested components:
list (REMOVE_DUPLICATES ${ZLIB_PACKAGE_NAME}_FIND_COMPONENTS)
foreach (comp IN LISTS ${ZLIB_PACKAGE_NAME}_FIND_COMPONENTS)
list (FIND ${ZLIB_PACKAGE_NAME}_EXPORT_LIBRARIES "@ZLIB_LIB_CORENAME@-${comp}" HAVE_COMP)
if (${HAVE_COMP} LESS 0)
set (${ZLIB_PACKAGE_NAME}_${comp}_FOUND 0)
else ()
set (${ZLIB_PACKAGE_NAME}_${comp}_FOUND 1)
string(TOUPPER ${ZLIB_PACKAGE_NAME}_${comp}_LIBRARY COMP_LIBRARY)
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @ZLIB_LIB_CORENAME@-${comp})
endif ()
endforeach ()
check_required_components (${ZLIB_PACKAGE_NAME})

View File

@ -53,12 +53,18 @@ set (ZLIB_USE_LOCALCONTENT ON CACHE BOOL "Use local file for ZLIB FetchContent"
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_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)
set (LIBAEC_PACKAGE_NAME "libaec" CACHE STRING "Name of AEC SZIP package" FORCE)
set (LIBAEC_TGZ_NAME "libaec-1.0.6.tar.gz" CACHE STRING "Use SZip AEC from compressed file" 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_NAME "libaec-1.1.3.tar.gz" CACHE STRING "Use SZip AEC from compressed file" FORCE)
set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3" CACHE STRING "Use LIBAEC from original location" FORCE)
set (LIBAEC_USE_LOCALCONTENT ON CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE)
set (LIBAEC_GIT_URL "https://github.com/MathisRosenhauer/libaec.git" CACHE STRING "Use LIBAEC from GitHub repository" FORCE)
set (LIBAEC_GIT_BRANCH "v1.0.6" CACHE STRING "" FORCE)
set (LIBAEC_GIT_BRANCH "v1.1.3" CACHE STRING "" FORCE)
########################
# API test options

View File

@ -21,7 +21,7 @@ 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 HDF5 C++ Library" FORCE)
set (HDF5_BUILD_CPP_LIB ON CACHE BOOL "Build C++ support" FORCE)
set (HDF5_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE)
@ -57,11 +57,21 @@ 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_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_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)
set (LIBAEC_PACKAGE_NAME "libaec" CACHE STRING "Name of AEC SZIP package" FORCE)
set (LIBAEC_TGZ_NAME "libaec-1.0.6.tar.gz" CACHE STRING "Use SZip AEC from compressed file" 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_NAME "libaec-1.1.3.tar.gz" CACHE STRING "Use SZip AEC from compressed file" FORCE)
set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3" CACHE STRING "Use LIBAEC from original location" FORCE)
set (LIBAEC_USE_LOCALCONTENT ON CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE)
set (LIBAEC_GIT_URL "https://github.com/MathisRosenhauer/libaec.git" CACHE STRING "Use LIBAEC from GitHub repository" FORCE)
set (LIBAEC_GIT_BRANCH "v1.1.3" CACHE STRING "" FORCE)
set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Debug" FORCE)

View File

@ -4441,7 +4441,7 @@ AM_CONDITIONAL([HAVE_SHARED_CONDITIONAL], [test "X$enable_shared" = "Xyes"])
AC_CONFIG_FILES([Makefile
doxygen/Doxyfile
src/Makefile
src/libhdf5.settings
src/libhdf5.settings:src/libhdf5.settings.autotools.in
src/H5build_settings.c:${BUILD_SETTINGS_FILE}
test/Makefile
test/H5srcdir_str.h

View File

@ -35,7 +35,8 @@ The following shows the Parallel HDF5 implementation layers:
This tutorial assumes that you are somewhat familiar with parallel programming with MPI (Message Passing Interface).
If you are not familiar with parallel programming, here is a tutorial that may be of interest:
<a href="http://www.nersc.gov/users/training/online-tutorials/introduction-to-scientific-i-o/?show_all=1">Tutorial on HDF5 I/O tuning at NERSC</a>
<a href="https://\DOCURL/hdf5_topics/2016_NERSC_Introduction_to_Scientific_IO.pdf">Tutorial on HDF5 I/O tuning at NERSC</a>.
(NOTE: As of 2024, the specific systems described in this tutorial are outdated.)
Some of the terms that you must understand in this tutorial are:
<ul>
@ -150,8 +151,10 @@ Following is example code for creating an access template in HDF5:
\endcode
The following example programs create an HDF5 file using Parallel HDF5:
<a href="https://\SRCURL/HDF5Examples/C/H5PAR/ph5_file_create.c">C: file_create.c</a>
<a href="https://\SRCURL/HDF5Examples/FORTRAN/H5PAR/ph5_f90_file_create.F90">F90: file_create.F90</a>
<a href="https://\SRCURL/HDF5Examples/C/H5PAR/ph5_file_create.c">C: ph5_file_create.c</a>
<a href="https://\SRCURL/HDF5Examples/FORTRAN/H5PAR/ph5_f90_file_create.F90">F90: ph5_f90_file_create.F90</a>
\subsection subsec_pintro_create_dset Creating and Accessing a Dataset with PHDF5
@ -231,8 +234,10 @@ The following code demonstrates a collective write using Parallel HDF5:
\endcode
The following example programs create an HDF5 dataset using Parallel HDF5:
<a href="https://\SRCURL/HDF5Examples/C/H5PAR/ph5_dataset.c">C: dataset.c</a>
<a href="https://\SRCURL/HDF5Examples/FORTRAN/H5PAR/ph5_f90_dataset.F90">F90: dataset.F90</a>
<a href="https://\SRCURL/HDF5Examples/C/H5PAR/ph5_dataset.c">C: ph5_dataset.c</a>
<a href="https://\SRCURL/HDF5Examples/FORTRAN/H5PAR/ph5_f90_dataset.F90">F90: ph5_f90_dataset.F90</a>
\subsubsection subsec_pintro_hyperslabs Hyperslabs

View File

@ -48,6 +48,19 @@ Navigate back: \ref index "Main" / \ref GettingStarted / \ref LearnBasics
<hr>
\section secLBDsetLayoutDesc Description of a Dataset
The Creating a Dataset tutorial topic defines a dataset as a multidimensional array of data elements together with supporting metadata, where:
\li The array of elements consists of the raw data values that a user wishes to store in HDF5.
\li The supporting metadata describes that data. The metadata is stored in the dataset (object) header of a dataset.
Datatype, dataspace, attribute, and storage layout information were introduced as part of the metadata associated with a dataset:
<table>
<tr>
<td>
\image html tutr-lodset.png
</td>
</tr>
</table>
\section secLBDsetLayout Dataset Storage Layout
The storage information, or storage layout, defines how the raw data values in the dataset are

BIN
doxygen/img/tutr-lodset.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -584,9 +584,9 @@ set (_PKG_CONFIG_EXEC_PREFIX \${prefix})
set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR})
set (_PKG_CONFIG_INCLUDEDIR \${prefix}/${HDF5_INSTALL_INCLUDE_DIR})
set (_PKG_CONFIG_MODULEDIR \${prefix}/${HDF5_INSTALL_MODULE_DIR})
set (_PKG_CONFIG_LIBNAME "${HDF5_F90_LIB_CORENAME}")
set (_PKG_CONFIG_LIBNAME "${HDF5_F90_LIB_NAME}")
set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}")
set (PKG_CONFIG_LIBNAME "${HDF5_F90_LIB_CORENAME}")
set (PKG_CONFIG_LIBNAME "${HDF5_F90_LIB_NAME}")
if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer")
set (PKG_CONFIG_LIBNAME "${PKG_CONFIG_LIBNAME}${CMAKE_DEBUG_POSTFIX}")
endif ()
@ -600,8 +600,8 @@ if (BUILD_SHARED_LIBS)
set (_PKG_CONFIG_SH_LIBS "${_PKG_CONFIG_SH_LIBS} -l${PKG_CONFIG_LIBNAME}")
endif ()
set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
configure_file (
${HDF_CONFIG_DIR}/libhdf5.fpc.in

View File

@ -93,9 +93,9 @@ set (_PKG_CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
set (_PKG_CONFIG_EXEC_PREFIX \${prefix})
set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR})
set (_PKG_CONFIG_INCLUDEDIR \${prefix}/${HDF5_INSTALL_INCLUDE_DIR})
set (_PKG_CONFIG_LIBNAME "${HDF5_HL_CPP_LIB_CORENAME}")
set (_PKG_CONFIG_LIBNAME "${HDF5_HL_CPP_LIB_NAME}")
set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}")
set (PKG_CONFIG_LIBNAME "${HDF5_HL_CPP_LIB_CORENAME}")
set (PKG_CONFIG_LIBNAME "${HDF5_HL_CPP_LIB_NAME}")
if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer")
set (PKG_CONFIG_LIBNAME "${PKG_CONFIG_LIBNAME}${CMAKE_DEBUG_POSTFIX}")
endif ()
@ -109,8 +109,8 @@ if (BUILD_SHARED_LIBS)
set (_PKG_CONFIG_SH_LIBS "${_PKG_CONFIG_SH_LIBS} -l${PKG_CONFIG_LIBNAME}")
endif ()
set (_PKG_CONFIG_REQUIRES "${HDF5_HL_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_HL_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES "${HDF5_HL_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_HL_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
configure_file (
${HDF_CONFIG_DIR}/libhdf5.pc.in

View File

@ -323,9 +323,9 @@ set (_PKG_CONFIG_EXEC_PREFIX \${prefix})
set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR})
set (_PKG_CONFIG_INCLUDEDIR \${prefix}/${HDF5_INSTALL_INCLUDE_DIR})
set (_PKG_CONFIG_MODULEDIR \${prefix}/${HDF5_INSTALL_MODULE_DIR})
set (_PKG_CONFIG_LIBNAME "${HDF5_HL_F90_LIB_CORENAME}")
set (_PKG_CONFIG_LIBNAME "${HDF5_HL_F90_LIB_NAME}")
set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}")
set (PKG_CONFIG_LIBNAME "${HDF5_HL_F90_LIB_CORENAME}")
set (PKG_CONFIG_LIBNAME "${HDF5_HL_F90_LIB_NAME}")
if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer")
set (PKG_CONFIG_LIBNAME "${PKG_CONFIG_LIBNAME}${CMAKE_DEBUG_POSTFIX}")
endif ()
@ -339,8 +339,8 @@ if (BUILD_SHARED_LIBS)
set (_PKG_CONFIG_SH_LIBS "${_PKG_CONFIG_SH_LIBS} -l${PKG_CONFIG_LIBNAME}")
endif ()
set (_PKG_CONFIG_REQUIRES "${HDF5_F90_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_F90_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES "${HDF5_F90_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_F90_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
configure_file (
${HDF_CONFIG_DIR}/libhdf5.fpc.in

View File

@ -125,9 +125,9 @@ set (_PKG_CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
set (_PKG_CONFIG_EXEC_PREFIX \${prefix})
set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR})
set (_PKG_CONFIG_INCLUDEDIR \${prefix}/${HDF5_INSTALL_INCLUDE_DIR})
set (_PKG_CONFIG_LIBNAME "${HDF5_HL_LIB_CORENAME}")
set (_PKG_CONFIG_LIBNAME "${HDF5_HL_LIB_NAME}")
set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}")
set (PKG_CONFIG_LIBNAME "${HDF5_HL_LIB_CORENAME}")
set (PKG_CONFIG_LIBNAME "${HDF5_HL_LIB_NAME}")
if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer")
set (PKG_CONFIG_LIBNAME "${PKG_CONFIG_LIBNAME}${CMAKE_DEBUG_POSTFIX}")
endif ()
@ -141,8 +141,8 @@ if (BUILD_SHARED_LIBS)
set (_PKG_CONFIG_SH_LIBS "${_PKG_CONFIG_SH_LIBS} -l${PKG_CONFIG_LIBNAME}")
endif ()
set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_CORENAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}")
configure_file (
${HDF_CONFIG_DIR}/libhdf5.pc.in

View File

@ -105,7 +105,7 @@ JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5get_1libversion(JNIEnv *env, jclass clss, jintArray libversion)
{
jboolean libversionArrayIsCopy;
int *libversionArray = NULL;
jint *libversionArray = NULL;
herr_t status = FAIL;
UNUSED(clss);

View File

@ -71,7 +71,8 @@ External compression plugin libraries from https://github.com/HDFGroup/hdf5_plug
External compression szip and zlib libraries:
ZLIB "https://github.com/madler/zlib/releases/download/v1.3/zlib-1.3.tar.gz"
LIBAEC "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6/libaec-1.0.6.tar.gz"
ZLIBNG "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.1.6.tar.gz"
LIBAEC "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3/libaec-1.1.3.tar.gz"
-------------------------------------------------------------------------
-------------------------------------------------------------------------
@ -531,12 +532,18 @@ These five steps are described in detail below.
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_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)
set (LIBAEC_PACKAGE_NAME "libaec" CACHE STRING "Name of AEC SZIP package" FORCE)
set (LIBAEC_TGZ_NAME "libaec-1.0.6.tar.gz" CACHE STRING "Use SZip AEC from compressed file" 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_NAME "libaec-1.1.3.tar.gz" CACHE STRING "Use SZip AEC from compressed file" FORCE)
set (LIBAEC_TGZ_ORIGPATH "https://github.com/MathisRosenhauer/libaec/releases/download/v1.1.3" CACHE STRING "Use LIBAEC from original location" FORCE)
set (LIBAEC_USE_LOCALCONTENT ON CACHE BOOL "Use local file for LIBAEC FetchContent" FORCE)
set (LIBAEC_GIT_URL "https://github.com/MathisRosenhauer/libaec.git" CACHE STRING "Use LIBAEC from GitHub repository" FORCE)
set (LIBAEC_GIT_BRANCH "v1.0.6" CACHE STRING "" FORCE)
set (LIBAEC_GIT_BRANCH "v1.1.3" CACHE STRING "" FORCE)
########################
# API test options
########################
@ -846,6 +853,7 @@ HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)"
HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF
HDF5_DIMENSION_SCALES_NEW_REF "Use new-style references with dimension scale APIs" OFF
HDF5_EXTERNAL_LIB_PREFIX "Use prefix for custom library naming." ""
HDF5_EXTERNAL_LIB_SUFFIX "Use suffix for custom library naming." ""
HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF
HDF5_ENABLE_ALL_WARNINGS "Enable all warnings" OFF
@ -926,16 +934,21 @@ 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
ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB else search" 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"
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"
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
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.0.6"
LIBAEC_TGZ_NAME "Use LIBAEC from original compressed file" "libaec-1.0.6.tar.gz"
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
PLUGIN_USE_EXTERNAL "Use External Library Building for PLUGINS else search" OFF

View File

@ -47,6 +47,22 @@ New Features
Configuration:
-------------
- Added support for using zlib-ng package as the zlib library:
CMake: HDF5_USE_ZLIB_NG
Autotools: --enable-zlibng
Added the option HDF5_USE_ZLIB_NG to allow the replacement of the
default ZLib package by the zlib-ng package as a built-in compression library.
- Disable CMake UNITY_BUILD for hdf5
CMake added a target property, UNITY_BUILD, that when set to true, the target
source files will be combined into batches for faster compilation. By default,
the setting is OFF, but could be enabled by a project that includes HDF5 as a subproject.
HDF5 has disabled this feature by setting the property to OFF in the HDFMacros.cmake file.
- Removed "function/code stack" debugging configuration option:
CMake: HDF5_ENABLE_CODESTACK
@ -470,7 +486,10 @@ New Features
Tools:
------
-
- Allow h5repack to reserve space for a user block without a file
This is useful for users who want to reserve space
in the file for future use without requiring a file to copy.
High-Level APIs:

View File

@ -1187,9 +1187,9 @@ set (_PKG_CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
set (_PKG_CONFIG_EXEC_PREFIX \${prefix})
set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR})
set (_PKG_CONFIG_INCLUDEDIR \${prefix}/${HDF5_INSTALL_INCLUDE_DIR})
set (_PKG_CONFIG_LIBNAME "${HDF5_LIB_CORENAME}")
set (_PKG_CONFIG_LIBNAME "${HDF5_LIB_NAME}")
set (_PKG_CONFIG_VERSION "${HDF5_PACKAGE_VERSION}")
set (PKGCONFIG_LIBNAME "${HDF5_LIB_CORENAME}")
set (PKGCONFIG_LIBNAME "${HDF5_LIB_NAME}")
if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer")
set (PKGCONFIG_LIBNAME "${PKGCONFIG_LIBNAME}${CMAKE_DEBUG_POSTFIX}")
endif ()

View File

@ -1880,7 +1880,7 @@ done:
PURPOSE
Calls a user's function for each attribute on an object
USAGE
herr_t H5Aiterate2(loc_id, obj_name, idx_type, order, idx, op, op_data, lapl_id)
herr_t H5Aiterate_by_name(loc_id, obj_name, idx_type, order, idx, op, op_data, lapl_id)
hid_t loc_id; IN: Base location for object
const char *obj_name; IN: Name of object relative to location
H5_index_t idx_type; IN: Type of index to use

View File

@ -987,8 +987,8 @@ H5D__read_api_common(size_t count, hid_t dset_id[], hid_t mem_type_id[], hid_t m
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
/* Read the data */
if (H5VL_dataset_read_direct(count, obj, connector, mem_type_id, mem_space_id, file_space_id, dxpl_id,
buf, token_ptr) < 0)
if (H5VL_dataset_read(count, obj, connector, mem_type_id, mem_space_id, file_space_id, dxpl_id, buf,
token_ptr) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read data");
done:
@ -1289,8 +1289,8 @@ H5D__write_api_common(size_t count, hid_t dset_id[], hid_t mem_type_id[], hid_t
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not xfer parms");
/* Write the data */
if (H5VL_dataset_write_direct(count, obj, connector, mem_type_id, mem_space_id, file_space_id, dxpl_id,
buf, token_ptr) < 0)
if (H5VL_dataset_write(count, obj, connector, mem_type_id, mem_space_id, file_space_id, dxpl_id, buf,
token_ptr) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "can't write data");
done:

View File

@ -62,7 +62,7 @@ typedef struct {
/* Internal data structure for computing variable-length dataset's total size */
/* (Used for generic 'get vlen buf size' operation) */
typedef struct {
const H5VL_object_t *dset_vol_obj; /* VOL object for the dataset */
H5VL_object_t *dset_vol_obj; /* VOL object for the dataset */
hid_t fspace_id; /* Dataset dataspace ID of the dataset we are working on */
H5S_t *fspace; /* Dataset's dataspace for operation */
hid_t mspace_id; /* Memory dataspace ID of the dataset we are working on */
@ -2816,9 +2816,9 @@ H5D__vlen_get_buf_size_gen_cb(void H5_ATTR_UNUSED *elem, hid_t type_id, unsigned
HGOTO_ERROR(H5E_DATASET, H5E_CANTCREATE, FAIL, "can't select point");
/* Read in the point (with the custom VL memory allocator) */
if (H5VL_dataset_read(1, &vlen_bufsize->dset_vol_obj, &type_id, &vlen_bufsize->mspace_id,
&vlen_bufsize->fspace_id, vlen_bufsize->dxpl_id, &vlen_bufsize->common.fl_tbuf,
H5_REQUEST_NULL) < 0)
if (H5VL_dataset_read(1, &vlen_bufsize->dset_vol_obj->data, vlen_bufsize->dset_vol_obj->connector,
&type_id, &vlen_bufsize->mspace_id, &vlen_bufsize->fspace_id, vlen_bufsize->dxpl_id,
&vlen_bufsize->common.fl_tbuf, H5_REQUEST_NULL) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read point");
done:
@ -2860,7 +2860,7 @@ H5D__vlen_get_buf_size_gen(H5VL_object_t *vol_obj, hid_t type_id, hid_t space_id
HGOTO_ERROR(H5E_DATASET, H5E_BADVALUE, FAIL, "dataspace does not have extent set");
/* Save the dataset */
vlen_bufsize.dset_vol_obj = (const H5VL_object_t *)vol_obj;
vlen_bufsize.dset_vol_obj = vol_obj;
/* Set up VOL callback arguments */
vol_cb_args.op_type = H5VL_DATASET_GET_SPACE;

View File

@ -955,33 +955,32 @@ done:
*
* Purpose: Query a VFL driver for its feature flags. (listed in H5FDpublic.h)
*
* Return: Success: 0
* Failure: -1
* Return: Non-negative on success/Negative on failure
*
*-------------------------------------------------------------------------
*/
int
herr_t
H5FDquery(const H5FD_t *file, unsigned long *flags /*out*/)
{
int ret_value = 0;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API((-1))
FUNC_ENTER_API(FAIL)
/* Check arguments */
if (!file)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, (-1), "file pointer cannot be NULL");
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file pointer cannot be NULL");
if (!file->cls)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, (-1), "file class pointer cannot be NULL");
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file class pointer cannot be NULL");
if (!flags)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, (-1), "flags parameter cannot be NULL");
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "flags parameter cannot be NULL");
/* Call private function */
if (H5FD__query(file, flags) < 0)
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, (-1), "unable to query feature flags");
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, FAIL, "unable to query feature flags");
done:
FUNC_LEAVE_API(ret_value)
}
} /* end H5FDquery() */
/*-------------------------------------------------------------------------
* Function: H5FD_query

View File

@ -367,7 +367,7 @@ H5_DLL herr_t H5FDunregister(hid_t driver_id);
H5_DLL H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr);
H5_DLL herr_t H5FDclose(H5FD_t *file);
H5_DLL int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2);
H5_DLL int H5FDquery(const H5FD_t *f, unsigned long *flags);
H5_DLL herr_t H5FDquery(const H5FD_t *f, unsigned long *flags);
H5_DLL haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
H5_DLL herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size);
H5_DLL haddr_t H5FDget_eoa(H5FD_t *file, H5FD_mem_t type);

View File

@ -67,14 +67,16 @@ static const char *flavors[] = {
* occurs), and `op' will be set to H5F_OP_UNKNOWN.
*/
typedef struct H5FD_log_t {
H5FD_t pub; /* public stuff, must be first */
int fd; /* the unix file */
haddr_t eoa; /* end of allocated region */
haddr_t eof; /* end of file; current file size */
H5FD_t pub; /* public stuff, must be first */
int fd; /* the unix file */
haddr_t eoa; /* end of allocated region */
haddr_t eof; /* end of file; current file size */
#ifndef H5_HAVE_PREADWRITE
haddr_t pos; /* current file I/O position */
H5FD_file_op_t op; /* last operation */
bool ignore_disabled_file_locks;
char filename[H5FD_MAX_FILENAME_LEN]; /* Copy of file name from open operation */
#endif /* H5_HAVE_PREADWRITE */
bool ignore_disabled_file_locks;
char filename[H5FD_MAX_FILENAME_LEN]; /* Copy of file name from open operation */
#ifndef H5_HAVE_WIN32_API
/* On most systems the combination of device and i-node number uniquely
* identify a file. Note that Cygwin, MinGW and other Windows POSIX
@ -526,8 +528,10 @@ H5FD__log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
file->fd = fd;
H5_CHECKED_ASSIGN(file->eof, haddr_t, sb.st_size, h5_stat_size_t);
#ifndef H5_HAVE_PREADWRITE
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
#endif /* H5_HAVE_PREADWRITE */
#ifdef H5_HAVE_WIN32_API
file->hFile = (HANDLE)_get_osfhandle(fd);
if (INVALID_HANDLE_VALUE == file->hFile)
@ -1296,16 +1300,20 @@ H5FD__log_read(H5FD_t *_file, H5FD_mem_t type, hid_t H5_ATTR_UNUSED dxpl_id, had
fprintf(file->logfp, "\n");
}
#ifndef H5_HAVE_PREADWRITE
/* Update current position */
file->pos = addr;
file->op = OP_READ;
#endif /* H5_HAVE_PREADWRITE */
done:
#ifndef H5_HAVE_PREADWRITE
if (ret_value < 0) {
/* Reset last file I/O information */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
}
#endif /* H5_HAVE_PREADWRITE */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD__log_read() */
@ -1510,17 +1518,21 @@ H5FD__log_write(H5FD_t *_file, H5FD_mem_t type, hid_t H5_ATTR_UNUSED dxpl_id, ha
}
/* Update current position and eof */
#ifndef H5_HAVE_PREADWRITE
file->pos = addr;
file->op = OP_WRITE;
if (file->pos > file->eof)
file->eof = file->pos;
#endif /* H5_HAVE_PREADWRITE */
if (addr > file->eof)
file->eof = addr;
done:
#ifndef H5_HAVE_PREADWRITE
if (ret_value < 0) {
/* Reset last file I/O information */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
}
#endif /* H5_HAVE_PREADWRITE */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD__log_write() */
@ -1621,10 +1633,12 @@ H5FD__log_truncate(H5FD_t *_file, hid_t H5_ATTR_UNUSED dxpl_id, bool H5_ATTR_UNU
/* Update the eof value */
file->eof = file->eoa;
#ifndef H5_HAVE_PREADWRITE
/* Reset last file I/O information */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
} /* end if */
#endif /* H5_HAVE_PREADWRITE */
} /* end if */
done:
FUNC_LEAVE_NOAPI(ret_value)

View File

@ -48,14 +48,16 @@ static htri_t ignore_disabled_file_locks_s = FAIL;
* occurs), and 'op' will be set to H5F_OP_UNKNOWN.
*/
typedef struct H5FD_sec2_t {
H5FD_t pub; /* public stuff, must be first */
int fd; /* the filesystem file descriptor */
haddr_t eoa; /* end of allocated region */
haddr_t eof; /* end of file; current file size */
H5FD_t pub; /* public stuff, must be first */
int fd; /* the filesystem file descriptor */
haddr_t eoa; /* end of allocated region */
haddr_t eof; /* end of file; current file size */
#ifndef H5_HAVE_PREADWRITE
haddr_t pos; /* current file I/O position */
H5FD_file_op_t op; /* last operation */
bool ignore_disabled_file_locks;
char filename[H5FD_MAX_FILENAME_LEN]; /* Copy of file name from open operation */
#endif /* H5_HAVE_PREADWRITE */
bool ignore_disabled_file_locks;
char filename[H5FD_MAX_FILENAME_LEN]; /* Copy of file name from open operation */
#ifndef H5_HAVE_WIN32_API
/* On most systems the combination of device and i-node number uniquely
* identify a file. Note that Cygwin, MinGW and other Windows POSIX
@ -334,8 +336,10 @@ H5FD__sec2_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr
file->fd = fd;
H5_CHECKED_ASSIGN(file->eof, haddr_t, sb.st_size, h5_stat_size_t);
#ifndef H5_HAVE_PREADWRITE
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
#endif /* H5_HAVE_PREADWRITE */
#ifdef H5_HAVE_WIN32_API
file->hFile = (HANDLE)_get_osfhandle(fd);
if (INVALID_HANDLE_VALUE == file->hFile)
@ -721,16 +725,20 @@ H5FD__sec2_read(H5FD_t *_file, H5FD_mem_t H5_ATTR_UNUSED type, hid_t H5_ATTR_UNU
buf = (char *)buf + bytes_read;
} /* end while */
#ifndef H5_HAVE_PREADWRITE
/* Update current position */
file->pos = addr;
file->op = OP_READ;
#endif /* H5_HAVE_PREADWRITE */
done:
#ifndef H5_HAVE_PREADWRITE
if (ret_value < 0) {
/* Reset last file I/O information */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
} /* end if */
} /* end if */
#endif /* H5_HAVE_PREADWRITE */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD__sec2_read() */
@ -822,17 +830,21 @@ H5FD__sec2_write(H5FD_t *_file, H5FD_mem_t H5_ATTR_UNUSED type, hid_t H5_ATTR_UN
} /* end while */
/* Update current position and eof */
#ifndef H5_HAVE_PREADWRITE
file->pos = addr;
file->op = OP_WRITE;
if (file->pos > file->eof)
file->eof = file->pos;
#endif /* H5_HAVE_PREADWRITE */
if (addr > file->eof)
file->eof = addr;
done:
#ifndef H5_HAVE_PREADWRITE
if (ret_value < 0) {
/* Reset last file I/O information */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
} /* end if */
} /* end if */
#endif /* H5_HAVE_PREADWRITE */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD__sec2_write() */
@ -893,10 +905,12 @@ H5FD__sec2_truncate(H5FD_t *_file, hid_t H5_ATTR_UNUSED dxpl_id, bool H5_ATTR_UN
/* Update the eof value */
file->eof = file->eoa;
#ifndef H5_HAVE_PREADWRITE
/* Reset last file I/O information */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
} /* end if */
#endif /* H5_HAVE_PREADWRITE */
} /* end if */
done:
FUNC_LEAVE_NOAPI(ret_value)

View File

@ -136,7 +136,7 @@ H5FO_opened(const H5F_t *f, haddr_t addr)
PURPOSE
Insert a newly opened object/pointer pair into the opened object info set
USAGE
herr_t H5FO_insert(f,addr,obj)
herr_t H5FO_insert(f,addr,obj,delete_flag)
H5F_t *f; IN/OUT: File's opened object info set
haddr_t addr; IN: Address of object to insert
void *obj; IN: Pointer to object to insert
@ -239,9 +239,10 @@ done:
PURPOSE
Mark an object to be deleted when it is closed
USAGE
herr_t H5FO_mark(f,addr)
herr_t H5FO_mark(f,addr,deleted)
const H5F_t *f; IN: File opened object is in
haddr_t addr; IN: Address of object to delete
bool deleted; IN: true for to be deleted
RETURNS
Returns a non-negative ID for the object on success, negative on failure
@ -366,7 +367,7 @@ done:
PURPOSE
Create the "top" open object count set
USAGE
herr_t H5FO_create(f)
herr_t H5FO_top_create(f)
H5F_t *f; IN/OUT: File to create opened object count set for
RETURNS
@ -509,7 +510,7 @@ done:
PURPOSE
Return the "top" reference count for an object in a file
USAGE
hsize_t H5FO_top_incr(f, addr)
hsize_t H5FO_top_count(f, addr)
H5F_t *f; IN/OUT: File's opened object info set
haddr_t addr; IN: Address of object to increment

View File

@ -788,7 +788,7 @@ done:
The encoding of property values will be done according to the file format
setting in fapl_id.
USAGE
herr_t H5Pencode(plist_id, buf, nalloc, fapl_id)
herr_t H5Pencode2(plist_id, buf, nalloc, fapl_id)
hid_t plist_id; IN: Identifier to property list to encode
void *buf: OUT: buffer to gold the encoded plist
size_t *nalloc; IN/OUT: size of buffer needed to encode plist

View File

@ -302,7 +302,7 @@ H5P__dapl_vds_file_pref_get(hid_t H5_ATTR_UNUSED prop_id, const char H5_ATTR_UNU
/*-------------------------------------------------------------------------
* Function: H5P__dapl_vds_file_pref_enc
*
* Purpose: Callback routine which is called whenever the vds file flags
* Purpose: Callback routine which is called whenever the vds file prefix
* property in the dataset access property list is
* encoded.
*

View File

@ -4976,7 +4976,9 @@ done:
/*-------------------------------------------------------------------------
* Function: H5P__encode_coll_md_read_flag_t
*
* Purpose: Generic encoding callback routine for 'coll_md_read_flag' properties.
* Purpose: Callback routine which is called whenever the collective
* metadata read flag property in the file creation property list is
* encoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -5010,7 +5012,9 @@ H5P__encode_coll_md_read_flag_t(const void *value, void **_pp, size_t *size)
/*-------------------------------------------------------------------------
* Function: H5P__decode_coll_md_read_flag_t
*
* Purpose: Generic decoding callback routine for 'coll_md_read_flag' properties.
* Purpose: Callback routine which is called whenever the collective
* metadata read flag property in the file creation property list is
* decoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -5030,7 +5034,7 @@ H5P__decode_coll_md_read_flag_t(const void **_pp, void *_value)
assert(*pp);
assert(coll_md_read_flag);
/* Decode file close degree */
/* Decode metadata read flag */
*coll_md_read_flag = (H5P_coll_md_read_flag_t) * (*pp);
*pp += sizeof(H5P_coll_md_read_flag_t);
@ -5468,7 +5472,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5P__facc_mpi_info_get
*
* Purpose: Copies an MPI comminicator property when it's retrieved from a property list
* Purpose: Copies an MPI info object property when it's retrieved from a property list
*
* Return: Success: Non-negative
* Failure: Negative

View File

@ -645,7 +645,7 @@ done:
* Function: H5P__fcrt_btree_rank_enc
*
* Purpose: Callback routine which is called whenever the index storage
* btree in file creation property list is encoded.
* btree in a file creation property list is encoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -688,7 +688,7 @@ H5P__fcrt_btree_rank_enc(const void *value, void **_pp, size_t *size)
* Function: H5P__fcrt_btree_rank_dec
*
* Purpose: Callback routine which is called whenever the index storage
* btree in file creation property list is decoded.
* btree in a file creation property list is decoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -909,8 +909,8 @@ done:
* Function: H5P__fcrt_shmsg_index_types_enc
*
* Purpose: Callback routine which is called whenever the shared
* message indec types in file creation property list
* is encoded.
* message index types in a file creation property list
* are encoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -953,8 +953,8 @@ H5P__fcrt_shmsg_index_types_enc(const void *value, void **_pp, size_t *size)
* Function: H5P__fcrt_shmsg_index_types_dec
*
* Purpose: Callback routine which is called whenever the shared
* message indec types in file creation property list
* is decoded.
* message index types in a file creation property list
* are decoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -994,7 +994,7 @@ done:
* Function: H5P__fcrt_shmsg_index_minsize_enc
*
* Purpose: Callback routine which is called whenever the shared
* message index minsize in file creation property list
* message index minsize in a file creation property list
* is encoded.
*
* Return: Success: Non-negative
@ -1038,7 +1038,7 @@ H5P__fcrt_shmsg_index_minsize_enc(const void *value, void **_pp, size_t *size)
* Function: H5P__fcrt_shmsg_index_minsize_dec
*
* Purpose: Callback routine which is called whenever the shared
* message indec minsize in file creation property list
* message index minsize in a file creation property list
* is decoded.
*
* Return: Success: Non-negative

View File

@ -485,7 +485,7 @@ done:
* Function: H5P__gcrt_group_info_enc
*
* Purpose: Callback routine which is called whenever the group
* property in the dataset access property list is
* info property in the dataset access property list is
* encoded.
*
* Return: Success: Non-negative
@ -564,7 +564,7 @@ H5P__gcrt_group_info_dec(const void **_pp, void *_value)
* Function: H5P__gcrt_link_info_enc
*
* Purpose: Callback routine which is called whenever the link
* property in the dataset access property list is
* info property in the dataset access property list is
* encoded.
*
* Return: Success: Non-negative

View File

@ -634,7 +634,7 @@ H5P__lacc_elink_pref_get(hid_t H5_ATTR_UNUSED prop_id, const char H5_ATTR_UNUSED
/*-------------------------------------------------------------------------
* Function: H5P__lacc_elink_pref_enc
*
* Purpose: Callback routine which is called whenever the elink flags
* Purpose: Callback routine which is called whenever the elink prefix
* property in the dataset access property list is
* encoded.
*

View File

@ -179,7 +179,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5P__free_merge_comm_dtype_list
*
* Purpose: Frees the provided merge named dtype list
* Purpose: Frees the provided merge committed dtype list
*
* Return: NULL
*
@ -329,9 +329,9 @@ done:
/*-------------------------------------------------------------------------
* Function: H5P__ocpy_merge_comm_dt_list_enc
*
* Purpose: Callback routine which is called whenever the common
* datatype property in the object copy property list is
* decoded.
* Purpose: Callback routine which is called whenever the merge
* committed datatype list property in the object copy
* property list is encoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -383,9 +383,9 @@ H5P__ocpy_merge_comm_dt_list_enc(const void *value, void **_pp, size_t *size)
/*-------------------------------------------------------------------------
* Function: H5P__ocpy_merge_comm_dt_list_dec
*
* Purpose: Callback routine which is called whenever the common
* datatype property in the dataset access property list is
* decoded.
* Purpose: Callback routine which is called whenever the merge
* committed datatype list property in the object copy
* property list is decoded.
*
* Return: Success: Non-negative
* Failure: Negative
@ -564,7 +564,7 @@ done:
/*--------------------------------------------------------------------------
* Function: H5P__ocpy_merge_comm_dt_list_close
*
* Purpose: Close the merge common datatype list property
* Purpose: Close the merge committed datatype list property
*
* Return: Success: Non-negative
* Failure: Negative
@ -578,7 +578,7 @@ H5P__ocpy_merge_comm_dt_list_close(const char H5_ATTR_UNUSED *name, size_t H5_AT
assert(value);
/* Free the merge named dtype list */
/* Free the merge committed dtype list */
H5P__free_merge_comm_dtype_list(*(H5O_copy_dtype_merge_list_t **)value);
FUNC_LEAVE_NOAPI(SUCCEED)

View File

@ -413,7 +413,7 @@ H5S_get_select_npoints(const H5S_t *space)
Check whether the selection fits within the extent, with the current
offset defined.
USAGE
htri_t H5Sselect_void(dsid)
htri_t H5Sselect_valid(dsid)
hid_t dsid; IN: Dataspace ID to query
RETURNS
true if the selection fits within the extent, false if it does not and
@ -451,7 +451,7 @@ done:
Check whether the selection fits within the extent, with the current
offset defined.
USAGE
htri_t H5S_select_void(space)
htri_t H5S_select_valid(space)
H5S_t *space; IN: Dataspace to query
RETURNS
true if the selection fits within the extent, false if it does not and
@ -921,7 +921,7 @@ H5S_select_adjust_u(H5S_t *space, const hsize_t *offset)
PURPOSE
Adjust a selection by subtracting an offset
USAGE
herr_t H5S_select_adjust_u(space, offset)
herr_t H5S_select_adjust_s(space, offset)
H5S_t *space; IN/OUT: Pointer to dataspace to adjust
const hssize_t *offset; IN: Offset to subtract
RETURNS
@ -2786,8 +2786,8 @@ done:
PURPOSE
Create a dataspace selection iterator for a dataspace's selection
USAGE
hid_t H5Ssel_iter_create(space)
hid_t space; IN: ID of the dataspace with selection to iterate over
hid_t H5Ssel_iter_create(space,elmt_size,flags)
hid_t space; IN: ID of the dataspace with selection to iterate over
RETURNS
Valid dataspace selection iterator ID on success, H5I_INVALID_HID on failure
DESCRIPTION
@ -2997,7 +2997,7 @@ done:
PURPOSE
Resets a dataspace selection iterator back to an initial state.
USAGE
herr_t H5Ssel_iter_reset(sel_iter_id)
herr_t H5Ssel_iter_reset(sel_iter_id,space_id)
hid_t sel_iter_id; IN: ID of the dataspace selection iterator to
reset
hid_t space_id; IN: ID of the dataspace with selection to

View File

@ -2025,7 +2025,7 @@ done:
} /* end H5VL__dataset_read() */
/*-------------------------------------------------------------------------
* Function: H5VL_dataset_read_direct
* Function: H5VL_dataset_read
*
* Purpose: Reads data from dataset through the VOL. This is like
* H5VL_dataset_read, but takes an array of void * for the
@ -2039,8 +2039,8 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
H5VL_dataset_read_direct(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[],
hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id, void *buf[], void **req)
H5VL_dataset_read(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[], hid_t mem_space_id[],
hid_t file_space_id[], hid_t dxpl_id, void *buf[], void **req)
{
bool vol_wrapper_set = false; /* Whether the VOL object wrapping context was set up */
H5VL_object_t tmp_vol_obj; /* Temporary VOL object for setting VOL wrapper */
@ -2069,70 +2069,6 @@ done:
if (vol_wrapper_set && H5VL_reset_vol_wrapper() < 0)
HDONE_ERROR(H5E_VOL, H5E_CANTRESET, FAIL, "can't reset VOL wrapper info");
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_dataset_read_direct() */
/*-------------------------------------------------------------------------
* Function: H5VL_dataset_read
*
* Purpose: Reads data from dataset through the VOL
*
* Return: Success: Non-negative
* Failure: Negative
*
*-------------------------------------------------------------------------
*/
herr_t
H5VL_dataset_read(size_t count, const H5VL_object_t *vol_obj[], hid_t mem_type_id[], hid_t mem_space_id[],
hid_t file_space_id[], hid_t dxpl_id, void *buf[], void **req)
{
bool vol_wrapper_set = false; /* Whether the VOL object wrapping context was set up */
void *obj_local; /* Local buffer for obj */
void **obj = &obj_local; /* Array of object pointers */
size_t i; /* Local index variable */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
assert(vol_obj);
assert(vol_obj[0]);
/* Set wrapper info in API context */
if (H5VL_set_vol_wrapper(vol_obj[0]) < 0)
HGOTO_ERROR(H5E_VOL, H5E_CANTSET, FAIL, "can't set VOL wrapper info");
vol_wrapper_set = true;
/* Allocate obj array if necessary */
if (count > 1)
if (NULL == (obj = (void **)H5MM_malloc(count * sizeof(void *))))
HGOTO_ERROR(H5E_VOL, H5E_CANTALLOC, FAIL, "can't allocate space for object array");
/* Build obj array */
for (i = 0; i < count; i++) {
/* Get the object */
obj[i] = vol_obj[i]->data;
/* Make sure the class matches */
if (vol_obj[i]->connector->cls->value != vol_obj[0]->connector->cls->value)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL,
"datasets are accessed through different VOL connectors and can't be used in the "
"same I/O call");
}
/* Call the corresponding internal VOL routine */
if (H5VL__dataset_read(count, obj, vol_obj[0]->connector->cls, mem_type_id, mem_space_id, file_space_id,
dxpl_id, buf, req) < 0)
HGOTO_ERROR(H5E_VOL, H5E_READERROR, FAIL, "dataset read failed");
done:
/* Reset object wrapping info in API context */
if (vol_wrapper_set && H5VL_reset_vol_wrapper() < 0)
HDONE_ERROR(H5E_VOL, H5E_CANTRESET, FAIL, "can't reset VOL wrapper info");
/* Free memory */
if (obj != &obj_local)
H5MM_free(obj);
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_dataset_read() */
@ -2212,7 +2148,7 @@ done:
} /* end H5VL__dataset_write() */
/*-------------------------------------------------------------------------
* Function: H5VL_dataset_write_direct
* Function: H5VL_dataset_write
*
* Purpose: Writes data from dataset through the VOL. This is like
* H5VL_dataset_write, but takes an array of void * for the
@ -2226,9 +2162,8 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
H5VL_dataset_write_direct(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[],
hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id, const void *buf[],
void **req)
H5VL_dataset_write(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[], hid_t mem_space_id[],
hid_t file_space_id[], hid_t dxpl_id, const void *buf[], void **req)
{
bool vol_wrapper_set = false; /* Whether the VOL object wrapping context was set up */
H5VL_object_t tmp_vol_obj; /* Temporary VOL object for setting VOL wrapper */
@ -2257,70 +2192,6 @@ done:
if (vol_wrapper_set && H5VL_reset_vol_wrapper() < 0)
HDONE_ERROR(H5E_VOL, H5E_CANTRESET, FAIL, "can't reset VOL wrapper info");
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_dataset_write_direct() */
/*-------------------------------------------------------------------------
* Function: H5VL_dataset_write
*
* Purpose: Writes data from dataset through the VOL
*
* Return: Success: Non-negative
* Failure: Negative
*
*-------------------------------------------------------------------------
*/
herr_t
H5VL_dataset_write(size_t count, const H5VL_object_t *vol_obj[], hid_t mem_type_id[], hid_t mem_space_id[],
hid_t file_space_id[], hid_t dxpl_id, const void *buf[], void **req)
{
bool vol_wrapper_set = false; /* Whether the VOL object wrapping context was set up */
void *obj_local; /* Local buffer for obj */
void **obj = &obj_local; /* Array of object pointers */
size_t i; /* Local index variable */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
assert(vol_obj);
assert(vol_obj[0]);
/* Set wrapper info in API context */
if (H5VL_set_vol_wrapper(vol_obj[0]) < 0)
HGOTO_ERROR(H5E_VOL, H5E_CANTSET, FAIL, "can't set VOL wrapper info");
vol_wrapper_set = true;
/* Allocate obj array if necessary */
if (count > 1)
if (NULL == (obj = (void **)H5MM_malloc(count * sizeof(void *))))
HGOTO_ERROR(H5E_VOL, H5E_CANTALLOC, FAIL, "can't allocate space for object array");
/* Build obj array */
for (i = 0; i < count; i++) {
/* Get the object */
obj[i] = vol_obj[i]->data;
/* Make sure the class matches */
if (vol_obj[i]->connector->cls->value != vol_obj[0]->connector->cls->value)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL,
"datasets are accessed through different VOL connectors and can't be used in the "
"same I/O call");
}
/* Call the corresponding internal VOL routine */
if (H5VL__dataset_write(count, obj, vol_obj[0]->connector->cls, mem_type_id, mem_space_id, file_space_id,
dxpl_id, buf, req) < 0)
HGOTO_ERROR(H5E_VOL, H5E_WRITEERROR, FAIL, "dataset write failed");
done:
/* Reset object wrapping info in API context */
if (vol_wrapper_set && H5VL_reset_vol_wrapper() < 0)
HDONE_ERROR(H5E_VOL, H5E_CANTRESET, FAIL, "can't reset VOL wrapper info");
/* Free memory */
if (obj != &obj_local)
H5MM_free(obj);
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5VL_dataset_write() */

View File

@ -177,18 +177,12 @@ H5_DLL void *H5VL_dataset_create(const H5VL_object_t *vol_obj, const H5VL_loc_p
hid_t dcpl_id, hid_t dapl_id, hid_t dxpl_id, void **req);
H5_DLL void *H5VL_dataset_open(const H5VL_object_t *vol_obj, const H5VL_loc_params_t *loc_params,
const char *name, hid_t dapl_id, hid_t dxpl_id, void **req);
H5_DLL herr_t H5VL_dataset_read(size_t count, const H5VL_object_t *vol_obj[], hid_t mem_type_id[],
H5_DLL herr_t H5VL_dataset_read(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[],
hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id, void *buf[],
void **req);
H5_DLL herr_t H5VL_dataset_read_direct(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[],
hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id,
void *buf[], void **req);
H5_DLL herr_t H5VL_dataset_write(size_t count, const H5VL_object_t *vol_obj[], hid_t mem_type_id[],
H5_DLL herr_t H5VL_dataset_write(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[],
hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id,
const void *buf[], void **req);
H5_DLL herr_t H5VL_dataset_write_direct(size_t count, void *obj[], H5VL_t *connector, hid_t mem_type_id[],
hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id,
const void *buf[], void **req);
H5_DLL herr_t H5VL_dataset_get(const H5VL_object_t *vol_obj, H5VL_dataset_get_args_t *args, hid_t dxpl_id,
void **req);
H5_DLL herr_t H5VL_dataset_specific(const H5VL_object_t *cls, H5VL_dataset_specific_args_t *args,

View File

@ -50,7 +50,7 @@ HDF5-DIAG: Error detected in HDF5 (version (number)):
#001: (file name) line (number) in H5D__read_api_common(): can't read data
major: Dataset
minor: Read failed
#002: (file name) line (number) in H5VL_dataset_read_direct(): dataset read failed
#002: (file name) line (number) in H5VL_dataset_read(): dataset read failed
major: Virtual Object Layer
minor: Read failed
#003: (file name) line (number) in H5VL__dataset_read(): dataset read failed

View File

@ -746,8 +746,12 @@ check_options(pack_opt_t *options)
}
}
if (options->ublock_filename == NULL && options->ublock_size != 0)
H5TOOLS_GOTO_ERROR((-1), "file name missing for user block");
if (options->ublock_filename == NULL && options->ublock_size != 0) {
if (options->verbose > 0) {
printf("Warning: user block file name missing. Reserving a size of %ld...\n",
options->ublock_size);
}
}
/*------------------------------------------------------------------------
* Verify alignment options; threshold is zero default but alignment not

View File

@ -368,7 +368,7 @@ copy_objects(const char *fnamein, const char *fnameout, pack_opt_t *options)
*-------------------------------------------------------------------------
*/
if (options->ublock_size > 0) {
if (options->ublock_filename != NULL && options->ublock_size > 0) {
if (copy_user_block(options->ublock_filename, fnameout, options->ublock_size) < 0)
H5TOOLS_GOTO_ERROR((-1), "Could not copy user block. Exiting...");
}

View File

@ -979,6 +979,51 @@
)
endmacro ()
macro (ADD_H5_VERIFY_USERBLOCK testname userblocksize testfile)
if (NOT HDF5_USING_ANALYSIS_TOOL)
add_test (
NAME H5REPACK_VERIFY_USERBLOCK-${testname}-clear-objects
COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile}
)
add_test (
NAME H5REPACK_VERIFY_USERBLOCK-${testname}
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack> --enable-error-stack ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
)
set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname} PROPERTIES
DEPENDS H5REPACK_VERIFY_USERBLOCK-${testname}-clear-objects
)
if ("H5REPACK_VERIFY_USERBLOCK-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}")
set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname} PROPERTIES DISABLED true)
endif ()
add_test (
NAME H5REPACK_VERIFY_USERBLOCK-${testname}_DMP
COMMAND "${CMAKE_COMMAND}"
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-D "TEST_ARGS:STRING=-H;-B;out-${testname}.${testfile}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
-D "TEST_OUTPUT=${testfile}-${testname}-v.out"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_FILTER:STRING=USERBLOCK_SIZE ${userblocksize}"
-D "TEST_REFERENCE=USERBLOCK_SIZE ${userblocksize}"
-P "${HDF_RESOURCES_DIR}/grepTest.cmake"
)
set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname}_DMP PROPERTIES
DEPENDS H5REPACK_VERIFY_USERBLOCK-${testname}
)
if ("H5REPACK_VERIFY_USERBLOCK-${testname}_DMP" MATCHES "${HDF5_DISABLE_TESTS_REGEX}")
set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname}_DMP PROPERTIES DISABLED true)
endif ()
add_test (
NAME H5REPACK_VERIFY_USERBLOCK-${testname}-clean-objects
COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile}
)
set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname}-clean-objects PROPERTIES
DEPENDS H5REPACK_VERIFY_USERBLOCK-${testname}_DMP
)
endif ()
endmacro ()
macro (ADD_H5_TEST_META testname testfile)
# Remove any output file left over from previous test run
add_test (
@ -1540,7 +1585,7 @@
ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg})
#limit
set (arg ${FILE4} -f GZIP=1 -m 1024)
set (arg ${FILE4} -f GZIP=2 -m 1024)
set (TESTTYPE "TEST")
if (NOT USE_FILTER_DEFLATE)
set (TESTTYPE "SKIP")
@ -1719,6 +1764,9 @@
set (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048)
ADD_H5_TEST (add_userblock "TEST" ${arg})
# add a userblock reserve to file
ADD_H5_VERIFY_USERBLOCK (reserve_userblock 2048 ${FILE1} -b 2048)
# add alignment
set (arg ${FILE1} -t 1 -a 1)
ADD_H5_TEST (add_alignment "TEST" ${arg})

View File

@ -8,7 +8,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
@ -26,7 +26,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
@ -44,7 +44,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
@ -62,7 +62,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
@ -80,7 +80,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
@ -98,7 +98,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
@ -116,7 +116,7 @@ GROUP "/" {
SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 1 }
COMPRESSION DEFLATE { LEVEL 2 }
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET

View File

@ -1632,7 +1632,7 @@ fi
#limit
arg="h5repack_layout.h5 -f GZIP=1 -m 1024"
arg="h5repack_layout.h5 -f GZIP=2 -m 1024"
if test $USE_FILTER_DEFLATE != "yes" ; then
SKIP $arg
else
@ -1805,6 +1805,10 @@ fi
arg="h5repack_objs.h5 -u ublock.bin -b 2048"
TOOLTEST add_userblock $arg
# reserve a userblock to file
arg="h5repack_objs.h5 -b 2048"
TOOLTEST reserve_userblock $arg
# add alignment
arg="h5repack_objs.h5 -t 1 -a 1 "
TOOLTEST add_alignment $arg