summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/hdfeos5.yml2
-rw-r--r--.github/workflows/intel-cmake.yml114
-rw-r--r--.github/workflows/linux-auto-aocc-ompi.yml4
-rw-r--r--.github/workflows/netcdf.yml2
-rw-r--r--.github/workflows/nvhpc-auto.yml24
-rw-r--r--.github/workflows/nvhpc-cmake.yml24
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--config/cmake-presets/hidden-presets.json81
-rw-r--r--config/cmake/HDFCompilerFlags.cmake38
-rw-r--r--config/cmake/examples/HDF5_Examples.cmake.in12
-rw-r--r--config/cmake/grepTest.cmake18
-rw-r--r--config/linux-gnulibc130
-rw-r--r--config/nvidia-flags6
-rw-r--r--doxygen/dox/Overview.dox2
-rw-r--r--doxygen/examples/FileFormat.html2
-rw-r--r--fortran/examples/ph5example.f906
-rw-r--r--fortran/src/CMakeLists.txt41
-rw-r--r--fortran/src/H5_ff.F902
-rw-r--r--fortran/src/H5config_f.inc.cmake54
-rw-r--r--fortran/src/H5config_f.inc.in2
-rw-r--r--fortran/src/hdf5_fortrandll.def.in10
-rw-r--r--fortran/test/tH5T_F03.F9014
-rw-r--r--hl/fortran/src/CMakeLists.txt18
-rw-r--r--hl/fortran/src/H5LTff.F9014
-rw-r--r--src/H5Fmodule.h2
-rw-r--r--src/H5module.h8
26 files changed, 375 insertions, 157 deletions
diff --git a/.github/workflows/hdfeos5.yml b/.github/workflows/hdfeos5.yml
index 0332c9d..a2212a6 100644
--- a/.github/workflows/hdfeos5.yml
+++ b/.github/workflows/hdfeos5.yml
@@ -16,7 +16,7 @@ on:
# Using concurrency to cancel any in-progress job or run
concurrency:
- group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
+ group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
permissions:
diff --git a/.github/workflows/intel-cmake.yml b/.github/workflows/intel-cmake.yml
index 037eea6..68909d5 100644
--- a/.github/workflows/intel-cmake.yml
+++ b/.github/workflows/intel-cmake.yml
@@ -13,69 +13,111 @@ permissions:
contents: read
jobs:
- Intel_build_and_test:
- name: "Intel ${{ inputs.build_mode }}"
+ # Linux (Ubuntu) w/ gcc + CMake
+ #
+ Intel_oneapi_linux:
+ name: "ubuntu-oneapi ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: add oneAPI to apt
- shell: bash
- run: |
- cd /tmp
- wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
- sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
- rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
- sudo add-apt-repository -y "deb https://apt.repos.intel.com/oneapi all main"
-
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
- name: Install Linux Dependencies
run: |
- sudo apt update
- sudo apt-get install ninja-build doxygen graphviz
- sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
- - name: install oneAPI dpcpp and fortran compiler
- shell: bash
- run: |
- sudo apt update
- sudo apt install -y intel-oneapi-compiler-dpcpp-cpp
- sudo apt install -y intel-oneapi-compiler-fortran
-
- - name: install oneAPI MKL library
- shell: bash
- run: |
- sudo apt install -y intel-oneapi-mkl-devel
+ - name: add oneAPI to env
+ uses: fortran-lang/setup-fortran@v1
+ id: setup-fortran
+ with:
+ compiler: intel
+ version: '2023.2'
- - name: CMake Configure with icx
+ - name: CMake Configure with oneapi
shell: bash
+ env:
+ FC: ${{ steps.setup-fortran.outputs.fc }}
+ CC: ${{ steps.setup-fortran.outputs.cc }}
+ CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
- source /opt/intel/oneapi/setvars.sh
- export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
- cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
+ cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
- -DCMAKE_TOOLCHAIN_FILE=config/toolchain/intel.cmake \
- -DMKL_ROOT="/opt/intel/oneapi/mkl/latest" \
- -DTBB_ROOT="/opt/intel/oneapi/tbb/latest" \
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
- -DHDF5_BUILD_FORTRAN=OFF \
$GITHUB_WORKSPACE
# BUILD
- name: CMake Build
shell: bash
+ env:
+ FC: ${{ steps.setup-fortran.outputs.fc }}
+ CC: ${{ steps.setup-fortran.outputs.cc }}
+ CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
- source /opt/intel/oneapi/setvars.sh
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build
# RUN TESTS
- name: CMake Run Tests
shell: bash
+ env:
+ FC: ${{ steps.setup-fortran.outputs.fc }}
+ CC: ${{ steps.setup-fortran.outputs.cc }}
+ CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
- source /opt/intel/oneapi/setvars.sh
- export SYCL_DEVICE_FILTER=opencl.cpu
ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
working-directory: ${{ runner.workspace }}/build
+
+ Intel_oneapi_windows:
+ name: "windows-oneapi ${{ inputs.build_mode }}"
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install Dependencies (Windows)
+ run: choco install ninja
+
+ - name: add oneAPI to env
+ uses: fortran-lang/setup-fortran@v1
+ id: setup-fortran
+ with:
+ compiler: intel
+ version: '2023.2'
+
+ - name: CMake Configure with oneapi
+ shell: pwsh
+ env:
+ FC: ${{ steps.setup-fortran.outputs.fc }}
+ CC: ${{ steps.setup-fortran.outputs.cc }}
+ CXX: ${{ steps.setup-fortran.outputs.cxx }}
+ run: |
+ mkdir "${{ runner.workspace }}/build"
+ Set-Location -Path "${{ runner.workspace }}\\build"
+ cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} -DHDF5_BUILD_FORTRAN=ON -DLIBAEC_USE_LOCALCONTENT=OFF -DZLIB_USE_LOCALCONTENT=OFF ${{ github.workspace }}
+
+ # BUILD
+ - name: CMake Build
+ shell: pwsh
+ env:
+ FC: ${{ steps.setup-fortran.outputs.fc }}
+ CC: ${{ steps.setup-fortran.outputs.cc }}
+ CXX: ${{ steps.setup-fortran.outputs.cxx }}
+ run: |
+ cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
+ working-directory: ${{ runner.workspace }}/build
+
+ # RUN TESTS
+ - name: CMake Run Tests
+ shell: pwsh
+ env:
+ FC: ${{ steps.setup-fortran.outputs.fc }}
+ CC: ${{ steps.setup-fortran.outputs.cc }}
+ CXX: ${{ steps.setup-fortran.outputs.cxx }}
+ run: |
+ ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -E tfloatsattrs
+ working-directory: ${{ runner.workspace }}/build
diff --git a/.github/workflows/linux-auto-aocc-ompi.yml b/.github/workflows/linux-auto-aocc-ompi.yml
index 50d139c..8265695 100644
--- a/.github/workflows/linux-auto-aocc-ompi.yml
+++ b/.github/workflows/linux-auto-aocc-ompi.yml
@@ -1,4 +1,4 @@
-name: linux autotools aocc ompi
+name: hdf5 1.14 autotools aocc ompi
on:
push:
@@ -16,7 +16,7 @@ on:
# Using concurrency to cancel any in-progress job or run
concurrency:
- group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
+ group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
permissions:
diff --git a/.github/workflows/netcdf.yml b/.github/workflows/netcdf.yml
index 5dd3a66..bc0c2d0 100644
--- a/.github/workflows/netcdf.yml
+++ b/.github/workflows/netcdf.yml
@@ -19,7 +19,7 @@ permissions:
# Using concurrency to cancel any in-progress job or run
concurrency:
- group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
+ group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
jobs:
diff --git a/.github/workflows/nvhpc-auto.yml b/.github/workflows/nvhpc-auto.yml
index ee96dfd..7775aa2 100644
--- a/.github/workflows/nvhpc-auto.yml
+++ b/.github/workflows/nvhpc-auto.yml
@@ -31,21 +31,21 @@ jobs:
curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
sudo apt-get update -y
- sudo apt-get install -y nvhpc-23-7
- echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV
- echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV
+ sudo apt-get install -y nvhpc-23-9
+ echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV
+ echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV
echo "NVHPCSDK=/opt/nvidia/hpc_sdk" >> $GITHUB_ENV
- echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++" >> $GITHUB_ENV
- echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc" >> $GITHUB_ENV
- echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran" >> $GITHUB_ENV
- echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib" >> $GITHUB_ENV
+ echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc++" >> $GITHUB_ENV
+ echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc" >> $GITHUB_ENV
+ echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvfortran" >> $GITHUB_ENV
+ echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/lib" >> $GITHUB_ENV
echo "DESTDIR=/tmp" >> $GITHUB_ENV
- name: Autotools Configure
shell: bash
run: |
export RUNPARALLEL="mpiexec -np 2"
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
@@ -61,7 +61,7 @@ jobs:
- name: Autotools Build
shell: bash
run: |
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH
make -j3
working-directory: ${{ runner.workspace }}/build
@@ -69,19 +69,19 @@ jobs:
# NORMAL
- name: Autotools Run Tests
run: |
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH
make check -j
working-directory: ${{ runner.workspace }}/build
# INSTALL (note that this runs even when we don't run the tests)
- name: Autotools Install
run: |
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH
make install
working-directory: ${{ runner.workspace }}/build
# - name: Autotools Verify Install
# run: |
-# export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+# export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH
# make check-install
# working-directory: ${{ runner.workspace }}/build
diff --git a/.github/workflows/nvhpc-cmake.yml b/.github/workflows/nvhpc-cmake.yml
index 8c7760e..3805544 100644
--- a/.github/workflows/nvhpc-cmake.yml
+++ b/.github/workflows/nvhpc-cmake.yml
@@ -32,20 +32,20 @@ jobs:
curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
sudo apt-get update -y
- sudo apt-get install -y nvhpc-23-7
+ sudo apt-get install -y nvhpc-23-9
echo "CC=nvc" >> $GITHUB_ENV
echo "FC=nvfortran" >> $GITHUB_ENV
echo "NVHPCSDK=/opt/nvidia/hpc_sdk" >> $GITHUB_ENV
- echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++" >> $GITHUB_ENV
- echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc" >> $GITHUB_ENV
- echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran" >> $GITHUB_ENV
- echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/cuda/12.2/lib64:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib" >> $GITHUB_ENV
+ echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc++" >> $GITHUB_ENV
+ echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc" >> $GITHUB_ENV
+ echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvfortran" >> $GITHUB_ENV
+ echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/cuda/12.2/lib64:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/lib" >> $GITHUB_ENV
echo "DESTDIR=/tmp" >> $GITHUB_ENV
- name: CMake Configure with nvc
shell: bash
run: |
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
@@ -56,7 +56,7 @@ jobs:
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
-DHDF5_BUILD_FORTRAN:BOOL=ON \
- -DHDF5_ENABLE_ASSERTS:BOOL=ON \
+ -DHDF5_BUILD_JAVA:BOOL=OFF \
-DMPIEXEC_MAX_NUMPROCS:STRING="2" \
$GITHUB_WORKSPACE
cat src/libhdf5.settings
@@ -69,8 +69,8 @@ jobs:
working-directory: ${{ runner.workspace }}/build
# RUN TESTS
-# - name: CMake Run Tests
-# shell: bash
-# run: |
-# ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
-# working-directory: ${{ runner.workspace }}/build
+ - name: CMake Run Tests
+ shell: bash
+ run: |
+ ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
+ working-directory: ${{ runner.workspace }}/build
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a16e845..0bf3205 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -125,7 +125,7 @@ Please make sure that you check the items applicable to your pull request:
* [ ] Does the new feature require a change to an existing API? See "API Compatibility Macros" document (https://portal.hdfgroup.org/display/HDF5/API+Compatibility+Macros)
* Documentation
* [ ] Was the change described in the release_docs/RELEASE.txt file?
- * [ ] Was the new function documented in the corresponding public header file using [Doxygen](https://docs.hdfgroup.org/hdf5/develop/_r_m_t.html)?
+ * [ ] Was the new function documented in the corresponding public header file using [Doxygen](https://hdfgroup.github.io/hdf5/v1_14/_r_m_t.html)?
* [ ] Was new functionality documented for the HDF5 community (the level of documentation depends on the feature; ask us what would be appropriate)
* Testing
* [ ] Does the pull request have tests?
diff --git a/config/cmake-presets/hidden-presets.json b/config/cmake-presets/hidden-presets.json
index 12eefa1..901e83c 100644
--- a/config/cmake-presets/hidden-presets.json
+++ b/config/cmake-presets/hidden-presets.json
@@ -205,6 +205,28 @@
]
},
{
+ "name": "ci-x64-Debug-Intel",
+ "description": "Intel for x64 (Debug)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Debug",
+ "ci-Intel"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-Intel",
+ "description": "Intel for x64 (Release)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Release",
+ "ci-Intel"
+ ]
+ },
+ {
"name": "ci-x64-Debug-MSVC-asan",
"description": "x64-Debug-MSVC with /fsanitize=address",
"hidden": true,
@@ -265,7 +287,8 @@
"hidden": true,
"inherits": [
"ci-base"
- ]
+ ],
+ "configuration": "Debug"
},
{
"name": "ci-x64-Release-MSVC",
@@ -273,7 +296,8 @@
"hidden": true,
"inherits": [
"ci-base"
- ]
+ ],
+ "configuration": "RelWithDebInfo"
},
{
"name": "ci-x64-Debug-Clang",
@@ -308,6 +332,24 @@
]
},
{
+ "name": "ci-x64-Debug-Intel",
+ "configurePreset": "ci-x64-Debug-Intel",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ],
+ "configuration": "Debug"
+ },
+ {
+ "name": "ci-x64-Release-Intel",
+ "configurePreset": "ci-x64-Release-Intel",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ],
+ "configuration": "RelWithDebInfo"
+ },
+ {
"name": "ci-x64-Debug-MSVC-asan",
"configurePreset": "ci-x64-Debug-MSVC-asan",
"hidden": true,
@@ -370,7 +412,8 @@
"hidden": true,
"inherits": [
"ci-base"
- ]
+ ],
+ "configuration": "Debug"
},
{
"name": "ci-x64-Release-MSVC",
@@ -378,7 +421,8 @@
"hidden": true,
"inherits": [
"ci-base"
- ]
+ ],
+ "configuration": "RelWithDebInfo"
},
{
"name": "ci-x64-Debug-Clang",
@@ -413,6 +457,22 @@
]
},
{
+ "name": "ci-x64-Debug-Intel",
+ "configurePreset": "ci-x64-Debug-Intel",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-Intel",
+ "configurePreset": "ci-x64-Release-Intel",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
"name": "ci-x64-Debug-MSVC-asan",
"configurePreset": "ci-x64-Debug-MSVC-asan",
"hidden": true,
@@ -467,7 +527,8 @@
"inherits": "ci-base",
"generators": [
"ZIP"
- ]
+ ],
+ "configurations": ["RelWithDebInfo"]
},
{
"name": "ci-x64-Release-Clang",
@@ -486,6 +547,16 @@
"generators": [
"TGZ"
]
+ },
+ {
+ "name": "ci-x64-Release-Intel",
+ "configurePreset": "ci-x64-Release-Intel",
+ "hidden": true,
+ "inherits": "ci-base",
+ "generators": [
+ "TGZ"
+ ]
}
]
}
+
diff --git a/config/cmake/HDFCompilerFlags.cmake b/config/cmake/HDFCompilerFlags.cmake
index e7b9337..7bddad0 100644
--- a/config/cmake/HDFCompilerFlags.cmake
+++ b/config/cmake/HDFCompilerFlags.cmake
@@ -56,6 +56,44 @@ if (CMAKE_C_COMPILER_ID STREQUAL "NVHPC" )
else ()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Mbounds -g")
endif ()
+
+ # With at least NVHPC 23.5 - 23.9, compiling with -O2 or higher and -DNDEBUG
+ # appears to have issues that manifest in the tests as incorrect metadata
+ # checksums being read or memory being corrupted. Compiling without -DNDEBUG
+ # does not appear to have these issues, but is not ideal due to compiling in
+ # asserts and other library debug code. Compiling with -O1 also does not appear
+ # to have these issues, so set maximum optimization level to -O1 for now until
+ # it can be determined whether these issues are compiler-specific or issues
+ # in the library.
+ set (cmake_c_flags_minsizerel_edited "${CMAKE_C_FLAGS_MINSIZEREL}")
+ string (REPLACE "-O2" "" cmake_c_flags_minsizerel_edited "${cmake_c_flags_minsizerel_edited}")
+ string (REPLACE "-O3" "" cmake_c_flags_minsizerel_edited "${cmake_c_flags_minsizerel_edited}")
+ string (REPLACE "-O4" "" cmake_c_flags_minsizerel_edited "${cmake_c_flags_minsizerel_edited}")
+ string (REPLACE "-Ofast" "" cmake_c_flags_minsizerel_edited "${cmake_c_flags_minsizerel_edited}")
+ string (REPLACE "-fast" "" cmake_c_flags_minsizerel_edited "${cmake_c_flags_minsizerel_edited}")
+ string (STRIP "${cmake_c_flags_minsizerel_edited}" cmake_c_flags_minsizerel_edited)
+ string (PREPEND cmake_c_flags_minsizerel_edited "-O1 ")
+ set (CMAKE_C_FLAGS_MINSIZEREL "${cmake_c_flags_minsizerel_edited}")
+
+ set (cmake_c_flags_release_edited "${CMAKE_C_FLAGS_RELEASE}")
+ string (REPLACE "-O2" "" cmake_c_flags_release_edited "${cmake_c_flags_release_edited}")
+ string (REPLACE "-O3" "" cmake_c_flags_release_edited "${cmake_c_flags_release_edited}")
+ string (REPLACE "-O4" "" cmake_c_flags_release_edited "${cmake_c_flags_release_edited}")
+ string (REPLACE "-Ofast" "" cmake_c_flags_release_edited "${cmake_c_flags_release_edited}")
+ string (REPLACE "-fast" "" cmake_c_flags_release_edited "${cmake_c_flags_release_edited}")
+ string (STRIP "${cmake_c_flags_release_edited}" cmake_c_flags_release_edited)
+ string (PREPEND cmake_c_flags_release_edited "-O1 ")
+ set (CMAKE_C_FLAGS_RELEASE "${cmake_c_flags_release_edited}")
+
+ set (cmake_c_flags_relwithdebinfo_edited "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+ string (REPLACE "-O2" "" cmake_c_flags_relwithdebinfo_edited "${cmake_c_flags_relwithdebinfo_edited}")
+ string (REPLACE "-O3" "" cmake_c_flags_relwithdebinfo_edited "${cmake_c_flags_relwithdebinfo_edited}")
+ string (REPLACE "-O4" "" cmake_c_flags_relwithdebinfo_edited "${cmake_c_flags_relwithdebinfo_edited}")
+ string (REPLACE "-Ofast" "" cmake_c_flags_relwithdebinfo_edited "${cmake_c_flags_relwithdebinfo_edited}")
+ string (REPLACE "-fast" "" cmake_c_flags_relwithdebinfo_edited "${cmake_c_flags_relwithdebinfo_edited}")
+ string (STRIP "${cmake_c_flags_relwithdebinfo_edited}" cmake_c_flags_relwithdebinfo_edited)
+ string (PREPEND cmake_c_flags_relwithdebinfo_edited "-O1 ")
+ set (CMAKE_C_FLAGS_RELWITHDEBINFO "${cmake_c_flags_relwithdebinfo_edited}")
endif ()
if (CMAKE_COMPILER_IS_GNUCC)
diff --git a/config/cmake/examples/HDF5_Examples.cmake.in b/config/cmake/examples/HDF5_Examples.cmake.in
index 2f3a649..8f28aae 100644
--- a/config/cmake/examples/HDF5_Examples.cmake.in
+++ b/config/cmake/examples/HDF5_Examples.cmake.in
@@ -53,7 +53,7 @@ set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCTEST_CONFIGURATION_TYPE:STRING=${
if(NOT DEFINED INSTALLDIR)
if(WIN32)
- set(INSTALLDIR "%ProgramFiles%/HDF_Group/@HDF5_PACKAGE_NAME@/@HDF5_PACKAGE_VERSION@")
+ set(INSTALLDIR "\"%ProgramFiles%/HDF_Group/@HDF5_PACKAGE_NAME@/@HDF5_PACKAGE_VERSION@\"")
else()
set(INSTALLDIR "@CMAKE_INSTALL_PREFIX@")
endif()
@@ -98,11 +98,11 @@ endif()
set(ENV{HDF5_PLUGIN_PATH} "${INSTALLDIR}/lib/plugin")
set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_PACKAGE_NAME:STRING=@HDF5_PACKAGE@@HDF_PACKAGE_EXT@")
### use a toolchain file (supported everywhere) ####
-if(NOT DEFINED CTEST_TOOLCHAIN_FILE)
- set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_TOOLCHAIN_FILE:STRING=@CTEST_TOOLCHAIN_FILE@")
-else()
- set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CTEST_TOOLCHAIN_FILE}")
-endif()
+#if(NOT DEFINED CTEST_TOOLCHAIN_FILE)
+# set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_TOOLCHAIN_FILE:STRING=@CTEST_TOOLCHAIN_FILE@")
+#else()
+# set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_TOOLCHAIN_FILE:STRING=${CTEST_TOOLCHAIN_FILE}")
+#endif()
###############################################################################################################
# For any comments please contact cdashhelp@hdfgroup.org
diff --git a/config/cmake/grepTest.cmake b/config/cmake/grepTest.cmake
index 6e51dec..2ec8387 100644
--- a/config/cmake/grepTest.cmake
+++ b/config/cmake/grepTest.cmake
@@ -71,8 +71,8 @@ message (STATUS "COMMAND Error: ${TEST_ERROR}")
# remove special output
file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
-string (FIND TEST_STREAM "_pmi_alps" "${TEST_FIND_RESULT}")
-if (TEST_FIND_RESULT GREATER 0)
+string (FIND TEST_STREAM "_pmi_alps" TEST_FIND_RESULT)
+if (TEST_FIND_RESULT GREATER -1)
string (REGEX REPLACE "^.*_pmi_alps[^\n]+\n" "" TEST_STREAM "${TEST_STREAM}")
file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} ${TEST_STREAM})
endif ()
@@ -169,12 +169,14 @@ else ()
# else grep the output with the reference
set (TEST_GREP_RESULT 0)
file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
-
- # TEST_REFERENCE should always be matched
- string (REGEX MATCH "${TEST_REFERENCE}" TEST_MATCH ${TEST_STREAM})
- string (COMPARE EQUAL "${TEST_REFERENCE}" "${TEST_MATCH}" TEST_GREP_RESULT)
- if (NOT TEST_GREP_RESULT)
- message (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not contain ${TEST_REFERENCE}")
+ list (LENGTH TEST_STREAM test_len)
+ if (test_len GREATER 0)
+ # TEST_REFERENCE should always be matched
+ string (REGEX MATCH "${TEST_REFERENCE}" TEST_MATCH ${TEST_STREAM})
+ string (COMPARE EQUAL "${TEST_REFERENCE}" "${TEST_MATCH}" TEST_GREP_RESULT)
+ if (NOT TEST_GREP_RESULT)
+ message (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not contain ${TEST_REFERENCE}")
+ endif ()
endif ()
endif ()
diff --git a/config/linux-gnulibc1 b/config/linux-gnulibc1
index 328f8d3..b4139ee 100644
--- a/config/linux-gnulibc1
+++ b/config/linux-gnulibc1
@@ -47,6 +47,9 @@ fi
# Figure out Clang C compiler flags
. $srcdir/config/clang-flags
+# Figure out NVHPC C compiler flags
+. $srcdir/config/nvidia-flags
+
# Use default Fortran 90 compiler according to what C compiler is used.
if test "X-" = "X-$FC"; then
case $CC_BASENAME in
@@ -58,6 +61,10 @@ if test "X-" = "X-$FC"; then
FC=pgf90
FC_BASENAME=pgf90
;;
+ nvc*)
+ FC=nvfortran
+ FC_BASENAME=nvfortran
+ ;;
icx*)
FC=ifx
FC_BASENAME=ifx
@@ -79,7 +86,7 @@ if test "X-" = "X-$FC"; then
else
case $FC in
# The PGI and Intel compilers are automatically detected below
- ifc*|ifort*|pgf90*)
+ ifc*|ifort*|pgf90*|nvfortran*)
;;
*f95*)
@@ -135,6 +142,9 @@ fi
# Figure out Clang FC compiler flags
. $srcdir/config/clang-fflags
+# Figure out NVHPC FC compiler flags
+. $srcdir/config/nvidia-fflags
+
case $FC_BASENAME in
#
# Absoft compiler
@@ -173,10 +183,7 @@ case $FC_BASENAME in
nagfor)
F9XSUFFIXFLAG=""
- # NOTE: The default is -ieee=stop, which will cause problems
- # when the H5T module performs floating-point type
- # introspection
- AM_FCFLAGS="$AM_FCFLAGS -ieee=full"
+ AM_FCFLAGS="$AM_FCFLAGS"
FSEARCH_DIRS=""
# Production
@@ -226,6 +233,9 @@ fi
# Figure out Clang CXX compiler flags
. $srcdir/config/clang-cxxflags
+# Figure out NVHPC CXX compiler flags
+. $srcdir/config/nvidia-cxxflags
+
# compiler version strings
# check if the compiler_version_info is already set
@@ -248,7 +258,11 @@ case $CC in
sed 's/\"/\\\"/g' |\
sed 's/^\([a-z]* \)/ built with \1/1'`
cc_version_info=`echo $cc_version_info`
- ;;
+ ;;
+
+ *nvc*)
+ cc_version_info=`$CC $CFLAGS $H5_CFLAGS -V 2>&1 | grep 'nvc'`
+ ;;
*icx*)
cc_version_info=`$CC $CCFLAGS $H5_CCFLAGS -V 2>&1 | grep 'Version' |\
@@ -322,6 +336,10 @@ case $FC in
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'pgf90'`
;;
+ *nvfortran*)
+ fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'nvfortran'`
+ ;;
+
*nagfor*|*nagftn*)
RM='rm -f'
tmpfile=/tmp/cmpver.$$
diff --git a/config/nvidia-flags b/config/nvidia-flags
index 864c644..c140edd 100644
--- a/config/nvidia-flags
+++ b/config/nvidia-flags
@@ -76,7 +76,8 @@ if test "X-nvc" = "X-$cc_vendor" -o "X-nvcc" = "X-$cc_vendor"; then
##############
# NDEBUG is handled explicitly by the configure script
- PROD_CFLAGS="-fast"
+ #PROD_CFLAGS="-fast"
+ PROD_CFLAGS="" # -fast implies -O2 and -O2+ currently has test failures.
#########
# Debug #
@@ -106,7 +107,8 @@ if test "X-nvc" = "X-$cc_vendor" -o "X-nvcc" = "X-$cc_vendor"; then
################
HIGH_OPT_CFLAGS="-O1" # -O2+ currently has test failures.
- DEBUG_OPT_CFLAGS="-gopt -O2"
+ #DEBUG_OPT_CFLAGS="-gopt -O2"
+ DEBUG_OPT_CFLAGS="-gopt -O1" # -O2+ currently has test failures.
NO_OPT_CFLAGS="-O0"
#################
diff --git a/doxygen/dox/Overview.dox b/doxygen/dox/Overview.dox
index 195163f..ac6c8b1 100644
--- a/doxygen/dox/Overview.dox
+++ b/doxygen/dox/Overview.dox
@@ -23,7 +23,7 @@ documents cover a mix of tasks, concepts, and reference, to help a specific
\par Versions
Version-specific documentation (see the version in the title area) can be found
here:
- - <a href="https://hdfgroup.github.io/hdf5/index.html">HDF5 <code>develop</code> branch</a>
+ - <a href="https://hdfgroup.github.io/hdf5/develop/index.html">HDF5 <code>develop</code> branch</a>
- <a href="https://hdfgroup.github.io/hdf5/v1_14/index.html">HDF5 1.14.x (this site)</a>
- <a href="https://docs.hdfgroup.org/hdf5/v1_12/index.html">HDF5 1.12.x</a>
- <a href="https://docs.hdfgroup.org/hdf5/v1_10/index.html">HDF5 1.10.x</a>
diff --git a/doxygen/examples/FileFormat.html b/doxygen/examples/FileFormat.html
index 133bbc8..30428e3 100644
--- a/doxygen/examples/FileFormat.html
+++ b/doxygen/examples/FileFormat.html
@@ -36,7 +36,7 @@ TABLE CAPTION STRONG { font-size: larger }
</li><li><h3><u>Background Reading:</u></h3>
<dl>
- <dt><a href="https://docs.hdfgroup.org/hdf5/develop/_s_p_e_c.html">HDF5 File Format Specification</a>
+ <dt><a href="https://hdfgroup.github.io/hdf5/v1_14/_s_p_e_c.html">HDF5 File Format Specification</a>
</dt><dd>This describes the current HDF5 file format.
</dd></dl>
diff --git a/fortran/examples/ph5example.f90 b/fortran/examples/ph5example.f90
index 138969e..29423b3 100644
--- a/fortran/examples/ph5example.f90
+++ b/fortran/examples/ph5example.f90
@@ -24,7 +24,7 @@
CHARACTER(LEN=8), PARAMETER :: dsetname = "IntArray" ! Dataset name
CHARACTER(LEN=100) :: filename ! File name
- INTEGER :: fnamelen ! File name length
+ INTEGER :: fnamelen ! File name length
INTEGER(HID_T) :: file_id ! File identifier
INTEGER(HID_T) :: dset_id ! Dataset identifier
INTEGER(HID_T) :: filespace ! Dataspace identifier in file
@@ -76,9 +76,9 @@
CALL get_environment_variable("HDF5_PARAPREFIX", filename)
fnamelen = LEN_TRIM(filename)
if ( fnamelen == 0 ) then
- filename = default_fname
+ filename = default_fname
else
- filename = filename(1:fnamelen) // "/" // default_fname
+ filename = filename(1:fnamelen) // "/" // default_fname
endif
print *, "Using filename = ", filename
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 57e17e5..87557db 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -9,12 +9,15 @@ if (WIN32)
if (NOT H5_HAVE_PARALLEL)
set (H5_NOPAREXP ";")
endif ()
+ set (H5_NOSUBFILING ";") # Subfiling is not supported on Windows
set (H5_F03EXP ";")
if (NOT H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE)
set (H5_DBL_NOT_UNIQUE_EXP ";")
endif ()
+ set (CMAKE_NO_DEPRECATED_SYMBOLS 0)
if (NOT H5_NO_DEPRECATED_SYMBOLS)
- set (H5_NO_DEPRECATED_SYMBOLS ";")
+ set (CMAKE_NO_DEPRECATED_SYMBOLS 1)
+ set (DLL_NO_DEPRECATED_SYMBOLS ";")
endif ()
configure_file (${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def.in ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def @ONLY)
endif ()
@@ -25,15 +28,34 @@ endif ()
# Define Parallel variable for passing to H5config_f.inc.cmake
set (CMAKE_H5_HAVE_PARALLEL 0)
+set (CMAKE_H5_HAVE_SUBFILING_VFD 0)
if (H5_HAVE_PARALLEL)
set (CMAKE_H5_HAVE_PARALLEL 1)
+ if (H5_HAVE_SUBFILING_VFD)
+ set (CMAKE_H5_HAVE_SUBFILING_VFD 1)
+ endif ()
endif ()
set (CMAKE_H5_HAVE_FLOAT128 0)
-if (HAVE_FLOAT128)
+if (H5_HAVE_FLOAT128)
set (CMAKE_H5_HAVE_FLOAT128 1)
endif ()
+set (CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE 0)
+if (H5_FORTRAN_HAVE_STORAGE_SIZE)
+ set (CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE 1)
+endif ()
+
+set (CMAKE_H5_FORTRAN_HAVE_SIZEOF 0)
+if (H5_FORTRAN_HAVE_SIZEOF)
+ set (CMAKE_H5_FORTRAN_HAVE_SIZEOF 1)
+endif ()
+
+set (CMAKE_H5_FORTRAN_HAVE_C_SIZEOF 0)
+if (H5_FORTRAN_HAVE_C_SIZEOF)
+ set (CMAKE_H5_FORTRAN_HAVE_C_SIZEOF 1)
+endif ()
+
configure_file (${HDF5_F90_SRC_SOURCE_DIR}/H5config_f.inc.cmake ${HDF5_F90_BINARY_DIR}/H5config_f.inc @ONLY)
configure_file (${HDF5_F90_SRC_SOURCE_DIR}/H5fort_type_defines.h.cmake ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h @ONLY)
@@ -341,8 +363,6 @@ if (BUILD_STATIC_LIBS)
${LINK_Fortran_LIBS}
"$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_Fortran_LIBRARIES}>"
)
-# set_property(TARGET ${HDF5_F90_LIB_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-SUBSYSTEM:CONSOLE>")
-# set_property(TARGET ${HDF5_F90_LIB_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:${WIN_LINK_FLAGS}>")
if(MSVC)
set_property(TARGET ${HDF5_F90_LIB_TARGET} PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS}")
endif()
@@ -358,7 +378,12 @@ if (BUILD_STATIC_LIBS)
endif ()
if (BUILD_SHARED_LIBS)
- add_library (${HDF5_F90_LIBSH_TARGET} SHARED ${f90_F_SOURCES_SHARED})
+ if(WIN32)
+ set(DLLDEF ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def)
+ else()
+ set(DLLDEF "")
+ endif()
+ add_library (${HDF5_F90_LIBSH_TARGET} SHARED ${DLLDEF} ${f90_F_SOURCES_SHARED})
target_include_directories (${HDF5_F90_LIBSH_TARGET}
PRIVATE "${HDF5_F90_SRC_SOURCE_DIR};${CMAKE_Fortran_MODULE_DIRECTORY}/shared;${HDF5_F90_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_Fortran_INCLUDE_DIRS}>"
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${HDF5_INSTALL_MODULE_DIR}/shared>"
@@ -374,12 +399,8 @@ if (BUILD_SHARED_LIBS)
PUBLIC ${HDF5_F90_C_LIBSH_TARGET}
PRIVATE ${LINK_Fortran_LIBS} "$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_Fortran_LIBRARIES}>"
)
-# set_property(TARGET ${HDF5_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-SUBSYSTEM:CONSOLE>")
-# set_property(TARGET ${HDF5_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:${WIN_LINK_FLAGS}>")
-# set_property(TARGET ${HDF5_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-DLL>")
-# set_property(TARGET ${HDF5_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-DEF:${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def>")
if(MSVC)
- set_property(TARGET ${HDF5_F90_LIBSH_TARGET} PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS} /DLL /DEF:${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def")
+ set_property(TARGET ${HDF5_F90_LIBSH_TARGET} PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS}")
endif()
set_target_properties (${HDF5_F90_LIBSH_TARGET} PROPERTIES
FOLDER libraries/fortran
diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90
index 5315673..05a48ac 100644
--- a/fortran/src/H5_ff.F90
+++ b/fortran/src/H5_ff.F90
@@ -996,7 +996,7 @@ CONTAINS
h5_type = H5T_NATIVE_REAL_C_LONG_DOUBLE
#endif
#if H5_PAC_FC_MAX_REAL_PRECISION > 28
-#if H5_HAVE_FLOAT128 == 1
+#ifdef H5_HAVE_FLOAT128
ELSE
h5_type = H5T_NATIVE_FLOAT_128
#endif
diff --git a/fortran/src/H5config_f.inc.cmake b/fortran/src/H5config_f.inc.cmake
index 71bce0e..6652076 100644
--- a/fortran/src/H5config_f.inc.cmake
+++ b/fortran/src/H5config_f.inc.cmake
@@ -12,33 +12,54 @@
! fortran/src/H5config_f.inc. Generated from fortran/src/H5config_f.inc.in by configure
! Define if there is parallel support
-#cmakedefine01 H5_HAVE_PARALLEL
-#if H5_HAVE_PARALLEL == 0
+#cmakedefine01 CMAKE_H5_HAVE_PARALLEL
+#if CMAKE_H5_HAVE_PARALLEL == 0
#undef H5_HAVE_PARALLEL
+#else
+#define H5_HAVE_PARALLEL
#endif
! Define if there is subfiling support
-#cmakedefine01 H5_HAVE_SUBFILING_VFD
-#if H5_HAVE_SUBFILING_VFD == 0
+#cmakedefine01 CMAKE_H5_HAVE_SUBFILING_VFD
+#if CMAKE_H5_HAVE_SUBFILING_VFD == 0
#undef H5_HAVE_SUBFILING_VFD
+#else
+#define H5_HAVE_SUBFILING_VFD
#endif
! Define if on APPLE
#cmakedefine01 H5_HAVE_DARWIN
#if H5_HAVE_DARWIN == 0
#undef H5_HAVE_DARWIN
+#else
+#define H5_HAVE_DARWIN
#endif
! Define if the intrinsic function STORAGE_SIZE exists
-#define H5_FORTRAN_HAVE_STORAGE_SIZE @H5_FORTRAN_HAVE_STORAGE_SIZE@
+#cmakedefine01 CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE
+#if CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE == 0
+#undef H5_FORTRAN_HAVE_STORAGE_SIZE
+#else
+#define H5_FORTRAN_HAVE_STORAGE_SIZE
+#endif
! Define if the intrinsic function SIZEOF exists
-#define H5_FORTRAN_HAVE_SIZEOF @H5_FORTRAN_HAVE_SIZEOF@
+#cmakedefine01 CMAKE_H5_FORTRAN_HAVE_SIZEOF
+#if CMAKE_H5_FORTRAN_HAVE_SIZEOF == 0
+#undef H5_FORTRAN_HAVE_SIZEOF
+#else
+#define H5_FORTRAN_HAVE_SIZEOF
+#endif
! Define if the intrinsic function C_SIZEOF exists
-#define H5_FORTRAN_HAVE_C_SIZEOF @H5_FORTRAN_HAVE_C_SIZEOF@
+#cmakedefine01 CMAKE_H5_FORTRAN_HAVE_C_SIZEOF
+#if CMAKE_H5_FORTRAN_HAVE_C_SIZEOF == 0
+#undef H5_FORTRAN_HAVE_C_SIZEOF
+#else
+#define H5_FORTRAN_HAVE_C_SIZEOF
+#endif
-! Define if the intrinsic C_LONG_DOUBLE exists
+! Define if the intrinsic function C_LONG_DOUBLE exists
#define H5_FORTRAN_HAVE_C_LONG_DOUBLE @H5_FORTRAN_HAVE_C_LONG_DOUBLE@
! Define if Fortran C_LONG_DOUBLE is different from C_DOUBLE
@@ -47,17 +68,22 @@
! Define if the intrinsic module ISO_FORTRAN_ENV exists
#define H5_HAVE_ISO_FORTRAN_ENV @H5_HAVE_ISO_FORTRAN_ENV@
-! should this be ${HDF_PREFIX} instead of H5 MSB
+! Define the size of C's double
#define H5_SIZEOF_DOUBLE @H5_SIZEOF_DOUBLE@
-! should this be ${HDF_PREFIX} instead of H5 MSB
+! Define the size of C's long double
#define H5_SIZEOF_LONG_DOUBLE @H5_SIZEOF_LONG_DOUBLE@
! Define the maximum decimal precision for reals
#define H5_PAC_FC_MAX_REAL_PRECISION @H5_PAC_FC_MAX_REAL_PRECISION@
! If C has quad precision
-#define H5_HAVE_FLOAT128 @H5_HAVE_FLOAT128@
+#cmakedefine01 CMAKE_H5_HAVE_FLOAT128
+#if CMAKE_H5_HAVE_FLOAT128 == 0
+#undef H5_HAVE_FLOAT128
+#else
+#define H5_HAVE_FLOAT128
+#endif
! Define if INTEGER*16 is available
#define H5_HAVE_Fortran_INTEGER_SIZEOF_16 @H5_HAVE_Fortran_INTEGER_SIZEOF_16@
@@ -84,7 +110,9 @@
#define H5_Fortran_COMPILER_ID @CMAKE_Fortran_COMPILER_ID@
! Define if deprecated public API symbols are disabled
-#cmakedefine01 H5_NO_DEPRECATED_SYMBOLS
-#if H5_NO_DEPRECATED_SYMBOLS == 0
+#cmakedefine01 CMAKE_NO_DEPRECATED_SYMBOLS
+#if CMAKE_NO_DEPRECATED_SYMBOLS == 0
#undef H5_NO_DEPRECATED_SYMBOLS
+#else
+#define H5_NO_DEPRECATED_SYMBOLS
#endif
diff --git a/fortran/src/H5config_f.inc.in b/fortran/src/H5config_f.inc.in
index 991e4b0..3aeded9 100644
--- a/fortran/src/H5config_f.inc.in
+++ b/fortran/src/H5config_f.inc.in
@@ -41,7 +41,7 @@
! Define if the intrinsic module ISO_FORTRAN_ENV exists
#undef HAVE_ISO_FORTRAN_ENV
-! Define the size of C's long double
+! Define the size of C's double
#undef SIZEOF_DOUBLE
! Define the size of C's long double
diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in
index 2ded002..8d8b2b0 100644
--- a/fortran/src/hdf5_fortrandll.def.in
+++ b/fortran/src/hdf5_fortrandll.def.in
@@ -16,7 +16,7 @@ H5A_mp_H5AREAD_CHAR_SCALAR
H5A_mp_H5ACREATE_F
H5A_mp_H5ACREATE_ASYNC_F
H5A_mp_H5AOPEN_NAME_F
-@H5_NO_DEPRECATED_SYMBOLS@H5A_mp_H5AOPEN_IDX_F
+@DLL_NO_DEPRECATED_SYMBOLS@H5A_mp_H5AOPEN_IDX_F
H5A_mp_H5AGET_SPACE_F
H5A_mp_H5AGET_TYPE_F
H5A_mp_H5AGET_NAME_F
@@ -421,10 +421,10 @@ H5P_mp_H5PGET_ACTUAL_SELECTION_IO_MODE_F
; Parallel
@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F
@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F
-@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_SUBFILING_F
-@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_SUBFILING_F
-@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_IOC_F
-@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_IOC_F
+@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PSET_FAPL_SUBFILING_F
+@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PGET_FAPL_SUBFILING_F
+@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PSET_FAPL_IOC_F
+@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PGET_FAPL_IOC_F
@H5_NOPAREXP@H5P_mp_H5PSET_MPI_PARAMS_F
@H5_NOPAREXP@H5P_mp_H5PGET_MPI_PARAMS_F
@H5_NOPAREXP@H5P_mp_H5PSET_DXPL_MPIO_F
diff --git a/fortran/test/tH5T_F03.F90 b/fortran/test/tH5T_F03.F90
index 3984597..08dfa22 100644
--- a/fortran/test/tH5T_F03.F90
+++ b/fortran/test/tH5T_F03.F90
@@ -984,7 +984,7 @@ END SUBROUTINE test_array_compound_atomic
INTEGER, PARAMETER :: real_kind_15 = C_DOUBLE !should map to REAL*8 on most modern processors
! Check if C has quad precision extension
-#if H5_HAVE_FLOAT128!=0
+#ifdef H5_HAVE_FLOAT128
! Check if Fortran supports quad precision
# if H5_PAC_FC_MAX_REAL_PRECISION > 26
INTEGER, PARAMETER :: real_kind_31 = SELECTED_REAL_KIND(31)
@@ -3400,7 +3400,7 @@ SUBROUTINE multiple_dset_rw(total_error)
!-------------------------------------------------------------------------
! Subroutine: multiple_dset_rw
!
-! Purpose: Tests the reading and writing of multiple datasets
+! Purpose: Tests the reading and writing of multiple datasets
! using H5Dread_multi and H5Dwrite_multi
!
! Return: Success: 0
@@ -3408,10 +3408,10 @@ SUBROUTINE multiple_dset_rw(total_error)
!-------------------------------------------------------------------------
!
IMPLICIT NONE
-
+
INTEGER, INTENT(INOUT) :: total_error ! number of errors
INTEGER :: error ! HDF hdferror flag
-
+
INTEGER(SIZE_T), PARAMETER :: ndset = 5 ! Number of data sets
INTEGER(HID_T), DIMENSION(:), ALLOCATABLE :: dset_id
INTEGER(HID_T), DIMENSION(:), ALLOCATABLE :: mem_type_id
@@ -3424,9 +3424,9 @@ SUBROUTINE multiple_dset_rw(total_error)
INTEGER, PARAMETER :: sdim=2 ! length of character string
INTEGER, PARAMETER :: ddim=2 ! size of derived type array
INTEGER :: i,j,k
-
+
TYPE(C_PTR), ALLOCATABLE, DIMENSION(:) :: buf_md ! array to hold the multi-datasets
-
+
INTEGER, DIMENSION(1:idim), TARGET :: wbuf_int ! integer write buffer
INTEGER, DIMENSION(1:idim,idim2,idim3), TARGET :: wbuf_intmd
REAL, DIMENSION(1:rdim), TARGET :: wbuf_real ! real write buffer
@@ -3535,7 +3535,7 @@ SUBROUTINE multiple_dset_rw(total_error)
CALL check("h5tinsert_f", error, total_error)
CALL h5tcopy_f(H5T_NATIVE_CHARACTER, strtype, error)
CALL check("h5tcopy_f", error, total_error)
- CALL h5tset_size_f(strtype, INT(sdim,size_t), error)
+ CALL h5tset_size_f(strtype, INT(sdim,size_t), error)
CALL check("h5tset_size_f", error, total_error)
CALL h5tinsert_f(mem_type_id(4), "chr", &
H5OFFSETOF(C_LOC(wbuf_derived(1)),C_LOC(wbuf_derived(1)%c(1:1))), strtype, error)
diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt
index ed469e5..f225eb8 100644
--- a/hl/fortran/src/CMakeLists.txt
+++ b/hl/fortran/src/CMakeLists.txt
@@ -22,9 +22,6 @@ if (WIN32 AND MSVC)
set_target_properties (H5HL_buildiface PROPERTIES COMPILE_FLAGS "/MT")
endif ()
endif ()
-#set_property(TARGET H5HL_buildiface APPEND PROPERTY
-# LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-SUBSYSTEM:CONSOLE>"
-#)
if(MSVC)
set_property(TARGET H5HL_buildiface PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE")
endif()
@@ -182,8 +179,6 @@ if (BUILD_STATIC_LIBS)
PRIVATE "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:${WIN_COMPILE_FLAGS}>"
)
target_link_libraries (${HDF5_HL_F90_LIB_TARGET} PUBLIC ${HDF5_HL_F90_C_LIB_TARGET} ${HDF5_F90_LIB_TARGET})
-# set_property(TARGET ${HDF5_HL_F90_LIB_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-SUBSYSTEM:CONSOLE>")
-# set_property(TARGET ${HDF5_HL_F90_LIB_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:${WIN_LINK_FLAGS}>")
if(MSVC)
set_property(TARGET ${HDF5_HL_F90_LIB_TARGET} PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS}")
endif()
@@ -198,7 +193,12 @@ if (BUILD_STATIC_LIBS)
add_dependencies(${HDF5_HL_F90_LIB_TARGET} H5HLgen)
endif ()
if (BUILD_SHARED_LIBS)
- add_library (${HDF5_HL_F90_LIBSH_TARGET} SHARED ${HDF5_HL_F90_F_SOURCES_SHARED})
+ if(WIN32)
+ set(DLLDEF ${HDF5_HL_F90_SRC_BINARY_DIR}/hdf5_hl_fortrandll.def)
+ else()
+ set(DLLDEF "")
+ endif()
+ add_library (${HDF5_HL_F90_LIBSH_TARGET} SHARED ${DLLDEF} ${HDF5_HL_F90_F_SOURCES_SHARED})
target_include_directories (${HDF5_HL_F90_LIBSH_TARGET}
PRIVATE "${HDF5_F90_BINARY_DIR};${CMAKE_Fortran_MODULE_DIRECTORY}/shared;$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_Fortran_INCLUDE_DIRS}>"
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${HDF5_INSTALL_MODULE_DIR}/shared>"
@@ -214,12 +214,8 @@ if (BUILD_SHARED_LIBS)
PUBLIC ${HDF5_HL_F90_C_LIBSH_TARGET} ${HDF5_F90_LIBSH_TARGET}
PRIVATE ${LINK_Fortran_LIBS}
)
-# set_property(TARGET ${HDF5_HL_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-SUBSYSTEM:CONSOLE>")
-# set_property(TARGET ${HDF5_HL_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:${WIN_LINK_FLAGS}>")
-# set_property(TARGET ${HDF5_HL_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-DLL>")
-# set_property(TARGET ${HDF5_HL_F90_LIBSH_TARGET} APPEND PROPERTY LINK_FLAGS "$<$<STREQUAL:x${CMAKE_Fortran_SIMULATE_ID},xMSVC>:-DEF:${HDF5_HL_F90_SRC_BINARY_DIR}/hdf5_hl_fortrandll.def>")
if(MSVC)
- set_property(TARGET ${HDF5_HL_F90_LIBSH_TARGET} PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS} -DLL -DEF:${HDF5_HL_F90_SRC_BINARY_DIR}/hdf5_hl_fortrandll.def")
+ set_property(TARGET ${HDF5_HL_F90_LIBSH_TARGET} PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS}")
endif()
set_target_properties (${HDF5_HL_F90_LIBSH_TARGET} PROPERTIES
FOLDER libraries/hl/fortran
diff --git a/hl/fortran/src/H5LTff.F90 b/hl/fortran/src/H5LTff.F90
index 8b4e6d3..80e9fe7 100644
--- a/hl/fortran/src/H5LTff.F90
+++ b/hl/fortran/src/H5LTff.F90
@@ -1115,7 +1115,7 @@ CONTAINS
f_ptr = C_LOC(buf(1:1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf_type = STORAGE_SIZE(buf(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf_type = SIZEOF(buf(1))
@@ -1165,7 +1165,7 @@ CONTAINS
INTEGER(size_t) :: SizeOf_buf_type
f_ptr = C_LOC(buf(1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf_type = STORAGE_SIZE(buf(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf_type = SIZEOF(buf(1))
@@ -1216,7 +1216,7 @@ CONTAINS
f_ptr = C_LOC(buf(1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf_type = STORAGE_SIZE(buf(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf_type = SIZEOF(buf(1))
@@ -1264,7 +1264,7 @@ CONTAINS
f_ptr = C_LOC(buf(1)(1:1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf_type = STORAGE_SIZE(buf(1)(1:1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf_type = SIZEOF(buf(1:1)(1:1))
@@ -1363,7 +1363,7 @@ CONTAINS
f_ptr = C_LOC(buf(1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf = STORAGE_SIZE(buf(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf = SIZEOF(buf(1))
@@ -1407,7 +1407,7 @@ CONTAINS
INTEGER(size_t) :: SizeOf_buf
f_ptr = C_LOC(buf(1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf = STORAGE_SIZE(buf(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf = SIZEOF(buf(1))
@@ -1451,7 +1451,7 @@ CONTAINS
INTEGER(size_t) :: SizeOf_buf
f_ptr = C_LOC(buf(1))
-#if H5_FORTRAN_HAVE_STORAGE_SIZE!=0
+#ifdef H5_FORTRAN_HAVE_STORAGE_SIZE
SizeOf_buf = STORAGE_SIZE(buf(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
#else
SizeOf_buf = SIZEOF(buf(1))
diff --git a/src/H5Fmodule.h b/src/H5Fmodule.h
index 40ff6b4..706dedc 100644
--- a/src/H5Fmodule.h
+++ b/src/H5Fmodule.h
@@ -705,7 +705,7 @@
* If the application opens an HDF5 file without both determining the driver used to create the file
* and setting up the use of that driver, the HDF5 Library will examine the superblock and the
* driver definition block to identify the driver.
- * See the <a href="https://docs.hdfgroup.org/hdf5/develop/_s_p_e_c.html">HDF5 File Format Specification</a>
+ * See the <a href="https://hdfgroup.github.io/hdf5/v1_14/_s_p_e_c.html">HDF5 File Format Specification</a>
* for detailed descriptions of the superblock and the driver definition block.
*
* \subsubsection subsubsec_file_alternate_drivers_sec2 The POSIX (aka SEC2) Driver
diff --git a/src/H5module.h b/src/H5module.h
index 0d2a0ba..296194f 100644
--- a/src/H5module.h
+++ b/src/H5module.h
@@ -49,7 +49,7 @@
* The <em>Abstract Data Model</em> is a conceptual model of data, data types, and data organization. The
* abstract data model is independent of storage medium or programming environment. The
* <em>Storage Model</em> is a standard representation for the objects of the abstract data model. The
- * <a href="https://docs.hdfgroup.org/hdf5/develop/_s_p_e_c.html">HDF5 File Format Specification</a>
+ * <a href="https://hdfgroup.github.io/hdf5/v1_14/_s_p_e_c.html">HDF5 File Format Specification</a>
* defines the storage model.
*
* The <em>Programming Model</em> is a model of the computing environment and includes platforms from
@@ -100,7 +100,7 @@
* model, and stored in a storage medium. The stored objects include header blocks, free lists, data
* blocks, B-trees, and other objects. Each group or dataset is stored as one or more header and data
* blocks.
- * @see <a href="https://docs.hdfgroup.org/hdf5/develop/_s_p_e_c.html">HDF5 File Format Specification</a>
+ * @see <a href="https://hdfgroup.github.io/hdf5/v1_14/_s_p_e_c.html">HDF5 File Format Specification</a>
* for more information on how these objects are organized. The HDF5 library can also use other
* libraries and modules such as compression.
*
@@ -125,7 +125,7 @@
* HDF5 abstract data model is up to the application developer. The application program only
* needs to deal with the library and the abstract data model. Most applications need not consider
* any details of the
- * <a href="https://docs.hdfgroup.org/hdf5/develop/_s_p_e_c.html">HDF5 File Format Specification</a>
+ * <a href="https://hdfgroup.github.io/hdf5/v1_14/_s_p_e_c.html">HDF5 File Format Specification</a>
* or the details of how objects of abstract data model are translated to and from storage.
*
* \subsection subsec_data_model_abstract The Abstract Data Model
@@ -408,7 +408,7 @@
*
* \subsection subsec_data_model_storage The HDF5 Storage Model
* \subsubsection subsubsec_data_model_storage_spec The Abstract Storage Model: the HDF5 Format Specification
- * The <a href="https://docs.hdfgroup.org/hdf5/develop/_s_p_e_c.html">HDF5 File Format Specification</a>
+ * The <a href="https://hdfgroup.github.io/hdf5/v1_14/_s_p_e_c.html">HDF5 File Format Specification</a>
* defines how HDF5 objects and data are mapped to a linear
* address space. The address space is assumed to be a contiguous array of bytes stored on some
* random access medium. The format defines the standard for how the objects of the abstract data