diff --git a/.github/actions/setup-doxygen/action.yml b/.github/actions/setup-doxygen/action.yml new file mode 100644 index 00000000000..6006a05f873 --- /dev/null +++ b/.github/actions/setup-doxygen/action.yml @@ -0,0 +1,14 @@ +name: 'Setup Doxygen' +description: 'Install Doxygen with version that supports Fortran cross-references' +inputs: + version: + description: 'Doxygen version to install' + required: false + default: '1.16.1' +runs: + using: 'composite' + steps: + - name: Install Doxygen + uses: ssciwr/doxygen-install@f13be1686235deee0aeb6cdf56640170691dc96b # v1 + with: + version: ${{ inputs.version }} diff --git a/.github/workflows/analysis.yml b/.github/workflows/analysis.yml index b892a38ac43..6aa362be7b7 100644 --- a/.github/workflows/analysis.yml +++ b/.github/workflows/analysis.yml @@ -37,10 +37,13 @@ jobs: with: sparse-checkout: .github/actions + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Linux_coverage) run: | sudo apt update - sudo apt-get install ninja-build doxygen graphviz curl build-essential + sudo apt-get install ninja-build graphviz curl build-essential sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt-get install lcov -q -y @@ -138,10 +141,13 @@ jobs: with: sparse-checkout: .github/actions + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Linux_Leak) run: | sudo apt update - sudo apt-get install ninja-build doxygen graphviz curl + sudo apt-get install ninja-build graphviz curl - name: Set file base name (Linux_Leak) id: set-file-base @@ -239,10 +245,13 @@ jobs: with: sparse-checkout: .github/actions + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Linux_Address) run: | sudo apt update - sudo apt-get install ninja-build doxygen graphviz curl + sudo apt-get install ninja-build graphviz curl - name: Set file base name (Linux_Address) id: set-file-base @@ -340,10 +349,13 @@ jobs: with: sparse-checkout: .github/actions + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Linux_UndefinedBehavior) run: | sudo apt update - sudo apt-get install ninja-build doxygen graphviz curl + sudo apt-get install ninja-build graphviz curl - name: Set file base name (Linux_UndefinedBehavior) id: set-file-base diff --git a/.github/workflows/aocc.yml b/.github/workflows/aocc.yml index e21b62996e7..f01e6d023c6 100644 --- a/.github/workflows/aocc.yml +++ b/.github/workflows/aocc.yml @@ -56,7 +56,7 @@ jobs: - name: Cache OpenMPI ${{ env.MPIVERDOT }} installation id: cache-openmpi-5_0_7 - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: /home/runner/work/hdf5/hdf5/openmpi-${{ env.MPIVERDOT }}-install key: ${{ runner.os }}-${{ runner.arch }}-openmpi-5_0_7-cache diff --git a/.github/workflows/arm-main.yml b/.github/workflows/arm-main.yml index 41b8f393583..21d601efb4c 100644 --- a/.github/workflows/arm-main.yml +++ b/.github/workflows/arm-main.yml @@ -38,13 +38,14 @@ jobs: runs-on: windows-11-arm if: ${{ inputs.build_mode != 'Debug' }} steps: - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -67,10 +68,6 @@ jobs: echo "CXX=cl.exe" >> $GITHUB_ENV echo "CC=cl.exe" >> $GITHUB_ENV - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -164,7 +161,7 @@ jobs: uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v5 with: name: zip-vs2022_cl-${{ inputs.build_mode }}-${{ inputs.save_binary }}-binary - path: ${{ runner.workspace }}/build/HDF5-*-win64.zip + path: ${{ runner.workspace }}/build/HDF5-*-winarm64.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` if: ${{ (inputs.thread_safety != 'TS') && (inputs.concurrent != 'CC') && ( inputs.save_binary != 'skip') }} @@ -172,21 +169,19 @@ jobs: name: "Ubuntu gcc-${{ inputs.build_mode }}-${{ inputs.thread_safety }}-${{ inputs.concurrent }}" runs-on: ubuntu-24.04-arm steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Linux) run: | sudo apt-get update sudo apt-get install ninja-build graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -283,16 +278,18 @@ jobs: name: "MacOS Clang-${{ inputs.build_mode }}-${{ inputs.thread_safety }}-${{ inputs.concurrent }}" runs-on: macos-15 steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (macOS) run: brew install ninja curl - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -303,10 +300,6 @@ jobs: which cmake cmake --version - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | diff --git a/.github/workflows/bintest.yml b/.github/workflows/bintest.yml index ed583a3db31..2b3df5de997 100644 --- a/.github/workflows/bintest.yml +++ b/.github/workflows/bintest.yml @@ -116,7 +116,7 @@ jobs: - name: Install Dependencies (Linux) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz - name: Set up JDK ${{ inputs.java_version }} uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5 @@ -173,7 +173,7 @@ jobs: runs-on: macos-latest steps: - name: Install Dependencies (MacOS_latest) - run: brew install ninja doxygen + run: brew install ninja - name: Set up JDK ${{ inputs.java_version }} uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5 @@ -241,7 +241,7 @@ jobs: - name: Install Dependencies (Linux) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz - name: Set up JDK ${{ inputs.java_version }} uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5 diff --git a/.github/workflows/build-aws-c-s3.yml b/.github/workflows/build-aws-c-s3.yml index 2c34fb05a19..39183ec7268 100644 --- a/.github/workflows/build-aws-c-s3.yml +++ b/.github/workflows/build-aws-c-s3.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Check if 'libaws-c-s3-${{ inputs.build_mode }}' exists id: check_artifact - uses: softwareforgood/check-artifact-v4-existence@9772fb919376f476e208587e99db557f956a2276 # v0 + uses: softwareforgood/check-artifact-v4-existence@3bbed0d010832929f3e2c1e9ff75e0f09a35bcf1 # v0 with: name: libaws-c-s3-${{ inputs.build_mode }} @@ -78,7 +78,7 @@ jobs: - name: Cache/Restore aws-c-s3 (GCC) installation id: cache-aws-c-s3-ubuntu-gcc - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ${{ runner.workspace }}/aws-c-s3-build key: ${{ runner.os }}-${{ runner.arch }}-gcc-aws-c-s3-${{ steps.get-sha.outputs.sha }}-${{ inputs.build_mode }} diff --git a/.github/workflows/build_mpich_source.yml b/.github/workflows/build_mpich_source.yml index 74d64b9c06d..2fb9d5a6426 100644 --- a/.github/workflows/build_mpich_source.yml +++ b/.github/workflows/build_mpich_source.yml @@ -49,7 +49,7 @@ jobs: - name: Cache MPICH (GCC) installation id: cache-mpich-ubuntu-gcc - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ${{ runner.workspace }}/mpich key: ${{ runner.os }}-${{ runner.arch }}-gcc-mpich-${{ steps.get-sha.outputs.sha }}-${{ inputs.build_mode }} diff --git a/.github/workflows/build_openmpi_source.yml b/.github/workflows/build_openmpi_source.yml index e6e236f5ff2..f7f2a0cbf0c 100644 --- a/.github/workflows/build_openmpi_source.yml +++ b/.github/workflows/build_openmpi_source.yml @@ -49,7 +49,7 @@ jobs: - name: Cache OpenMPI (GCC) installation id: cache-openmpi-ubuntu-gcc - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ${{ runner.workspace }}/openmpi key: ${{ runner.os }}-${{ runner.arch }}-gcc-openmpi-${{ steps.get-sha.outputs.sha }}-${{ inputs.build_mode }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c3b54ad5de5..e7093fbb7cf 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -58,7 +58,7 @@ jobs: .. - name: Initialize CodeQL - uses: github/codeql-action/init@v4 + uses: github/codeql-action/init@v4.32.2 with: languages: c-cpp build-mode: manual @@ -78,7 +78,7 @@ jobs: shell: bash - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@v4.32.2 with: category: "/language:c-cpp" output: sarif-results @@ -95,6 +95,6 @@ jobs: output: sarif-results/cpp.sarif - name: Upload SARIF - uses: github/codeql-action/upload-sarif@v4 + uses: github/codeql-action/upload-sarif@v4.32.2 with: sarif_file: sarif-results/cpp.sarif diff --git a/.github/workflows/cross-compile.yml b/.github/workflows/cross-compile.yml index 5d3f40d5575..714c8eef721 100644 --- a/.github/workflows/cross-compile.yml +++ b/.github/workflows/cross-compile.yml @@ -34,21 +34,19 @@ jobs: # - name: Verify Wine64 installation # run: wine64 --version + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install MinGW64 Cross-Compiler run: | sudo apt update sudo apt-get install -y mingw-w64 sudo apt-get install gfortran-mingw-w64-x86-64-win32 - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CMAKE CONFIGURE - name: CMake Configure run: | @@ -58,6 +56,7 @@ jobs: -G Ninja \ --log-level=VERBOSE \ -DCMAKE_TOOLCHAIN_FILE:STRING=config/toolchain/mingw64.cmake \ + -DCMAKE_CROSSCOMPILING_EMULATOR:PATH=$GITHUB_WORKSPACE/config/toolchain/mingw-w64-x86-64-wine.sh \ -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \ -DHDF5_ENABLE_DOXY_WARNINGS:BOOL=ON \ -DHDF5_BUILD_DOC:BOOL=ON \ diff --git a/.github/workflows/ctest.yml b/.github/workflows/ctest.yml index 4a73a0e39b5..2245b5753bb 100644 --- a/.github/workflows/ctest.yml +++ b/.github/workflows/ctest.yml @@ -90,16 +90,11 @@ jobs: - name: Install Dependencies (Windows) run: choco install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -179,7 +174,7 @@ jobs: shell: bash - name: Sign files with Trusted Signing - uses: azure/trusted-signing-action@1d365fec12862c4aa68fcac418143d73f0cea293 # v0.5.11 + uses: azure/trusted-signing-action@87c2e83e6868da99d3380aa309851b32ed9a8346 # v1.1.0 with: azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} @@ -234,6 +229,178 @@ jobs: path: ${{ runner.workspace }}/buildmsi/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl.msi if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + build_and_test_win_arm64: + # Windows ARM64 w/ MSVC (Native) + # + name: "Windows MSVC ARM64 CTest" + runs-on: windows-11-arm + needs: [check-secret] + steps: + - name: Install Dependencies (Windows ARM64) + run: choco install ninja + + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + + - name: Enable Developer Command Prompt + uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 + with: + arch: arm64 + + - name: Install CMake + uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + with: + cmakeVersion: ${{ inputs.cmake_version }} + ninjaVersion: latest + + - name: Check CMake Version + shell: bash + run: | + which cmake + cmake --version + + - name: Set up JDK 21 + uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5 + with: + java-version: '21' + distribution: 'temurin' + architecture: 'aarch64' + + - name: Set environment for MSVC ARM64 (Windows) + run: | + echo "CXX=cl.exe" >> $GITHUB_ENV + echo "CC=cl.exe" >> $GITHUB_ENV + shell: bash + + - name: Set file base name (Windows ARM64) + id: set-file-base + run: | + FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") + echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT + if [[ '${{ inputs.use_environ }}' == 'release' ]] + then + SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") + else + SOURCE_NAME_BASE=$(echo "hdfsrc") + fi + echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT + shell: bash + + # Get files created by release script + - name: Get zip-tarball (Windows ARM64) + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v6 + with: + name: zip-tarball + path: ${{ github.workspace }} + + - name: using powershell + shell: pwsh + run: Get-Location + + - name: List files for the space (Windows ARM64) + run: | + Get-ChildItem -Path ${{ github.workspace }} + Get-ChildItem -Path ${{ runner.workspace }} + shell: pwsh + + - name: Uncompress source (Windows ARM64) + working-directory: ${{ github.workspace }} + run: 7z x ${{ steps.set-file-base.outputs.FILE_BASE }}.zip + shell: bash + + - name: Install TrustedSigning (Windows ARM64) + run: | + Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe + .\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x + .\nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.86 -x + shell: pwsh + if: ${{ needs.check-secret.outputs.sign-state == 'exists' }} + + - name: create-json + id: create-json + uses: jsdaniell/create-json@b8e77fa01397ca39cc4a6198cc29a3be5481afef # v1.2.3 + with: + name: "credentials.json" + dir: '${{ steps.set-file-base.outputs.SOURCE_BASE }}' + json: '{"Endpoint": "${{ secrets.AZURE_ENDPOINT }}","CodeSigningAccountName": "${{ secrets.AZURE_CODE_SIGNING_NAME }}","CertificateProfileName": "${{ secrets.AZURE_CERT_PROFILE_NAME }}"}' + if: ${{ needs.check-secret.outputs.sign-state == 'exists' }} + + - name: Install WiX v3.14 + run: | + Invoke-WebRequest -Uri https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip -OutFile wix314-binaries.zip + Expand-Archive -Path wix314-binaries.zip -DestinationPath C:\wix314 + echo "C:\wix314" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "WIX=C:\wix314" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + shell: pwsh + + - name: Run CTest (Windows ARM64) + env: + BINSIGN: ${{ needs.check-secret.outputs.sign-state }} + SIGNTOOLDIR: ${{ github.workspace }}/Microsoft.Windows.SDK.BuildTools/bin/10.0.22621.0/arm64 + run: | + cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" + cmake --workflow --preset=${{ inputs.preset_name }}-MSVC-ARM64 --fresh + shell: bash + + - name: Sign files with Trusted Signing + uses: azure/trusted-signing-action@1d365fec12862c4aa68fcac418143d73f0cea293 # v0.5.11 + with: + azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} + azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} + azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} + endpoint: ${{ secrets.AZURE_ENDPOINT }} + trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }} + certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }} + files-folder: ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-MSVC-ARM64 + files-folder-filter: msi + file-digest: SHA256 + timestamp-rfc3161: http://timestamp.acs.microsoft.com + timestamp-digest: SHA256 + if: ${{ needs.check-secret.outputs.sign-state == 'exists' }} + + - name: Publish binary (Windows ARM64) + id: publish-ctest-binary + run: | + mkdir "${{ runner.workspace }}/build" + mkdir "${{ runner.workspace }}/build/hdf5" + Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/LICENSE -Destination ${{ runner.workspace }}/build/hdf5/ + Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-MSVC-ARM64/README.md -Destination ${{ runner.workspace }}/build/hdf5/ + Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-MSVC-ARM64/* -Destination ${{ runner.workspace }}/build/hdf5/ -Include *.zip + cd "${{ runner.workspace }}/build" + 7z a -tzip ${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl_arm64.zip hdf5 + shell: pwsh + + - name: Publish msi binary (Windows ARM64) + id: publish-ctest-msi-binary + run: | + mkdir "${{ runner.workspace }}/buildmsi" + Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-MSVC-ARM64/* -Destination ${{ runner.workspace }}/buildmsi/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl_arm64.msi -Include *.msi + shell: pwsh + + - name: List files in the space (Windows ARM64) + run: | + Get-ChildItem -Path ${{ github.workspace }} + Get-ChildItem -Path ${{ runner.workspace }} + shell: pwsh + + # Save files created by CTest script + - name: Save published binary (Windows ARM64) + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v5 + with: + name: zip-vs2022_cl_arm64-binary + path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl_arm64.zip + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + + - name: Save published msi binary (Windows ARM64) + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v5 + with: + name: msi-vs2022_cl_arm64-binary + path: ${{ runner.workspace }}/buildmsi/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl_arm64.msi + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + build_and_test_linux: # Linux (Ubuntu) w/ gcc # @@ -246,13 +413,16 @@ jobs: sudo apt-get update sudo apt-get install ninja-build graphviz - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 + - name: Get Actions + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: - version: "1.13.2" + sparse-checkout: .github/actions + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -419,11 +589,6 @@ jobs: - name: Install Dependencies (MacOS_latest) run: brew install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: check clang version shell: bash run: | @@ -431,7 +596,7 @@ jobs: clang -v - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -650,10 +815,10 @@ jobs: - name: Install Dependencies (Linux S3) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen + sudo apt-get install ninja-build - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -755,7 +920,7 @@ jobs: version: '2025.0' - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -826,7 +991,7 @@ jobs: shell: pwsh - name: Sign files with Trusted Signing (Windows_intel) - uses: azure/trusted-signing-action@1d365fec12862c4aa68fcac418143d73f0cea293 # v0.5.11 + uses: azure/trusted-signing-action@87c2e83e6868da99d3380aa309851b32ed9a8346 # v1.1.0 with: azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} @@ -891,7 +1056,7 @@ jobs: - name: Install Dependencies (Linux_intel) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz - name: add oneAPI to env uses: fortran-lang/setup-fortran@47809fdb6e637da656ce9ada436527b240c1287f # v1 @@ -901,7 +1066,7 @@ jobs: version: '2025.0' - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -966,4 +1131,4 @@ jobs: with: name: tgz-ubuntu-2404_intel-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2404_intel.tar.gz - if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` \ No newline at end of file diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index c3f26a54a54..30c41f3d734 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -39,7 +39,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Install Cygwin - uses: cygwin/cygwin-install-action@7d2dc1e241644c3318bed9ec74115d1929baa681 # master + uses: cygwin/cygwin-install-action@2566376092c4e280f21131be027af3f5bb2420a4 # master with: packages: cmake gcc-fortran make ninja zlib-devel flex bison perl diff --git a/.github/workflows/daily-schedule.yml b/.github/workflows/daily-schedule.yml index 76ed9bbad54..c2997f5d492 100644 --- a/.github/workflows/daily-schedule.yml +++ b/.github/workflows/daily-schedule.yml @@ -42,7 +42,7 @@ jobs: path: ${{ github.workspace }}/${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen - name: Setup AWS CLI - uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5 + uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 2e02d403ad4..3cc98d02a64 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -29,10 +29,18 @@ jobs: FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT + - name: Get Actions + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + sparse-checkout: .github/actions + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt install libaec0 libaec-dev sudo apt install gcc-12 g++-12 gfortran-12 @@ -100,14 +108,17 @@ jobs: runs-on: windows-latest steps: + - name: Get Actions + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + sparse-checkout: .github/actions + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Windows) run: choco install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 @@ -176,14 +187,17 @@ jobs: name: "MacOS Clang" runs-on: macos-latest steps: + - name: Get Actions + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + sparse-checkout: .github/actions + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (MacOS_latest) run: brew install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Check Clang Version shell: bash run: | @@ -263,10 +277,18 @@ jobs: name: "Ubuntu Clang" runs-on: ubuntu-latest steps: + - name: Get Actions + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + sparse-checkout: .github/actions + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Linux_clang) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz curl + sudo apt-get install ninja-build graphviz curl - name: Check Clang Version shell: bash diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml index 97b28e77496..55302a7cde5 100644 --- a/.github/workflows/freebsd.yml +++ b/.github/workflows/freebsd.yml @@ -44,7 +44,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Build and test on FreeBSD - uses: vmactions/freebsd-vm@c54ba3b62f49de9b67a2f3af017ab6152f0ebb6f # v1 + uses: vmactions/freebsd-vm@c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e # v1 with: release: ${{ matrix.freebsd-version }} usesh: true diff --git a/.github/workflows/intel.yml b/.github/workflows/intel.yml index 5744c1abf96..ee29f6f4857 100644 --- a/.github/workflows/intel.yml +++ b/.github/workflows/intel.yml @@ -27,7 +27,7 @@ jobs: shell: bash run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev - name: Install oneAPI (Linux) diff --git a/.github/workflows/java-examples-maven-test.yml b/.github/workflows/java-examples-maven-test.yml index 21b3aa69056..2786bf0a941 100644 --- a/.github/workflows/java-examples-maven-test.yml +++ b/.github/workflows/java-examples-maven-test.yml @@ -43,7 +43,7 @@ jobs: distribution: 'temurin' - name: Cache Maven dependencies - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-examples-${{ hashFiles('**/pom-examples.xml*') }} @@ -206,7 +206,7 @@ jobs: distribution: 'temurin' - name: Cache Maven dependencies - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-examples-${{ hashFiles('**/pom-examples.xml*') }} @@ -325,7 +325,7 @@ jobs: distribution: 'temurin' - name: Cache Maven dependencies - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-examples-${{ hashFiles('**/pom-examples.xml*') }} diff --git a/.github/workflows/java-implementation-test.yml b/.github/workflows/java-implementation-test.yml index 596bef6b0b8..37cec821a9e 100644 --- a/.github/workflows/java-implementation-test.yml +++ b/.github/workflows/java-implementation-test.yml @@ -153,7 +153,7 @@ jobs: choco install ninja - name: Cache CMake build - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: | build-test-* diff --git a/.github/workflows/julia.yml b/.github/workflows/julia.yml index f2fde4a8ce5..b46a59e0395 100644 --- a/.github/workflows/julia.yml +++ b/.github/workflows/julia.yml @@ -23,7 +23,7 @@ jobs: shell: bash run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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 diff --git a/.github/workflows/main-par-spc.yml b/.github/workflows/main-par-spc.yml index 2297178cff5..5544f374689 100644 --- a/.github/workflows/main-par-spc.yml +++ b/.github/workflows/main-par-spc.yml @@ -31,7 +31,7 @@ jobs: - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt install gcc-12 g++-12 gfortran-12 sudo apt install libaec0 libaec-dev diff --git a/.github/workflows/main-par.yml b/.github/workflows/main-par.yml index 9a3e6750167..67a93f78247 100644 --- a/.github/workflows/main-par.yml +++ b/.github/workflows/main-par.yml @@ -31,7 +31,7 @@ jobs: - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt install gcc-12 g++-12 gfortran-12 sudo apt install libaec0 libaec-dev diff --git a/.github/workflows/main-spc.yml b/.github/workflows/main-spc.yml index cfad15df43e..f2e6d7379e0 100644 --- a/.github/workflows/main-spc.yml +++ b/.github/workflows/main-spc.yml @@ -27,19 +27,22 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # CONFIGURE - name: Configure @@ -86,19 +89,22 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # CONFIGURE - name: Configure @@ -140,19 +146,22 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # CONFIGURE - name: Configure @@ -194,19 +203,22 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # CONFIGURE - name: Configure @@ -246,20 +258,23 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -298,20 +313,23 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -351,14 +369,16 @@ jobs: runs-on: windows-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Dependencies (Windows) run: choco install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: install oneAPI (Windows) uses: fortran-lang/setup-fortran@47809fdb6e637da656ce9ada436527b240c1287f # v1 id: setup-fortran @@ -366,10 +386,6 @@ jobs: compiler: intel version: '2025.0' - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Configure (Windows) shell: pwsh env: @@ -403,20 +419,23 @@ jobs: 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 zlib1g-dev - 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + + - name: Install Linux Dependencies + run: | + sudo apt-get update + sudo apt-get install ninja-build graphviz + sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev + sudo apt install gcc-12 g++-12 gfortran-12 zlib1g-dev + echo "CC=gcc-12" >> $GITHUB_ENV + echo "CXX=g++-12" >> $GITHUB_ENV + echo "FC=gfortran-12" >> $GITHUB_ENV + # CONFIGURE - name: Configure run: | @@ -460,20 +479,23 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -513,20 +535,23 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -566,20 +591,23 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | @@ -614,20 +642,23 @@ jobs: runs-on: ubuntu-latest steps: # SETUP + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | diff --git a/.github/workflows/main-static.yml b/.github/workflows/main-static.yml index 5cce5b179cc..64db1ffd2e7 100644 --- a/.github/workflows/main-static.yml +++ b/.github/workflows/main-static.yml @@ -121,6 +121,13 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + #Useful for debugging - name: Dump matrix context run: echo '${{ toJSON(matrix) }}' @@ -138,13 +145,8 @@ jobs: run: brew install ninja curl if: ${{ matrix.ostype == 'macos' }} - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -162,10 +164,6 @@ jobs: echo "CC=cl.exe" >> $GITHUB_ENV if: matrix.ostype == 'windows' - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - # CONFIGURE - name: Configure run: | diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d4198a4b17..52404ab3431 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -138,6 +138,13 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + #Useful for debugging - name: Dump matrix context run: echo '${{ toJSON(matrix) }}' @@ -155,13 +162,8 @@ jobs: run: brew install ninja curl if: ${{ matrix.ostype == 'macos' }} - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -198,10 +200,6 @@ jobs: echo "CC=cl.exe" >> $GITHUB_ENV if: matrix.ostype == 'windows' - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Setup jextract (FFM builds only) if: ${{ inputs.force_java_implementation == 'ffm' }} uses: ./.github/actions/setup-jextract diff --git a/.github/workflows/maven-staging.yml b/.github/workflows/maven-staging.yml index c221cd8745c..1b6944152b8 100644 --- a/.github/workflows/maven-staging.yml +++ b/.github/workflows/maven-staging.yml @@ -239,18 +239,17 @@ jobs: if: ${{ runner.os == 'Linux' }} run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz - name: Install Dependencies (macOS) if: ${{ runner.os == 'macOS' }} run: | - brew install ninja doxygen graphviz + brew install ninja graphviz - name: Install Dependencies (Windows) if: ${{ runner.os == 'Windows' }} run: | choco install ninja - choco install doxygen.install choco install graphviz - name: Enable Developer Command Prompt (Windows) @@ -809,7 +808,7 @@ jobs: continue-on-error: true - name: Cache Maven dependencies - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-examples-${{ hashFiles('**/pom-examples.xml*') }} diff --git a/.github/workflows/msys2.yml b/.github/workflows/msys2.yml index 7bb3a07f794..7cef086e37a 100644 --- a/.github/workflows/msys2.yml +++ b/.github/workflows/msys2.yml @@ -20,7 +20,7 @@ jobs: Build_and_test: # The type of runner that the job will run on - runs-on: windows-latest + runs-on: ${{ matrix.sys == 'clangarm64' && 'windows-11-arm' || 'windows-latest' }} strategy: matrix: include: @@ -28,6 +28,7 @@ jobs: - { icon: '🟦', sys: mingw64 } - { icon: '🟨', sys: ucrt64 } - { icon: '🟧', sys: clang64 } + - { icon: '🟪', sys: clangarm64 } name: ${{ matrix.icon }} MSYS2-${{ matrix.sys }}-${{ inputs.build_mode }} defaults: run: diff --git a/.github/workflows/nvhpc.yml b/.github/workflows/nvhpc.yml index b7388d5ab87..996aea60834 100644 --- a/.github/workflows/nvhpc.yml +++ b/.github/workflows/nvhpc.yml @@ -20,9 +20,9 @@ jobs: name: "nvhpc ${{ inputs.build_mode }}" runs-on: ubuntu-latest env: - CUDAVERDOT: "13.0" - NVERDOT: "25.9" - NVERDASH: "25-9" + CUDAVERDOT: "13.1" + NVERDOT: "26.1" + NVERDASH: "26-1" steps: - name: Get Sources @@ -36,13 +36,13 @@ jobs: haskell: true large-packages: true tool-cache: false - swap-storage: true + swap-storage: true - name: Install Dependencies shell: bash run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build 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 diff --git a/.github/workflows/openbsd.yml b/.github/workflows/openbsd.yml index f9899ab1d95..d3b65aecb16 100644 --- a/.github/workflows/openbsd.yml +++ b/.github/workflows/openbsd.yml @@ -44,7 +44,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Build and test on OpenBSD - uses: vmactions/openbsd-vm@00753f2835e62704570734312de6f212069dfef7 # v1 + uses: vmactions/openbsd-vm@271a1ba62300483cfc58345ff9f425f1349a2cab # v1 with: release: ${{ matrix.openbsd-version }} usesh: true diff --git a/.github/workflows/par-script.yml b/.github/workflows/par-script.yml index bad5927b71c..0c403514ca8 100644 --- a/.github/workflows/par-script.yml +++ b/.github/workflows/par-script.yml @@ -46,13 +46,8 @@ jobs: - name: Install Dependencies (Windows) run: choco install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -62,7 +57,7 @@ jobs: - name: Setup MPI (${{ matrix.mpi }}) id: setup-mpi - uses: mpi4py/setup-mpi@8ac56ec7ab12f2dffdcf55ffaf50f1920ebcc004 # v1 + uses: mpi4py/setup-mpi@dbbb80b116bea57fc1788daf7dbbf7ab3df3a0f1 # v1 with: mpi: ${{ matrix.mpi }} @@ -182,20 +177,15 @@ jobs: sudo apt install gcc-12 g++-12 gfortran-12 sudo apt install libaec0 libaec-dev - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest - name: Setup MPI (${{ matrix.mpi }}) id: setup-mpi - uses: mpi4py/setup-mpi@8ac56ec7ab12f2dffdcf55ffaf50f1920ebcc004 # v1 + uses: mpi4py/setup-mpi@dbbb80b116bea57fc1788daf7dbbf7ab3df3a0f1 # v1 with: mpi: ${{ matrix.mpi }} @@ -299,14 +289,9 @@ jobs: - name: Install Dependencies (MacOS_latest) run: brew install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Setup MPI (${{ matrix.mpi }}) id: setup-mpi - uses: mpi4py/setup-mpi@8ac56ec7ab12f2dffdcf55ffaf50f1920ebcc004 # v1 + uses: mpi4py/setup-mpi@dbbb80b116bea57fc1788daf7dbbf7ab3df3a0f1 # v1 with: mpi: ${{ matrix.mpi }} diff --git a/.github/workflows/par-source.yml b/.github/workflows/par-source.yml index 935850624b1..f77202333ec 100644 --- a/.github/workflows/par-source.yml +++ b/.github/workflows/par-source.yml @@ -79,13 +79,8 @@ jobs: echo "CC=${{ runner.workspace }}/openmpi/bin/mpicc" >> $GITHUB_ENV echo "FC=${{ runner.workspace }}/openmpi/bin/mpif90" >> $GITHUB_ENV - - name: Install Doxygen - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -201,13 +196,8 @@ jobs: echo "CC=${{ runner.workspace }}/mpich/bin/mpicc" >> $GITHUB_ENV echo "FC=${{ runner.workspace }}/mpich/bin/mpif90" >> $GITHUB_ENV - - name: Install Doxygen - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest diff --git a/.github/workflows/publish-branch.yml b/.github/workflows/publish-branch.yml index 3d9cf063f4e..302941fd815 100644 --- a/.github/workflows/publish-branch.yml +++ b/.github/workflows/publish-branch.yml @@ -33,7 +33,7 @@ jobs: ls ${{ github.workspace }}/HDF5 - name: Setup AWS CLI - uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5 + uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index f26303caf7b..26bbfd432f0 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -85,7 +85,7 @@ jobs: - name: Setup AWS CLI if: ${{ !inputs.dry_run }} - uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5 + uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8a2e2d8a3fa..f7956e199b3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -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@45c373516f557556c15d420e3f5e0aa3d64366bc # v3.29.5 + uses: github/codeql-action/upload-sarif@8ad4b6ec58178e8dbb44a62677274b3a5916baa9 # v3.29.5 with: sarif_file: results.sarif diff --git a/.github/workflows/script.yml b/.github/workflows/script.yml index 80e33dee17f..e161cc9321b 100644 --- a/.github/workflows/script.yml +++ b/.github/workflows/script.yml @@ -44,16 +44,11 @@ jobs: - name: Install Dependencies (Windows) run: choco install ninja - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -165,13 +160,8 @@ jobs: sudo apt-get update sudo apt-get install ninja-build graphviz curl - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -266,11 +256,6 @@ jobs: - name: Install Dependencies (MacOS_latest) run: brew install ninja curl - - name: Install Dependencies - uses: ssciwr/doxygen-install@501e53b879da7648ab392ee226f5b90e42148449 # v1 - with: - version: "1.13.2" - - name: check clang version shell: bash run: | @@ -278,7 +263,7 @@ jobs: clang -v - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -394,10 +379,10 @@ jobs: - name: Install Dependencies (Linux S3) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen + sudo apt-get install ninja-build - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -520,7 +505,7 @@ jobs: version: '2025.0' - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -629,7 +614,7 @@ jobs: - name: Install Dependencies (Linux_intel) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz curl + sudo apt-get install ninja-build graphviz curl - name: add oneAPI to env uses: fortran-lang/setup-fortran@47809fdb6e637da656ce9ada436527b240c1287f # v1 @@ -639,7 +624,7 @@ jobs: version: '2025.0' - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest @@ -738,7 +723,7 @@ jobs: - name: Install Dependencies (Linux_clang) run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz curl + sudo apt-get install ninja-build graphviz curl - name: check clang version shell: bash @@ -747,7 +732,7 @@ jobs: clang -v - name: Install CMake - uses: lukka/get-cmake@9e07ecdcee1b12e5037e42f410b67f03e2f626e1 # latest + uses: lukka/get-cmake@f176ccd3f28bda569c43aae4894f06b2435a3375 # latest with: cmakeVersion: ${{ inputs.cmake_version }} ninjaVersion: latest diff --git a/.github/workflows/testxpr.yml b/.github/workflows/testxpr.yml index 31e0eedfe2c..ecfebe48003 100644 --- a/.github/workflows/testxpr.yml +++ b/.github/workflows/testxpr.yml @@ -25,10 +25,16 @@ jobs: runs-on: ubuntu-latest steps: + - name: Get Sources + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Doxygen + uses: ./.github/actions/setup-doxygen + - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install ninja-build doxygen graphviz + sudo apt-get install ninja-build graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt install libaec0 libaec-dev sudo apt install gcc-12 g++-12 gfortran-12 @@ -36,9 +42,6 @@ jobs: echo "CXX=g++-12" >> $GITHUB_ENV echo "FC=gfortran-12" >> $GITHUB_ENV - - name: Get Sources - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Configure shell: bash run: | diff --git a/.github/workflows/update-progress.yml b/.github/workflows/update-progress.yml index ef42833fbe2..c0dc3a80173 100644 --- a/.github/workflows/update-progress.yml +++ b/.github/workflows/update-progress.yml @@ -16,12 +16,12 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Set up Python - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version: '3.11' # Use specific version for consistency - name: Cache pip dependencies - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} diff --git a/.github/workflows/vol_adios2.yml b/.github/workflows/vol_adios2.yml index 527cd6db4e5..1759b6c2539 100644 --- a/.github/workflows/vol_adios2.yml +++ b/.github/workflows/vol_adios2.yml @@ -67,7 +67,7 @@ jobs: # still test the connector against changes in HDF5. - name: Restore ADIOS2 (${{ env.ADIOS2_COMMIT_SHORT }}) installation cache id: cache-adios2 - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 with: path: ${{ runner.workspace }}/adios2-${{ env.ADIOS2_COMMIT_SHORT }}-install key: ${{ runner.os }}-${{ runner.arch }}-adios2-${{ env.ADIOS2_COMMIT }}-${{ inputs.build_mode }}-cache @@ -97,7 +97,7 @@ jobs: make -j2 install - name: Cache ADIOS2 (${{ env.ADIOS2_COMMIT_SHORT }}) installation - uses: actions/cache/save@9255dc7a253b0ccc959486e2bca901246202afeb # v4 + uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4 if: ${{ steps.cache-adios2.outputs.cache-hit != 'true' }} with: path: ${{ runner.workspace }}/adios2-${{ env.ADIOS2_COMMIT_SHORT }}-install diff --git a/.github/workflows/vol_rest.yml b/.github/workflows/vol_rest.yml index bb206ed3098..a1793790a02 100644 --- a/.github/workflows/vol_rest.yml +++ b/.github/workflows/vol_rest.yml @@ -78,7 +78,7 @@ jobs: echo "LD_LIBRARY_PATH=${{ github.workspace }}/hdf5/build/bin" >> $GITHUB_ENV - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version: ${{ matrix.python-version }} diff --git a/.gitignore b/.gitignore index f490deb2cd6..facf067ae73 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,8 @@ src/H5config.h.in /CMakeUserPresets.json HDF5Examples/CMakeUserPresets.json /CLAUDE.md + +# Emacs temporary and lock files +*~ +\#*\# +.\#* diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index 2de42a5fd66..6b75ff6a609 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -58,8 +58,6 @@ include (ExternalProject) set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)") set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - set (ZLIB_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for ZLIB else search" FORCE) - set (SZIP_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for SZIP else search" FORCE) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT") if (HDF5_USE_ZLIB_NG) set (ZLIB_URL ${ZLIBNG_GIT_URL} CACHE STRING "Path to zlib-ng git repository") @@ -161,13 +159,6 @@ if (HDF5_ENABLE_ZLIB_SUPPORT) endif () set (H5_ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR}) set (H5_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) - if (NOT WIN32) #windows has a list of names - # The FindZLIB.cmake module does not set an OUTPUT_NAME - # on the target. The target returned is: ZLIB::ZLIB - get_filename_component (libname ${ZLIB_LIBRARIES} NAME_WLE) - string (REGEX REPLACE "^lib" "" libname ${libname}) - set_target_properties (ZLIB::ZLIB PROPERTIES OUTPUT_NAME ${libname}) - endif () set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ZLIB::ZLIB) endif () else () @@ -229,17 +220,6 @@ if (HDF5_ENABLE_SZIP_SUPPORT) set (HDF5_ENABLE_SZIP_SUPPORT OFF CACHE BOOL "" FORCE) message (FATAL_ERROR "SZIP support in HDF5 was enabled and libaec was found, but no libsz compatibility library was found") endif () - if (NOT WIN32) - foreach(AEC_TARGET IN ITEMS libaec::sz libaec::aec) - string (REPLACE "libaec::" "" libname ${AEC_TARGET}) - # Libaec::aec and libsz::sz are ALIAS targets if libaec is built via CMake - get_target_property(AEC_ALIASED ${AEC_TARGET} ALIASED_TARGET) - if(AEC_ALIASED) - set(AEC_TARGET ${AEC_ALIASED}) - endif() - set_target_properties(${AEC_TARGET} PROPERTIES OUTPUT_NAME ${libname}) - endforeach() - endif() set (LINK_COMP_LIBS ${LINK_COMP_LIBS} libaec::sz libaec::aec) else () set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 861e9c207c7..b44c8920627 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -299,6 +299,9 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) else () set (CPACK_PACKAGE_VERSION "${HDF5_PACKAGE_VERSION}") endif () + if (CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "ARM64") + set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-winarm64") + endif () set (CPACK_PACKAGE_VERSION_MAJOR "${HDF5_PACKAGE_VERSION_MAJOR}") set (CPACK_PACKAGE_VERSION_MINOR "${HDF5_PACKAGE_VERSION_MINOR}") set (CPACK_PACKAGE_VERSION_PATCH "") diff --git a/CMakeLists.txt b/CMakeLists.txt index f6f2b821586..874a17d7b45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1147,7 +1147,7 @@ if (HDF5_BUILD_DOC AND EXISTS "${HDF5_DOXYGEN_DIR}" AND IS_DIRECTORY "${HDF5_DOX else () set (HDF5_DOXY_WARNINGS "NO") endif () - message (VERBOSE "Doxygen version: ${DOXYGEN_VERSION}") + message (STATUS "Found Doxygen version: ${DOXYGEN_VERSION}") # Set the default directory for the Java sources for doxygen if (Java_VERSION_STRING VERSION_GREATER_EQUAL "25.0.0") diff --git a/CMakePresets.json b/CMakePresets.json index a80d24a0ea6..da49d765bf1 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -346,6 +346,16 @@ "ci-StdShar" ] }, + { + "name": "ci-StdShar-MSVC-ARM64", + "description": "MSVC Standard Config for ARM64 (Release)", + "inherits": [ + "ci-arm64-Release-MSVC", + "ci-CPP", + "ci-Java", + "ci-StdShar" + ] + }, { "name": "ci-StdShar-MSVC-FFM", "description": "MSVC Standard Config for x64 with Java FFM (Requires Java 25+) (Release)", @@ -664,6 +674,14 @@ "ci-x64-Release-MSVC" ] }, + { + "name": "ci-StdShar-MSVC-ARM64", + "description": "MSVC Standard Build for ARM64 (Release)", + "configurePreset": "ci-StdShar-MSVC-ARM64", + "inherits": [ + "ci-arm64-Release-MSVC" + ] + }, { "name": "ci-StdShar-MSVC-FFM", "description": "MSVC Standard Build for x64 with Java FFM (Requires Java 25+) (Release)", @@ -938,6 +956,13 @@ "ci-x64-Release-MSVC" ] }, + { + "name": "ci-StdShar-MSVC-ARM64", + "configurePreset": "ci-StdShar-MSVC-ARM64", + "inherits": [ + "ci-arm64-Release-MSVC" + ] + }, { "name": "ci-StdShar-MSVC-FFM", "configurePreset": "ci-StdShar-MSVC-FFM", @@ -1189,6 +1214,11 @@ "configurePreset": "ci-StdShar-MSVC", "inherits": "ci-x64-Release-MSVC" }, + { + "name": "ci-StdShar-MSVC-ARM64", + "configurePreset": "ci-StdShar-MSVC-ARM64", + "inherits": "ci-arm64-Release-MSVC" + }, { "name": "ci-StdShar-MSVC-FFM", "configurePreset": "ci-StdShar-MSVC-FFM", @@ -1332,6 +1362,27 @@ } ] }, + { + "name": "ci-StdShar-MSVC-ARM64", + "steps": [ + { + "type": "configure", + "name": "ci-StdShar-MSVC-ARM64" + }, + { + "type": "build", + "name": "ci-StdShar-MSVC-ARM64" + }, + { + "type": "test", + "name": "ci-StdShar-MSVC-ARM64" + }, + { + "type": "package", + "name": "ci-StdShar-MSVC-ARM64" + } + ] + }, { "name": "ci-StdShar-MSVC-FFM", "steps": [ diff --git a/HDF5Examples/C/H5D/CMakeLists.txt b/HDF5Examples/C/H5D/CMakeLists.txt index dddd4d23514..ee8b8638705 100644 --- a/HDF5Examples/C/H5D/CMakeLists.txt +++ b/HDF5Examples/C/H5D/CMakeLists.txt @@ -223,7 +223,6 @@ if (H5EXAMPLE_BUILD_TESTING) add_test (NAME ${EXAMPLE_VARNAME}_${testname} COMMAND $) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) else () add_test ( @@ -240,7 +239,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -257,7 +255,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () diff --git a/HDF5Examples/C/H5FLT/CMakeLists.txt b/HDF5Examples/C/H5FLT/CMakeLists.txt index fe186eee5a2..7b1bebec4e1 100644 --- a/HDF5Examples/C/H5FLT/CMakeLists.txt +++ b/HDF5Examples/C/H5FLT/CMakeLists.txt @@ -228,7 +228,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname}-ERR PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_${testname} @@ -254,7 +253,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () set (last_test "${EXAMPLE_VARNAME}_${testname}") @@ -313,7 +311,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "${EXAMPLE_VARNAME}_H5DUMP-${testname}") endif () diff --git a/HDF5Examples/C/H5G/CMakeLists.txt b/HDF5Examples/C/H5G/CMakeLists.txt index e596286888b..a4a6cb17904 100644 --- a/HDF5Examples/C/H5G/CMakeLists.txt +++ b/HDF5Examples/C/H5G/CMakeLists.txt @@ -249,7 +249,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -266,7 +265,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -304,7 +302,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -335,7 +332,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -352,7 +348,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_H5DUMP-${testname}2 @@ -368,7 +363,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname}2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-${testname}1 - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -397,7 +391,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endmacro () diff --git a/HDF5Examples/C/H5T/CMakeLists.txt b/HDF5Examples/C/H5T/CMakeLists.txt index 3b315d0bfef..99e59dd6956 100644 --- a/HDF5Examples/C/H5T/CMakeLists.txt +++ b/HDF5Examples/C/H5T/CMakeLists.txt @@ -370,7 +370,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -387,7 +386,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -416,7 +414,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endmacro () diff --git a/HDF5Examples/C/H5VDS/CMakeLists.txt b/HDF5Examples/C/H5VDS/CMakeLists.txt index b433871e292..7790e87b194 100644 --- a/HDF5Examples/C/H5VDS/CMakeLists.txt +++ b/HDF5Examples/C/H5VDS/CMakeLists.txt @@ -144,7 +144,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -161,7 +160,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () diff --git a/HDF5Examples/C/HL/CMakeLists.txt b/HDF5Examples/C/HL/CMakeLists.txt index d725e0edcfa..013204c235d 100644 --- a/HDF5Examples/C/HL/CMakeLists.txt +++ b/HDF5Examples/C/HL/CMakeLists.txt @@ -215,7 +215,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -232,7 +231,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -261,7 +259,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -279,7 +276,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -302,12 +298,10 @@ if (H5EXAMPLE_BUILD_TESTING) add_test (NAME ${EXAMPLE_VARNAME}_h5ex_lite1 COMMAND $) set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test (NAME ${EXAMPLE_VARNAME}_h5ex_lite2 COMMAND $) set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite1 - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) else () add_test ( @@ -324,7 +318,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_h5ex_lite2 @@ -340,7 +333,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_h5ex_lite2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_h5ex_lite1 - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () diff --git a/HDF5Examples/C/TUTR/CMakeLists.txt b/HDF5Examples/C/TUTR/CMakeLists.txt index 8e4f3da9015..d9bd51bbd86 100644 --- a/HDF5Examples/C/TUTR/CMakeLists.txt +++ b/HDF5Examples/C/TUTR/CMakeLists.txt @@ -101,7 +101,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_tutr_${testname} PROPERTIES FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_tutr - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_tutr_${testname} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt index 61020a18f96..cb5086c5ab8 100644 --- a/HDF5Examples/CMakeLists.txt +++ b/HDF5Examples/CMakeLists.txt @@ -145,14 +145,6 @@ if (${H5_LIBVER_DIR} GREATER 16) if (H5EXAMPLE_BUILD_FORTRAN AND HDF5_PROVIDES_FORTRAN) set (H5EXAMPLE_LINK_Fortran_LIBS ${H5EXAMPLE_HDF5_LINK_LIBS}) - # Parallel IO usage requires MPI to be Linked and Included - if (H5_HAVE_PARALLEL) - set (H5EXAMPLE_LINK_Fortran_LIBS ${H5EXAMPLE_LINK_Fortran_LIBS} ${MPI_Fortran_LIBRARIES}) - if (MPI_Fortran_LINK_FLAGS) - set (CMAKE_Fortran_EXE_LINKER_FLAGS "${MPI_Fortran_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") - endif () - endif () - configure_file (${H5EXAMPLE_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5D/h5_version.h @ONLY) configure_file (${H5EXAMPLE_F90_SRC_DIR}/H5D/h5_version.h.in ${PROJECT_BINARY_DIR}/FORTRAN/H5G/h5_version.h @ONLY) else () @@ -223,6 +215,7 @@ endif () # Build examples #----------------------------------------------------------------------------- add_subdirectory (C) +# Fortran MPI setup (find_package, link flags) is handled in FORTRAN/CMakeLists.txt if (H5EXAMPLE_BUILD_FORTRAN AND HDF5_PROVIDES_FORTRAN) add_subdirectory (FORTRAN) endif () diff --git a/HDF5Examples/CXX/H5D/CMakeLists.txt b/HDF5Examples/CXX/H5D/CMakeLists.txt index 143b056afaf..98f3255a35b 100644 --- a/HDF5Examples/CXX/H5D/CMakeLists.txt +++ b/HDF5Examples/CXX/H5D/CMakeLists.txt @@ -69,7 +69,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_cpp_ex - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/CXX/HL/CMakeLists.txt b/HDF5Examples/CXX/HL/CMakeLists.txt index fa4566f85f9..947b5b0fb13 100644 --- a/HDF5Examples/CXX/HL/CMakeLists.txt +++ b/HDF5Examples/CXX/HL/CMakeLists.txt @@ -65,7 +65,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_cpp_ex - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/CXX/TUTR/CMakeLists.txt b/HDF5Examples/CXX/TUTR/CMakeLists.txt index f2cd8277504..7e7fff4be7c 100644 --- a/HDF5Examples/CXX/TUTR/CMakeLists.txt +++ b/HDF5Examples/CXX/TUTR/CMakeLists.txt @@ -49,7 +49,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_cpp_ex_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_cpp_ex_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () if (last_test) diff --git a/HDF5Examples/FORTRAN/CMakeLists.txt b/HDF5Examples/FORTRAN/CMakeLists.txt index bd4e24fbc7a..6ca9afb4ed2 100644 --- a/HDF5Examples/FORTRAN/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/CMakeLists.txt @@ -1,6 +1,13 @@ cmake_minimum_required (VERSION 3.26) PROJECT (HDF5Examples_F90 Fortran) +# Parallel IO usage requires MPI to be linked and included +if (H5_HAVE_PARALLEL) + find_package(MPI REQUIRED COMPONENTS Fortran) + # Use imported target — carries include dirs, compile flags, and link flags transitively + list(APPEND H5EXAMPLE_LINK_Fortran_LIBS MPI::MPI_Fortran) +endif () + #----------------------------------------------------------------------------- # Build the Fortran Examples #----------------------------------------------------------------------------- diff --git a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt index 79f22a2f154..f1f11795b29 100644 --- a/HDF5Examples/FORTRAN/H5D/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5D/CMakeLists.txt @@ -263,9 +263,6 @@ if (H5EXAMPLE_BUILD_TESTING) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test} @@ -287,7 +284,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${last_test} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}") endif () diff --git a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt index d27a585b932..e74b530504b 100644 --- a/HDF5Examples/FORTRAN/H5G/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5G/CMakeLists.txt @@ -198,7 +198,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname}-clean PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) else () add_test ( @@ -213,9 +212,6 @@ if (H5EXAMPLE_BUILD_TESTING) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test}) endif () @@ -235,7 +231,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${last_test} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}") endif () @@ -269,9 +264,6 @@ if (H5EXAMPLE_BUILD_TESTING) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES} - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test}) endif () @@ -291,7 +283,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${last_test} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}") endif () @@ -315,7 +306,6 @@ if (H5EXAMPLE_BUILD_TESTING) add_test (NAME ${EXAMPLE_VARNAME}_f90_${testname} COMMAND $) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_f90_${testname}-clean @@ -352,7 +342,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (HDF5_PROVIDES_TOOLS) add_test ( @@ -369,7 +358,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}2 @@ -385,7 +373,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}2 PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}1 - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endif () @@ -414,7 +401,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_f90_${testname}-clean diff --git a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt index fc818f84b35..f50712b8d82 100644 --- a/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5PAR/CMakeLists.txt @@ -30,7 +30,6 @@ foreach (example_name ${examples}) "$<$:-DH5_USE_114_API>" "$<$:-DH5_USE_200_API>" ) - target_include_directories (${EXAMPLE_VARNAME}_f90_${example_name} PUBLIC ${MPI_Fortran_INCLUDE_DIRS}) target_link_libraries (${EXAMPLE_VARNAME}_f90_${example_name} ${H5EXAMPLE_LINK_Fortran_LIBS}) set_target_properties (${EXAMPLE_VARNAME}_f90_${example_name} PROPERTIES LINKER_LANGUAGE Fortran) endforeach () diff --git a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt index cf0f86940a1..33785e9ed65 100644 --- a/HDF5Examples/FORTRAN/H5T/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/H5T/CMakeLists.txt @@ -312,7 +312,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname}-clean PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) else () add_test ( @@ -327,9 +326,6 @@ if (H5EXAMPLE_BUILD_TESTING) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test}) endif () @@ -349,7 +345,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${last_test} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}") endif () @@ -384,7 +379,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname}-clearall - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME ${EXAMPLE_VARNAME}_f90_${testname}-clean diff --git a/HDF5Examples/FORTRAN/HL/CMakeLists.txt b/HDF5Examples/FORTRAN/HL/CMakeLists.txt index db4e2a8b44a..ae802b74d74 100644 --- a/HDF5Examples/FORTRAN/HL/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/HL/CMakeLists.txt @@ -171,7 +171,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname}-clean PROPERTIES DEPENDS ${EXAMPLE_VARNAME}_f90_${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) else () add_test ( @@ -186,9 +185,6 @@ if (H5EXAMPLE_BUILD_TESTING) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_LIB_DIRECTORY}" -P "${H5EXAMPLE_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_f90_${testname} PROPERTIES DEPENDS ${last_test}) endif () @@ -209,7 +205,6 @@ if (H5EXAMPLE_BUILD_TESTING) ) set_tests_properties (${EXAMPLE_VARNAME}_H5DUMP-f90_${testname} PROPERTIES DEPENDS ${last_test} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "${EXAMPLE_VARNAME}_H5DUMP-f90_${testname}") endif () diff --git a/HDF5Examples/FORTRAN/TUTR/CMakeLists.txt b/HDF5Examples/FORTRAN/TUTR/CMakeLists.txt index c2dfe541003..9c8aeb23ddb 100644 --- a/HDF5Examples/FORTRAN/TUTR/CMakeLists.txt +++ b/HDF5Examples/FORTRAN/TUTR/CMakeLists.txt @@ -106,7 +106,6 @@ if (H5EXAMPLE_BUILD_TESTING) endif () set_tests_properties (${EXAMPLE_VARNAME}_f90_tutr_${testname} PROPERTIES FIXTURES_REQUIRED clear_${EXAMPLE_VARNAME}_f90_tutr - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (last_test) set_tests_properties (${EXAMPLE_VARNAME}_f90_tutr_${testname} PROPERTIES DEPENDS ${last_test}) diff --git a/HDF5Examples/config/toolchain/build32.cmake b/HDF5Examples/config/toolchain/build32.cmake index f636ea845fc..59b93a6f76a 100644 --- a/HDF5Examples/config/toolchain/build32.cmake +++ b/HDF5Examples/config/toolchain/build32.cmake @@ -42,7 +42,6 @@ elseif(MINGW) set (CMAKE_CROSSCOMPILING_EMULATOR wine) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) - set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") else () set (CMAKE_SYSTEM_NAME Linux) diff --git a/HDF5Examples/config/toolchain/mingw64.cmake b/HDF5Examples/config/toolchain/mingw64.cmake index 24b173d7bbe..41ced7f797d 100644 --- a/HDF5Examples/config/toolchain/mingw64.cmake +++ b/HDF5Examples/config/toolchain/mingw64.cmake @@ -25,8 +25,6 @@ set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) -set (CMAKE_CROSSCOMPILING_EMULATOR wine64) -set (CROSSCOMPILING_PATH "WINEPATH=/usr/${TOOLCHAIN_PREFIX}/sys-root/mingw/bin/") set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") diff --git a/bin/make_vers b/bin/make_vers index 6f93b20510d..888520edfb7 100755 --- a/bin/make_vers +++ b/bin/make_vers @@ -478,6 +478,47 @@ sub create_public ($) { close HEADER; } +############################################################################## +# Create the generated CMake file for Doxygen PREDEFINED macros +# +sub create_doxygen_cmake ($) { + my $prefix = shift; # Get the prefix for the source file (e.g., "src/") + my $file = "H5version_doxygen.cmake"; # Name of file to generate + + # Output to doxygen directory (relative to src/) + my $doxygen_dir = $prefix; + $doxygen_dir =~ s/src\/?$/doxygen\//; # Replace "src/" with "doxygen/" + + # Create doxygen directory if it doesn't exist + if ($doxygen_dir ne "" && ! -d $doxygen_dir) { + mkdir $doxygen_dir or die "unable to create directory: $doxygen_dir"; + } + + # Open new cmake file in doxygen directory + open CMAKE, ">${doxygen_dir}${file}" or die "unable to create doxygen cmake file: ${doxygen_dir}${file}"; + + # Create file contents + print CMAKE "# Generated automatically by bin/make_vers -- do not edit\n"; + print CMAKE "# Add new versioned symbols to H5vers.txt file\n"; + print CMAKE "#\n"; + print CMAKE "# Doxygen PREDEFINED entries for versioned APIs\n"; + print CMAKE "# These macros tell Doxygen which version each API name maps to,\n"; + print CMAKE "# preventing \"multiple \@param documentation sections\" warnings\n"; + print CMAKE "\n"; + print CMAKE "list (APPEND _doxygen_predefined_entries\n"; + + # Add function version macros (sorted for consistency) + for my $name (sort keys %functions) { + my $vers = $functions{$name}; + print CMAKE " \"$name=$name$vers\"\n"; + } + + print CMAKE ")\n"; + + # Close cmake file + close CMAKE; +} + ############################################################################## # Read symbol version file (given as command-line argument) in and process it # into internal data structures, then create header files. @@ -508,5 +549,7 @@ for $file (@ARGV) { # Create header files print "Generating 'H5version.h'\n"; create_public($prefix); + print "Generating 'doxygen/H5version_doxygen.cmake'\n"; + create_doxygen_cmake($prefix); } diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt index 130064e8afb..65e35a94b23 100644 --- a/c++/src/CMakeLists.txt +++ b/c++/src/CMakeLists.txt @@ -188,7 +188,7 @@ if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") endif () set (_PKG_CONFIG_EXTRA_CFLAGS) -set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${PKG_CONFIG_LIBNAME}") +set (_PKG_CONFIG_LIBS "-l${PKG_CONFIG_LIBNAME}") set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") set (_PKG_CONFIG_LIBS_PRIVATE) set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") diff --git a/c++/test/CMakeTests.cmake b/c++/test/CMakeTests.cmake index e1113248998..fb4ae683e32 100644 --- a/c++/test/CMakeTests.cmake +++ b/c++/test/CMakeTests.cmake @@ -33,7 +33,6 @@ else () endif () set_tests_properties (CPP_testhdf5 PROPERTIES WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("CPP_testhdf5" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (CPP_testhdf5 PROPERTIES DISABLED true) diff --git a/c++/test/CMakeVFDTests.cmake b/c++/test/CMakeVFDTests.cmake index 72010ae1e68..3d5cab68ca5 100644 --- a/c++/test/CMakeVFDTests.cmake +++ b/c++/test/CMakeVFDTests.cmake @@ -37,7 +37,6 @@ macro (ADD_VFD_TEST vfdname resultcode) ) set_tests_properties (CPP_VFD-${vfdname}-cpp_testhdf5 PROPERTIES TIMEOUT ${CTEST_SHORT_TIMEOUT} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("CPP_VFD-${vfdname}-cpp_testhdf5" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (CPP_VFD-${vfdname}-cpp_testhdf5 PROPERTIES DISABLED true) diff --git a/config/ConfigureChecks.cmake b/config/ConfigureChecks.cmake index 15473cd1f82..8b1d925a2da 100644 --- a/config/ConfigureChecks.cmake +++ b/config/ConfigureChecks.cmake @@ -735,7 +735,7 @@ if (HDF5_BUILD_FORTRAN) # Get the max decimal precision in C, checking both long double and # __float128 (if available) #----------------------------------------------------------------------------- - if (NOT CMAKE_CROSSCOMPILING) + if (NOT CMAKE_CROSSCOMPILING OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)) #----------------------------------------------------------------------------- # The provided CMake C macros don't provide a general compile/run function # so this one is used. @@ -747,16 +747,10 @@ if (HDF5_BUILD_FORTRAN) ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler1.c ${SOURCE_CODE} ) - if (CMAKE_VERSION VERSION_LESS 3.25) - set (_RUN_OUTPUT_VARIABLE "RUN_OUTPUT_VARIABLE") - else () - set (_RUN_OUTPUT_VARIABLE "RUN_OUTPUT_STDOUT_VARIABLE") - endif () - TRY_RUN (RUN_RESULT_VAR COMPILE_RESULT_VAR - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler1.c + try_run (RUN_RESULT_VAR COMPILE_RESULT_VAR + SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler1.c COMPILE_OUTPUT_VARIABLE COMPILEOUT - ${_RUN_OUTPUT_VARIABLE} OUTPUT_VAR + RUN_OUTPUT_STDOUT_VARIABLE OUTPUT_VAR ) set (${RETURN_OUTPUT_VAR} ${OUTPUT_VAR}) @@ -844,7 +838,7 @@ endif() #----------------------------------------------------------------------------- macro (H5ConversionTests TEST def msg) if (NOT DEFINED ${TEST}) - if (NOT CMAKE_CROSSCOMPILING) + if (NOT CMAKE_CROSSCOMPILING OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)) # Build and run the test code if not cross-compiling TRY_RUN (${TEST}_RUN ${TEST}_COMPILE ${CMAKE_BINARY_DIR} diff --git a/config/HDF5Pkgconfig.cmake b/config/HDF5Pkgconfig.cmake new file mode 100644 index 00000000000..6f060ced44c --- /dev/null +++ b/config/HDF5Pkgconfig.cmake @@ -0,0 +1,286 @@ +# +# Copyright by The HDF Group. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the LICENSE file, which can be found at the root of the source code +# distribution tree, or in https://www.hdfgroup.org/licenses. +# If you do not have access to either file, you may request a copy from +# help@hdfgroup.org. +# + +# +# This file provides functionality for creating pkg-config files for HDF5. +# + +# Function to inspect a CMake target or library name/path and extract any +# available information needed when creating an HDF5 pkg-config file that +# makes use of that library. +# +# NOTE: Currently, this function assumes that libraries don't have pkg-config +# support and so returns flags to be added to the "Libs" or "Libs.private" +# field (as determined by the caller) and "Cflags" field in the pkg-config +# file. Ideally, pkg_check_modules() should be used to check if a particular +# library has pkg-config support so that the library can be added to the +# "Requires" or "Requires.private" field instead, as needed. Some additional +# logic will be needed to determine the pkg-config module name from the CMake +# target name or library name. +# +# Input variables: +# +# - library +# Specifies the CMake target name or library name/path to inspect. +# +# - _pkgconfig_libs_outvar +# Specifies the name of the CMake variable which will be populated +# with the flags for the library that should be added to the "Libs" +# or "Libs.private" field (as determined by the caller) of a pkg-config +# file. After processing the library, the variable pointed to by +# _pkgconfig_libs_outvar will be a CMake list of flags. +# +# - _pkgconfig_extra_cflags_outvar +# Specifies the name of the CMake variable which will be populated +# with the flags for the library that should be added to the +# "Cflags" field of a pkg-config file. After processing the library, +# the variable pointed to by _pkgconfig_extra_cflags_outvar will be +# a CMake list of flags. +# +# - _lib_skipped_outvar +# Specifies the name of the CMake variable which will be set to TRUE +# if a library was skipped for processing for some reason and FALSE +# otherwise. +# +# Output variables: +# +# None +# +function (extract_lib_pkgconfig_info + library + _pkgconfig_libs_outvar + _pkgconfig_extra_cflags_outvar + _lib_skipped_outvar) + # Initialize outputs to known values + unset (${_pkgconfig_libs_outvar} PARENT_SCOPE) + unset (${_pkgconfig_extra_cflags_outvar} PARENT_SCOPE) + set (${_lib_skipped_outvar} FALSE PARENT_SCOPE) + + unset (library_deps_list) + unset (library_cflags_list) + + # Get current project build configuration type in case we need to map + # to an imported target's config-specific properties. To be safe for + # now, avoid processing libraries when using a multi-config generator + # with more than one configuration. pkg-config files are currently + # generated at configure time, but the build configuration type is + # determined at build time. If mapping between the current build + # configuration type and a list of imported library locations (based + # on the current build configuration type) is needed later on, this + # function will be unable to properly do so. + get_cmake_property (is_multiconfig_gen GENERATOR_IS_MULTI_CONFIG) + if (is_multiconfig_gen) + list (LENGTH CMAKE_CONFIGURATION_TYPES num_configs) + if (num_configs GREATER "1") + message (AUTHOR_WARNING "Cannot generate pkg-config files correctly for multi-config generators") + set (${_lib_skipped_outvar} TRUE PARENT_SCOPE) + return () + elseif (num_configs EQUAL "1") + set (project_build_config "${CMAKE_CONFIGURATION_TYPES}") + else () + set (project_build_config Release) + endif () + else () + set (project_build_config "${CMAKE_BUILD_TYPE}") + endif () + if (project_build_config STREQUAL "Developer") + set (project_build_config "Debug") + endif () + + # If this is a regular library, add it to the list of libraries for the + # Libs.private field. Otherwise, do special processing for library targets. + if (NOT TARGET ${library}) + # Avoid generator expressions related to flags for now. A more complete + # solution will be needed in order to correctly evaluate these. + string (GENEX_STRIP "${library}" library_genex_stripped) + if (NOT "${library}" STREQUAL "${library_genex_stripped}") + message (AUTHOR_WARNING "Not processing CMake generator expression for library ${library} for pkg-config files") + set (${_lib_skipped_outvar} TRUE PARENT_SCOPE) + return () + endif () + + if (IS_ABSOLUTE "${library}" OR "${library}" MATCHES "^-") + list (APPEND library_deps_list "${library}") + else () + list (APPEND library_deps_list "-l${library}") + endif () + + set (${_pkgconfig_libs_outvar} "${library_deps_list}" PARENT_SCOPE) + return () + endif () + + # Retrieve INTERFACE properties from the target which may be needed in + # "Cflags" for compiling + get_target_property (lib_interface_include_dirs ${library} INTERFACE_INCLUDE_DIRECTORIES) + if (lib_interface_include_dirs) + foreach (include_dir ${lib_interface_include_dirs}) + # Avoid generator expressions related to flags for now. A more complete + # solution will be needed in order to correctly evaluate these. + string (GENEX_STRIP "${include_dir}" include_dir_genex_stripped) + if (NOT "${include_dir}" STREQUAL "${include_dir_genex_stripped}") + message (AUTHOR_WARNING "Not processing CMake generator expression ${include_dir} for library ${library} for pkg-config files") + continue () + endif () + + if ("${include_dir}" MATCHES "^-") + list (APPEND library_cflags_list "${include_dir}") + else () + list (APPEND library_cflags_list "-I${include_dir}") + endif () + endforeach () + endif () + + get_target_property (lib_interface_compile_opts ${library} INTERFACE_COMPILE_OPTIONS) + if (lib_interface_compile_opts) + foreach (compile_opt ${lib_interface_compile_opts}) + # Avoid generator expressions related to flags for now. A more complete + # solution will be needed in order to correctly evaluate these. + string (GENEX_STRIP "${compile_opt}" compile_opt_genex_stripped) + if (NOT "${compile_opt}" STREQUAL "${compile_opt_genex_stripped}") + message (AUTHOR_WARNING "Not processing CMake generator expression ${compile_opt} for library ${library} for pkg-config files") + continue () + endif () + + list (APPEND library_cflags_list "${compile_opt}") + endforeach () + endif () + + get_target_property (lib_interface_compile_defs ${library} INTERFACE_COMPILE_DEFINITIONS) + if (lib_interface_compile_defs) + foreach (compile_def ${lib_interface_compile_defs}) + # Avoid generator expressions related to flags for now. A more complete + # solution will be needed in order to correctly evaluate these. + string (GENEX_STRIP "${compile_def}" compile_def_genex_stripped) + if (NOT "${compile_def}" STREQUAL "${compile_def_genex_stripped}") + message (AUTHOR_WARNING "Not processing CMake generator expression ${compile_def} for library ${library} for pkg-config files") + continue () + endif () + + list (APPEND library_cflags_list "${compile_def}") + endforeach () + endif () + + # Determine appropriate flags for linking against library + unset (lib_name) + get_target_property (lib_is_imported ${library} IMPORTED) + get_target_property (lib_type ${library} TYPE) + if (lib_is_imported AND NOT lib_type STREQUAL "INTERFACE_LIBRARY") + unset (lib_path) + + # Find a path for the library and process it into a library name for linking + # against. First, check for a particular IMPORTED_LOCATION_ property + # and use it if set. Some mapping between the library's imported configurations + # and the project's current build configuration type may be needed. If that + # property isn't set, check for the IMPORTED_LOCATION property and use it if + # set. If neither are set, check for the LOCATION property and use it if set. + get_target_property (lib_imported_configs ${library} IMPORTED_CONFIGURATIONS) + if (lib_imported_configs) + list (LENGTH lib_imported_configs num_configs) + if (num_configs EQUAL "1") + get_target_property (lib_path ${library} IMPORTED_LOCATION_${lib_imported_configs}) + elseif (num_configs GREATER "1") + # Find a suitable configuration of the imported library that matches this + # project's current build configuration type, if available. + string (TOUPPER "${project_build_config}" project_build_config_upper) + get_target_property (lib_path ${library} IMPORTED_LOCATION_${project_build_config_upper}) + if (NOT lib_path) + get_target_property (lib_path ${library} IMPORTED_LOCATION_${project_build_config}) + endif () + endif () # Assume 0 configurations is a problem with the library's configuration; move on + endif () + if (NOT lib_path) + get_target_property (lib_path ${library} IMPORTED_LOCATION) + endif () + if (NOT lib_path) + get_target_property (lib_path ${library} LOCATION) + endif () + + # Get base library name without extensions + if (lib_path) + # Avoid generator expressions in library locations for now. A more complete + # solution will be needed in order to correctly evaluate these. + string (GENEX_STRIP "${lib_path}" lib_path_genex_stripped) + if (NOT "${lib_path}" STREQUAL "${lib_path_genex_stripped}") + message (AUTHOR_WARNING "Not processing CMake generator expression ${lib_path} for library ${library} for pkg-config files") + set (${_lib_skipped_outvar} TRUE PARENT_SCOPE) + return () + endif () + + cmake_path (GET lib_path STEM lib_name) + endif () + endif () + + # If a library name couldn't be determined from the LOCATION or IMPORTED_LOCATION(_...) + # try OUTPUT_NAME. If the target isn't an imported target, but has an OUTPUT_NAME + # set for it, it's likely an internal target for a filter plugin or similar which + # will be built at library build time. This is a fragile assumption, but should + # work for now. + if (NOT lib_name AND NOT lib_type STREQUAL "INTERFACE_LIBRARY") + get_target_property (lib_outname ${library} OUTPUT_NAME) + if (lib_outname) + # Avoid generator expressions in library names for now. A more complete + # solution will be needed in order to correctly evaluate these. + string (GENEX_STRIP "${lib_outname}" lib_outname_genex_stripped) + if (NOT "${lib_outname}" STREQUAL "${lib_outname_genex_stripped}") + message (AUTHOR_WARNING "Not processing CMake generator expression ${lib_outname} for library ${library} for pkg-config files") + set (${_lib_skipped_outvar} TRUE PARENT_SCOPE) + return () + endif () + + cmake_path (GET lib_outname STEM lib_name) + endif () + endif () + + if (lib_name) + string (REGEX REPLACE "^lib" "" lib_name "${lib_name}") + list (APPEND library_deps_list "-l${lib_name}") + else () + # Issue a warning for non-interface imported targets that we couldn't obtain a + # valid name for, as the library can't be processed at this point. Currently, + # it's assumed that non-imported targets without a valid name of some sort won't + # be needed in a pkg-config file; they are silently skipped. + if (lib_is_imported AND NOT lib_type STREQUAL "INTERFACE_LIBRARY") + message (AUTHOR_WARNING "Couldn't obtain a valid name for library ${library} for pkg-config files") + endif () + + # Targets of type INTERFACE_LIBRARY are still processed for their compile + # definitions and link dependencies. + if (NOT lib_type STREQUAL "INTERFACE_LIBRARY") + set (${_lib_skipped_outvar} TRUE PARENT_SCOPE) + return () + endif () + endif () + + # Process any transitive link dependencies + get_target_property (lib_link_libraries ${library} INTERFACE_LINK_LIBRARIES) + if (lib_link_libraries) + unset (lib_dep_flags) + unset (lib_cflags) + unset (lib_skipped) + + foreach (lib_dep ${lib_link_libraries}) + extract_lib_pkgconfig_info (${lib_dep} lib_dep_flags lib_cflags lib_skipped) + if (NOT lib_skipped) + if (lib_dep_flags) + list (APPEND library_deps_list "${lib_dep_flags}") + endif () + if (lib_cflags) + list (APPEND library_cflags_list "${lib_cflags}") + endif () + endif () + endforeach () + endif () + + # Propagate variables upward in scope + set (${_pkgconfig_libs_outvar} "${library_deps_list}" PARENT_SCOPE) + set (${_pkgconfig_extra_cflags_outvar} "${library_cflags_list}" PARENT_SCOPE) +endfunction () diff --git a/config/HDF5UseFortran.cmake b/config/HDF5UseFortran.cmake index 5c6a7517871..f5e60ba7483 100644 --- a/config/HDF5UseFortran.cmake +++ b/config/HDF5UseFortran.cmake @@ -51,22 +51,16 @@ macro (FORTRAN_RUN FUNCTION_NAME SOURCE_CODE RUN_RESULT_VAR1 COMPILE_RESULT_VAR1 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler1.f90 "${SOURCE_CODE}" ) - if (CMAKE_VERSION VERSION_LESS 3.25) - set (_RUN_OUTPUT_VARIABLE "RUN_OUTPUT_VARIABLE") - else () - set (_RUN_OUTPUT_VARIABLE "RUN_OUTPUT_STDOUT_VARIABLE") - endif () if (${FUNCTION_NAME} STREQUAL "SIZEOF NATIVE KINDs") set (TMP_CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}") else () set (TMP_CMAKE_Fortran_FLAGS "") endif () - TRY_RUN (RUN_RESULT_VAR COMPILE_RESULT_VAR - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler1.f90 + try_run (RUN_RESULT_VAR COMPILE_RESULT_VAR + SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler1.f90 CMAKE_FLAGS "${TMP_CMAKE_Fortran_FLAGS}" LINK_LIBRARIES "${HDF5_REQUIRED_LIBRARIES}" - ${_RUN_OUTPUT_VARIABLE} OUTPUT_VAR + RUN_OUTPUT_STDOUT_VARIABLE OUTPUT_VAR ) set (${RETURN_OUTPUT_VAR} ${OUTPUT_VAR}) @@ -158,7 +152,7 @@ endif () #----------------------------------------------------------------------------- # Determine the available KINDs for REALs and INTEGERs #----------------------------------------------------------------------------- -if (NOT CMAKE_CROSSCOMPILING) +if (NOT CMAKE_CROSSCOMPILING OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)) if (${HAVE_ISO_FORTRAN_ENV}) READ_SOURCE ("PROGRAM FC08_AVAIL_KINDS" "END PROGRAM FC08_AVAIL_KINDS" SOURCE_CODE) else () @@ -201,21 +195,21 @@ if (NOT CMAKE_CROSSCOMPILING) endif () set (${HDF_PREFIX}_PAC_FC_MAX_REAL_PRECISION ${pac_fc_max_real_precision} CACHE INTERNAL "Maximum decimal precision for REALs in Fortran") - set (PAC_FC_ALL_INTEGER_KINDS "\{${pac_validIntKinds}\}") - set (PAC_FC_ALL_REAL_KINDS "\{${pac_validRealKinds}\}") + set (PAC_FC_ALL_INTEGER_KINDS "\{${pac_validIntKinds}\}" CACHE INTERNAL "Find available INTEGER KINDs for Fortran") + set (PAC_FC_ALL_REAL_KINDS "\{${pac_validRealKinds}\}" CACHE INTERNAL "Find available REAL KINDs for Fortran") list (GET PROG_OUTPUT 3 NUM_IKIND) list (GET PROG_OUTPUT 4 NUM_RKIND) - set (PAC_FORTRAN_NUM_INTEGER_KINDS "${NUM_IKIND}") - set (PAC_FORTRAN_NUM_REAL_KINDS "${NUM_RKIND}") + set (PAC_FORTRAN_NUM_INTEGER_KINDS "${NUM_IKIND}" CACHE INTERNAL "Number of valid integer kinds for Fortran") + set (PAC_FORTRAN_NUM_REAL_KINDS "${NUM_RKIND}" CACHE INTERNAL "Number of valid real kinds for Fortran") set (${HDF_PREFIX}_H5CONFIG_F_NUM_IKIND "INTEGER, PARAMETER :: num_ikinds = ${NUM_IKIND}") set (${HDF_PREFIX}_H5CONFIG_F_IKIND "INTEGER, DIMENSION(1:num_ikinds) :: ikind = (/${pac_validIntKinds}/)") if (${HAVE_ISO_FORTRAN_ENV}) list (GET PROG_OUTPUT 5 NUM_LKIND) - set (PAC_FORTRAN_NUM_LOGICAL_KINDS "${NUM_LKIND}") + set (PAC_FORTRAN_NUM_LOGICAL_KINDS "${NUM_LKIND}" CACHE INTERNAL "Find available LOGICAL KINDs for Fortran") list (GET PROG_OUTPUT 6 pac_validLogicalKinds) # If the list is empty then something went wrong. @@ -223,7 +217,7 @@ if (NOT CMAKE_CROSSCOMPILING) message (FATAL_ERROR "Failed to find available LOGICAL KINDs for Fortran") endif () - set (PAC_FC_ALL_LOGICAL_KINDS "\{${pac_validLogicalKinds}\}") + set (PAC_FC_ALL_LOGICAL_KINDS "\{${pac_validLogicalKinds}\}" CACHE INTERNAL "LOGICAL KINDS FOUND for Fortran") message (STATUS "....LOGICAL KINDS FOUND ${PAC_FC_ALL_LOGICAL_KINDS}") endif () else () @@ -297,7 +291,7 @@ endif () # ********** # INTEGERS # ********** -if (NOT CMAKE_CROSSCOMPILING) +if (NOT CMAKE_CROSSCOMPILING OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)) string (REGEX REPLACE "," ";" VAR "${pac_validIntKinds}") foreach (KIND ${VAR}) @@ -343,7 +337,7 @@ message (VERBOSE "....FOUND SIZEOF for INTEGER KINDs ${PAC_FC_ALL_INTEGER_KINDS_ # ********** # REALS # ********** -if (NOT CMAKE_CROSSCOMPILING) +if (NOT CMAKE_CROSSCOMPILING OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)) string (REGEX REPLACE "," ";" VAR "${pac_validRealKinds}") #find the maximum kind of the real @@ -402,7 +396,7 @@ list (GET VAR ${_LEN} max_real_fortran_sizeof) #----------------------------------------------------------------------------- # Find sizeof of native kinds #----------------------------------------------------------------------------- -if (NOT CMAKE_CROSSCOMPILING) +if (NOT CMAKE_CROSSCOMPILING OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)) set (PROG_SRC3 " PROGRAM main diff --git a/config/cmake-presets/hidden-presets.json b/config/cmake-presets/hidden-presets.json index f453ec30699..c36c27a1335 100644 --- a/config/cmake-presets/hidden-presets.json +++ b/config/cmake-presets/hidden-presets.json @@ -167,6 +167,28 @@ "ci-MSVC" ] }, + { + "name": "ci-arm64-Debug-MSVC", + "description": "MSVC for ARM64 (Debug)", + "hidden": true, + "inherits": [ + "ci-base", + "ci-arm64", + "ci-Debug", + "ci-MSVC" + ] + }, + { + "name": "ci-arm64-Release-MSVC", + "description": "MSVC for ARM64 (Release)", + "hidden": true, + "inherits": [ + "ci-base", + "ci-arm64", + "ci-Release", + "ci-MSVC" + ] + }, { "name": "ci-x64-Debug-Clang", "description": "Clang/LLVM for x64 (Debug)", @@ -350,6 +372,24 @@ ], "configuration": "RelWithDebInfo" }, + { + "name": "ci-arm64-Debug-MSVC", + "configurePreset": "ci-arm64-Debug-MSVC", + "hidden": true, + "inherits": [ + "ci-base" + ], + "configuration": "Debug" + }, + { + "name": "ci-arm64-Release-MSVC", + "configurePreset": "ci-arm64-Release-MSVC", + "hidden": true, + "inherits": [ + "ci-base" + ], + "configuration": "RelWithDebInfo" + }, { "name": "ci-x64-Debug-Clang", "configurePreset": "ci-x64-Debug-Clang", @@ -507,6 +547,24 @@ ], "configuration": "RelWithDebInfo" }, + { + "name": "ci-arm64-Debug-MSVC", + "configurePreset": "ci-arm64-Debug-MSVC", + "hidden": true, + "inherits": [ + "ci-base" + ], + "configuration": "Debug" + }, + { + "name": "ci-arm64-Release-MSVC", + "configurePreset": "ci-arm64-Release-MSVC", + "hidden": true, + "inherits": [ + "ci-base" + ], + "configuration": "RelWithDebInfo" + }, { "name": "ci-x64-Debug-Clang", "configurePreset": "ci-x64-Debug-Clang", @@ -642,6 +700,13 @@ "inherits": "ci-base", "configurations": ["RelWithDebInfo"] }, + { + "name": "ci-arm64-Release-MSVC", + "configurePreset": "ci-arm64-Release-MSVC", + "hidden": true, + "inherits": "ci-base", + "configurations": ["RelWithDebInfo"] + }, { "name": "ci-x64-Release-Clang", "configurePreset": "ci-x64-Release-Clang", diff --git a/config/cmake/HDF5DeveloperBuild.cmake b/config/cmake/HDF5DeveloperBuild.cmake index 87fd0302d47..3cb73346e1c 100644 --- a/config/cmake/HDF5DeveloperBuild.cmake +++ b/config/cmake/HDF5DeveloperBuild.cmake @@ -12,19 +12,25 @@ # CMake settings for HDF5 Developer mode builds -# Set CMake C++ flags based off of Debug build flags +# Set initial CMake Developer build C flags based off of Debug build flags +set (CMAKE_C_FLAGS_DEVELOPER "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING + "Flags used by the C compiler during developer builds." FORCE +) + +# Set initial CMake Developer build C++ flags based off of Debug build flags set (CMAKE_CXX_FLAGS_DEVELOPER ${CMAKE_CXX_FLAGS_DEBUG} CACHE STRING "Flags used by the C++ compiler during developer builds." FORCE ) -# Set CMake binary linker flags based off of Debug binary linker flags +# Set initial CMake Developer build binary linker flags based off of Debug +# binary linker flags set (CMAKE_EXE_LINKER_FLAGS_DEVELOPER ${CMAKE_EXE_LINKER_FLAGS_DEBUG} CACHE STRING "Flags used for linking binaries during developer builds." FORCE ) -# Set CMake shared library linker flags based off of Debug shared library -# linker flags +# Set initial CMake Developer build shared library linker flags based off +# of Debug shared library linker flags set (CMAKE_SHARED_LINKER_FLAGS_DEVELOPER ${CMAKE_SHARED_LINKER_FLAGS_DEBUG} CACHE STRING "Flags used by the shared libraries linker during developer builds." FORCE diff --git a/config/cmake/ZLIB/CMakeLists.txt b/config/cmake/ZLIB/CMakeLists.txt index c41db31deec..a8e350f0026 100644 --- a/config/cmake/ZLIB/CMakeLists.txt +++ b/config/cmake/ZLIB/CMakeLists.txt @@ -179,9 +179,13 @@ target_include_directories(${ZLIB_LIB_TARGET} PRIVATE "${CMAKE_BINARY_DIR}" PUBLIC "${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}" ) -if (MSVC AND CMAKE_CL_64) - set_target_properties (${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") -endif () +if (MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) + if (CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "ARM64") + set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:ARM64") + else() + set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") + endif() +endif() set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES PUBLIC_HEADER "" LINKER_LANGUAGE C diff --git a/config/cmake/ZLIB/devCMakeLists.txt b/config/cmake/ZLIB/devCMakeLists.txt index 3be9fafeded..41049723d22 100644 --- a/config/cmake/ZLIB/devCMakeLists.txt +++ b/config/cmake/ZLIB/devCMakeLists.txt @@ -246,9 +246,13 @@ target_include_directories(${ZLIB_LIB_TARGET} PRIVATE "${CMAKE_BINARY_DIR}" PUBLIC "${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}" ) -if (MSVC AND CMAKE_CL_64) - set_target_properties (${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") -endif () +if (MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) + if (CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "ARM64") + set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:ARM64") + else() + set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") + endif() +endif() set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES PUBLIC_HEADER "" LINKER_LANGUAGE C diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake index fb04c7a6e69..2368775ab4e 100644 --- a/config/cmake/cacheinit.cmake +++ b/config/cmake/cacheinit.cmake @@ -54,6 +54,9 @@ set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) ######################## # compression options ######################## +set (ZLIB_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for ZLIB" FORCE) +set (SZIP_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for SZIP" FORCE) + set (HDF5_USE_ZLIB_STATIC ON CACHE BOOL "Use static zlib library" FORCE) set (HDF5_USE_LIBAEC_STATIC ON CACHE BOOL "Use static AEC library" FORCE) diff --git a/config/sanitizer/code-coverage.cmake b/config/sanitizer/code-coverage.cmake index 107d9f07a4f..eb677452395 100644 --- a/config/sanitizer/code-coverage.cmake +++ b/config/sanitizer/code-coverage.cmake @@ -334,8 +334,6 @@ function(target_code_coverage TARGET_NAME) # this target serially. add_custom_target ( ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} COMMAND ${CMAKE_COMMAND} -E env ${target_code_coverage_PRE_ARGS} @@ -417,8 +415,6 @@ function(target_code_coverage TARGET_NAME) # Run the executable, generating coverage information add_custom_target ( ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} COMMAND ${target_code_coverage_PRE_ARGS} $ ${target_code_coverage_ARGS} @@ -447,8 +443,6 @@ function(target_code_coverage TARGET_NAME) ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} COMMAND ${CMAKE_COMMAND} -E remove -f ${COVERAGE_INFO} COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --zerocounters - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} COMMAND ${target_code_coverage_PRE_ARGS} $ ${target_code_coverage_ARGS} @@ -463,8 +457,6 @@ function(target_code_coverage TARGET_NAME) ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} COMMAND ${CMAKE_COMMAND} -E rm -f ${COVERAGE_INFO} COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --zerocounters - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} COMMAND ${target_code_coverage_PRE_ARGS} $ ${target_code_coverage_ARGS} diff --git a/config/toolchain/mingw-w64-x86-64-wine.sh b/config/toolchain/mingw-w64-x86-64-wine.sh new file mode 100755 index 00000000000..595dd381108 --- /dev/null +++ b/config/toolchain/mingw-w64-x86-64-wine.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +# assume gfortran-mingw-w64-x86-64-win32 is installed +mingw_prefix=${TOOLCHAIN_PREFIX:-x86_64-w64-mingw32} +libgfortran_path=`ls /usr/lib/gcc/${mingw_prefix}/*/libgfortran.dll.a 2>/dev/null | head -1` +if test -n "${libgfortran_path}"; then + export WINEPATH=`dirname ${libgfortran_path}` +fi +/usr/lib/wine/wine64 "$@" diff --git a/config/toolchain/mingw64.cmake b/config/toolchain/mingw64.cmake index 86c235908e0..430dfc85a2d 100644 --- a/config/toolchain/mingw64.cmake +++ b/config/toolchain/mingw64.cmake @@ -25,10 +25,6 @@ set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) -set (CMAKE_CROSSCOMPILING_EMULATOR wine64) -set (CROSSCOMPILING_PATH "WINEPATH=/usr/${TOOLCHAIN_PREFIX}/sys-root/mingw/bin/") - -set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") set (CMAKE_AR:FILEPATH /usr/bin/${TOOLCHAIN_PREFIX}-ar) set (CMAKE_RANLIB:FILEPATH /usr/bin/${TOOLCHAIN_PREFIX}-ranlib) diff --git a/doxygen/CMakeLists.txt b/doxygen/CMakeLists.txt index ca79929b85b..5ffcda17c64 100644 --- a/doxygen/CMakeLists.txt +++ b/doxygen/CMakeLists.txt @@ -32,7 +32,32 @@ if (DOXYGEN_FOUND) set (DOXYGEN_SEARCHENGINE_URL) set (DOXYGEN_STRIP_FROM_PATH ${HDF5_SOURCE_DIR}) set (DOXYGEN_STRIP_FROM_INC_PATH ${HDF5_SOURCE_DIR}) - set (DOXYGEN_PREDEFINED "H5_HAVE_DIRECT H5_HAVE_LIBHDFS H5_HAVE_MAP_API H5_HAVE_PARALLEL H5_HAVE_ROS3_VFD H5_DOXYGEN H5_HAVE_SUBFILING_VFD H5_HAVE_IOC_VFD H5_HAVE_MIRROR_VFD H5std_string=std::string H5G_link_t=H5L_type_t") + # Versioned API macros are added to PREDEFINED to give Doxygen a fixed + # expansion and prevent it from discovering the #defines in H5version.h, + # which otherwise causes "multiple @param documentation sections" warnings + # when the macro documentation (\def) and the function documentation both + # get associated with the same underlying function. + # + # The versioned API macros are auto-generated from src/H5vers.txt by the + # bin/make_vers script, which creates doxygen/H5version_doxygen.cmake. + # This ensures the Doxygen configuration stays synchronized with the + # actual default versions defined in src/H5version.h. + set (_doxygen_predefined_entries + H5_HAVE_DIRECT + H5_HAVE_LIBHDFS + H5_HAVE_MAP_API + H5_HAVE_PARALLEL + H5_HAVE_ROS3_VFD + H5_DOXYGEN + H5_HAVE_SUBFILING_VFD + H5_HAVE_IOC_VFD + H5_HAVE_MIRROR_VFD + "H5std_string=std::string" + "H5G_link_t=H5L_type_t" + ) + # Load auto-generated versioned API macros from doxygen/H5version_doxygen.cmake + include(${HDF5_DOXYGEN_DIR}/H5version_doxygen.cmake) + list (JOIN _doxygen_predefined_entries " " DOXYGEN_PREDEFINED) set (DOXYGEN_WARN_AS_ERROR ${HDF5_DOXY_WARNINGS}) # This configure and individual custom targets work together diff --git a/doxygen/Doxyfile.in b/doxygen/Doxyfile.in index 467663c4633..3a160c1701f 100644 --- a/doxygen/Doxyfile.in +++ b/doxygen/Doxyfile.in @@ -719,7 +719,11 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @DOXYGEN_INPUT_DIRECTORY@ +INPUT = @DOXYGEN_INPUT_DIRECTORY@ \ + @DOXYGEN_DIR@/examples/menus/core_menu.md \ + @DOXYGEN_DIR@/examples/menus/fortran_menu.md \ + @DOXYGEN_DIR@/examples/menus/high_level_menu.md \ + @DOXYGEN_DIR@/examples/menus/java_menu.md # This tag can be used to specify the character encoding of the source files # that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses @@ -758,7 +762,6 @@ FILE_PATTERNS = H5*public.h H5*module.h H5*develop.h H5FD*.h \ @DOXYGEN_JAVA_DIR@/hdf/hdf5lib/exceptions/HDF*.java \ *.F90 \ *.dox \ - *.md \ h5copy.h h5diff_main.h h5dump.h h5format_convert.h h5import.h h5jam.h h5ls.h h5repack.h h5stat.h \ h5watch.h h5clear.h h5debug.h h5delete.h h5mkgrp.h h5repart.h \ @HDF5_CPP_SRC_DIR@/*.h \ @@ -777,7 +780,8 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which Doxygen is # run. -EXCLUDE = jsrc +EXCLUDE = jsrc \ + @DOXYGEN_DIR@/../config/toolchain # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -804,10 +808,7 @@ EXCLUDE_PATTERNS = */fortran/test/* \ */hl/fortran/src/*.h \ */HDF5Examples/FORTRAN/* \ */sanitizer/* \ - */README.md \ - */CONTRIBUTING.md \ - */CHANGELOG.md \ - */HISTORY-*.md + */H5fortran_types.F90 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the diff --git a/doxygen/H5version_doxygen.cmake b/doxygen/H5version_doxygen.cmake new file mode 100644 index 00000000000..e6b0ff9ef9a --- /dev/null +++ b/doxygen/H5version_doxygen.cmake @@ -0,0 +1,48 @@ +# Generated automatically by bin/make_vers -- do not edit +# Add new versioned symbols to H5vers.txt file +# +# Doxygen PREDEFINED entries for versioned APIs +# These macros tell Doxygen which version each API name maps to, +# preventing "multiple @param documentation sections" warnings + +list (APPEND _doxygen_predefined_entries + "H5Acreate=H5Acreate2" + "H5Aiterate=H5Aiterate2" + "H5Dcreate=H5Dcreate2" + "H5Dopen=H5Dopen2" + "H5Dread_chunk=H5Dread_chunk2" + "H5Eclear=H5Eclear2" + "H5Eget_auto=H5Eget_auto2" + "H5Eprint=H5Eprint2" + "H5Epush=H5Epush2" + "H5Eset_auto=H5Eset_auto2" + "H5Ewalk=H5Ewalk2" + "H5Fget_info=H5Fget_info2" + "H5Gcreate=H5Gcreate2" + "H5Gopen=H5Gopen2" + "H5Iregister_type=H5Iregister_type2" + "H5Lget_info=H5Lget_info2" + "H5Lget_info_by_idx=H5Lget_info_by_idx2" + "H5Literate=H5Literate2" + "H5Literate_by_name=H5Literate_by_name2" + "H5Lvisit=H5Lvisit2" + "H5Lvisit_by_name=H5Lvisit_by_name2" + "H5Oget_info=H5Oget_info3" + "H5Oget_info_by_idx=H5Oget_info_by_idx3" + "H5Oget_info_by_name=H5Oget_info_by_name3" + "H5Ovisit=H5Ovisit3" + "H5Ovisit_by_name=H5Ovisit_by_name3" + "H5Pencode=H5Pencode2" + "H5Pget_filter=H5Pget_filter2" + "H5Pget_filter_by_id=H5Pget_filter_by_id2" + "H5Pinsert=H5Pinsert2" + "H5Pregister=H5Pregister2" + "H5Rdereference=H5Rdereference2" + "H5Rget_obj_type=H5Rget_obj_type2" + "H5Sencode=H5Sencode2" + "H5Tarray_create=H5Tarray_create2" + "H5Tcommit=H5Tcommit2" + "H5Tdecode=H5Tdecode2" + "H5Tget_array_dims=H5Tget_array_dims2" + "H5Topen=H5Topen2" +) diff --git a/doxygen/aliases b/doxygen/aliases index 80236a08ac2..c8ecd03cd10 100644 --- a/doxygen/aliases +++ b/doxygen/aliases @@ -16,6 +16,7 @@ ALIASES += DWNURL="\RELURL/downloads/latest" # URL for RFCs ALIASES += RFCURL="\DOCURL/rfc" ALIASES += AEXURL="\HDFURL/archive/support/ftp/HDF5/examples" +ALIASES += RFCWIP="github.com/HDFGroup/hdf5doc/tree/master/RFCs" #branch name (develop, hdf5_2_0_0) ALIASES += SRCURL="github.com/HDFGroup/hdf5/blob/develop" ALIASES += SRCURL114="github.com/HDFGroup/hdf5/blob/hdf5_1.14.6" @@ -278,6 +279,7 @@ ALIASES += ref_vol_doc="VOL documentation" # RFCs ################################################################################ +ALIASES += ref_rfc20240422="Write-Ahead Log" ALIASES += ref_rfc20240129="Adding support for 16-bit floating point and Complex number datatypes to HDF" # Same RFC, but complex number datatypes was delayed to 2.0 ALIASES += ref_rfc20240129complex="Support for Complex number datatypes" diff --git a/doxygen/dox/IntroHDF5.dox b/doxygen/dox/IntroHDF5.dox index b0008355e52..3cb01256179 100644 --- a/doxygen/dox/IntroHDF5.dox +++ b/doxygen/dox/IntroHDF5.dox @@ -268,13 +268,13 @@ are usually similar, see @ref HDF5LIB For example:
  • -File Interface:
    • #H5Fopen (C)
    • #h5f.h5fopen_f (FORTRAN)
    • H5.H5Fopen (Java)
    +File Interface:
    • #H5Fopen (C)
    • \ref h5f::h5fopen_f (FORTRAN)
    • H5.H5Fopen (Java)
  • -Dataset Interface:
    • #H5Dopen (C)
    • #h5d.h5dopen_f (FORTRAN)
    • H5.H5Dopen (Java)
    +Dataset Interface:
    • #H5Dopen (C)
    • \ref h5d::h5dopen_f (FORTRAN)
    • H5.H5Dopen (Java)
  • -Dataspace interface:
    • #H5Sclose (C)
    • #h5s.h5sclose_f (FORTRAN)
    • H5.H5Sclose (Java)
    +Dataspace interface:
    • #H5Sclose (C)
    • \ref h5s::h5sclose_f (FORTRAN)
    • H5.H5Sclose (Java)
The HDF5 Python APIs use methods associated with specific objects. @@ -311,7 +311,7 @@ import numpy
  • FORTRAN:
    USE HDF5
    -and call #h5lib.h5open_f and #h5lib.h5close_f to initialize and close the HDF5 FORTRAN interface +and call \ref h5lib::h5open_f and `h5close_f` to initialize and close the HDF5 FORTRAN interface
  • Java:
    diff --git a/doxygen/dox/LearnBasics1.dox b/doxygen/dox/LearnBasics1.dox index 1933c692d36..4b0d2b3da1b 100644 --- a/doxygen/dox/LearnBasics1.dox +++ b/doxygen/dox/LearnBasics1.dox @@ -166,10 +166,10 @@ Keep the following in mind when looking at the example programs included in this - + - +
    File Interface: #h5f.h5fopen_f\ref h5f::h5fopen_f
    Dataset Interface:#h5d.h5dopen_f\ref h5d::h5dopen_f
    @@ -208,7 +208,7 @@ import numpy
  • FORTRAN:
    USE HDF5
    -and call #h5lib.h5open_f and #h5lib.h5close_f to initialize and close the HDF5 FORTRAN interface +and call \ref h5lib::h5open_f and `h5close_f` to initialize and close the HDF5 FORTRAN interface
  • Java:
    diff --git a/doxygen/dox/LearnBasics2.dox b/doxygen/dox/LearnBasics2.dox index 8d21c3b1c14..87be129b4f4 100644 --- a/doxygen/dox/LearnBasics2.dox +++ b/doxygen/dox/LearnBasics2.dox @@ -155,14 +155,14 @@ For details on compiling an HDF5 application: #H5Gcreate creates a group at the location specified by a location identifier and a name. The location identifier can be a file identifier or a group identifier and the name can be relative or absolute. -The first #H5Gcreate/#h5g.h5gcreate_f creates the group MyGroup +The first #H5Gcreate/\ref h5g::h5gcreate_f creates the group MyGroup in the root group of the specified file. -The second #H5Gcreate/#h5g.h5gcreate_f creates the group Group_A +The second #H5Gcreate/\ref h5g::h5gcreate_f creates the group Group_A in the group MyGroup in the root group of the specified file. Note that the parent group (MyGroup) already exists. -The third #H5Gcreate/#h5g.h5gcreate_f creates the group Group_B in the specified group. +The third #H5Gcreate/\ref h5g::h5gcreate_f creates the group Group_B in the specified group. \subsection secLBGrpCreateNamesExCont File Contents diff --git a/doxygen/dox/RFC.dox b/doxygen/dox/RFC.dox index 2237b94be07..136d36291ee 100644 --- a/doxygen/dox/RFC.dox +++ b/doxygen/dox/RFC.dox @@ -5,6 +5,8 @@ Navigate back: \ref index "Main" + + diff --git a/doxygen/dox/hdf5_1_8.dox b/doxygen/dox/hdf5_1_8.dox index 5eb173242e0..519da56057e 100644 --- a/doxygen/dox/hdf5_1_8.dox +++ b/doxygen/dox/hdf5_1_8.dox @@ -390,7 +390,7 @@ Release 1.8.17 if their removal causes no problems.

    In the Fortran Interface

    The following Fortran 2003 API has been added: -\li #h5t.h5tenum_insert_f +\li \ref h5t::h5tenum_insert_f Operation of the new Fortran 2003 version of this API is more consistent with the operation of the C API than was the Fortran 90 version. @@ -566,12 +566,12 @@ Additional overloads to the class Attribute to get an attribute's name for conve The following new Fortran subroutines have been added: Fortran2003 subroutines: -\li #h5p.h5pset_file_image_f -\li #h5p.h5pget_file_image_f -\li #h5f.h5fget_file_image_f (Added in Release 1.8.11, but not documented at that time.) +\li \ref h5p::h5pset_file_image_f +\li \ref h5p::h5pget_file_image_f +\li \ref h5f::h5fget_file_image_f (Added in Release 1.8.11, but not documented at that time.) The following Fortran subroutine has been changed: -\li #h5p.h5pset_chunk_cache_f - The values of the constants H5D_CHUNK_CACHE_NSLOTS_DFLT_F +\li \ref h5p::h5pset_chunk_cache_f - The values of the constants H5D_CHUNK_CACHE_NSLOTS_DFLT_F and H5D_CHUNK_CACHE_NBYTES_DFLT_F have been changed to INTEGER(KIND=size_t).

    Other New Features

    @@ -752,21 +752,21 @@ transition from HDF5 Release 1.8.10 to Release 1.8.11.

    The following new Fortran subroutines have been added

    Fortran90 subroutines: -\li #h5o.h5odecr_refcount_f -\li #h5o.h5oexists_by_name_f -\li #h5o.h5oget_comment_f -\li #h5o.h5oget_comment_by_name_f -\li #h5o.h5oincr_refcount_f -\li #h5o.h5oopen_by_idx_f -\li #h5o.h5oset_comment_f -\li #h5o.h5oset_comment_by_name_f +\li \ref h5o::h5odecr_refcount_f +\li \ref h5o::h5oexists_by_name_f +\li \ref h5o::h5oget_comment_f +\li \ref h5o::h5oget_comment_by_name_f +\li \ref h5o::h5oincr_refcount_f +\li \ref h5o::h5oopen_by_idx_f +\li \ref h5o::h5oset_comment_f +\li \ref h5o::h5oset_comment_by_name_f h5oclose_f was introduced in HDF5 Release 1.8.8 but remained undocumented until this release. Fortran2003 subroutines: -\li #h5o.h5oget_info_f -\li #h5o.h5oget_info_by_idx_f -\li #h5o.h5ovisit_by_name_f +\li \ref h5o::h5oget_info_f +\li \ref h5o::h5oget_info_by_idx_f +\li \ref h5o::h5ovisit_by_name_f

    New Feature: Dynamically Loaded Filters

    HDF5 now detects and dynamically loads external filters, reducing the need for an application to @@ -797,7 +797,7 @@ The return value of the following high-level C function has changed: returned size of of the dimension scale name (bug fix).

    In the Fortran subroutines

    -\li #h5p.h5pset_external_f and #h5p.h5pget_external_f - the type of the offset parameter has changed to +\li \ref h5p::h5pset_external_f and \ref h5p::h5pget_external_f - the type of the offset parameter has changed to INTEGER(KIND=OFF_T) to support 8-byte integers, matching the C type definition of off_t. \li The HDF5 Library now supports data conversion from enumeration to integer and floating-point numeric datatypes. @@ -828,7 +828,7 @@ transition from HDF5 Release 1.8.9 to Release 1.8.10. \li H5Pget_mpio_no_collective_cause The following new Fortran subroutine has been added: -\li #h5p.h5pget_mpio_actual_io_mode_f +\li \ref h5p::h5pget_mpio_actual_io_mode_f The syntax of the following high-level C function has changed: \li H5TBAget_fill - This function's return type has been changed to h5tri_t. A return value of 1 @@ -848,7 +848,7 @@ the transition from HDF5 Release 1.8.8 to Release 1.8.9. A new high level C function and Fortran subroutine were added to HDF5 Lite (H5LT) to determine whether an HDF5 path is correct and resolves to a valid HDF5 object: \li h5LTpath_valid -\li #h5lt.h5ltpath_valid_f +\li `h5ltpath_valid_f` The new file image operations feature consists of the following functions and their associated callbacks, struct, and ENUM. This feature enables an application to load a file into memory @@ -896,8 +896,8 @@ for those who may have missed its introduction:

    New Fortran Subroutines

    The following Fortran subroutines have been added in this release: -\li #h5lt.h5ltpath_valid_f -\li #h5o.h5ocopy_f +\li `h5ltpath_valid_f` +\li \ref h5o::h5ocopy_f \li h5fset_mpi_atomicity_f \li h5fget_mpi_atomicity_f @@ -905,7 +905,7 @@ Where a subroutine is part of a new HDF5 feature, that feature is described abov

    Fortran Subroutine with Changed Behavior

    The content of the buffer returned by the following Fortran subroutine has changed as noted: -\li #h5lt.h5ltget_attribute_string_f - If the returned buffer requires padding, #h5lt.h5ltget_attribute_string_f +\li `h5ltget_attribute_string_f` - If the returned buffer requires padding, `h5ltget_attribute_string_f` now employs space padding; this buffer was previously returned with a C NULL terminator.

    Command-line Utilities with New Options and/or Changed Behavior

    @@ -957,13 +957,13 @@ Terminology:

    New Fortran 2003-only subroutines

    New subroutines available only in Fortran 2003 environments: -\li #h5d.h5dvlen_reclaim_f -\li #h5e.h5eset_auto_f -\li #h5l.h5literate_by_name_f -\li #h5l.h5literate_f -\li #h5o.h5ovisit_f -\li #h5o.h5oget_info_by_name_f -\li #h5t.h5tconvert_f +\li \ref h5d::h5dvlen_reclaim_f +\li \ref h5e::h5eset_auto_f +\li \ref h5l::h5literate_by_name_f +\li \ref h5l::h5literate_f +\li \ref h5o::h5ovisit_f +\li \ref h5o::h5oget_info_by_name_f +\li \ref h5t::h5tconvert_f

    Subroutines with Fortran 90 versions and extended features in Fortran 2003 environments

    Subroutines in this section have extended support in Fortran 2003 environments, but are new or unchanged in Fortran 90 environments. @@ -971,44 +971,44 @@ Subroutines in this section have extended support in Fortran 2003 environments, All existing Fortran 90 subroutines, including those not mentioned below, are available in both Fortran 90 and Fortran 2003 environments. Subroutines with support for the derived type C_PTR in Fortran 2003 environments: -\li #h5p.h5pget_f -\li #h5p.h5pget_fill_value_f -\li #h5p.h5pinsert_f -\li #h5p.h5pregister_f -\li #h5p.h5pset_f -\li #h5p.h5pset_fill_value_f -\li #h5r.h5rcreate_f +\li \ref h5p::h5pget_f +\li \ref h5p::h5pget_fill_value_f +\li \ref h5p::h5pinsert_f +\li \ref h5p::h5pregister_f +\li \ref h5p::h5pset_f +\li \ref h5p::h5pset_fill_value_f +\li \ref h5r::h5rcreate_f \li h5rdereference_f -\li #h5r.h5rget_name_f -\li #h5r.h5rget_object_type_f +\li \ref h5r::h5rget_name_f +\li \ref h5r::h5rget_object_type_f Subroutines with support for the derived type C_PTR and a changed signature in Fortran 2003 environments: -\li #h5a.h5aread_f -\li #h5a.h5awrite_f -\li #h5d.h5dread_f -\li #h5d.h5dwrite_f +\li \ref h5a::h5aread_f +\li \ref h5a::h5awrite_f +\li \ref h5d::h5dread_f +\li \ref h5d::h5dwrite_f Subroutine with additional optional parameters in Fortran 2003 environments: -\li #h5p.h5pcreate_class_f +\li \ref h5p::h5pcreate_class_f

    New and updated Fortran 90 subroutines

    New Fortran 90 subroutines: -\li #h5p.h5pset_nbit_f -\li #h5p.h5pset_scaleoffset_f +\li \ref h5p::h5pset_nbit_f +\li \ref h5p::h5pset_scaleoffset_f Updated Fortran 90 subroutines: -\li #h5lib.h5open_f -\li #h5lib.h5close_f - has been modified in this release to close only the HDF5 Fortran +\li \ref h5lib::h5open_f +\li `h5close_f` - has been modified in this release to close only the HDF5 Fortran Library interface; it no longer closes the underlying HDF5 Library. -\li #h5lib.h5check_version_f -\li #h5lib.h5get_libversion_f -\li #h5lib.h5garbage_collect_f -\li #h5lib.h5dont_atexit_f +\li `h5check_version_f` +\li \ref h5lib::h5get_libversion_f +\li \ref h5lib::h5garbage_collect_f +\li \ref h5lib::h5dont_atexit_f

    New Fortran utility functions and derived types

    New Fortran utility functions: -\li #h5lib.h5offsetof Available only in Fortran 2003 environments. -\li #h5lib.h5kind_to_type Available in either Fortran environment. +\li h5offsetof Available only in Fortran 2003 environments. +\li `h5kind_to_type` Available in either Fortran environment. New Fortran derived types in Fortran 2003 environments: \li hvl_t Described in New Features. @@ -1016,15 +1016,15 @@ New Fortran derived types in Fortran 2003 environments:

    New high level Fortran interface

    New Fortran subroutines in the HDF5 Dimension Scale high-level interface, H5DS: -\li #h5ds.h5dsset_scale_f -\li #h5ds.h5dsattach_scale_f -\li #h5ds.h5dsdetach_scale_f -\li #h5ds.h5dsis_attached_f -\li #h5ds.h5dsis_scale_f -\li #h5ds.h5dsset_label_f -\li #h5ds.h5dsget_label_f -\li #h5ds.h5dsget_scale_name_f -\li #h5ds.h5dsget_num_scales_f +\li `h5dsset_scale_f` +\li `h5dsattach_scale_f` +\li `h5dsdetach_scale_f` +\li `h5dsis_attached_f` +\li `h5dsis_scale_f` +\li `h5dsset_label_f` +\li `h5dsget_label_f` +\li `h5dsget_scale_name_f` +\li `h5dsget_num_scales_f` These subtroutines are available in both Fortran 90 and Fortran 2003 environments. @@ -1123,15 +1123,15 @@ Two new flags have been added: Several h5ltmake_dataset\*\_f and h5ltread_dataset\*\_f subroutines have been modified to allow them to create or read arrays of up to seven dimensions. They had previously been limited to three dimensions. -\li #h5lt.h5ltmake_dataset_f +\li `h5ltmake_dataset_f` \li .h5ltmake_dataset_int_f \li .h5ltmake_dataset_float_f \li h5ltmake_dataset_double_f -\li #h5lt.h5ltread_dataset_f +\li `h5ltread_dataset_f` \li h5ltread_dataset_int_f \li h5ltread_dataset_float_f \li h5ltread_dataset_double_f -\li #h5tb.h5tbget_field_info_f has a new maxlen_out parameter. This parameter is optional. +\li `h5tbget_field_info_f` has a new maxlen_out parameter. This parameter is optional.

    Command-line Utilities with New Options

    \ref sec_cltools_h5diff has a new verbose with levels option to display additional attribute information: @@ -1281,8 +1281,8 @@ The overloaded forms of the following C++ member functions are new in this relea

    Fortran Subroutines with Changed Interface

    The link type parameter values associated with the following Fortran subroutines have changed in this release: -\li #h5l.h5lget_info_f -\li #h5l.h5lget_info_by_idx_f +\li \ref h5l::h5lget_info_f +\li \ref h5l::h5lget_info_by_idx_f Valid values for the parameter link_type have changed to the following: \li H5L_TYPE_HARD_F @@ -1334,9 +1334,9 @@ The function has also been changed to suppress the warning message entirely if

    Fortran Subroutines with Changed Syntax

    The following Fortran subroutines have changed syntax in this release: -\li #h5l.h5lget_info_f - The type of the parameter address has changed from INTEGER to INTEGER(HADDR_T). +\li \ref h5l::h5lget_info_f - The type of the parameter address has changed from INTEGER to INTEGER(HADDR_T). (This note added on 13 January 2010.) -\li #h5l.h5lget_info_by_idx_f - h5lget_info_by_idx_f (loc_id, group_name, index_field, order, n, +\li \ref h5l::h5lget_info_by_idx_f - h5lget_info_by_idx_f (loc_id, group_name, index_field, order, n, &link_type, f_corder_valid, corder, cset, address, val_size, &hdferr, lapl_id) - The parameters link_type, address, and val_size have been added; the parameter data_size has been removed. @@ -1378,10 +1378,10 @@ The following C functions are new for this release and are documented in the HDF

    Fortran Subroutines

    The following subroutines are new in this release: -\li #h5d.h5dget_access_plist_f -\li #h5i.h5iis_valid_f -\li #h5p.h5pset_chunk_cache_f -\li #h5p.h5pget_chunk_cache_f +\li \ref h5d::h5dget_access_plist_f +\li \ref h5i::h5iis_valid_f +\li \ref h5p::h5pset_chunk_cache_f +\li \ref h5p::h5pget_chunk_cache_f

    Function with Changed Behavior

    \li H5set_free_list_limits @@ -1422,7 +1422,7 @@ The following C functions are new for this release and are documented in the \re

    Fortran Subroutine

    The following subroutine is new in this release: -\li #h5t.h5tget_native_type_f +\li \ref h5t::h5tget_native_type_f

    New C++ Wrappers

    A number of C++ wrappers were added/removed. See RELEASE.txt for details. @@ -1436,9 +1436,9 @@ The following function syntaxes have changed; the affected return values and par

    Changed Fortran Subroutines

    The optional parameter mounted has been added to the following subroutines: -\li #h5g.h5gget_info_f -\li #h5g.h5gget_info_by_idx_f -\li #h5g.h5gget_info_by_name_f +\li \ref h5g::h5gget_info_f +\li \ref h5g::h5gget_info_by_idx_f +\li \ref h5g::h5gget_info_by_name_f Changed Data Structure \li H5G_info_t - A mounted filed has been added to the H5G_info_t struct. @@ -1519,108 +1519,108 @@ There are no new C functions for Release 1.8.1.

    Fortran subroutines

    The following Fortran subroutines are new for Release 1.8.1 and are documented in the HDF5 Reference Manual. \b H5A -\li #h5a.h5acreate_f -\li #h5a.h5acreate_by_name_f -\li #h5a.h5adelete_by_idx_f -\li #h5a.h5adelete_by_name_f -\li #h5a.h5aexists_f -\li #h5a.h5aexists_by_name_f -\li #h5a.h5aget_create_plist_f -\li #h5a.h5aget_info_f -\li #h5a.h5aget_info_by_idx_f -\li #h5a.h5aget_info_by_name_f -\li #h5a.h5aget_name_by_idx_f -\li #h5a.h5aget_storage_size_f -\li #h5a.h5aopen_f -\li #h5a.h5aopen_by_idx_f -\li #h5a.h5aopen_by_name_f -\li #h5a.h5arename_f -\li #h5a.h5arename_by_name_f +\li \ref h5a::h5acreate_f +\li \ref h5a::h5acreate_by_name_f +\li \ref h5a::h5adelete_by_idx_f +\li \ref h5a::h5adelete_by_name_f +\li \ref h5a::h5aexists_f +\li \ref h5a::h5aexists_by_name_f +\li \ref h5a::h5aget_create_plist_f +\li \ref h5a::h5aget_info_f +\li \ref h5a::h5aget_info_by_idx_f +\li \ref h5a::h5aget_info_by_name_f +\li \ref h5a::h5aget_name_by_idx_f +\li \ref h5a::h5aget_storage_size_f +\li \ref h5a::h5aopen_f +\li \ref h5a::h5aopen_by_idx_f +\li \ref h5a::h5aopen_by_name_f +\li \ref h5a::h5arename_f +\li \ref h5a::h5arename_by_name_f \b H5D -\li #h5d.h5dcreate_anon_f -\li #h5d.h5dcreate_f -\li #h5d.h5dopen_f -\li #h5d.h5dset_extent_f +\li \ref h5d::h5dcreate_anon_f +\li \ref h5d::h5dcreate_f +\li \ref h5d::h5dopen_f +\li `h5dset_extent_f` \b H5G -\li #h5g.h5gcreate_anon_f -\li #h5g.h5gcreate_f -\li #h5g.h5gget_create_plist_f -\li #h5g.h5gget_info_f -\li #h5g.h5gget_info_by_idx_f -\li #h5g.h5gget_info_by_name_f -\li #h5g.h5gopen_f +\li \ref h5g::h5gcreate_anon_f +\li \ref h5g::h5gcreate_f +\li \ref h5g::h5gget_create_plist_f +\li \ref h5g::h5gget_info_f +\li \ref h5g::h5gget_info_by_idx_f +\li \ref h5g::h5gget_info_by_name_f +\li \ref h5g::h5gopen_f \b H5L -\li #h5l.h5lcopy_f -\li #h5l.h5lcreate_external_f -\li #h5l.h5lcreate_hard_f -\li #h5l.h5lcreate_soft_f -\li #h5l.h5ldelete_f -\li #h5l.h5ldelete_by_idx_f -\li #h5l.h5lexists_f -\li #h5l.h5lget_info_f -\li #h5l.h5lget_info_by_idx_f -\li #h5l.h5lget_name_by_idx_f -\li #h5l.h5lmove_f +\li \ref h5l::h5lcopy_f +\li \ref h5l::h5lcreate_external_f +\li \ref h5l::h5lcreate_hard_f +\li \ref h5l::h5lcreate_soft_f +\li \ref h5l::h5ldelete_f +\li \ref h5l::h5ldelete_by_idx_f +\li \ref h5l::h5lexists_f +\li \ref h5l::h5lget_info_f +\li \ref h5l::h5lget_info_by_idx_f +\li \ref h5l::h5lget_name_by_idx_f +\li \ref h5l::h5lmove_f \b H5O -\li #h5o.h5olink_f -\li #h5o.h5oopen_f +\li \ref h5o::h5olink_f +\li \ref h5o::h5oopen_f \b H5P -\li #h5p.h5pget_attr_creation_order_f -\li #h5p.h5pget_attr_phase_change_f -\li #h5p.h5pget_char_encoding_f -\li #h5p.h5pget_copy_object_f -\li #h5p.h5pget_create_inter_group_f -\li #h5p.h5pget_data_transform_f +\li \ref h5p::h5pget_attr_creation_order_f +\li \ref h5p::h5pget_attr_phase_change_f +\li \ref h5p::h5pget_char_encoding_f +\li \ref h5p::h5pget_copy_object_f +\li \ref h5p::h5pget_create_inter_group_f +\li \ref h5p::h5pget_data_transform_f \li h5pget_elink_prefix_f -\li #h5p.h5pget_est_link_info_f -\li #h5p.h5pget_fapl_direct_f -\li #h5p.h5pget_link_creation_order_f -\li #h5p.h5pget_link_phase_change_f -\li #h5p.h5pget_local_heap_size_hint_f -\li #h5p.h5pget_nlinks_f -\li #h5p.h5pget_obj_track_times_f +\li \ref h5p::h5pget_est_link_info_f +\li \ref h5p::h5pget_fapl_direct_f +\li \ref h5p::h5pget_link_creation_order_f +\li \ref h5p::h5pget_link_phase_change_f +\li \ref h5p::h5pget_local_heap_size_hint_f +\li \ref h5p::h5pget_nlinks_f +\li \ref h5p::h5pget_obj_track_times_f \li h5pget_shared_mesg_index_f \li h5pget_shared_mesg_nindexes_f -\li #h5p.h5pset_attr_creation_order_f -\li #h5p.h5pset_attr_phase_change_f -\li #h5p.h5pset_char_encoding_f -\li #h5p.h5pset_copy_object_f -\li #h5p.h5pset_create_inter_group_f -\li #h5p.h5pset_data_transform_f +\li \ref h5p::h5pset_attr_creation_order_f +\li \ref h5p::h5pset_attr_phase_change_f +\li \ref h5p::h5pset_char_encoding_f +\li \ref h5p::h5pset_copy_object_f +\li \ref h5p::h5pset_create_inter_group_f +\li \ref h5p::h5pset_data_transform_f \li h5pset_elink_prefix_f -\li #h5p.h5pset_est_link_info_f -\li #h5p.h5pset_fapl_direct_f -\li #h5p.h5pset_libver_bounds_f -\li #h5p.h5pset_link_creation_order_f -\li #h5p.h5pset_link_phase_change_f -\li #h5p.h5pset_local_heap_size_hint_f -\li #h5p.h5pset_obj_track_times_f -\li #h5p.h5pset_nbit_f -\li #h5p.h5pset_nlinks_f -\li #h5p.h5pset_scaleoffset_f +\li \ref h5p::h5pset_est_link_info_f +\li \ref h5p::h5pset_fapl_direct_f +\li \ref h5p::h5pset_libver_bounds_f +\li \ref h5p::h5pset_link_creation_order_f +\li \ref h5p::h5pset_link_phase_change_f +\li \ref h5p::h5pset_local_heap_size_hint_f +\li \ref h5p::h5pset_obj_track_times_f +\li \ref h5p::h5pset_nbit_f +\li \ref h5p::h5pset_nlinks_f +\li \ref h5p::h5pset_scaleoffset_f \b H5R -\li #h5r.h5rget_name_f +\li \ref h5r::h5rget_name_f \b H5S -\li #h5s.h5sdecode_f -\li #h5s.h5sencode_f -\li #h5s.h5sextent_equal_f +\li \ref h5s::h5sdecode_f +\li \ref h5s::h5sencode_f +\li \ref h5s::h5sextent_equal_f \b H5T -\li #h5t.h5tcommit_anon_f -\li #h5t.h5tcommit_f -\li #h5t.h5tcommitted_f -\li #h5t.h5tcompiler_conv_f -\li #h5t.h5tdecode_f -\li #h5t.h5tencode_f -\li #h5t.h5tget_create_plist_f -\li #h5t.h5topen_f +\li \ref h5t::h5tcommit_anon_f +\li \ref h5t::h5tcommit_f +\li \ref h5t::h5tcommitted_f +\li \ref h5t::h5tcompiler_conv_f +\li \ref h5t::h5tdecode_f +\li \ref h5t::h5tencode_f +\li \ref h5t::h5tget_create_plist_f +\li \ref h5t::h5topen_f

    C++ wrappers

    There are no new C++ wrappers for Release 1.8.1. @@ -2131,13 +2131,13 @@ Symbols and preset values associated with the following functions, subroutines o
  • #H5Z_FILTER_SCALEOFFSET
  • Fortran90 subroutines: -\li #h5p.h5pget_filter_f -\li #h5p.h5pget_filter_by_id_f -\li #h5p.h5pmodify_filter_f -\li #h5p.h5premove_filter_f -\li #h5p.h5pset_filter_f -\li #h5z.h5zfilter_avail_f -\li #h5z.h5zget_filter_info_f - Two new filter identifiers are available for the filter or filter_id parameters:
      +\li \ref h5p::h5pget_filter_f +\li \ref h5p::h5pget_filter_by_id_f +\li \ref h5p::h5pmodify_filter_f +\li \ref h5p::h5premove_filter_f +\li \ref h5p::h5pset_filter_f +\li \ref h5z::h5zfilter_avail_f +\li \ref h5z::h5zget_filter_info_f - Two new filter identifiers are available for the filter or filter_id parameters:
      • H5Z_FILTER_NBIT_F
      • H5Z_FILTER_SCALEOFFSET_F
      diff --git a/doxygen/dox/sw_changes_1.10.dox b/doxygen/dox/sw_changes_1.10.dox index 526535e7fee..3132d1f9606 100644 --- a/doxygen/dox/sw_changes_1.10.dox +++ b/doxygen/dox/sw_changes_1.10.dox @@ -168,19 +168,19 @@ The following C++ wrapper was added:

      In the Fortran API

      The following Fortran wrappers were added or changed: -\li #h5f.h5fget_dset_no_attrs_hint_f - Wrappers for the dataset object header minimization calls. See #H5Fget_dset_no_attrs_hint. -\li #h5f.h5fset_dset_no_attrs_hint_f - Wrappers for the dataset object header minimization calls. See #H5Fset_dset_no_attrs_hint. -\li #h5p.h5pget_dset_no_attrs_hint_f - Wrappers for the dataset object header minimization calls. See #H5Pget_dset_no_attrs_hint. -\li #h5p.h5pset_dset_no_attrs_hint_f - Wrappers for the dataset object header minimization calls. See #H5Pset_dset_no_attrs_hint. -\li #h5o.h5ovisit_f - Added new Fortran 'fields' optional parameter. See #H5Ovisit2. -\li #h5o.h5oget_info_by_name_f - Added new Fortran 'fields' optional parameter. See #H5Oget_info_by_name2. -\li #h5o.h5oget_info_f - Added new Fortran 'fields' optional parameter. See #H5Oget_info2. -\li #h5o.h5oget_info_by_idx_f - Added new Fortran 'fields' optional parameter. See #H5Oget_info_by_idx2. -\li #h5o.h5ovisit_by_name_f - Added new Fortran 'fields' optional parameter. See #H5Ovisit_by_name2. +\li `h5fget_dset_no_attrs_hint_f` - Wrappers for the dataset object header minimization calls. See #H5Fget_dset_no_attrs_hint. +\li `h5fset_dset_no_attrs_hint_f` - Wrappers for the dataset object header minimization calls. See #H5Fset_dset_no_attrs_hint. +\li `h5pget_dset_no_attrs_hint_f` - Wrappers for the dataset object header minimization calls. See #H5Pget_dset_no_attrs_hint. +\li `h5pset_dset_no_attrs_hint_f` - Wrappers for the dataset object header minimization calls. See #H5Pset_dset_no_attrs_hint. +\li \ref h5o::h5ovisit_f - Added new Fortran 'fields' optional parameter. See #H5Ovisit2. +\li \ref h5o::h5oget_info_by_name_f - Added new Fortran 'fields' optional parameter. See #H5Oget_info_by_name2. +\li \ref h5o::h5oget_info_f - Added new Fortran 'fields' optional parameter. See #H5Oget_info2. +\li \ref h5o::h5oget_info_by_idx_f - Added new Fortran 'fields' optional parameter. See #H5Oget_info_by_idx2. +\li \ref h5o::h5ovisit_by_name_f - Added new Fortran 'fields' optional parameter. See #H5Ovisit_by_name2. The following Fortran utility function was added: -\li #h5lib.h5gmtime - converts (C) time_t structure to Fortran DATE AND TIME storage format +\li `h5gmtime` - converts (C) time_t structure to Fortran DATE AND TIME storage format A new Fortran derived type was added: \li c_h5o_info_t - This is interoperable with C's h5o_info_t. This is needed for callback functions which @@ -442,13 +442,13 @@ page, we list each feature and its associated C functions and Fortran wrappers. raw data, but it does rewrite HDF5 metadata.

      Collective Metadata I/O:

      -\li #H5Pset_coll_metadata_write and #h5p.h5pset_coll_metadata_write_f - Establishes I/O mode property setting, +\li #H5Pset_coll_metadata_write and `h5pset_coll_metadata_write_f` - Establishes I/O mode property setting, collective or independent, for metadata writes. -\li #H5Pget_coll_metadata_write and #h5p.h5pget_coll_metadata_write_f - Retrieves I/O mode property setting +\li #H5Pget_coll_metadata_write and `h5pget_coll_metadata_write_f` - Retrieves I/O mode property setting for metadata writes. -\li #H5Pset_all_coll_metadata_ops and #h5p.h5pset_all_coll_metadata_ops_f - Establishes I/O mode, collective +\li #H5Pset_all_coll_metadata_ops and `h5pset_all_coll_metadata_ops_f` - Establishes I/O mode, collective or independent, for metadata read operations. -\li #H5Pget_all_coll_metadata_ops and #h5p.h5pget_all_coll_metadata_ops_f - Retrieves I/O mode for metadata +\li #H5Pget_all_coll_metadata_ops and `h5pget_all_coll_metadata_ops_f` - Retrieves I/O mode for metadata read operations.

      Fine-tuning the Metadata Cache:

      @@ -486,34 +486,34 @@ when processing files employing the VDS feature: and handles the file and metadata appropriately.

      Virtual Dataset or VDS:

      -\li #H5Pset_virtual and #h5p.h5pset_virtual_f - Sets the mapping between virtual and source datasets. -\li #H5Pget_virtual_count and #h5p.h5pget_virtual_count_f - Retrieves the number of mappings for the +\li #H5Pset_virtual and `h5pset_virtual_f` - Sets the mapping between virtual and source datasets. +\li #H5Pget_virtual_count and `h5pget_virtual_count_f` - Retrieves the number of mappings for the virtual dataset. -\li #H5Pget_virtual_vspace and #h5p.h5pget_virtual_vspace_f - Retrieves a dataspace identifier for the +\li #H5Pget_virtual_vspace and `h5pget_virtual_vspace_f` - Retrieves a dataspace identifier for the selection within the virtual dataset used in the mapping. -\li #H5Pget_virtual_srcspace and #h5p.h5pget_virtual_srcspace_f - Retrieves a dataspace identifier +\li #H5Pget_virtual_srcspace and `h5pget_virtual_srcspace_f` - Retrieves a dataspace identifier for the selection within the source dataset used in the mapping. -\li #H5Pget_virtual_dsetname and #h5p.h5pget_virtual_dsetname_f - Retrieves the name of a source +\li #H5Pget_virtual_dsetname and `h5pget_virtual_dsetname_f` - Retrieves the name of a source dataset used in the mapping. -\li #H5Pget_virtual_filename and #h5p.h5pget_virtual_filename_f - Retrieves the filename of a source +\li #H5Pget_virtual_filename and `h5pget_virtual_filename_f` - Retrieves the filename of a source dataset used in the mapping. -\li #H5Pset_virtual_printf_gap and #h5p.h5pset_virtual_printf_gap_f - Sets maximum number of missing +\li #H5Pset_virtual_printf_gap and `h5pset_virtual_printf_gap_f` - Sets maximum number of missing source files and/or datasets with printf-style names when getting the extent of an unlimited virtual dataset. -\li #H5Pget_virtual_printf_gap and #h5p.h5pget_virtual_printf_gap_f - Returns maximum number of missing +\li #H5Pget_virtual_printf_gap and `h5pget_virtual_printf_gap_f` - Returns maximum number of missing source files and/or datasets with printf-style names when getting the extent for an unlimited virtual dataset. -\li #H5Pset_virtual_view and #h5p.h5pset_virtual_view_f - Sets the view of the virtual dataset to include +\li #H5Pset_virtual_view and `h5pset_virtual_view_f` - Sets the view of the virtual dataset to include or exclude missing mapped elements. -\li #H5Pget_virtual_view and #h5p.h5pget_virtual_view_f - Retrieves the view of a virtual dataset. +\li #H5Pget_virtual_view and `h5pget_virtual_view_f` - Retrieves the view of a virtual dataset.

      Supporting Functions:

      -\li #H5Sis_regular_hyperslab and #h5s.h5sis_regular_hyperslab_f - Determines whether a hyperslab selection is regular. -\li #H5Sget_regular_hyperslab and #h5s.h5sget_regular_hyperslab_f - Retrieves a regular hyperslab selection. +\li #H5Sis_regular_hyperslab and `h5sis_regular_hyperslab_f` - Determines whether a hyperslab selection is regular. +\li #H5Sget_regular_hyperslab and `h5sget_regular_hyperslab_f` - Retrieves a regular hyperslab selection.

      Modified Functions:

      The following pre-exising functions have been modified to understand virtual datasets. -\li #H5Pset_layout and #h5p.h5pset_layout_f - Specifies the layout to be used for a dataset. +\li #H5Pset_layout and `h5pset_layout_f` - Specifies the layout to be used for a dataset. Virtual dataset, #H5D_VIRTUAL, has been added to the list of layouts available through this function. -\li #H5Pget_layout and #h5p.h5pget_layout_f - Retrieves the layout in use for a dataset. +\li #H5Pget_layout and `h5pget_layout_f` - Retrieves the layout in use for a dataset. Virtual dataset, #H5D_VIRTUAL, has been added to the list of layouts.

      Partial Edge Chunks:

      diff --git a/doxygen/dox/sw_changes_1.12.dox b/doxygen/dox/sw_changes_1.12.dox index d25ce7d6769..9a3cc59c696 100644 --- a/doxygen/dox/sw_changes_1.12.dox +++ b/doxygen/dox/sw_changes_1.12.dox @@ -176,26 +176,26 @@ list the specific new feature that they were added for. In the Fortran Interface (main library)
      Following are the new or changed APIs introduced in HDF5-1.12.0. Those introduced with a new feature list the specific new feature that they were added for. -\li #h5f.h5fget_fileno_f - Retrieves a file's file number that uniquely identifies the open file -\li #h5f.h5fis_accessible_f - Determines if a file can be opened with a given fapl -\li #h5l.h5lget_info_f - The function h5lget_info_f is mapped to #H5Lget_info2. -\li #h5l.h5lget_info_by_idx_f - The function h5lget_info_by_idx_f is mapped to #H5Lget_info_by_idx2. -\li #h5l.h5literate_f - The function h5literate_f is mapped to #H5Literate2. -\li #h5l.h5literate_by_name_f - The function h5literate_by_name_f is mapped to #H5Literate_by_name2. -\li #h5o.h5oopen_by_token_f - Opens an object in an HDF5 file using its VOL independent token -\li #h5o.h5otoken_cmp_f - Compares two VOL connector object tokens -\li #h5p.h5pget_vol_id_f - Returns the identifier of the current VOL connector -\li #h5p.h5pset_vol_f - Set the file VOL connector for a file access property list -\li #h5vl.h5vlclose_f - Closes a VOL connector identifier -\li #h5vl.h5vlget_connector_id_f - Retrieves the VOL connector identifier for a given object identifier -\li #h5vl.h5vlget_connector_id_by_name_f - Retrieves the identifier for a registered VOL connector name -\li #h5vl.h5vlget_connector_id_by_value_f - Retrieves the identifier for a registered VOL connector value -\li #h5vl.h5vlget_connector_name_f - Retrieves the connector name for the VOL associated with the object or file identifier -\li #h5vl.h5vlis_connector_registered_by_name_f - Tests whether a VOL class has been registered or not for a connector name -\li #h5vl.h5vlis_connector_registered_by_value_f - Tests whether a VOL class has been registered or not for a connector value -\li #h5vl.h5vlregister_connector_by_name_f - Registers a new VOL connector by name -\li #h5vl.h5vlregister_connector_by_value_f - Registers a new VOL connector by connector value -\li #h5vl.h5vlunregister_connector_f - Removes a VOL connector identifier from the library +\li \ref h5f::h5fget_fileno_f - Retrieves a file's file number that uniquely identifies the open file +\li \ref h5f::h5fis_accessible_f - Determines if a file can be opened with a given fapl +\li h5lget_info_f - The function h5lget_info_f is mapped to #H5Lget_info2. +\li h5lget_info_by_idx_f - The function h5lget_info_by_idx_f is mapped to #H5Lget_info_by_idx2. +\li \ref h5l::h5literate_f - The function h5literate_f is mapped to #H5Literate2. +\li \ref h5l::h5literate_by_name_f - The function h5literate_by_name_f is mapped to #H5Literate_by_name2. +\li h5oopen_by_token_f - Opens an object in an HDF5 file using its VOL independent token +\li h5otoken_cmp_f - Compares two VOL connector object tokens +\li \ref h5p::h5pget_vol_id_f - Returns the identifier of the current VOL connector +\li \ref h5p::h5pset_vol_f - Set the file VOL connector for a file access property list +\li \ref h5vl::h5vlclose_f - Closes a VOL connector identifier +\li \ref h5vl::h5vlget_connector_id_f - Retrieves the VOL connector identifier for a given object identifier +\li \ref h5vl::h5vlget_connector_id_by_name_f - Retrieves the identifier for a registered VOL connector name +\li \ref h5vl::h5vlget_connector_id_by_value_f - Retrieves the identifier for a registered VOL connector value +\li \ref h5vl::h5vlget_connector_name_f - Retrieves the connector name for the VOL associated with the object or file identifier +\li \ref h5vl::h5vlis_connector_registered_by_name_f - Tests whether a VOL class has been registered or not for a connector name +\li \ref h5vl::h5vlis_connector_registered_by_value_f - Tests whether a VOL class has been registered or not for a connector value +\li \ref h5vl::h5vlregister_connector_by_name_f - Registers a new VOL connector by name +\li \ref h5vl::h5vlregister_connector_by_value_f - Registers a new VOL connector by connector value +\li \ref h5vl::h5vlunregister_connector_f - Removes a VOL connector identifier from the library

      In the C++ Wrapper

      \li H5File::getFileNum - See #H5Fget_fileno diff --git a/doxygen/dox/sw_changes_1.14.dox b/doxygen/dox/sw_changes_1.14.dox index 56442aaa48e..7df52fb739f 100644 --- a/doxygen/dox/sw_changes_1.14.dox +++ b/doxygen/dox/sw_changes_1.14.dox @@ -94,20 +94,20 @@ Following are the new APIs introduced in HDF5-1.14.3. \li #H5Pget_actual_selection_io_mode - Retrieves the type(s) of I/O performed on raw data

      In the Fortran Interface

      -\li #h5lib.h5get_free_list_sizes_f - Gets the current size of the free lists used to manage memory -\li #h5d.h5dwrite_chunk_f - Writes a raw data chunk from a buffer directly to a dataset in a file -\li #h5d.h5dread_chunk_f - Reads a raw data chunk directly from a dataset in a file into a buffer -\li #h5f.h5fget_info_f - Retrieves global file information -\li #h5l.h5lvisit_f - Recursively visits all links starting from a specified group -\li #h5l.h5lvisit_by_name_f - Recursively visits all links starting from a specified group -\li #h5p.h5pget_no_selection_io_cause_f - Retrieves the cause for not performing selection or vector I/O on the last parallel I/O call -\li #h5p.h5pget_mpio_no_collective_cause_f - Retrieves local and global causes that broke collective I/O on the last parallel I/O call -\li #h5s.h5sselect_shape_same_f - Checks if two selections are the same shape -\li #h5s.h5sselect_intersect_block_f - Checks if current selection intersects with a block -\li #h5p.h5pget_file_space_page_size_f - Gets the file space page size for a file creation property list -\li #h5p.h5pset_file_space_page_size_f - Sets the file space page size for a file creation property list -\li #h5p.h5pget_file_space_strategy_f - Gets the file space handling strategy and persisting free-space values for a file creation property list -\li #h5p.h5pset_file_space_strategy_f - Sets the file space handling strategy and persisting free-space values for a file creation property list +\li `h5get_free_list_sizes_f` - Gets the current size of the free lists used to manage memory +\li \ref h5d::h5dwrite_chunk_f - Writes a raw data chunk from a buffer directly to a dataset in a file +\li \ref h5d::h5dread_chunk_f - Reads a raw data chunk directly from a dataset in a file into a buffer +\li `h5fget_info_f` - Retrieves global file information +\li \ref h5l::h5lvisit_f - Recursively visits all links starting from a specified group +\li `h5lvisit_by_name_f` - Recursively visits all links starting from a specified group +\li \ref h5p::h5pget_no_selection_io_cause_f - Retrieves the cause for not performing selection or vector I/O on the last parallel I/O call +\li \ref h5p::h5pget_mpio_no_collective_cause_f - Retrieves local and global causes that broke collective I/O on the last parallel I/O call +\li `h5sselect_shape_same_f` - Checks if two selections are the same shape +\li `h5sselect_intersect_block_f` - Checks if current selection intersects with a block +\li \ref h5p::h5pget_file_space_page_size_f - Gets the file space page size for a file creation property list +\li \ref h5p::h5pset_file_space_page_size_f - Sets the file space page size for a file creation property list +\li \ref h5p::h5pget_file_space_strategy_f - Gets the file space handling strategy and persisting free-space values for a file creation property list +\li `h5pset_file_space_strategy_f` - Sets the file space handling strategy and persisting free-space values for a file creation property list In addition, there are other new Fortran functions including the Fortran async APIs and the Fortran VOL capability definitions. @@ -148,10 +148,10 @@ Following are the new APIs introduced in HDF5-1.14.1. \li #H5Pset_selection_io - Sets the selection I/O mode

      In the Fortran Interface

      -\li #h5p.h5pget_modify_write_buf_f - Retrieves the "modify write buffer" property -\li #h5p.h5pget_selection_io_f - Retrieves the selection I/O mode -\li #h5p.h5pset_modify_write_buf_f - Allows the library to modify the contents of the write buffer -\li #h5p.h5pset_selection_io_f - Sets the selection I/O mode +\li \ref h5p::h5pget_modify_write_buf_f - Retrieves the "modify write buffer" property +\li \ref h5p::h5pget_selection_io_f - Retrieves the selection I/O mode +\li \ref h5p::h5pset_modify_write_buf_f - Allows the library to modify the contents of the write buffer +\li \ref h5p::h5pset_selection_io_f - Sets the selection I/O mode \subsection subsec_rel_spec_114_change_0versus12_2 Release 1.14.0 versus Release 1.12.2 diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index 7a936d500d1..a7c1d4bd558 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -144,25 +144,17 @@ add_executable (H5match_types target_include_directories (H5match_types PRIVATE "${HDF5_SRC_BINARY_DIR};${HDF5_SRC_INCLUDE_DIRS};${HDF5_F90_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") # check if a pre-generated H5fortran_types.F90 file is present if (NOT EXISTS "${HDF5_GENERATED_SOURCE_DIR}/H5fortran_types.F90") + if (CMAKE_CROSSCOMPILING AND NOT CMAKE_CROSSCOMPILING_EMULATOR) + message (FATAL_ERROR "No pre-generated H5fortran_types.F90 file found - cannot generate without cross-compiling emulator") + endif () message (STATUS "No pre-generated H5fortran_types.F90 file found - generating one") # execute the H5match_types program - if (CMAKE_CROSSCOMPILING) - add_custom_command (TARGET H5match_types POST_BUILD - BYPRODUCTS ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h ${HDF5_F90_BINARY_DIR}/H5fortran_types.F90 - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} - COMMAND $ - WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR} - COMMENT "Generating the H5fortran_types.F90 and H5f90i_gen.h files" - ) - else () - add_custom_command (TARGET H5match_types POST_BUILD - BYPRODUCTS ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h ${HDF5_F90_BINARY_DIR}/H5fortran_types.F90 - COMMAND $ - WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR} - COMMENT "Generating the H5fortran_types.F90 and H5f90i_gen.h files" - ) - endif () + add_custom_command (TARGET H5match_types POST_BUILD + BYPRODUCTS ${HDF5_F90_BINARY_DIR}/H5f90i_gen.h ${HDF5_F90_BINARY_DIR}/H5fortran_types.F90 + COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ + WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR} + COMMENT "Generating the H5fortran_types.F90 and H5f90i_gen.h files" + ) else () message (STATUS "Using existing pre-generated H5fortran_types.F90 file") add_custom_command ( @@ -337,24 +329,16 @@ set (f90_F_GEN_SOURCES ) # check if a pre-generated H5fortran_types.F90 file is present if (NOT EXISTS "${HDF5_GENERATED_SOURCE_DIR}/H5_gen.F90") - message (STATUS "No pre-generated H5_gen.F90 file found - generating one") - if (CMAKE_CROSSCOMPILING) - add_custom_command (TARGET H5_buildiface POST_BUILD - BYPRODUCTS ${HDF5_F90_BINARY_DIR}/H5_gen.F90 - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} - COMMAND $ - WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR} - COMMENT "Generating the H5_gen.F90 file" - ) - else () - add_custom_command (TARGET H5_buildiface POST_BUILD - BYPRODUCTS ${HDF5_F90_BINARY_DIR}/H5_gen.F90 - COMMAND $ - WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR} - COMMENT "Generating the H5_gen.F90 file" - ) + if (CMAKE_CROSSCOMPILING AND NOT CMAKE_CROSSCOMPILING_EMULATOR) + message (FATAL_ERROR "No pre-generated H5_gen.F90 file found - cannot generate without cross-compiling emulator") endif () + message (STATUS "No pre-generated H5_gen.F90 file found - generating one") + add_custom_command (TARGET H5_buildiface POST_BUILD + BYPRODUCTS ${HDF5_F90_BINARY_DIR}/H5_gen.F90 + COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ + WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR} + COMMENT "Generating the H5_gen.F90 file" + ) else () message (STATUS "Using existing pre-generated H5_gen.F90 file") add_custom_command ( @@ -662,7 +646,7 @@ if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") endif () set (_PKG_CONFIG_EXTRA_CFLAGS) -set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${PKG_CONFIG_LIBNAME}") +set (_PKG_CONFIG_LIBS "-l${PKG_CONFIG_LIBNAME}") set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") set (_PKG_CONFIG_LIBS_PRIVATE "-l${HDF5_F90_C_LIB_NAME}") set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") diff --git a/fortran/src/H5FDff.F90 b/fortran/src/H5FDff.F90 index a3c4fcfc7b8..69dc2121f32 100644 --- a/fortran/src/H5FDff.F90 +++ b/fortran/src/H5FDff.F90 @@ -151,7 +151,9 @@ CONTAINS SUBROUTINE h5fdsubfiling_get_file_mapping_f(file_id, filenames, num_files, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: file_id -#ifdef H5_FORTRAN_HAVE_CHAR_ALLOC +#ifdef H5_DOXYGEN + CHARACTER(LEN=:), ALLOCATABLE, DIMENSION(:), INTENT(OUT) :: filenames +#elif defined(H5_FORTRAN_HAVE_CHAR_ALLOC) CHARACTER(LEN=:), ALLOCATABLE, DIMENSION(:), INTENT(OUT) :: filenames #else INTEGER, PARAMETER :: DEFAULT_MAX_LEN = 8192 @@ -160,6 +162,7 @@ SUBROUTINE h5fdsubfiling_get_file_mapping_f(file_id, filenames, num_files, hdfer INTEGER(SIZE_T), INTENT(OUT) :: num_files INTEGER, INTENT(OUT) :: hdferr +#ifndef H5_DOXYGEN TYPE(C_PTR) :: filenames_ptr INTEGER(C_SIZE_T) :: c_num_files INTEGER(C_INT) :: ret_val @@ -275,6 +278,7 @@ SUBROUTINE h5fdsubfiling_get_file_mapping_f(file_id, filenames, num_files, hdfer ! Free the C memory allocated by H5FDsubfiling_get_file_mapping ret_val = h5free_string_array_memory_c(filenames_ptr, c_num_files) ! Note: We ignore the return value of the free function since the main operation succeeded +#endif END SUBROUTINE h5fdsubfiling_get_file_mapping_f diff --git a/fortran/test/CMakeLists.txt b/fortran/test/CMakeLists.txt index 4e2e79d1f5e..a21b50ac087 100644 --- a/fortran/test/CMakeLists.txt +++ b/fortran/test/CMakeLists.txt @@ -103,24 +103,16 @@ if (HDF5_ENABLE_FORMATTERS) endif () if (NOT EXISTS "${HDF5_GENERATED_SOURCE_DIR}/tf_gen.F90") - message (STATUS "No pre-generated tf_gen.F90 file found - generating one") - if (CMAKE_CROSSCOMPILING) - add_custom_command (TARGET H5_test_buildiface POST_BUILD - BYPRODUCTS ${HDF5_FORTRAN_TESTS_BINARY_DIR}/tf_gen.F90 - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} - COMMAND $ - WORKING_DIRECTORY ${HDF5_FORTRAN_TESTS_BINARY_DIR} - COMMENT "Generating the tf_gen.F90 static file" - ) - else () - add_custom_command (TARGET H5_test_buildiface POST_BUILD - BYPRODUCTS ${HDF5_FORTRAN_TESTS_BINARY_DIR}/tf_gen.F90 - COMMAND $ - WORKING_DIRECTORY ${HDF5_FORTRAN_TESTS_BINARY_DIR} - COMMENT "Generating the tf_gen.F90 static file" - ) + if (CMAKE_CROSSCOMPILING AND NOT CMAKE_CROSSCOMPILING_EMULATOR) + message (FATAL_ERROR "No pre-generated tf_gen.F90 file found - cannot generate without cross-compiling emulator") endif () + message (STATUS "No pre-generated tf_gen.F90 file found - generating one") + add_custom_command (TARGET H5_test_buildiface POST_BUILD + BYPRODUCTS ${HDF5_FORTRAN_TESTS_BINARY_DIR}/tf_gen.F90 + COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ + WORKING_DIRECTORY ${HDF5_FORTRAN_TESTS_BINARY_DIR} + COMMENT "Generating the tf_gen.F90 static file" + ) else () message (STATUS "Using existing pre-generated tf_gen.F90 file") add_custom_command ( diff --git a/fortran/test/CMakeTests.cmake b/fortran/test/CMakeTests.cmake index fe837cb7181..b5bf72bcec8 100644 --- a/fortran/test/CMakeTests.cmake +++ b/fortran/test/CMakeTests.cmake @@ -92,7 +92,6 @@ endif () #set_tests_properties (FORTRAN_testhdf5_fortran PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s") set_tests_properties (FORTRAN_testhdf5_fortran PROPERTIES FIXTURES_REQUIRED clear_testhdf5_fortran - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("FORTRAN_testhdf5_fortran" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (FORTRAN_testhdf5_fortran PROPERTIES DISABLED true) @@ -119,7 +118,6 @@ endif () set_tests_properties (FORTRAN_testhdf5_fortran_1_8 PROPERTIES DEPENDS FORTRAN_testhdf5_fortran FIXTURES_REQUIRED clear_testhdf5_fortran - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("FORTRAN_testhdf5_fortran_1_8" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (FORTRAN_testhdf5_fortran_1_8 PROPERTIES DISABLED true) @@ -146,7 +144,6 @@ endif () set_tests_properties (FORTRAN_fortranlib_test_F03 PROPERTIES DEPENDS FORTRAN_testhdf5_fortran_1_8 FIXTURES_REQUIRED clear_testhdf5_fortran - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("FORTRAN_fortranlib_test_F03" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (FORTRAN_fortranlib_test_F03 PROPERTIES DISABLED true) @@ -171,7 +168,6 @@ else () endif () set_tests_properties (FORTRAN_vol_connector PROPERTIES FIXTURES_REQUIRED clear_testhdf5_fortran - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("FORTRAN_vol_connector" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (FORTRAN_vol_connector PROPERTIES DISABLED true) @@ -188,7 +184,6 @@ add_test ( ) set_tests_properties (FORTRAN_fflush1 PROPERTIES DEPENDS FORTRAN_flush1-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("FORTRAN_fflush1" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (FORTRAN_fflush1 PROPERTIES DISABLED true) @@ -200,7 +195,6 @@ add_test ( COMMAND $ ) set_tests_properties (FORTRAN_fflush2 PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS FORTRAN_fflush1 ) if ("FORTRAN_fflush2" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt index 4ad1987391b..e72c1b86f60 100644 --- a/hl/c++/src/CMakeLists.txt +++ b/hl/c++/src/CMakeLists.txt @@ -106,7 +106,7 @@ if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") endif () set (_PKG_CONFIG_EXTRA_CFLAGS) -set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${PKG_CONFIG_LIBNAME}") +set (_PKG_CONFIG_LIBS "-l${PKG_CONFIG_LIBNAME}") set (_PKG_CONFIG_REQUIRES "${HDF5_CPP_LIB_NAME} = ${HDF5_PACKAGE_VERSION}, ${HDF5_HL_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") set (_PKG_CONFIG_LIBS_PRIVATE) set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_CPP_LIB_NAME} = ${HDF5_PACKAGE_VERSION}, ${HDF5_HL_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") diff --git a/hl/c++/test/CMakeTests.cmake b/hl/c++/test/CMakeTests.cmake index eab6cead7a6..8eec601939d 100644 --- a/hl/c++/test/CMakeTests.cmake +++ b/hl/c++/test/CMakeTests.cmake @@ -44,7 +44,6 @@ else () endif () set_tests_properties (HL_CPP_ptableTest PROPERTIES DEPENDS HL_CPP_ptableTest-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("HL_CPP_ptableTest" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (HL_CPP_ptableTest PROPERTIES DISABLED true) diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt index 8acde782b5e..42a00bdc3fe 100644 --- a/hl/fortran/src/CMakeLists.txt +++ b/hl/fortran/src/CMakeLists.txt @@ -123,24 +123,16 @@ set (HDF5_HL_F90_F_BASE_SOURCES ) if (NOT EXISTS "${HDF5_GENERATED_SOURCE_DIR}/H5LTff_gen.F90") - message (STATUS "No pre-generated H5LTff_gen.F90 H5TBff_gen.F90 file found - generating one") - if (CMAKE_CROSSCOMPILING) - add_custom_command (TARGET H5HL_buildiface POST_BUILD - BYPRODUCTS ${HDF5_HL_F90_BINARY_DIR}/H5LTff_gen.F90 ${HDF5_HL_F90_BINARY_DIR}/H5TBff_gen.F90 - COMMAND ${CMAKE_COMMAND} - ARGS -E env ${CROSSCOMPILING_PATH} - COMMAND $ - WORKING_DIRECTORY ${HDF5_HL_F90_BINARY_DIR} - COMMENT "Generating the H5LTff_gen.F90, H5TBff_gen.F90 files" - ) - else () - add_custom_command (TARGET H5HL_buildiface POST_BUILD - BYPRODUCTS ${HDF5_HL_F90_BINARY_DIR}/H5LTff_gen.F90 ${HDF5_HL_F90_BINARY_DIR}/H5TBff_gen.F90 - COMMAND $ - WORKING_DIRECTORY ${HDF5_HL_F90_BINARY_DIR} - COMMENT "Generating the H5LTff_gen.F90, H5TBff_gen.F90 files" - ) + if (CMAKE_CROSSCOMPILING AND NOT CMAKE_CROSSCOMPILING_EMULATOR) + message (FATAL_ERROR "No pre-generated H5LTff_gen.F90 H5TBff_gen.F90 file found - cannot generate without cross-compiling emulator") endif () + message (STATUS "No pre-generated H5LTff_gen.F90 H5TBff_gen.F90 file found - generating one") + add_custom_command (TARGET H5HL_buildiface POST_BUILD + BYPRODUCTS ${HDF5_HL_F90_BINARY_DIR}/H5LTff_gen.F90 ${HDF5_HL_F90_BINARY_DIR}/H5TBff_gen.F90 + COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ + WORKING_DIRECTORY ${HDF5_HL_F90_BINARY_DIR} + COMMENT "Generating the H5LTff_gen.F90, H5TBff_gen.F90 files" + ) else () message (STATUS "Using existing pre-generated H5LTff_gen.F90 H5TBff_gen.F90 file") add_custom_command ( @@ -381,7 +373,7 @@ if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") endif () set (_PKG_CONFIG_EXTRA_CFLAGS) -set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${PKG_CONFIG_LIBNAME}") +set (_PKG_CONFIG_LIBS "-l${PKG_CONFIG_LIBNAME}") set (_PKG_CONFIG_REQUIRES "${HDF5_F90_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") set (_PKG_CONFIG_LIBS_PRIVATE "-l${HDF5_HL_F90_C_LIB_NAME}") set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_F90_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") diff --git a/hl/fortran/test/CMakeTests.cmake b/hl/fortran/test/CMakeTests.cmake index 717433c0228..9097991778e 100644 --- a/hl/fortran/test/CMakeTests.cmake +++ b/hl/fortran/test/CMakeTests.cmake @@ -67,7 +67,6 @@ macro (ADD_H5_FORTRAN_TEST file) set_tests_properties (HL_FORTRAN_f90_${file} PROPERTIES FIXTURES_REQUIRED clear_HL_FORTRAN_test WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("HL_FORTRAN_f90_${file}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (HL_FORTRAN_f90_${file} PROPERTIES DISABLED true) diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt index f8a3ba5956a..ad24d1dcb6d 100644 --- a/hl/src/CMakeLists.txt +++ b/hl/src/CMakeLists.txt @@ -139,7 +139,7 @@ if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") endif () set (_PKG_CONFIG_EXTRA_CFLAGS) -set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${PKG_CONFIG_LIBNAME}") +set (_PKG_CONFIG_LIBS "-l${PKG_CONFIG_LIBNAME}") set (_PKG_CONFIG_REQUIRES "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") set (_PKG_CONFIG_LIBS_PRIVATE) set (_PKG_CONFIG_REQUIRES_PRIVATE "${HDF5_LIB_NAME} = ${HDF5_PACKAGE_VERSION}") diff --git a/hl/test/CMakeTests.cmake b/hl/test/CMakeTests.cmake index 563eb8dfc85..366b2041ced 100644 --- a/hl/test/CMakeTests.cmake +++ b/hl/test/CMakeTests.cmake @@ -133,7 +133,7 @@ macro (HL_ADD_TEST hl_name) endif () set_tests_properties (${current_test_name} PROPERTIES FIXTURES_REQUIRED clear_test_hl - ENVIRONMENT "srcdir=${HDF5_HL_TEST_BINARY_DIR};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_HL_TEST_BINARY_DIR}" WORKING_DIRECTORY ${HDF5_HL_TEST_BINARY_DIR} ) if ("HL_${hl_name}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/hl/tools/h5watch/CMakeTests.cmake b/hl/tools/h5watch/CMakeTests.cmake index c74c82bbf35..b2eeb504651 100644 --- a/hl/tools/h5watch/CMakeTests.cmake +++ b/hl/tools/h5watch/CMakeTests.cmake @@ -84,7 +84,6 @@ add_custom_target (H5WATCH_files ALL COMMENT "Copying files needed by H5WATCH te set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES DEPENDS ${last_test} FIXTURES_REQUIRED gen_test_watch - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5WATCH_ARGS-h5watch-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES DISABLED true) @@ -111,7 +110,6 @@ add_custom_target (H5WATCH_files ALL COMMENT "Copying files needed by H5WATCH te set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES DEPENDS ${last_test} FIXTURES_REQUIRED gen_test_watch - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5WATCH_ARGS-h5watch-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES DISABLED true) @@ -136,7 +134,6 @@ add_custom_target (H5WATCH_files ALL COMMENT "Copying files needed by H5WATCH te set_tests_properties (H5WATCH-${resultfile} PROPERTIES DEPENDS ${last_test} FIXTURES_REQUIRED gen_test_watch - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5WATCH-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5WATCH-${resultfile} PROPERTIES DISABLED true) @@ -159,7 +156,6 @@ add_test ( ) set_tests_properties (H5WATCH-SWMR_INCOMPAT PROPERTIES FIXTURES_SETUP swmr_vfd_check_compat - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) # Remove any output file left over from previous test run @@ -202,7 +198,6 @@ add_test (NAME H5WATCH-h5watchgentest COMMAND $) set_tests_properties (H5WATCH-h5watchgentest PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5WATCH-clearall-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set_tests_properties (H5WATCH-h5watchgentest PROPERTIES FIXTURES_SETUP gen_test_watch) set_tests_properties (H5WATCH-h5watchgentest PROPERTIES FIXTURES_REQUIRED swmr_vfd_check_compat) diff --git a/java/hdf/hdf5lib/H5.java b/java/hdf/hdf5lib/H5.java index 233cfd67c87..628a543711c 100644 --- a/java/hdf/hdf5lib/H5.java +++ b/java/hdf/hdf5lib/H5.java @@ -133,7 +133,7 @@ import org.slf4j.LoggerFactory; * *
    * + * (i.e., pointer to Any) * * *
    RFC IDTitle
    2025-11-15 Open access at dl.acm.org/doi/full/10.1145/3731599.3767557
    2024-04-22 \ref_rfc20240422
    2022-08-19 \ref_rfc20220819
    2021-05-28 \ref_rfc20210528
    2021-02-19 \ref_rfc20210219
    void *
    - * (i.e., pointer to `Any')
    Special -- see @ref HDFARRAY
    @@ -194,11 +194,11 @@ import org.slf4j.LoggerFactory; * @endcode * *

    - * where ``void *'' means that the data may be any valid numeric type, and is a contiguous block of bytes that + * where "void *" means that the data may be any valid numeric type, and is a contiguous block of bytes that * is the data for a multi-dimensional array. The other parameters describe the dimensions, rank, and datatype * of the array ondisk (source) and in memory (destination). *

    - * For Java, this ``ANY'' is a problem, as the type of data must always be declared. Furthermore, + * For Java, this "ANY" is a problem, as the type of data must always be declared. Furthermore, * multidimensional arrays are definitely not laid out contiguously in memory. It would be infeasible * to declare a separate routine for every combination of number type and dimensionality. For that reason, the * @ref HDFARRAY HDFArray class is used to discover the type, shape, and @@ -206,7 +206,7 @@ import org.slf4j.LoggerFactory; * static C order. *

    * The upshot is that any Java array of numbers (either primitive or sub-classes of type Number) can be - * passed as an ``Object'', and the Java API will translate to and from the appropriate packed array of bytes + * passed as an "Object", and the Java API will translate to and from the appropriate packed array of bytes * needed by the C library. So the function above would be declared: * * @code diff --git a/java/src-jni/hdf/hdf5lib/H5.java b/java/src-jni/hdf/hdf5lib/H5.java index 3a70628f12c..069e80a0b94 100644 --- a/java/src-jni/hdf/hdf5lib/H5.java +++ b/java/src-jni/hdf/hdf5lib/H5.java @@ -108,7 +108,7 @@ import org.slf4j.LoggerFactory; * * * void *
    - * (i.e., pointer to `Any') + * (i.e., pointer to `Any`) * Special -- see @ref HDFARRAY * * @@ -181,7 +181,7 @@ import org.slf4j.LoggerFactory; * static native C order. *

    * The upshot is that any Java array of numbers (either primitive or sub-classes of type Number) can be - * passed as an ``Object'', and the Java API will translate to and from the appropriate packed array of bytes + * passed as an `Object`, and the Java API will translate to and from the appropriate packed array of bytes * needed by the C library. So the function above would be declared: * * @code diff --git a/release_docs/CHANGELOG.md b/release_docs/CHANGELOG.md index 650e5b0400b..5829c5c217d 100644 --- a/release_docs/CHANGELOG.md +++ b/release_docs/CHANGELOG.md @@ -153,6 +153,11 @@ We would like to thank the many HDF5 community members who contributed to this r ## Configuration +### Removed force-setting of `ZLIB_USE_EXTERNAL` and `SZIP_USE_EXTERNAL` CMake variables to `ON` + + When the CMake variable `HDF5_ALLOW_EXTERNAL_SUPPORT` is set to `GIT` or `TGZ`, the library's build process previously force-set the `ZLIB_USE_EXTERNAL` and `SZIP_USE_EXTERNAL` variables to `ON`. This prevented the ability to independently choose whether zlib and szip are built from system libraries or from external sources. These variables are no longer forced to `ON` in this case and can be set individually. + + ## Tools ## Performance diff --git a/release_docs/HDF5_Library_2.0.0_Migration_Guide.md b/release_docs/HDF5_Library_2.0.0_Migration_Guide.md new file mode 100644 index 00000000000..f696294e6c8 --- /dev/null +++ b/release_docs/HDF5_Library_2.0.0_Migration_Guide.md @@ -0,0 +1,316 @@ +# HDF5 2.0.0 Library Migration Guide + +## Myth busters up front + +- [Upgrading HDF5 upgrades my files in-place and breaks my archive](#myth-upgrading-hdf5-upgrades-my-files-in-place-and-breaks-my-archive) +- [2.0.0 means I must rewrite my entire application](#myth-200-means-i-must-rewrite-my-entire-application) +- [All files written by 2.0.0 are unreadable by 1.x](#myth-all-files-written-by-200-are-unreadable-by-1x) +- [If something breaks, it must be the file format](#myth-if-something-breaks-it-must-be-the-file-format) + +## Introduction + +The [HDF5 library version 2.0.0](https://www.hdfgroup.org/2025/11/10/release-of-hdf5-2-0-0-newsletter-207/) was released on **November 10, 2025**. +This guide is written for “ordinary” HDF5 users: people who have real applications and workflows, want the upgrade to be boring, and mainly need clarity on **risk, compatibility, and a practical upgrade plan**. + +With few exceptions, the recommendations in this guide apply to the 1.x family of releases. However, if you are contemplating an HDF5 library upgrade, our recommendation is to move directly to 2.0.0 to take advantage of the latest features and improvements. + +## What HDF5 2.0.0 means (and what it doesn’t) + +### “2.0.0” does not mean “your existing HDF5 files are obsolete” + +HDF5’s compatibility story is mostly about **file format compatibility**, and HDF5 provides a forward/backward compatibility guarantee in plain terms: the latest library can read files created by earlier versions, and older libraries can read newer files *as long as the file doesn’t use features introduced later*. + +### “2.0.0” does mean “expect *some* API/ABI churn” + +HDF5 2.0.0 introduces new APIs and behavioral changes. While standard user APIs are preserved via compatibility macros, a small set of advanced developer APIs (specifically in the VOL layer) were removed entirely. +That said, most users can avoid code edits initially by using the **API Compatibility Macros**, which were created specifically to reduce migration pain. + +## The three kinds of compatibility you should care about + +### 1) File compatibility (the one most users worry about) + +**Default file creation behavior changed in 2.0.0.** By default, new files will use the **1.8-era format** (rather than the oldest/earliest format), for better performance and space usage. +The practical headline is: + +- **Files created with 2.0.0 defaults are still readable by HDF5 as old as 1.8.0**. +- If you must support readers older than 1.8, you can explicitly set version bounds with `H5Pset_libver_bounds()`. + +Also note: **some new datatypes/features are inherently not readable by older libraries**. For example, **the new complex number datatype class** is not readable by previous HDF5 versions. + +### 2) API compatibility (whether your source code compiles) + +This is where the **API compatibility macros** matter. They allow old source to compile against newer libraries by mapping calls like `H5Lvisit` to older/newer “versioned” implementations. + +In 2.0.0, the default API mapping is the **2.0.x (“v200”)** set. +But you can compile your application using an older API mapping (e.g., 1.14.x or 1.10.x) using `-DH5_USE_114_API`, `-DH5_USE_110_API`, etc. + +### 3) ABI/runtime compatibility (whether your binary runs with the library you think it runs with) + +Even if your code compiles, many “it worked yesterday” failures come from: + +- linking against one HDF5 at build time but loading a different one at runtime +- mixing HDF5 from system packages + Conda + Spack + vendor MPI stacks +- plugins/filters built for a different HDF5 than the one you’re loading + +This guide includes checks to catch that early. + +## A simple decision tree + +### Step 1: Do you *produce* HDF5 files for other people/tools? + +- **No** → You mostly care about “can I read my existing files with 2.0.0?” (Usually yes.) +- **Yes** → Identify the **oldest HDF5 library version** that must be able to read the files you produce. + + - If the oldest reader is **≥ 1.8.0**, 2.0.0 defaults are likely fine. + - If the oldest reader is **< 1.8.0**, plan to set `H5Pset_libver_bounds()` explicitly. + +### Step 2: Are you a “plain HDF5 API user,” or do you touch advanced internals? + +Most users are “plain API” users and won’t hit removals. But if you use VOL/VFD internals or niche calls, skim the removed API list; some functions were removed in 2.0.0. + +### Step 3: Do you build HDF5 from source? + +If yes, be aware HDF5 2.0.0 transitioned to **CMake-only builds**. +(Autotools is no longer used in HDF5 itself.) +Your *application* can still use whatever build system you want. + +## Recommended upgrade strategies + +### Strategy A: “Zero/low code-change” migration (recommended starting point) + +**Goal:** upgrade the library first, keep your application stable. + +1. Install/build HDF5 2.0.0 +2. Rebuild your application **with an application API mapping** that matches what it was originally written for: + + - `-DH5_USE_114_API` (if your codebase assumes 1.14-style APIs) + - `-DH5_USE_110_API` (if it’s older 1.10-era) + - etc. +3. Run tests, validate read/write behavior. +4. Only then consider modernizing specific calls. + +### Strategy B: Targeted modernization (small edits, big payoff) + +If you hit compile errors, they’re often concentrated in a small set: + +- signature changes like `H5Dread_chunk()`, `H5Tdecode()`, `H5Iregister_type()` +- removed APIs (usually advanced) + +Fix those, keep everything else on compatibility macros. + +### Strategy C: “New API only” hardening (later, not day one) + +Eventually, you may want to build without deprecated symbols / deprecated mappings for cleanliness, but it’s not the fastest path to an upgrade. (The macro docs lay out an incremental plan for doing this safely.) + +## Pre-upgrade checklist + +Use this when you’re planning the change (before installing anything). + +### Compatibility requirements + +- [ ] Identify the **oldest reader** that must open files you create (your own tools, collaborators, archived pipelines, vendor software, etc.). +- [ ] If you need **< 1.8 compatibility**, plan to set `H5Pset_libver_bounds()` for file creation. +- [ ] Decide whether you will allow **new 2.0.0-only features** (e.g., complex datatypes). If you need older readers, avoid those features or use established conventions. + +### Application inventory + +- [ ] Record how you currently build/link: + + - compiler + flags + - shared vs static HDF5 + - MPI/parallel HDF5 usage + - compression filters/plugins +- [ ] Identify whether you call any of these (known 2.0.0 signature changes): + + - `H5Dread_chunk()`, `H5Tdecode()`, `H5Iregister_type()` +- [ ] Identify whether you call any of the removed APIs (advanced users): + + - `H5FDperform_init()`, `H5VLpeek_connector_id_by_name()`, `H5VLpeek_connector_id_by_value()`, `H5VLfinish_lib_state()`, `H5VLstart_lib_state()`, etc. + +### Runtime hygiene (prevents 80% of “mystery” failures) + +- [ ] Ensure you can run a command that prints the HDF5 version at runtime (e.g., `H5check_version()` in a tiny test binary). +- [ ] Plan to install 2.0.0 **side-by-side** with the old library first (don’t overwrite system HDF5 unless you control the whole environment). + +## During-upgrade checklist + +### Install/build HDF5 2.0.0 + +- [ ] If building HDF5 from source: note HDF5 moved to **CMake-only builds**. +- [ ] If using ROS3 / S3 workflows: be aware the ROS3 VFD backend changed and now depends on `aws-c-s3` when built with ROS3. + +### Rebuild your application (start with compatibility macros) + +- [ ] Compile with the appropriate `H5_USE_*_API` application mapping: + + - default behavior in 2.0.0 is effectively `H5_USE_200_API` (v200). + - use `H5_USE_114_API`, `H5_USE_110_API`, etc. to “pin” to the API level your code expects. +- [ ] If you’re unsure what the installed library’s default API mapping is, check `libhdf5.settings` (it records things like “Default API mapping: v200” and whether deprecated symbols are enabled). +- [ ] If you’re on Windows and using shared libraries, ensure you set `H5_BUILT_AS_DYNAMIC_LIB` in your application build. + +### Smoke tests (quick confidence) + +- [ ] Open and read representative existing files (small + large + “weird” ones). +- [ ] Write a new file, reopen it, run `h5dump`/`h5diff`-style validations (or your own validators). +- [ ] If you distribute files to older readers: test opening the newly created file with that older version (or in a container). + +## Post-upgrade checklist + +### Functional correctness + +- [ ] Run your full application test suite. +- [ ] Validate a handful of “golden” HDF5 outputs with structural diff tooling. + +### Compatibility confirmation (only if needed) + +- [ ] If you must support older readers, confirm you set version bounds intentionally (don’t rely on tribal knowledge). +- [ ] Add an automated test that creates a file and verifies your chosen compatibility policy. + +### Performance sanity + +HDF5 2.0.0 includes major VDS improvements (up to ~2500% faster VDS read/write in the release messaging). + +- [ ] If you use Virtual Datasets heavily, benchmark before/after. +- [ ] If you don’t use VDS, still spot-check any I/O hotspots. + +## Representative migration examples + +### Example 1: “No code changes” rebuild using an application mapping + +**Command-line build (conceptual):** + +```bash +h5cc -DH5_USE_114_API my_app.c -o my_app +``` + +The macro documentation explicitly lists `-DH5_USE_114_API`, `-DH5_USE_110_API`, etc. as application mapping options. +The HDF5 download page also gives an example of building a 1.10-era application against 2.0.0 using `-DH5_USE_110_API`. + +**CMake example:** + +```cmake +find_package(HDF5 REQUIRED COMPONENTS C) +add_executable(my_app main.c) +target_link_libraries(my_app PRIVATE HDF5::HDF5) + +# If your codebase expects 1.14 APIs: +target_compile_definitions(my_app PRIVATE H5_USE_114_API) +``` + +**Why this works:** the compatibility macros choose the appropriate “versioned” implementation based on (1) how the library was built and (2) what you defined when compiling your app. + +### Example 2: Fixing a signature change cleanly (H5Dread_chunk) + +In 2.0.0, `H5Dread_chunk()` has a signature change (and maps to the new signature by default unless you configure older mappings). + +What to do in practice: + +- If you want minimal changes now: build with the older API mapping (Strategy A). +- If you want to modernize this call: update to the newer form and handle the buffer sizing safely. + +The release-specific notes describe that `H5Dread_chunk()` gained a new parameter, and the old form was renamed (deprecated) while the new one is the recommended target. + +**Modernized usage pattern (illustrative):** + +```c +size_t buf_size = my_buf_capacity; +herr_t status = H5Dread_chunk2(dset_id, dxpl_id, offset, &filters, + buf, &buf_size); + +if (status < 0) { + /* handle error */ +} + +/* If buf_size got updated, you can reallocate and retry, etc. */ +``` + +(Exact error-handling policy is application-specific, but the *idea* is: treat the extra parameter as a safe “tell me how big this needs to be” mechanism.) + +### Example 3: Creating files that older HDF5 can read + +HDF5 2.0.0 changes default file creation behavior to the 1.8-era format. +If you need broader backward compatibility, explicitly set version bounds: + +```c +hid_t fapl = H5Pcreate(H5P_FILE_ACCESS); + +/* Make an intentional compatibility choice for file creation */ +H5Pset_libver_bounds(fapl, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST); + +hid_t file = H5Fcreate("out.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl); +``` + +The forum announcement about the defaults explicitly calls out using `H5Pset_libver_bounds()` to ensure backward compatibility when needed. + +**Important caveat:** if you adopt **2.0.0-only features** (like the new complex datatype class), older HDF5 versions will not be able to read them. +So: “set bounds” + “avoid incompatible features” go together if you truly need older-reader support. + +### Example 4: “It doesn’t compile”: removed APIs + +If your build breaks with missing symbols, check whether you use APIs that were removed in 2.0.0. The release-specific “software changes” page lists removed public APIs, including several VOL-related functions and `H5FDperform_init()`. + +Practical approach: + +1. Identify the missing symbol(s). +2. Confirm they’re in the removed list. +3. Search for the recommended replacements in the 2.0.0 reference/manual and release notes (some removals reflect internal refactors; you may need to change approach rather than rename a call). + +## Myths and confusion to clear up + +### Myth: “Upgrading HDF5 upgrades my files in-place and breaks my archive” + +Reality: opening old files with a new library is a normal use case; the HDF5 library’s compatibility guarantee is designed for this. +The main way you “break” compatibility is by **writing new files with newer features** and expecting older readers to understand them. + +### Myth: “2.0.0 means I must rewrite my entire application” + +Reality: you usually don’t. The API compatibility macros exist specifically to avoid large-scale edits and provide a bridge from old APIs to new ones. + +### Myth: “All files written by 2.0.0 are unreadable by 1.x” + +Reality: by default, 2.0.0 writes files using the 1.8-era format and those files are expected to be readable by HDF5 1.8.0 and newer. +If you need older compatibility, explicitly set bounds. + +### Myth: “If something breaks, it must be the file format” + +Reality: more often it’s... + +- a build-time vs runtime library mismatch +- a plugin/filter mismatch +- an API signature change in a specific function + +## Troubleshooting quick hits + +### “My old app compiles, but crashes / behaves oddly” + +- Confirm at runtime you’re loading the HDF5 you think you are (avoid mixed installs). +- Check whether you use plugins/filters and whether they match the loaded HDF5. + +### “My files created on system A won’t open on system B” + +- Check the reader’s HDF5 version. Default-created 2.0.0 files are intended to be readable by 1.8.0+. +- If system B is older than 1.8.0, set `H5Pset_libver_bounds()` in the writer. + +### “I use ROS3 and now my build changed” + +- 2.0.0 switched the ROS3 S3 backend and it now requires `aws-c-s3` to build that feature. + +### “Tools output changed” + +- `h5dump` added `--lformat` and its XML output mode is deprecated. + +## A “good default” migration plan + +If you want an opinionated plan that reduces fear: + +1. Install HDF5 2.0.0 side-by-side. +2. Rebuild your application with `-DH5_USE_114_API` (or your historical API level). +3. Run your test suite + open/write a representative set of files. +4. If you distribute files, decide and document your “oldest supported reader.” +5. Add `H5Pset_libver_bounds()` explicitly if that policy requires it. +6. Modernize only the few changed APIs you actually hit (e.g., the signature-change trio). +7. Later: migrate toward the latest API mapping and (optionally) reduce deprecated usage following the incremental plan outlined in the compatibility macro docs. + +## Acknowledgments + +This material is based upon work supported by the National Science Foundation under Federal Award No. 2534078. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0c0b129da0b..70aa3cd13e4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1353,6 +1353,8 @@ endif () #----------------------------------------------------------------------------- # Create pkgconfig files #----------------------------------------------------------------------------- +include (${HDF_CONFIG_DIR}/HDF5Pkgconfig.cmake) + set (_PKG_CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX}) set (_PKG_CONFIG_EXEC_PREFIX \${prefix}) set (_PKG_CONFIG_LIBDIR \${exec_prefix}/${HDF5_INSTALL_LIB_DIR}) @@ -1366,96 +1368,28 @@ if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") endif () set (_PKG_CONFIG_EXTRA_CFLAGS) -set (_PKG_CONFIG_LIBS "${_PKG_CONFIG_LIBS} -l${PKG_CONFIG_LIBNAME}") +set (_PKG_CONFIG_LIBS "-l${PKG_CONFIG_LIBNAME}") set (_PKG_CONFIG_REQUIRES) set (_PKG_CONFIG_LIBS_PRIVATE) set (_PKG_CONFIG_REQUIRES_PRIVATE) -# Process LINK_LIBS and LINK_COMP_LIBS for private dependencies -# to add to pkg-config files. Note that, for simplicity, the below -# assumes dependency libraries don't have pkg-config support. -foreach (lib ${LINK_LIBS}) - # If this is a regular library, add it to the list of - # libraries for the Libs.private field. Otherwise, do - # special processing for library targets. - if (NOT TARGET ${lib}) - # Avoid generator expressions related to flags for now. - # A more complete solution will be needed in order to - # correctly evaluate these. - string (GENEX_STRIP "${lib}" lib_genex_stripped) - if ("${lib}" STREQUAL "${lib_genex_stripped}") - set (_PKG_CONFIG_LIBS_PRIVATE "${_PKG_CONFIG_LIBS_PRIVATE} -l${lib}") - endif () - - continue () - endif () - - # If the target isn't an imported target, it's probably - # one that we created ourselves and set the OUTPUT_NAME - # property for. This is a fragile assumption, but should - # work for now. If the library is an imported target, we - # have to do more special processing. - get_target_property (lib_is_imported ${lib} IMPORTED) - if (NOT lib_is_imported) - get_target_property (libname ${lib} OUTPUT_NAME) - if (NOT "${libname}" MATCHES "libname-NOTFOUND") - set (_PKG_CONFIG_LIBS_PRIVATE "${_PKG_CONFIG_LIBS_PRIVATE} -l${libname}") - else () - message (WARNING "library name not retrieved for library ${lib}") - endif () - - continue () - endif () - - # Attempt to retrieve anything needed from the imported target - get_target_property (lib_interface_compile_opts ${lib} INTERFACE_COMPILE_OPTIONS) - if (lib_interface_compile_opts) - foreach (compile_opt ${lib_interface_compile_opts}) - # Avoid generator expressions related to flags for now. - # A more complete solution will be needed in order to - # correctly evaluate these. - string (GENEX_STRIP "${compile_opt}" compile_opt_genex_stripped) - if ("${compile_opt}" STREQUAL "${compile_opt_genex_stripped}") - set (_PKG_CONFIG_EXTRA_CFLAGS "${_PKG_CONFIG_EXTRA_CFLAGS} ${compile_opt}") - endif () - endforeach () - endif () - - # For now, naively assume that any libraries listed are in the form - # -llibname and can be directly added to the pkg-config files. This - # is not always the case and more sophisticated processing of libraries - # will be needed eventually. - get_target_property (lib_interface_link_libs ${lib} INTERFACE_LINK_LIBRARIES) - if (lib_interface_link_libs) - foreach (interface_link_lib ${lib_interface_link_libs}) - set (lib_namespace_substr -1) - - # Simple heuristic to filter out library dependencies of a target - # that are targets themselves. More complex processing is needed - # here to get the full list of libraries to be linked. - string (FIND "${interface_link_lib}" "::" lib_namespace_substr) - if (NOT lib_namespace_substr EQUAL -1) - message (WARNING "filtered out library dependency ${interface_link_lib} of library ${lib} when generating pkg-config file") - continue () - endif () - - # Avoid generator expressions related to flags for now. - # A more complete solution will be needed in order to - # correctly evaluate these. - string (GENEX_STRIP "${interface_link_lib}" interface_link_lib_genex_stripped) - if ("${interface_link_lib}" STREQUAL "${interface_link_lib_genex_stripped}") - set (_PKG_CONFIG_LIBS_PRIVATE "${_PKG_CONFIG_LIBS_PRIVATE} ${interface_link_lib}") - endif () - endforeach() +# Process LINK_LIBS and LINK_COMP_LIBS for dependencies to add to pkg-config +# files. Note that, for simplicity, the below assumes dependency libraries +# don't have pkg-config support. +unset (pkg_config_lib_list) +foreach (lib ${LINK_LIBS} ${LINK_COMP_LIBS}) + # Get library flags for pkg-config files; ignore cflags as these should + # be private library dependencies + extract_lib_pkgconfig_info (${lib} lib_dep_flags lib_cflags lib_skipped) + if (NOT lib_skipped AND lib_dep_flags) + list (APPEND pkg_config_lib_list "${lib_dep_flags}") endif () endforeach () -# The settings for the compression libs depends on if they have pkconfig support -# Assuming they don't -foreach (libs ${LINK_COMP_LIBS}) - get_target_property (libname ${libs} OUTPUT_NAME) - set (_PKG_CONFIG_LIBS_PRIVATE "${_PKG_CONFIG_LIBS_PRIVATE} -l${libname}") -endforeach () +# Convert flag lists into strings for pkg-config files +list (REMOVE_DUPLICATES pkg_config_lib_list) +string (REPLACE ";" " " pkg_config_lib_list "${pkg_config_lib_list}") +set (_PKG_CONFIG_LIBS_PRIVATE "${pkg_config_lib_list}") configure_file ( ${HDF_CONFIG_DIR}/libhdf5.pc.in diff --git a/src/H5FDsubfiling/H5FDsubfiling.c b/src/H5FDsubfiling/H5FDsubfiling.c index fe2f6cdf953..26d04f29a78 100644 --- a/src/H5FDsubfiling/H5FDsubfiling.c +++ b/src/H5FDsubfiling/H5FDsubfiling.c @@ -1851,12 +1851,10 @@ H5FD__subfiling_truncate(H5FD_t *_file, hid_t H5_ATTR_UNUSED dxpl_id, bool H5_AT if (H5FD__subfiling__truncate_sub_files(file->context_id, eoa, file->comm) < 0) HGOTO_ERROR(H5E_VFL, H5E_CANTUPDATE, FAIL, "subfile truncate request failed"); -#if 0 /* TODO: Should be truncated only to size of superblock metadata */ /* Truncate the HDF5 stub file */ if (file->mpi_rank == 0) if (H5FD_truncate(file->stub_file, closing) < 0) HGOTO_ERROR(H5E_VFL, H5E_CANTUPDATE, FAIL, "stub file truncate request failed"); -#endif /* Reset last file I/O information */ file->pos = HADDR_UNDEF; @@ -2118,8 +2116,9 @@ H5FD__subfiling_io_helper(H5FD_subfiling_t *file, size_t io_count, H5FD_mem_t ty HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, "write to subfile failed"); /* - * Mirror superblock writes to the stub file so that legacy HDF5 - * applications can check what type of file they are reading + * Mirror superblock and object header writes to the stub file + * so that legacy HDF5 applications can check what type of file + * they are reading */ if (H5FD__subfiling_mirror_writes_to_stub(file, u32_io_count, types, addrs, sizes, (const void **)bufs) < 0) @@ -2228,8 +2227,9 @@ H5FD__subfiling_io_helper(H5FD_subfiling_t *file, size_t io_count, H5FD_mem_t ty HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, "write to subfile failed"); /* - * Mirror superblock writes to the stub file so that legacy HDF5 - * applications can check what type of file they are reading + * Mirror superblock and object header writes to the stub file + * so that legacy HDF5 applications can check what type of file + * they are reading */ if (H5FD__subfiling_mirror_writes_to_stub(file, final_vec_len, io_types_ptr, io_addrs_ptr, io_sizes_ptr, (const void **)io_bufs_ptr) < 0) @@ -2284,13 +2284,13 @@ done: * * Purpose: Mirrors write calls to the Subfiling stub file so that * legacy HDF5 applications can check what type of file they - * are reading. Only superblock I/O is mirrored to the stub - * file and only if that I/O comes from MPI rank 0. This - * means that file metadata could be missed if it comes from - * other MPI ranks (such as when using a distributed metadata - * write strategy), but, at least currently, we generally only - * care about the first few bytes of the file being properly - * written to the stub file. + * are reading. Only superblock and object header I/O is + * mirrored to the stub file and only if that I/O comes from + * MPI rank 0. This means that file metadata could be missed + * if it comes from other MPI ranks (such as when using a + * distributed metadata write strategy), but, at least + * currently, we generally only care about the first few bytes + * of the file being properly written to the stub file. * * Return: SUCCEED/FAIL * @@ -2300,18 +2300,18 @@ static herr_t H5FD__subfiling_mirror_writes_to_stub(H5FD_subfiling_t *file, uint32_t count, H5FD_mem_t types[], haddr_t addrs[], size_t sizes[], const void *bufs[]) { - const void **copied_bufs = NULL; - H5FD_mem_t *copied_types = NULL; - haddr_t *copied_addrs = NULL; - size_t *copied_sizes = NULL; - H5FD_mem_t type = H5FD_MEM_DEFAULT; - size_t io_size = 0; - bool all_super_writes = true; - bool some_super_writes = false; - uint32_t super_count = 0; - bool extend_types = false; - bool extend_sizes = false; - herr_t ret_value = SUCCEED; + const void **copied_bufs = NULL; + H5FD_mem_t *copied_types = NULL; + haddr_t *copied_addrs = NULL; + size_t *copied_sizes = NULL; + H5FD_mem_t type = H5FD_MEM_DEFAULT; + size_t io_size = 0; + bool all_super_or_ohdr_writes = true; + bool some_super_or_ohdr_writes = false; + uint32_t super_count = 0; + bool extend_types = false; + bool extend_sizes = false; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE @@ -2332,29 +2332,30 @@ H5FD__subfiling_mirror_writes_to_stub(H5FD_subfiling_t *file, uint32_t count, H5 type = types[i]; } - if (type == H5FD_MEM_SUPER) { - some_super_writes = true; + if (type == H5FD_MEM_SUPER || type == H5FD_MEM_OHDR) { + some_super_or_ohdr_writes = true; super_count++; } else - all_super_writes = false; + all_super_or_ohdr_writes = false; /* If we find H5FD_MEM_NOLIST, we can stop looking at array entries */ if (extend_types) { - if (type == H5FD_MEM_SUPER) + if (type == H5FD_MEM_SUPER || type == H5FD_MEM_OHDR) super_count += (count - (uint32_t)i) - 1; /* Account for remaining elements */ break; } } - if (all_super_writes) { + if (all_super_or_ohdr_writes) { if (H5FD_write_vector(file->stub_file, count, types, addrs, sizes, bufs) < 0) - HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, "couldn't write superblock information to stub file"); + HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, + "couldn't write superblock/object header information to stub file"); } - else if (some_super_writes) { + else if (some_super_or_ohdr_writes) { uint32_t vec_len = 0; - /* Copy I/O vectors and strip out non-superblock I/O */ + /* Copy I/O vectors and strip out non-superblock and non-object header I/O */ if (NULL == (copied_types = H5MM_malloc(super_count * sizeof(*copied_types)))) HGOTO_ERROR(H5E_VFL, H5E_CANTALLOC, FAIL, "can't allocate copy of I/O types array"); @@ -2372,8 +2373,8 @@ H5FD__subfiling_mirror_writes_to_stub(H5FD_subfiling_t *file, uint32_t count, H5 if (i > 0 && types[i] == H5FD_MEM_NOLIST) { extend_types = true; - /* End early if none of the remaining memory types are H5FD_MEM_SUPER */ - if (type != H5FD_MEM_SUPER) + /* End early if none of the remaining memory types are H5FD_MEM_SUPER or H5FD_MEM_OHDR */ + if (type != H5FD_MEM_SUPER && type != H5FD_MEM_OHDR) break; } else @@ -2387,7 +2388,7 @@ H5FD__subfiling_mirror_writes_to_stub(H5FD_subfiling_t *file, uint32_t count, H5 io_size = sizes[i]; } - if (type != H5FD_MEM_SUPER) + if (type != H5FD_MEM_SUPER && type != H5FD_MEM_OHDR) continue; copied_types[vec_len] = type; @@ -2401,7 +2402,8 @@ H5FD__subfiling_mirror_writes_to_stub(H5FD_subfiling_t *file, uint32_t count, H5 if (H5FD_write_vector(file->stub_file, vec_len, copied_types, copied_addrs, copied_sizes, copied_bufs) < 0) - HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, "couldn't write superblock information to stub file"); + HGOTO_ERROR(H5E_VFL, H5E_WRITEERROR, FAIL, + "couldn't write superblock/object header information to stub file"); } done: diff --git a/src/H5Gpublic.h b/src/H5Gpublic.h index dd760e152db..3788539c934 100644 --- a/src/H5Gpublic.h +++ b/src/H5Gpublic.h @@ -544,7 +544,7 @@ H5_DLL herr_t H5Gclose_async(hid_t group_id, hid_t es_id); * An object has a certain type. The first few numbers are reserved for use * internally by HDF5. Users may add their own types with higher values. The * values are never stored in the file -- they only exist while an application - * is running. An object may satisfy the `isa' function for more than one type. + * is running. An object may satisfy the `isa` function for more than one type. * * \deprecated */ diff --git a/src/H5Rpublic.h b/src/H5Rpublic.h index 0ac174fdb5d..6f981ae3860 100644 --- a/src/H5Rpublic.h +++ b/src/H5Rpublic.h @@ -639,7 +639,7 @@ H5_DLL ssize_t H5Rget_attr_name(const H5R_ref_t *ref_ptr, char *name, size_t siz * \param[in] ref Reference to query * * \return Returns a valid object type if successful; otherwise returns a - * negative value (#H5G_UNKNOWN). + * negative value (\c H5G_UNKNOWN). * * \deprecated This function has been renamed from H5Rget_obj_type() and is * deprecated in favor of the macro H5Rget_obj_type() or the diff --git a/src/H5Tdevelop.h b/src/H5Tdevelop.h index 887e2adb596..dffdff17b38 100644 --- a/src/H5Tdevelop.h +++ b/src/H5Tdevelop.h @@ -39,7 +39,7 @@ typedef enum H5T_cmd_t { } H5T_cmd_t; /** - * How is the `bkg' buffer used by the conversion function? + * How is the `bkg` buffer used by the conversion function? */ typedef enum H5T_bkg_t { H5T_BKG_NO = 0, /**< background buffer is not needed, send NULL */ diff --git a/src/H5Tmodule.h b/src/H5Tmodule.h index 9825fba9998..d80b9d573f6 100644 --- a/src/H5Tmodule.h +++ b/src/H5Tmodule.h @@ -2011,7 +2011,7 @@ filled according to the value of this property. The padding can be: * calculates the offset of member \Emph{m} within struct \Emph{s}. Alternatively, the * `offsetof(s, m)` macro, defined in \Emph{stddef.h}, serves the same purpose as the * `HOFFSET` macro. For Fortran users, the HDF5 library provides the function - * \ref h5lib.h5offsetof to determine the offset of a member. To find the size of a + * \ref h5lib::h5offsetof to determine the offset of a member. To find the size of a * scalar derived type, the Fortran function equivalent of the \Emph{sizeof} can be used. * Note, in the past, the HDF5 Fortran applications had to calculate offsets by using sizes of * members datatypes and by considering the order of members in the Fortran derived type, thus diff --git a/src/H5VLmodule.h b/src/H5VLmodule.h index 638ec509462..3bf75cab07d 100644 --- a/src/H5VLmodule.h +++ b/src/H5VLmodule.h @@ -555,19 +555,19 @@ * so the h5o_info_t, etc. structs no longer contain native file format information * and the callbacks will need to match the non-deprecated, token-enabled versions. *

      - *
    • @ref h5l.h5lget_info_f
    • - *
    • @ref h5l.h5lget_info_by_idx_f
    • - *
    • @ref h5l.h5literate_f
    • - *
    • @ref h5l.h5literate_by_name_f
    • - *
    • @ref h5o.h5oget_info_f
    • - *
    • @ref h5o.h5oget_info_by_idx_f
    • - *
    • @ref h5o.h5oget_info_by_name_f
    • - *
    • @ref h5o.h5oopen_by_token_f
    • - *
    • @ref h5o.h5ovisit_f
    • - *
    • @ref h5o.h5ovisit_by_name_f
    • + *
    • \ref h5l::h5lget_info_f
    • + *
    • \ref h5l::h5lget_info_by_idx_f
    • + *
    • \ref h5l::h5literate_f
    • + *
    • \ref h5l::h5literate_by_name_f
    • + *
    • \ref h5o::h5oget_info_f
    • + *
    • \ref h5o::h5oget_info_by_idx_f
    • + *
    • \ref h5o::h5oget_info_by_name_f
    • + *
    • \ref h5o::h5oopen_by_token_f
    • + *
    • \ref h5o::h5ovisit_f
    • + *
    • \ref h5o::h5ovisit_by_name_f
    • *
    * - * Additionally, \ref h5f.h5fis_hdf5_f was updated to use \ref H5Fis_accessible internally, + * Additionally, \ref h5f::h5fis_hdf5_f was updated to use \ref H5Fis_accessible internally, * though with the same caveat as the C++ implementation: the default fapl is * always passed in so arbitrary VOL connectors will only work if the default VOL * connector is changed via the environment variable. diff --git a/test/API/driver/CMakeLists.txt b/test/API/driver/CMakeLists.txt index 73f3c432341..6f12afce4e9 100644 --- a/test/API/driver/CMakeLists.txt +++ b/test/API/driver/CMakeLists.txt @@ -30,5 +30,5 @@ endif() include_directories(${hdf5_kwsys_BINARY_DIR}) -add_executable(h5_api_test_driver h5_api_test_driver.cxx) +add_executable(h5_api_test_driver h5_api_test_driver.cpp) target_link_libraries(h5_api_test_driver h5_api_test_sys) diff --git a/test/API/driver/h5_api_test_driver.cxx b/test/API/driver/h5_api_test_driver.cpp similarity index 70% rename from test/API/driver/h5_api_test_driver.cxx rename to test/API/driver/h5_api_test_driver.cpp index 195704321c5..bc4ab91b379 100644 --- a/test/API/driver/h5_api_test_driver.cxx +++ b/test/API/driver/h5_api_test_driver.cpp @@ -10,7 +10,7 @@ * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include "h5_api_test_driver.hxx" +#include "h5_api_test_driver.h" #include "H5_api_test_config.h" @@ -21,16 +21,16 @@ #include #if !defined(_WIN32) || defined(__CYGWIN__) -# include -# include +#include +#include #endif #include #include -using std::vector; -using std::string; using std::cerr; +using std::string; +using std::vector; // The main function as this class should only be used by this program int @@ -43,22 +43,22 @@ main(int argc, char *argv[]) //---------------------------------------------------------------------------- H5APITestDriver::H5APITestDriver() { - this->ClientArgStart = 0; - this->ClientArgCount = 0; + this->ClientArgStart = 0; + this->ClientArgCount = 0; this->ClientHelperArgStart = 0; this->ClientHelperArgCount = 0; - this->ClientInitArgStart = 0; - this->ClientInitArgCount = 0; - this->ServerArgStart = 0; - this->ServerArgCount = 0; - this->AllowErrorInOutput = false; + this->ClientInitArgStart = 0; + this->ClientInitArgCount = 0; + this->ServerArgStart = 0; + this->ServerArgCount = 0; + this->AllowErrorInOutput = false; // try to make sure that this times out before dart so it can kill all the processes - this->TimeOut = DART_TESTING_TIMEOUT - 10.0; - this->ServerExitTimeOut = 2; /* 2 seconds timeout for server to exit */ - this->ClientHelper = false; - this->ClientInit = false; - this->TestServer = false; - this->TestSerial = false; + this->TimeOut = DART_TESTING_TIMEOUT - 10.0; + this->ServerExitTimeOut = 2; /* 2 seconds timeout for server to exit */ + this->ClientHelper = false; + this->ClientInit = false; + this->TestServer = false; + this->TestSerial = false; this->IgnoreServerResult = false; } @@ -71,7 +71,7 @@ H5APITestDriver::~H5APITestDriver() void H5APITestDriver::SeparateArguments(const char *str, vector &flags) { - string arg = str; + string arg = str; string::size_type pos1 = 0; string::size_type pos2 = arg.find_first_of(" ;"); if (pos2 == arg.npos) { @@ -105,29 +105,29 @@ H5APITestDriver::CollectConfiguredOptions() #endif int maxNumProc = 1; -# ifdef MPIEXEC_MAX_NUMPROCS +#ifdef MPIEXEC_MAX_NUMPROCS if (!this->TestSerial) maxNumProc = MPIEXEC_MAX_NUMPROCS; -# endif -# ifdef MPIEXEC_NUMPROC_FLAG +#endif +#ifdef MPIEXEC_NUMPROC_FLAG this->MPINumProcessFlag = MPIEXEC_NUMPROC_FLAG; -# endif -# ifdef MPIEXEC_PREFLAGS +#endif +#ifdef MPIEXEC_PREFLAGS this->SeparateArguments(MPIEXEC_PREFLAGS, this->MPIClientPreFlags); -# endif -# ifdef MPIEXEC_POSTFLAGS +#endif +#ifdef MPIEXEC_POSTFLAGS this->SeparateArguments(MPIEXEC_POSTFLAGS, this->MPIClientPostFlags); -# endif -# ifdef MPIEXEC_SERVER_PREFLAGS +#endif +#ifdef MPIEXEC_SERVER_PREFLAGS this->SeparateArguments(MPIEXEC_SERVER_PREFLAGS, this->MPIServerPreFlags); #else this->MPIServerPreFlags = this->MPIClientPreFlags; -# endif -# ifdef MPIEXEC_SERVER_POSTFLAGS +#endif +#ifdef MPIEXEC_SERVER_POSTFLAGS this->SeparateArguments(MPIEXEC_SERVER_POSTFLAGS, this->MPIServerPostFlags); #else this->MPIServerPostFlags = this->MPIClientPostFlags; -# endif +#endif std::stringstream ss; ss << maxNumProc; this->MPIServerNumProcessFlag = "1"; @@ -139,12 +139,10 @@ H5APITestDriver::CollectConfiguredOptions() static string FixExecutablePath(const string &path) { -#ifdef CMAKE_INTDIR - string parent_dir = - h5_api_test_sys::SystemTools::GetFilenamePath(path.c_str()); +#ifdef CMAKE_INTDIR + string parent_dir = h5_api_test_sys::SystemTools::GetFilenamePath(path.c_str()); - string filename = - h5_api_test_sys::SystemTools::GetFilenameName(path); + string filename = h5_api_test_sys::SystemTools::GetFilenameName(path); if (!h5_api_test_sys::SystemTools::StringEndsWith(parent_dir.c_str(), CMAKE_INTDIR)) { parent_dir += "/" CMAKE_INTDIR; @@ -160,44 +158,44 @@ int H5APITestDriver::ProcessCommandLine(int argc, char *argv[]) { int *ArgCountP = NULL; - int i; + int i; for (i = 1; i < argc; ++i) { if (strcmp(argv[i], "--client") == 0) { this->ClientExecutable = ::FixExecutablePath(argv[i + 1]); ++i; /* Skip executable */ this->ClientArgStart = i + 1; this->ClientArgCount = this->ClientArgStart; - ArgCountP = &this->ClientArgCount; + ArgCountP = &this->ClientArgCount; continue; } if (strcmp(argv[i], "--client-helper") == 0) { std::cerr << "Client Helper" << std::endl; - this->ClientHelper = true; + this->ClientHelper = true; this->ClientHelperExecutable = ::FixExecutablePath(argv[i + 1]); ++i; /* Skip executable */ this->ClientHelperArgStart = i + 1; this->ClientHelperArgCount = this->ClientHelperArgStart; - ArgCountP = &this->ClientHelperArgCount; + ArgCountP = &this->ClientHelperArgCount; continue; } if (strcmp(argv[i], "--client-init") == 0) { std::cerr << "Client Init" << std::endl; - this->ClientInit = true; + this->ClientInit = true; this->ClientInitExecutable = ::FixExecutablePath(argv[i + 1]); ++i; /* Skip executable */ this->ClientInitArgStart = i + 1; this->ClientInitArgCount = this->ClientInitArgStart; - ArgCountP = &this->ClientInitArgCount; + ArgCountP = &this->ClientInitArgCount; continue; } if (strcmp(argv[i], "--server") == 0) { std::cerr << "Test Server" << std::endl; - this->TestServer = true; + this->TestServer = true; this->ServerExecutable = ::FixExecutablePath(argv[i + 1]); ++i; /* Skip executable */ this->ServerArgStart = i + 1; this->ServerArgCount = this->ServerArgStart; - ArgCountP = &this->ServerArgCount; + ArgCountP = &this->ServerArgCount; continue; } if (strcmp(argv[i], "--timeout") == 0) { @@ -208,15 +206,15 @@ H5APITestDriver::ProcessCommandLine(int argc, char *argv[]) } if (strncmp(argv[i], "--allow-errors", strlen("--allow-errors")) == 0) { this->AllowErrorInOutput = true; - std::cerr << "The allow errors in output flag was set to " << - this->AllowErrorInOutput << std::endl; + std::cerr << "The allow errors in output flag was set to " << this->AllowErrorInOutput + << std::endl; ArgCountP = NULL; continue; } if (strncmp(argv[i], "--allow-server-errors", strlen("--allow-server-errors")) == 0) { this->IgnoreServerResult = true; - std::cerr << "The allow server errors in output flag was set to " << - this->IgnoreServerResult << std::endl; + std::cerr << "The allow server errors in output flag was set to " << this->IgnoreServerResult + << std::endl; ArgCountP = NULL; continue; } @@ -235,9 +233,9 @@ H5APITestDriver::ProcessCommandLine(int argc, char *argv[]) //---------------------------------------------------------------------------- void -H5APITestDriver::CreateCommandLine(vector &commandLine, - const char *cmd, int isServer, int isHelper, const char *numProc, int argStart, - int argCount, char *argv[]) +H5APITestDriver::CreateCommandLine(vector &commandLine, const char *cmd, int isServer, + int isHelper, const char *numProc, int argStart, int argCount, + char *argv[]) { if (!isServer && this->ClientEnvVars.size()) { for (unsigned int i = 0; i < this->ClientEnvVars.size(); ++i) @@ -280,8 +278,8 @@ H5APITestDriver::CreateCommandLine(vector &commandLine, //---------------------------------------------------------------------------- int -H5APITestDriver::StartServer(h5_api_test_sysProcess *server, const char *name, - vector &out, vector &err) +H5APITestDriver::StartServer(h5_api_test_sysProcess *server, const char *name, vector &out, + vector &err) { if (!server) return 1; @@ -289,20 +287,20 @@ H5APITestDriver::StartServer(h5_api_test_sysProcess *server, const char *name, cerr << "H5APITestDriver: starting process " << name << "\n"; h5_api_test_sysProcess_SetTimeout(server, this->TimeOut); h5_api_test_sysProcess_Execute(server); - int foundWaiting = 0; + int foundWaiting = 0; string output; while (!foundWaiting) { - int pipe = this->WaitForAndPrintLine(name, server, output, 100.0, out, - err, H5_API_TEST_SERVER_START_MSG, &foundWaiting); - if (pipe == h5_api_test_sysProcess_Pipe_None - || pipe == h5_api_test_sysProcess_Pipe_Timeout) { + int pipe = this->WaitForAndPrintLine(name, server, output, 100.0, out, err, + H5_API_TEST_SERVER_START_MSG, &foundWaiting); + if (pipe == h5_api_test_sysProcess_Pipe_None || pipe == h5_api_test_sysProcess_Pipe_Timeout) { break; } } if (foundWaiting) { cerr << "H5APITestDriver: " << name << " successfully started.\n"; return 1; - } else { + } + else { cerr << "H5APITestDriver: " << name << " never started.\n"; h5_api_test_sysProcess_Kill(server); return 0; @@ -311,8 +309,8 @@ H5APITestDriver::StartServer(h5_api_test_sysProcess *server, const char *name, //---------------------------------------------------------------------------- int -H5APITestDriver::StartClientHelper(h5_api_test_sysProcess *client, - const char *name, vector &out, vector &err) +H5APITestDriver::StartClientHelper(h5_api_test_sysProcess *client, const char *name, vector &out, + vector &err) { if (!client) return 1; @@ -320,20 +318,20 @@ H5APITestDriver::StartClientHelper(h5_api_test_sysProcess *client, cerr << "H5APITestDriver: starting process " << name << "\n"; h5_api_test_sysProcess_SetTimeout(client, this->TimeOut); h5_api_test_sysProcess_Execute(client); - int foundWaiting = 0; + int foundWaiting = 0; string output; while (!foundWaiting) { - int pipe = this->WaitForAndPrintLine(name, client, output, 100.0, out, - err, H5_API_TEST_CLIENT_HELPER_START_MSG, &foundWaiting); - if (pipe == h5_api_test_sysProcess_Pipe_None - || pipe == h5_api_test_sysProcess_Pipe_Timeout) { + int pipe = this->WaitForAndPrintLine(name, client, output, 100.0, out, err, + H5_API_TEST_CLIENT_HELPER_START_MSG, &foundWaiting); + if (pipe == h5_api_test_sysProcess_Pipe_None || pipe == h5_api_test_sysProcess_Pipe_Timeout) { break; } } if (foundWaiting) { cerr << "H5APITestDriver: " << name << " successfully started.\n"; return 1; - } else { + } + else { cerr << "H5APITestDriver: " << name << " never started.\n"; h5_api_test_sysProcess_Kill(client); return 0; @@ -342,8 +340,8 @@ H5APITestDriver::StartClientHelper(h5_api_test_sysProcess *client, //---------------------------------------------------------------------------- int -H5APITestDriver::StartClientInit(h5_api_test_sysProcess *client, - const char *name, vector &out, vector &err) +H5APITestDriver::StartClientInit(h5_api_test_sysProcess *client, const char *name, vector &out, + vector &err) { if (!client) return 1; @@ -351,19 +349,17 @@ H5APITestDriver::StartClientInit(h5_api_test_sysProcess *client, cerr << "H5APITestDriver: starting process " << name << "\n"; h5_api_test_sysProcess_SetTimeout(client, this->TimeOut); h5_api_test_sysProcess_Execute(client); - int foundToken = 0; + int foundToken = 0; string output, token; while (!foundToken) { - int pipe = this->WaitForAndPrintLine(name, client, output, 100.0, out, - err, NULL, NULL); - if (pipe == h5_api_test_sysProcess_Pipe_None - || pipe == h5_api_test_sysProcess_Pipe_Timeout) { + int pipe = this->WaitForAndPrintLine(name, client, output, 100.0, out, err, NULL, NULL); + if (pipe == h5_api_test_sysProcess_Pipe_None || pipe == h5_api_test_sysProcess_Pipe_Timeout) { break; } if (this->OutputStringHasToken(name, H5_API_TEST_CLIENT_INIT_TOKEN_REGEX, output, token)) { foundToken = 1; - this->ClientTokenVar = std::string(H5_API_TEST_CLIENT_INIT_TOKEN_VAR) - + std::string("=") + std::string(token); + this->ClientTokenVar = + std::string(H5_API_TEST_CLIENT_INIT_TOKEN_VAR) + std::string("=") + std::string(token); break; } } @@ -371,7 +367,8 @@ H5APITestDriver::StartClientInit(h5_api_test_sysProcess *client, if (foundToken) { cerr << "H5APITestDriver: " << name << " token: " << token << " was found.\n"; return 1; - } else { + } + else { cerr << "H5APITestDriver: " << name << " token was not found.\n"; return 0; } @@ -387,11 +384,11 @@ H5APITestDriver::StartClient(h5_api_test_sysProcess *client, const char *name) cerr << "H5APITestDriver: starting process " << name << "\n"; h5_api_test_sysProcess_SetTimeout(client, this->TimeOut); h5_api_test_sysProcess_Execute(client); - if (h5_api_test_sysProcess_GetState(client) - == h5_api_test_sysProcess_State_Executing) { + if (h5_api_test_sysProcess_GetState(client) == h5_api_test_sysProcess_State_Executing) { cerr << "H5APITestDriver: " << name << " successfully started.\n"; return 1; - } else { + } + else { this->ReportStatus(client, name); h5_api_test_sysProcess_Kill(client); return 0; @@ -413,20 +410,31 @@ H5APITestDriver::Stop(h5_api_test_sysProcess *p, const char *name) int H5APITestDriver::OutputStringHasError(const char *pname, string &output) { - const char* possibleMPIErrors[] = {"error", "Error", "Missing:", - "core dumped", "process in local group is dead", "Segmentation fault", - "erroneous", "ERROR:", "Error:", - "mpirun can *only* be used with MPI programs", "due to signal", - "failure", "abnormal termination", "failed", "FAILED", "Failed", 0}; + const char *possibleMPIErrors[] = {"error", + "Error", + "Missing:", + "core dumped", + "process in local group is dead", + "Segmentation fault", + "erroneous", + "ERROR:", + "Error:", + "mpirun can *only* be used with MPI programs", + "due to signal", + "failure", + "abnormal termination", + "failed", + "FAILED", + "Failed", + 0}; - const char* nonErrors[] = { - "Memcheck, a memory error detector", //valgrind - 0}; + const char *nonErrors[] = {"Memcheck, a memory error detector", // valgrind + 0}; if (this->AllowErrorInOutput) return 0; - vector lines; + vector lines; vector::iterator it; h5_api_test_sys::SystemTools::Split(output.c_str(), lines); @@ -439,16 +447,14 @@ H5APITestDriver::OutputStringHasError(const char *pname, string &output) for (j = 0; nonErrors[j]; ++j) { if (it->find(nonErrors[j]) != it->npos) { found = 0; - cerr << "Non error \"" << it->c_str() - << "\" suppressed " << std::endl; + cerr << "Non error \"" << it->c_str() << "\" suppressed " << std::endl; } } if (found) { - cerr - << "H5APITestDriver: ***** Test will fail, because the string: \"" - << possibleMPIErrors[i] - << "\"\nH5APITestDriver: ***** was found in the following output from the " - << pname << ":\n\"" << it->c_str() << "\"\n"; + cerr << "H5APITestDriver: ***** Test will fail, because the string: \"" + << possibleMPIErrors[i] + << "\"\nH5APITestDriver: ***** was found in the following output from the " << pname + << ":\n\"" << it->c_str() << "\"\n"; return 1; } } @@ -459,10 +465,9 @@ H5APITestDriver::OutputStringHasError(const char *pname, string &output) //---------------------------------------------------------------------------- int -H5APITestDriver::OutputStringHasToken(const char *pname, const char *regex, - string &output, string &token) +H5APITestDriver::OutputStringHasToken(const char *pname, const char *regex, string &output, string &token) { - vector lines; + vector lines; vector::iterator it; h5_api_test_sys::SystemTools::Split(output.c_str(), lines); h5_api_test_sys::RegularExpression re(regex); @@ -478,30 +483,31 @@ H5APITestDriver::OutputStringHasToken(const char *pname, const char *regex, } //---------------------------------------------------------------------------- -#define H5_API_CLEAN_PROCESSES do { \ - h5_api_test_sysProcess_Delete(client); \ - h5_api_test_sysProcess_Delete(client_helper); \ - h5_api_test_sysProcess_Delete(client_init); \ - h5_api_test_sysProcess_Delete(server); \ -} while (0) +#define H5_API_CLEAN_PROCESSES \ + do { \ + h5_api_test_sysProcess_Delete(client); \ + h5_api_test_sysProcess_Delete(client_helper); \ + h5_api_test_sysProcess_Delete(client_init); \ + h5_api_test_sysProcess_Delete(server); \ + } while (0) -#define H5_API_EXECUTE_CMD(cmd) do { \ - if (strlen(cmd) > 0) { \ - std::vector commands = \ - h5_api_test_sys::SystemTools::SplitString(cmd, ';'); \ - for (unsigned int cc = 0; cc < commands.size(); cc++) { \ - std::string command = commands[cc]; \ - if (command.size() > 0) { \ - std::cout << command.c_str() << std::endl; \ - system(command.c_str()); \ - } \ - } \ - } \ -} while (0) +#define H5_API_EXECUTE_CMD(cmd) \ + do { \ + if (strlen(cmd) > 0) { \ + std::vector commands = h5_api_test_sys::SystemTools::SplitString(cmd, ';'); \ + for (unsigned int cc = 0; cc < commands.size(); cc++) { \ + std::string command = commands[cc]; \ + if (command.size() > 0) { \ + std::cout << command.c_str() << std::endl; \ + system(command.c_str()); \ + } \ + } \ + } \ + } while (0) //---------------------------------------------------------------------------- int -H5APITestDriver::Main(int argc, char* argv[]) +H5APITestDriver::Main(int argc, char *argv[]) { #ifdef H5_API_TEST_INIT_COMMAND // run user-specified commands before initialization. @@ -515,17 +521,17 @@ H5APITestDriver::Main(int argc, char* argv[]) // mpi code // Allocate process managers. - h5_api_test_sysProcess *server = 0; - h5_api_test_sysProcess *client = 0; + h5_api_test_sysProcess *server = 0; + h5_api_test_sysProcess *client = 0; h5_api_test_sysProcess *client_helper = 0; - h5_api_test_sysProcess *client_init = 0; + h5_api_test_sysProcess *client_init = 0; if (this->TestServer) { server = h5_api_test_sysProcess_New(); if (!server) { H5_API_CLEAN_PROCESSES; cerr << "H5APITestDriver: Cannot allocate h5_api_test_sysProcess to " - "run the server.\n"; + "run the server.\n"; return 1; } } @@ -534,7 +540,7 @@ H5APITestDriver::Main(int argc, char* argv[]) if (!client_helper) { H5API_CLEAN_PROCESSES; cerr << "H5APITestDriver: Cannot allocate h5_api_test_sysProcess to " - "run the client helper.\n"; + "run the client helper.\n"; return 1; } } @@ -543,7 +549,7 @@ H5APITestDriver::Main(int argc, char* argv[]) if (!client_init) { H5_API_CLEAN_PROCESSES; cerr << "H5APITestDriver: Cannot allocate h5_api_test_sysProcess to " - "run the client init.\n"; + "run the client init.\n"; return 1; } } @@ -551,7 +557,7 @@ H5APITestDriver::Main(int argc, char* argv[]) if (!client) { H5_API_CLEAN_PROCESSES; cerr << "H5APITestDriver: Cannot allocate h5_api_test_sysProcess to " - "run the client.\n"; + "run the client.\n"; return 1; } @@ -566,40 +572,36 @@ H5APITestDriver::Main(int argc, char* argv[]) vector serverCommand; if (server) { - const char* serverExe = this->ServerExecutable.c_str(); + const char *serverExe = this->ServerExecutable.c_str(); - this->CreateCommandLine(serverCommand, serverExe, 1, 0, - this->MPIServerNumProcessFlag.c_str(), this->ServerArgStart, - this->ServerArgCount, argv); + this->CreateCommandLine(serverCommand, serverExe, 1, 0, this->MPIServerNumProcessFlag.c_str(), + this->ServerArgStart, this->ServerArgCount, argv); this->ReportCommand(&serverCommand[0], "server"); h5_api_test_sysProcess_SetCommand(server, &serverCommand[0]); - h5_api_test_sysProcess_SetWorkingDirectory(server, - this->GetDirectory(serverExe).c_str()); + h5_api_test_sysProcess_SetWorkingDirectory(server, this->GetDirectory(serverExe).c_str()); } vector clientHelperCommand; if (client_helper) { // Construct the client helper process command line. const char *clientHelperExe = this->ClientHelperExecutable.c_str(); - this->CreateCommandLine(clientHelperCommand, clientHelperExe, 0, 1, - "1", this->ClientHelperArgStart, - this->ClientHelperArgCount, argv); + this->CreateCommandLine(clientHelperCommand, clientHelperExe, 0, 1, "1", this->ClientHelperArgStart, + this->ClientHelperArgCount, argv); this->ReportCommand(&clientHelperCommand[0], "client_helper"); h5_api_test_sysProcess_SetCommand(client_helper, &clientHelperCommand[0]); h5_api_test_sysProcess_SetWorkingDirectory(client_helper, - this->GetDirectory(clientHelperExe).c_str()); + this->GetDirectory(clientHelperExe).c_str()); } vector clientInitCommand; if (client_init) { // Construct the client helper process command line. const char *clientInitExe = this->ClientInitExecutable.c_str(); - this->CreateCommandLine(clientInitCommand, clientInitExe, 0, 1, - "1", this->ClientInitArgStart, this->ClientInitArgCount, argv); + this->CreateCommandLine(clientInitCommand, clientInitExe, 0, 1, "1", this->ClientInitArgStart, + this->ClientInitArgCount, argv); this->ReportCommand(&clientInitCommand[0], "client_init"); h5_api_test_sysProcess_SetCommand(client_init, &clientInitCommand[0]); - h5_api_test_sysProcess_SetWorkingDirectory(client_init, - this->GetDirectory(clientInitExe).c_str()); + h5_api_test_sysProcess_SetWorkingDirectory(client_init, this->GetDirectory(clientInitExe).c_str()); } // Start the server if there is one @@ -610,8 +612,7 @@ H5APITestDriver::Main(int argc, char* argv[]) } // Start the client helper here if there is one - if (!this->StartClientHelper(client_helper, "client_helper", - ClientHelperStdOut, ClientHelperStdErr)) { + if (!this->StartClientHelper(client_helper, "client_helper", ClientHelperStdOut, ClientHelperStdErr)) { cerr << "H5APITestDriver: Client Helper never started.\n"; this->Stop(server, "server"); #ifdef H5_API_TEST_SERVER_EXIT_COMMAND @@ -622,8 +623,7 @@ H5APITestDriver::Main(int argc, char* argv[]) } // Start the client init here if there is one - if (!this->StartClientInit(client_init, "client_init", - ClientInitStdOut, ClientInitStdErr)) { + if (!this->StartClientInit(client_init, "client_init", ClientInitStdOut, ClientInitStdErr)) { cerr << "H5APITestDriver: Client Init never started.\n"; this->Stop(server, "server"); #ifdef H5_API_TEST_SERVER_EXIT_COMMAND @@ -639,14 +639,12 @@ H5APITestDriver::Main(int argc, char* argv[]) // Construct the client process command line. vector clientCommand; - const char *clientExe = this->ClientExecutable.c_str(); - this->CreateCommandLine(clientCommand, clientExe, 0, 0, - this->MPIClientNumProcessFlag.c_str(), this->ClientArgStart, - this->ClientArgCount, argv); + const char *clientExe = this->ClientExecutable.c_str(); + this->CreateCommandLine(clientCommand, clientExe, 0, 0, this->MPIClientNumProcessFlag.c_str(), + this->ClientArgStart, this->ClientArgCount, argv); this->ReportCommand(&clientCommand[0], "client"); h5_api_test_sysProcess_SetCommand(client, &clientCommand[0]); - h5_api_test_sysProcess_SetWorkingDirectory(client, - this->GetDirectory(clientExe).c_str()); + h5_api_test_sysProcess_SetWorkingDirectory(client, this->GetDirectory(clientExe).c_str()); // Now run the client if (!this->StartClient(client, "client")) { @@ -661,19 +659,18 @@ H5APITestDriver::Main(int argc, char* argv[]) int clientPipe = 1; string output; - int mpiError = 0; + int mpiError = 0; while (clientPipe) { - clientPipe = this->WaitForAndPrintLine("client", client, output, 0.1, - ClientStdOut, ClientStdErr, NULL, NULL); + clientPipe = + this->WaitForAndPrintLine("client", client, output, 0.1, ClientStdOut, ClientStdErr, NULL, NULL); if (!mpiError && this->OutputStringHasError("client", output)) { mpiError = 1; } // If client has died, we wait for output from the server processes // for this->ServerExitTimeOut, then we'll kill the servers, if needed. double timeout = (clientPipe) ? 0 : this->ServerExitTimeOut; - output = ""; - this->WaitForAndPrintLine("server", server, output, timeout, - ServerStdOut, ServerStdErr, NULL, NULL); + output = ""; + this->WaitForAndPrintLine("server", server, output, timeout, ServerStdOut, ServerStdErr, NULL, NULL); if (!mpiError && this->OutputStringHasError("server", output)) { mpiError = 1; } @@ -718,9 +715,8 @@ H5APITestDriver::Main(int argc, char* argv[]) return serverResult; if (mpiError) { - cerr - << "H5VLTestDriver: Error string found in output, H5APITestDriver returning " - << mpiError << "\n"; + cerr << "H5VLTestDriver: Error string found in output, H5APITestDriver returning " << mpiError + << "\n"; return mpiError; } @@ -730,10 +726,10 @@ H5APITestDriver::Main(int argc, char* argv[]) //---------------------------------------------------------------------------- void -H5APITestDriver::ReportCommand(const char * const *command, const char *name) +H5APITestDriver::ReportCommand(const char *const *command, const char *name) { cerr << "H5APITestDriver: " << name << " command is:\n"; - for (const char * const *c = command; *c; ++c) + for (const char *const *c = command; *c; ++c) cerr << " \"" << *c << "\""; cerr << "\n"; } @@ -746,75 +742,58 @@ H5APITestDriver::ReportStatus(h5_api_test_sysProcess *process, const char *name) switch (h5_api_test_sysProcess_GetState(process)) { case h5_api_test_sysProcess_State_Starting: { cerr << "H5APITestDriver: Never started " << name << " process.\n"; - } - break; + } break; case h5_api_test_sysProcess_State_Error: { - cerr << "H5APITestDriver: Error executing " << name << " process: " - << h5_api_test_sysProcess_GetErrorString(process) << "\n"; - } - break; + cerr << "H5APITestDriver: Error executing " << name + << " process: " << h5_api_test_sysProcess_GetErrorString(process) << "\n"; + } break; case h5_api_test_sysProcess_State_Exception: { - cerr << "H5APITestDriver: " << name - << " process exited with an exception: "; + cerr << "H5APITestDriver: " << name << " process exited with an exception: "; switch (h5_api_test_sysProcess_GetExitException(process)) { case h5_api_test_sysProcess_Exception_None: { cerr << "None"; - } - break; + } break; case h5_api_test_sysProcess_Exception_Fault: { cerr << "Segmentation fault"; - } - break; + } break; case h5_api_test_sysProcess_Exception_Illegal: { cerr << "Illegal instruction"; - } - break; + } break; case h5_api_test_sysProcess_Exception_Interrupt: { cerr << "Interrupted by user"; - } - break; + } break; case h5_api_test_sysProcess_Exception_Numerical: { cerr << "Numerical exception"; - } - break; + } break; case h5_api_test_sysProcess_Exception_Other: { cerr << "Unknown"; - } - break; + } break; } cerr << "\n"; - } - break; + } break; case h5_api_test_sysProcess_State_Executing: { - cerr << "H5APITestDriver: Never terminated " << name - << " process.\n"; - } - break; + cerr << "H5APITestDriver: Never terminated " << name << " process.\n"; + } break; case h5_api_test_sysProcess_State_Exited: { result = h5_api_test_sysProcess_GetExitValue(process); - cerr << "H5APITestDriver: " << name << " process exited with code " - << result << "\n"; - } - break; + cerr << "H5APITestDriver: " << name << " process exited with code " << result << "\n"; + } break; case h5_api_test_sysProcess_State_Expired: { - cerr << "H5APITestDriver: killed " << name - << " process due to timeout.\n"; - } - break; + cerr << "H5APITestDriver: killed " << name << " process due to timeout.\n"; + } break; case h5_api_test_sysProcess_State_Killed: { cerr << "H5APITestDriver: killed " << name << " process.\n"; - } - break; + } break; } return result; } //---------------------------------------------------------------------------- int -H5APITestDriver::WaitForLine(h5_api_test_sysProcess *process, string &line, - double timeout, vector &out, vector &err) +H5APITestDriver::WaitForLine(h5_api_test_sysProcess *process, string &line, double timeout, vector &out, + vector &err) { - line = ""; + line = ""; vector::iterator outiter = out.begin(); vector::iterator erriter = err.begin(); while (1) { @@ -822,7 +801,8 @@ H5APITestDriver::WaitForLine(h5_api_test_sysProcess *process, string &line, for (; outiter != out.end(); ++outiter) { if ((*outiter == '\r') && ((outiter + 1) == out.end())) { break; - } else if (*outiter == '\n' || *outiter == '\0') { + } + else if (*outiter == '\n' || *outiter == '\0') { int length = outiter - out.begin(); if (length > 1 && *(outiter - 1) == '\r') --length; @@ -837,7 +817,8 @@ H5APITestDriver::WaitForLine(h5_api_test_sysProcess *process, string &line, for (; erriter != err.end(); ++erriter) { if ((*erriter == '\r') && ((erriter + 1) == err.end())) { break; - } else if (*erriter == '\n' || *erriter == '\0') { + } + else if (*erriter == '\n' || *erriter == '\0') { int length = erriter - err.begin(); if (length > 1 && *(erriter - 1) == '\r') --length; @@ -849,34 +830,38 @@ H5APITestDriver::WaitForLine(h5_api_test_sysProcess *process, string &line, } // No newlines found. Wait for more data from the process. - int length; + int length; char *data; - int pipe = h5_api_test_sysProcess_WaitForData(process, &data, &length, - &timeout); + int pipe = h5_api_test_sysProcess_WaitForData(process, &data, &length, &timeout); if (pipe == h5_api_test_sysProcess_Pipe_Timeout) { // Timeout has been exceeded. return pipe; - } else if (pipe == h5_api_test_sysProcess_Pipe_STDOUT) { + } + else if (pipe == h5_api_test_sysProcess_Pipe_STDOUT) { // Append to the stdout buffer. vector::size_type size = out.size(); out.insert(out.end(), data, data + length); outiter = out.begin() + size; - } else if (pipe == h5_api_test_sysProcess_Pipe_STDERR) { + } + else if (pipe == h5_api_test_sysProcess_Pipe_STDERR) { // Append to the stderr buffer. vector::size_type size = err.size(); err.insert(err.end(), data, data + length); erriter = err.begin() + size; - } else if (pipe == h5_api_test_sysProcess_Pipe_None) { + } + else if (pipe == h5_api_test_sysProcess_Pipe_None) { // Both stdout and stderr pipes have broken. Return leftover data. if (!out.empty()) { line.append(&out[0], outiter - out.begin()); out.erase(out.begin(), out.end()); return h5_api_test_sysProcess_Pipe_STDOUT; - } else if (!err.empty()) { + } + else if (!err.empty()) { line.append(&err[0], erriter - err.begin()); err.erase(err.begin(), err.end()); return h5_api_test_sysProcess_Pipe_STDERR; - } else { + } + else { return h5_api_test_sysProcess_Pipe_None; } } @@ -899,14 +884,12 @@ H5APITestDriver::PrintLine(const char *pname, const char *line) //---------------------------------------------------------------------------- int -H5APITestDriver::WaitForAndPrintLine(const char *pname, - h5_api_test_sysProcess *process, string &line, double timeout, - vector &out, vector &err, const char *waitMsg, - int *foundWaiting) +H5APITestDriver::WaitForAndPrintLine(const char *pname, h5_api_test_sysProcess *process, string &line, + double timeout, vector &out, vector &err, + const char *waitMsg, int *foundWaiting) { int pipe = this->WaitForLine(process, line, timeout, out, err); - if (pipe == h5_api_test_sysProcess_Pipe_STDOUT - || pipe == h5_api_test_sysProcess_Pipe_STDERR) { + if (pipe == h5_api_test_sysProcess_Pipe_STDOUT || pipe == h5_api_test_sysProcess_Pipe_STDERR) { this->PrintLine(pname, line.c_str()); if (foundWaiting && (line.find(waitMsg) != line.npos)) *foundWaiting = 1; diff --git a/test/API/driver/h5_api_test_driver.hxx b/test/API/driver/h5_api_test_driver.h similarity index 59% rename from test/API/driver/h5_api_test_driver.hxx rename to test/API/driver/h5_api_test_driver.h index f7cbf5fa030..bc929e0cef8 100644 --- a/test/API/driver/h5_api_test_driver.hxx +++ b/test/API/driver/h5_api_test_driver.h @@ -19,44 +19,43 @@ #include class H5APITestDriver { -public: + public: int Main(int argc, char *argv[]); H5APITestDriver(); ~H5APITestDriver(); -protected: - void SeparateArguments(const char* str, std::vector &flags); + protected: + void SeparateArguments(const char *str, std::vector &flags); - void ReportCommand(const char * const *command, const char *name); + void ReportCommand(const char *const *command, const char *name); int ReportStatus(h5_api_test_sysProcess *process, const char *name); int ProcessCommandLine(int argc, char *argv[]); void CollectConfiguredOptions(); - void CreateCommandLine(std::vector &commandLine, - const char *cmd, int isServer, int isHelper, const char *numProc, - int argStart = 0, int argCount = 0, char *argv[] = 0); + void CreateCommandLine(std::vector &commandLine, const char *cmd, int isServer, + int isHelper, const char *numProc, int argStart = 0, int argCount = 0, + char *argv[] = 0); - int StartServer(h5_api_test_sysProcess *server, const char *name, - std::vector &out, std::vector &err); - int StartClientHelper(h5_api_test_sysProcess *client, const char *name, - std::vector &out, std::vector &err); - int StartClientInit(h5_api_test_sysProcess *client, const char *name, - std::vector &out, std::vector &err); - int StartClient(h5_api_test_sysProcess *client, const char *name); + int StartServer(h5_api_test_sysProcess *server, const char *name, std::vector &out, + std::vector &err); + int StartClientHelper(h5_api_test_sysProcess *client, const char *name, std::vector &out, + std::vector &err); + int StartClientInit(h5_api_test_sysProcess *client, const char *name, std::vector &out, + std::vector &err); + int StartClient(h5_api_test_sysProcess *client, const char *name); void Stop(h5_api_test_sysProcess *p, const char *name); - int OutputStringHasError(const char *pname, std::string &output); - int OutputStringHasToken(const char *pname, const char *regex, - std::string &output, std::string &token); + int OutputStringHasError(const char *pname, std::string &output); + int OutputStringHasToken(const char *pname, const char *regex, std::string &output, std::string &token); - int WaitForLine(h5_api_test_sysProcess *process, std::string &line, - double timeout, std::vector &out, std::vector &err); + int WaitForLine(h5_api_test_sysProcess *process, std::string &line, double timeout, + std::vector &out, std::vector &err); void PrintLine(const char *pname, const char *line); - int WaitForAndPrintLine(const char *pname, h5_api_test_sysProcess *process, - std::string &line, double timeout, std::vector &out, - std::vector &err, const char *waitMsg, int *foundWaiting); + int WaitForAndPrintLine(const char *pname, h5_api_test_sysProcess *process, std::string &line, + double timeout, std::vector &out, std::vector &err, + const char *waitMsg, int *foundWaiting); std::string GetDirectory(std::string location); -private: + private: std::string ClientExecutable; // fullpath to client executable std::string ClientHelperExecutable; // fullpath to client helper executable std::string ClientInitExecutable; // fullpath to client init executable @@ -79,27 +78,27 @@ private: std::string MPIServerNumProcessFlag; std::string MPIClientNumProcessFlag; - std::string ClientTokenVar; // use token to launch client if requested + std::string ClientTokenVar; // use token to launch client if requested std::string CurrentPrintLineName; double TimeOut; - double ServerExitTimeOut; // time to wait for servers to finish. - bool ClientHelper; - bool ClientInit; - bool TestServer; + double ServerExitTimeOut; // time to wait for servers to finish. + bool ClientHelper; + bool ClientInit; + bool TestServer; - int ClientArgStart; - int ClientArgCount; - int ClientHelperArgStart; - int ClientHelperArgCount; - int ClientInitArgStart; - int ClientInitArgCount; - int ServerArgStart; - int ServerArgCount; + int ClientArgStart; + int ClientArgCount; + int ClientHelperArgStart; + int ClientHelperArgCount; + int ClientInitArgStart; + int ClientInitArgCount; + int ServerArgStart; + int ServerArgCount; bool AllowErrorInOutput; bool TestSerial; bool IgnoreServerResult; }; -#endif //H5_API_TEST_DRIVER_H +#endif // H5_API_TEST_DRIVER_H diff --git a/test/CMakePassthroughVOLTests.cmake b/test/CMakePassthroughVOLTests.cmake index c39db173bd7..0392004b3d1 100644 --- a/test/CMakePassthroughVOLTests.cmake +++ b/test/CMakePassthroughVOLTests.cmake @@ -103,7 +103,7 @@ add_custom_target (HDF5_VOLTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/volTest.cmake" ) set_tests_properties (VOL-${volname}-${voltest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${volname} ) if ("VOL-${volname}-${voltest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -127,7 +127,7 @@ add_custom_target (HDF5_VOLTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/volTest.cmake" ) set_tests_properties (VOL-${volname}-${voltest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${volname} ) if ("VOL-${volname}-${voltest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -146,7 +146,7 @@ add_custom_target (HDF5_VOLTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/volTest.cmake" ) set_tests_properties (VOL-${volname}-${voltest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${volname} ) if ("VOL-${volname}-${voltest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -164,7 +164,7 @@ add_custom_target (HDF5_VOLTEST_LIB_files ALL COMMENT "Copying files needed by H -D "TEST_VOL:STRING=${volinfo}" -D "TEST_EXPECT=${resultcode}" -D "TEST_OUTPUT=${volname}-${voltest}.out" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/${volname};${CROSSCOMPILING_PATH}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/${volname}" -P "${HDF_RESOURCES_DIR}/volTest.cmake" ) set_tests_properties (VOL-${volname}-${voltest} PROPERTIES @@ -216,7 +216,7 @@ add_custom_target (HDF5_VOLTEST_LIB_files ALL COMMENT "Copying files needed by H ) set_tests_properties (VOL-${volname}-fheap PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT} - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${volname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${volname} ) if ("VOL-${volname}-fheap" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake index 8025d73b99c..e954e137b0c 100644 --- a/test/CMakeTests.cmake +++ b/test/CMakeTests.cmake @@ -226,7 +226,7 @@ set_tests_properties (H5TEST-testhdf5-clean-objects PROPERTIES FIXTURES_CLEANUP add_test (NAME H5TEST-testhdf5-base COMMAND $ -x file -x select) set_tests_properties (H5TEST-testhdf5-base PROPERTIES FIXTURES_REQUIRED clear_testhdf5 - ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-testhdf5-base" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -235,7 +235,7 @@ endif () add_test (NAME H5TEST-testhdf5-file COMMAND $ -o file) set_tests_properties (H5TEST-testhdf5-file PROPERTIES FIXTURES_REQUIRED clear_testhdf5 - ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-testhdf5-file" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -244,7 +244,7 @@ endif () add_test (NAME H5TEST-testhdf5-select COMMAND $ -o select) set_tests_properties (H5TEST-testhdf5-select PROPERTIES FIXTURES_REQUIRED clear_testhdf5 - ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-testhdf5-select" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -362,7 +362,7 @@ foreach (h5_test ${H5_EXPRESS_TESTS}) add_test (NAME H5TESTXPR-${h5_test} COMMAND $) set_tests_properties (H5TESTXPR-${h5_test} PROPERTIES FIXTURES_REQUIRED clear_H5TEST - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () @@ -379,7 +379,7 @@ foreach (h5_test ${H5_EXPRESS_TESTS}) ) set_tests_properties (H5TESTXPR-${h5_test} PROPERTIES FIXTURES_REQUIRED clear_H5TEST - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () @@ -394,7 +394,7 @@ foreach (h5_test ${H5_TESTS}) add_test (NAME H5TEST-${h5_test} COMMAND $) set_tests_properties (H5TEST-${h5_test} PROPERTIES FIXTURES_REQUIRED clear_H5TEST - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () @@ -417,7 +417,7 @@ foreach (h5_test ${H5_TESTS}) endif () set_tests_properties (H5TEST-${h5_test} PROPERTIES FIXTURES_REQUIRED clear_H5TEST - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () @@ -464,7 +464,7 @@ if (NOT CYGWIN) endif () set_tests_properties (H5TEST-cache PROPERTIES FIXTURES_REQUIRED clear_cache - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-cache PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT}) @@ -490,7 +490,7 @@ if (TEST_CACHE_IMAGE) add_test (NAME H5TEST-cache_image COMMAND $) set_tests_properties (H5TEST-cache_image PROPERTIES FIXTURES_REQUIRED clear_cache_image - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-cache_image" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -539,7 +539,7 @@ else () endif () set_tests_properties (H5TEST-external_env PROPERTIES FIXTURES_REQUIRED clear_external_env - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-external_env" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -573,7 +573,7 @@ else () endif () set_tests_properties (H5TEST-vds_env PROPERTIES FIXTURES_REQUIRED clear_vds_env - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-vds_env" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -616,7 +616,7 @@ else () endif () set_tests_properties (H5TEST-flush1 PROPERTIES FIXTURES_REQUIRED clear_flush - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-flush1" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -638,7 +638,6 @@ endif () set_tests_properties (H5TEST-flush2 PROPERTIES FIXTURES_REQUIRED clear_flush DEPENDS H5TEST-flush1 - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5TEST-flush2" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5TEST-flush2 PROPERTIES DISABLED true) @@ -648,7 +647,6 @@ endif () add_test (NAME H5TEST-tcheck_version-major COMMAND $ "-tM") set_tests_properties (H5TEST-tcheck_version-major PROPERTIES WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST - ENVIRONMENT "${CROSSCOMPILING_PATH}" WILL_FAIL "true" ) if ("H5TEST-tcheck_version-major" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -659,7 +657,6 @@ endif () add_test (NAME H5TEST-tcheck_version-minor COMMAND $ "-tm") set_tests_properties (H5TEST-tcheck_version-minor PROPERTIES WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST - ENVIRONMENT "${CROSSCOMPILING_PATH}" WILL_FAIL "true" ) if ("H5TEST-tcheck_version-minor" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -669,7 +666,6 @@ endif () add_test (NAME H5TEST-tcheck_version-release COMMAND $ "-tr") set_tests_properties (H5TEST-tcheck_version-release PROPERTIES WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5TEST-tcheck_version-release" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5TEST-tcheck_version-release PROPERTIES DISABLED true) @@ -750,7 +746,7 @@ if (HDF5_ENABLE_ROS3_VFD_DOCKER_PROXY) endif () set_tests_properties (H5TEST_S3TESTS-${h5_test} PROPERTIES FIXTURES_REQUIRED s3_proxy - ENVIRONMENT "${h5test_s3tests_env};${CROSSCOMPILING_PATH}" + ENVIRONMENT "${h5test_s3tests_env}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST_S3TESTS-${h5_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -830,7 +826,7 @@ set_tests_properties (H5TEST-del_many_dense_attrs-clean-objects PROPERTIES FIXTU add_test (NAME H5TEST-del_many_dense_attrs COMMAND $) set_tests_properties (H5TEST-del_many_dense_attrs PROPERTIES FIXTURES_REQUIRED clear_del_many_dense_attrs - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-del_many_dense_attrs" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -851,7 +847,7 @@ if (HDF5_ENABLE_DEPRECATED_SYMBOLS AND NOT MINGW) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-err_compat PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () @@ -867,7 +863,7 @@ else () -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-err_compat PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () @@ -889,7 +885,7 @@ if (HDF5_DEFAULT_API_VERSION MATCHES "v16" OR MINGW) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-error_test PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_PLUGIN_PRELOAD=::;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_PLUGIN_PRELOAD=::" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () @@ -905,7 +901,7 @@ else () -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-error_test PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_PLUGIN_PRELOAD=::;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_PLUGIN_PRELOAD=::" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) add_test ( @@ -957,7 +953,7 @@ else () endif () set_tests_properties (H5TEST-links_env PROPERTIES FIXTURES_REQUIRED clear_links_env - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_EXT_PREFIX=.:tmp_links_env;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_EXT_PREFIX=.:tmp_links_env" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if ("H5TEST-links_env" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -995,7 +991,7 @@ if (BUILD_SHARED_LIBS) add_test (NAME H5PLUGIN-filter_plugin COMMAND $) set_tests_properties (H5PLUGIN-filter_plugin PROPERTIES - ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/filter_plugin_dir1${CMAKE_SEP}${CMAKE_BINARY_DIR}/filter_plugin_dir2${CMAKE_SEP};HDF5_VOL_CONNECTOR=;srcdir=${HDF5_TEST_BINARY_DIR};${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/filter_plugin_dir1${CMAKE_SEP}${CMAKE_BINARY_DIR}/filter_plugin_dir2${CMAKE_SEP};HDF5_VOL_CONNECTOR=;srcdir=${HDF5_TEST_BINARY_DIR}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR} ) if ("H5PLUGIN-filter_plugin" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1052,7 +1048,7 @@ if (ENABLE_EXTENDED_TESTS) ) set_tests_properties (H5TEST-testflushrefresh PROPERTIES FIXTURES_REQUIRED clear_testflushrefresh - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test;${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test ) if ("H5TEST-testflushrefresh" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1093,7 +1089,7 @@ if (BUILD_SHARED_LIBS) add_test (NAME H5PLUGIN-vol_plugin COMMAND $) set_tests_properties (H5PLUGIN-vol_plugin PROPERTIES - ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/null_vol_plugin_dir;srcdir=${HDF5_TEST_BINARY_DIR};HDF5_VOL_CONNECTOR=;${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/null_vol_plugin_dir;srcdir=${HDF5_TEST_BINARY_DIR};HDF5_VOL_CONNECTOR=" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR} ) if ("H5PLUGIN-vol_plugin" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/test/CMakeVFDTests.cmake b/test/CMakeVFDTests.cmake index 0fe0840fa02..42bc71c4e3c 100644 --- a/test/CMakeVFDTests.cmake +++ b/test/CMakeVFDTests.cmake @@ -124,7 +124,7 @@ add_custom_target (HDF5_VFDTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" ) set_tests_properties (VFD-${vfdname}-${vfdtest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname} ) if ("VFD-${vfdname}-${vfdtest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -148,7 +148,7 @@ add_custom_target (HDF5_VFDTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" ) set_tests_properties (VFD-${vfdname}-${vfdtest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname} ) if ("VFD-${vfdname}-${vfdtest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -167,7 +167,7 @@ add_custom_target (HDF5_VFDTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" ) set_tests_properties (VFD-${vfdname}-${vfdtest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname} ) if ("VFD-${vfdname}-${vfdtest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -189,7 +189,7 @@ add_custom_target (HDF5_VFDTEST_LIB_files ALL COMMENT "Copying files needed by H -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" ) set_tests_properties (VFD-${vfdname}-${vfdtest} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname} ) if ("VFD-${vfdname}-${vfdtest}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -245,7 +245,7 @@ add_custom_target (HDF5_VFDTEST_LIB_files ALL COMMENT "Copying files needed by H ) set_tests_properties (VFD-${vfdname}-fheap PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT} - ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/${vfdname}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname} ) if ("VFD-${vfdname}-fheap" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -273,7 +273,7 @@ add_custom_target (HDF5_VFDTEST_LIB_files ALL COMMENT "Copying files needed by H add_test (NAME H5PLUGIN-vfd_plugin COMMAND $) set_tests_properties (H5PLUGIN-vfd_plugin PROPERTIES - ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/null_vfd_plugin_dir;srcdir=${HDF5_TEST_BINARY_DIR};${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/null_vfd_plugin_dir;srcdir=${HDF5_TEST_BINARY_DIR}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR} ) if ("H5PLUGIN-vfd_plugin" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/testpar/CMakeVFDTests.cmake b/testpar/CMakeVFDTests.cmake index 9dc111b0df5..3f2d215bdde 100644 --- a/testpar/CMakeVFDTests.cmake +++ b/testpar/CMakeVFDTests.cmake @@ -43,7 +43,7 @@ macro (ADD_VFD_TEST vfdname resultcode) -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" ) set_tests_properties (MPI_TEST_VFD-${vfdname}-${h5_test} PROPERTIES - ENVIRONMENT "srcdir=${HDF5_TEST_PAR_BINARY_DIR}/${vfdname};${CROSSCOMPILING_PATH}" + ENVIRONMENT "srcdir=${HDF5_TEST_PAR_BINARY_DIR}/${vfdname}" WORKING_DIRECTORY ${HDF5_TEST_PAR_BINARY_DIR}/${vfdname} ) if ("MPI_TEST_VFD-${vfdname}-${h5_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/testpar/t_subfiling_vfd.c b/testpar/t_subfiling_vfd.c index 3be8c4dacab..9331666bb44 100644 --- a/testpar/t_subfiling_vfd.c +++ b/testpar/t_subfiling_vfd.c @@ -294,7 +294,7 @@ cleanup_file_mapping_memory(char **filenames, size_t len) /* Helper function to validate HDF5 file using h5fuse */ static herr_t validate_file_with_h5fuse(const char *config_filename, char **subfile_names, size_t num_subfiles, - const char *main_filename) + const char *main_filename, const char *dset_name) { char *h5fuse_cmd = NULL; char subfile_list[2048]; @@ -372,59 +372,73 @@ validate_file_with_h5fuse(const char *config_filename, char **subfile_names, siz H5E_END_TRY; /* Open file with sec2 driver and verify the data */ - { + if (dset_name) { hid_t sec2_file_id = H5I_INVALID_HID; hid_t dset_id = H5I_INVALID_HID; hid_t fspace_id = H5I_INVALID_HID; void *buf = NULL; - hsize_t dset_dims[1]; + hsize_t dset_dims[H5S_MAX_RANK]; size_t dset_size; + int ndims; - H5E_BEGIN_TRY - { - sec2_file_id = H5Fopen(main_filename, H5F_ACC_RDONLY, H5P_DEFAULT); - } - H5E_END_TRY; - - if (sec2_file_id >= 0) { - - H5E_BEGIN_TRY - { - dset_id = H5Dopen2(sec2_file_id, "DSET", H5P_DEFAULT); - } - H5E_END_TRY; - - if (dset_id >= 0) { - /* Get dataset dimensions */ - fspace_id = H5Dget_space(dset_id); - if (fspace_id >= 0 && H5Sget_simple_extent_dims(fspace_id, dset_dims, NULL) >= 0) { - dset_size = dset_dims[0] * sizeof(int); - buf = malloc(dset_size); - - if (buf) { - /* Read the entire dataset */ - if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) >= 0) { - printf("Successfully read dataset data from fused file\n"); - /* Note: Full data verification would require knowledge of the original data - * pattern */ - /* For now, just verify we can read the data without errors */ - } - free(buf); - } - - if (fspace_id >= 0) - H5Sclose(fspace_id); - } - H5Dclose(dset_id); - } - - H5Fclose(sec2_file_id); - } - else { + sec2_file_id = H5Fopen(main_filename, H5F_ACC_RDONLY, H5P_DEFAULT); + if (sec2_file_id < 0) { printf("ERROR: Could not re-open fused file with sec2 driver for data validation\n"); ret_value = FAIL; goto done; } + + dset_id = H5Dopen2(sec2_file_id, dset_name, H5P_DEFAULT); + if (dset_id < 0) { + printf("ERROR: Could not open dataset %s in fused file\n", dset_name); + ret_value = FAIL; + goto done; + } + + /* Get dataset dimensions */ + fspace_id = H5Dget_space(dset_id); + if (fspace_id < 0) { + printf("ERROR: Could not get dataspace for dataset %s in fused file\n", dset_name); + ret_value = FAIL; + goto done; + } + + ndims = H5Sget_simple_extent_dims(fspace_id, dset_dims, NULL); + if (ndims < 0) { + printf("ERROR: Could not get dataspace dimensions for dataset %s in fused file\n", dset_name); + ret_value = FAIL; + goto done; + } + + dset_size = 1; + for (int i = 0; i < ndims; i++) + dset_size *= dset_dims[i]; + dset_size *= sizeof(int); + + buf = malloc(dset_size); + if (!buf) { + printf("ERROR: Could not allocate buffer for verifying read for dataset %s in fused file\n", + dset_name); + ret_value = FAIL; + goto done; + } + + /* Read the entire dataset */ + /* Note: Full data verification would require knowledge of the original data + * pattern. For now, just verify we can read the data without errors */ + if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) { + printf("ERROR: Could not read from dataset %s in fused file\n", dset_name); + ret_value = FAIL; + goto done; + } + + free(buf); + + if (fspace_id >= 0) + H5Sclose(fspace_id); + + H5Dclose(dset_id); + H5Fclose(sec2_file_id); } done: @@ -583,8 +597,8 @@ test_subfiling_get_file_mapping_ioc_selection(void) int validation_result = 1; /* Default to success */ char *config_filename = NULL; if (len > 0) { - config_filename = find_config_file(filename); - ret = validate_file_with_h5fuse(config_filename, filenames, len, filename); + config_filename = find_config_file(filename); + ret = validate_file_with_h5fuse(config_filename, filenames, len, filename, NULL); validation_result = (ret >= 0) ? 1 : 0; } @@ -592,18 +606,22 @@ test_subfiling_get_file_mapping_ioc_selection(void) MPI_Allreduce(MPI_IN_PLACE, &validation_result, 1, MPI_INT, MPI_LAND, comm_g); VRFY(validation_result, "h5fuse validation succeeded for IOC selection"); - if (config_filename) { - free(config_filename); - } - cleanup_file_mapping_memory(filenames, len); + /* As the file has been fused, overwriting the stub file, delete the file + * using sec2 rather than subfiling. Delete the leftover config file normally. + */ H5E_BEGIN_TRY { - H5Fdelete(filename, fapl_id); + H5Fdelete(filename, H5P_DEFAULT); } H5E_END_TRY + if (config_filename) { + HDremove(config_filename); + free(config_filename); + } + VRFY((H5Pclose(fapl_id) >= 0), "FAPL close succeeded"); CHECK_PASSED(); } @@ -815,7 +833,8 @@ test_subfiling_get_file_mapping_with_io(void) char *config_filename = NULL; if (len_after > 0) { config_filename = find_config_file(SUBF_FILENAME_IO); - ret = validate_file_with_h5fuse(config_filename, filenames_after, len_after, SUBF_FILENAME_IO); + ret = validate_file_with_h5fuse(config_filename, filenames_after, len_after, SUBF_FILENAME_IO, + "/dataset"); validation_result = (ret >= 0) ? 1 : 0; } @@ -823,10 +842,6 @@ test_subfiling_get_file_mapping_with_io(void) MPI_Allreduce(MPI_IN_PLACE, &validation_result, 1, MPI_INT, MPI_LAND, comm_g); VRFY(validation_result, "h5fuse validation with I/O data succeeded"); - if (config_filename) { - free(config_filename); - } - /* All ranks participate in cleanup */ cleanup_file_mapping_memory(filenames_before, len_before); cleanup_file_mapping_memory(filenames_after, len_after); @@ -834,12 +849,20 @@ test_subfiling_get_file_mapping_with_io(void) /* Cleanup */ free(write_buf); + /* As the file has been fused, overwriting the stub file, delete the file + * using sec2 rather than subfiling. Delete the leftover config file normally. + */ H5E_BEGIN_TRY { - H5Fdelete(SUBF_FILENAME_IO, fapl_id); + H5Fdelete(SUBF_FILENAME_IO, H5P_DEFAULT); } H5E_END_TRY + if (config_filename) { + HDremove(config_filename); + free(config_filename); + } + VRFY((H5Pclose(fapl_id) >= 0), "FAPL close succeeded"); CHECK_PASSED(); @@ -1472,6 +1495,14 @@ test_stripe_sizes(void) VRFY(subfile_ptr == NULL, "fopen on subfile correctly failed"); } + /* Finally, replace HDF signature in file so it can be deleted properly */ + write_addr = (haddr_t)0; + VRFY((H5FDset_eoa(file_ptr, H5FD_MEM_DEFAULT, write_addr + H5F_SIGNATURE_LEN) >= 0), + "H5FDset_eoa succeeded"); + write_status = + H5FDwrite(file_ptr, H5FD_MEM_DRAW, dxpl_id, write_addr, H5F_SIGNATURE_LEN, H5F_SIGNATURE); + VRFY((write_status >= 0), "H5FDwrite succeeded"); + VRFY((H5FDclose(file_ptr) >= 0), "H5FDclose succeeded"); mpi_code_g = MPI_Barrier(comm_g); @@ -2168,6 +2199,13 @@ test_iovec_translation(void) subfile_ptr = fopen(tmp_filename, "r"); VRFY(subfile_ptr == NULL, "fopen on subfile correctly failed"); + /* Finally, replace HDF signature in file so it can be deleted properly */ + write_addr = (haddr_t)0; + VRFY((H5FDset_eoa(file_ptr, H5FD_MEM_DEFAULT, write_addr + H5F_SIGNATURE_LEN) >= 0), + "H5FDset_eoa succeeded"); + status = H5FDwrite(file_ptr, H5FD_MEM_DRAW, dxpl_id, write_addr, H5F_SIGNATURE_LEN, H5F_SIGNATURE); + VRFY((status >= 0), "H5FDwrite succeeded"); + VRFY((H5FDclose(file_ptr) >= 0), "H5FDclose succeeded"); free(write_buf); diff --git a/tools/libtest/CMakeTests.cmake b/tools/libtest/CMakeTests.cmake index 37850f6fe74..26ddc3b5a8d 100644 --- a/tools/libtest/CMakeTests.cmake +++ b/tools/libtest/CMakeTests.cmake @@ -25,9 +25,6 @@ macro (ADD_H5_TEST resultfile resultcode) add_test (NAME H5LIBTEST-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5LIBTEST-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (NOT "${resultcode}" STREQUAL "0") set_tests_properties (H5LIBTEST-${resultfile} PROPERTIES WILL_FAIL "true") endif () diff --git a/tools/test/CMakeLists.txt b/tools/test/CMakeLists.txt index e630a32b665..5d9077a7a75 100644 --- a/tools/test/CMakeLists.txt +++ b/tools/test/CMakeLists.txt @@ -85,7 +85,6 @@ if (HDF5_ENABLE_FORMATTERS) endif () #add_test (NAME H5GEN-h5gentest COMMAND $) -#set_target_properties (H5GEN-h5gentest PROPERTIES ENVIRONMENT "${CROSSCOMPILING_PATH}") #-- Add the h5diff tests add_subdirectory (h5diff) diff --git a/tools/test/h5copy/CMakeTests.cmake b/tools/test/h5copy/CMakeTests.cmake index 89738eedd77..5958b4d837b 100644 --- a/tools/test/h5copy/CMakeTests.cmake +++ b/tools/test/h5copy/CMakeTests.cmake @@ -64,7 +64,7 @@ foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS}) add_test(NAME ${external_vol_tgt}-h5copygentest COMMAND $ --h5copy) set_tests_properties (${external_vol_tgt}-h5copygentest PROPERTIES - ENVIRONMENT "${vol_env};${CROSSCOMPILING_PATH}" + ENVIRONMENT "${vol_env}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/${ext_vol_dir_name}/testfiles" FIXTURES_SETUP ${external_vol_tgt}-files ) @@ -198,7 +198,6 @@ macro (ADD_H5_TEST testname) set_tests_properties (${vol_prefix}H5COPY-${testname}-clear-objects PROPERTIES # h5delete will return an error code if targeted file does not exist - accept any result PASS_REGULAR_EXPRESSION "^$|" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY-${testname}-clear-objects PROPERTIES @@ -219,7 +218,6 @@ macro (ADD_H5_TEST testname) ) set_tests_properties (${vol_prefix}H5COPY-${testname}-prefill PROPERTIES DEPENDS ${vol_prefix}H5COPY-${testname}-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY-${testname}-prefill PROPERTIES @@ -263,7 +261,6 @@ macro (ADD_H5_TEST testname) endif () set_tests_properties (${vol_prefix}H5COPY-${testname} PROPERTIES DEPENDS "${vol_prefix}H5COPY-${testname}-clear-objects;${prefill_dep}" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY-${testname} PROPERTIES @@ -284,7 +281,6 @@ macro (ADD_H5_TEST testname) ) set_tests_properties (${vol_prefix}H5COPY-${testname}-DIFF PROPERTIES DEPENDS ${vol_prefix}H5COPY-${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY-${testname}-DIFF PROPERTIES @@ -309,7 +305,6 @@ macro (ADD_H5_TEST testname) set_tests_properties (${vol_prefix}H5COPY-${testname}-clean-objects PROPERTIES # h5delete will return an error code if targeted file does not exist - accept any result PASS_REGULAR_EXPRESSION "^$|" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY-${testname}-clean-objects PROPERTIES @@ -368,7 +363,6 @@ macro (ADD_H5_UD_TEST testname resultcode infile sparam srcname dparam dstname c set_tests_properties (${vol_prefix}H5COPY_UD-${testname}-clear-objects PROPERTIES # h5delete will return an error code if targeted file does not exist - accept any result PASS_REGULAR_EXPRESSION "^$|" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY_UD-${testname}-clear-objects PROPERTIES @@ -402,7 +396,6 @@ macro (ADD_H5_UD_TEST testname resultcode infile sparam srcname dparam dstname c ) set_tests_properties (${vol_prefix}H5COPY_UD-${testname} PROPERTIES DEPENDS ${vol_prefix}H5COPY_UD-${testname}-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY_UD-${testname} PROPERTIES @@ -431,7 +424,6 @@ macro (ADD_H5_UD_TEST testname resultcode infile sparam srcname dparam dstname c ) set_tests_properties (${vol_prefix}H5COPY_UD-${testname}-DIFF PROPERTIES DEPENDS ${vol_prefix}H5COPY_UD-${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") @@ -511,7 +503,6 @@ macro (ADD_H5_UD_ERR_TEST testname resultcode infile sparam srcname dparam dstna set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname}-clear-objects PROPERTIES # h5delete will return an error code if targeted file does not exist - accept any result PASS_REGULAR_EXPRESSION "^$|" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname}-clear-objects PROPERTIES @@ -548,7 +539,6 @@ macro (ADD_H5_UD_ERR_TEST testname resultcode infile sparam srcname dparam dstna ) set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname} PROPERTIES DEPENDS ${vol_prefix}H5COPY_UD_ERR-${testname}-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname} PROPERTIES @@ -577,7 +567,6 @@ macro (ADD_H5_UD_ERR_TEST testname resultcode infile sparam srcname dparam dstna ) set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname}-DIFF PROPERTIES DEPENDS ${vol_prefix}H5COPY_UD_ERR-${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname}-DIFF PROPERTIES @@ -597,7 +586,6 @@ macro (ADD_H5_UD_ERR_TEST testname resultcode infile sparam srcname dparam dstna set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname}-clean-objects PROPERTIES # h5delete will return an error code if targeted file does not exist - accept any result PASS_REGULAR_EXPRESSION "^$|" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set_tests_properties (${vol_prefix}H5COPY_UD_ERR-${testname}-clean-objects PROPERTIES DEPENDS ${vol_prefix}H5COPY_UD_ERR-${testname}-DIFF @@ -657,7 +645,6 @@ macro (ADD_SIMPLE_TEST resultfile resultcode) endif () set_tests_properties (${vol_prefix}H5COPY-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5COPY-${resultfile} PROPERTIES diff --git a/tools/test/h5diff/CMakeTests.cmake b/tools/test/h5diff/CMakeTests.cmake index 35a0e55f603..c90658006c4 100644 --- a/tools/test/h5diff/CMakeTests.cmake +++ b/tools/test/h5diff/CMakeTests.cmake @@ -388,7 +388,7 @@ foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS}) # Generate test files add_test (NAME ${external_vol_tgt}-h5diffgentest COMMAND $ -h5diff) set_tests_properties (${external_vol_tgt}-h5diffgentest PROPERTIES - ENVIRONMENT "${vol_env};${CROSSCOMPILING_PATH}" + ENVIRONMENT "${vol_env}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/${ext_vol_dir_name}/testfiles" FIXTURES_SETUP ${ext_vol_dir_name}-files ) @@ -580,7 +580,6 @@ macro (ADD_SH5_TEST testname) endif () set_tests_properties (${vol_prefix}H5DIFF-${testname} PROPERTIES WORKING_DIRECTORY "${workdir}" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") set_tests_properties (${vol_prefix}H5DIFF-${testname} PROPERTIES @@ -716,9 +715,6 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile) -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (${vol_prefix}H5DIFF_UD-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if ("${vol_prefix}H5DIFF_UD-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (${vol_prefix}H5DIFF_UD-${testname} PROPERTIES DISABLED true) endif () diff --git a/tools/test/h5dump/CMakeTests.cmake b/tools/test/h5dump/CMakeTests.cmake index 911972ffd35..ea1aa6657f8 100644 --- a/tools/test/h5dump/CMakeTests.cmake +++ b/tools/test/h5dump/CMakeTests.cmake @@ -512,7 +512,6 @@ macro (ADD_HELP_TEST testname resultcode) endif () set_tests_properties (H5DUMP-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5DUMP-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5DUMP-${testname} PROPERTIES DISABLED true) @@ -707,7 +706,7 @@ macro (ADD_H5_TEST testname) if (${vol_idx} EQUAL 0) set (vol "native") set (vol_prefix "") - set (vol_env "${CROSSCOMPILING_PATH}") + set (vol_env "") set (workdir "${PROJECT_BINARY_DIR}/testfiles/std") else () # An external VOL connector @@ -754,7 +753,6 @@ macro (ADD_H5_TEST testname) if (${ARG_RESULT_CODE}) set_tests_properties (${vol_prefix}H5DUMP-${ctest_testname} PROPERTIES WILL_FAIL "true" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () else () @@ -807,7 +805,6 @@ macro (ADD_H5_TEST testname) set_tests_properties (${vol_prefix}H5DUMP-${ctest_testname}-output-cmp PROPERTIES DEPENDS H5DUMP-${ctest_testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${workdir}" ) @@ -866,7 +863,6 @@ macro (ADD_H5_TEST_IMPORT conffile resultfile testfile resultcode) ) set_tests_properties (H5DUMP-IMPORT-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-${resultfile}-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std" ) if ("H5DUMP-IMPORT-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -875,7 +871,6 @@ macro (ADD_H5_TEST_IMPORT conffile resultfile testfile resultcode) add_test (NAME H5DUMP-IMPORT-h5import-${resultfile} COMMAND $ ${resultfile}.bin -c ${conffile}.out -o ${resultfile}.h5) set_tests_properties (H5DUMP-IMPORT-h5import-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-${resultfile} - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std" ) if ("H5DUMP-IMPORT-h5import-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -884,7 +879,6 @@ macro (ADD_H5_TEST_IMPORT conffile resultfile testfile resultcode) add_test (NAME H5DUMP-IMPORT-h5diff-${resultfile} COMMAND $ ${testfile} ${resultfile}.h5 /integer /integer) set_tests_properties (H5DUMP-IMPORT-h5diff-${resultfile} PROPERTIES DEPENDS H5DUMP-IMPORT-h5import-${resultfile} - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std" ) if ("H5DUMP-IMPORT-h5diff-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -920,7 +914,6 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5DUMP_UD-${testname}-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std" ) if ("H5DUMP_UD-${testname}-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -956,7 +949,7 @@ macro (ADD_H5_S3TEST resultfile resultcode credtype urlscheme urlpath) endif () set_tests_properties (H5DUMP_S3TEST-${resultfile}_${urlscheme}_${credtype} PROPERTIES FIXTURES_REQUIRED h5dump_s3_proxy - ENVIRONMENT "${h5dump_s3tests_env};${CROSSCOMPILING_PATH}" + ENVIRONMENT "${h5dump_s3tests_env}" WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/S3TEST ) if ("H5DUMP_S3TEST-${resultfile}_${urlscheme}_${credtype}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/h5dump/CMakeTestsPBITS.cmake b/tools/test/h5dump/CMakeTestsPBITS.cmake index 90ee5633adb..1a5e52847f2 100644 --- a/tools/test/h5dump/CMakeTestsPBITS.cmake +++ b/tools/test/h5dump/CMakeTestsPBITS.cmake @@ -132,7 +132,6 @@ macro (ADD_H5_PBITS_TEST resultfile resultcode result_errcheck) endif () endif () set_tests_properties (H5DUMP-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/pbits" ) if ("H5DUMP-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/h5dump/CMakeTestsVDS.cmake b/tools/test/h5dump/CMakeTestsVDS.cmake index 9f5066130c4..a0e528f72f9 100644 --- a/tools/test/h5dump/CMakeTestsVDS.cmake +++ b/tools/test/h5dump/CMakeTestsVDS.cmake @@ -122,7 +122,6 @@ macro (ADD_H5_VDS_TEST resultfile resultcode) ) endif () set_tests_properties (H5DUMP-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds" ) if ("H5DUMP-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -135,7 +134,7 @@ macro (ADD_H5_VDS_PREFIX_TEST resultfile resultcode) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5DUMP_PREFIX-${resultfile} COMMAND $ ${ARGN}) set_tests_properties (H5DUMP_PREFIX-${resultfile} PROPERTIES - ENVIRONMENT "HDF5_VDS_PREFIX=${PROJECT_BINARY_DIR}/testfiles/vds/;${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_VDS_PREFIX=${PROJECT_BINARY_DIR}/testfiles/vds/" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds/prefix" ) if (${resultcode}) @@ -158,7 +157,6 @@ macro (ADD_H5_VDS_PREFIX_TEST resultfile resultcode) -D "TEST_ENV_VALUE=${PROJECT_BINARY_DIR}/testfiles/vds/" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP_PREFIX-${resultfile} PROPERTIES ENVIRONMENT "${CROSSCOMPILING_PATH}") endif () if ("H5DUMP_PREFIX-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5DUMP_PREFIX-${resultfile} PROPERTIES DISABLED true) @@ -170,7 +168,6 @@ macro (ADD_H5_VDS_LAYOUT resultfile resultcode) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5DUMP-${resultfile} COMMAND $ -p ${ARGN}) set_tests_properties (H5DUMP-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds" ) if (${resultcode}) @@ -191,7 +188,6 @@ macro (ADD_H5_VDS_LAYOUT resultfile resultcode) -D "TEST_REFERENCE=${resultfile}.ddl" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES ENVIRONMENT "${CROSSCOMPILING_PATH}") endif () if ("H5DUMP-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5DUMP-${resultfile} PROPERTIES DISABLED true) diff --git a/tools/test/h5dump/CMakeTestsXML.cmake b/tools/test/h5dump/CMakeTestsXML.cmake index 0a0d8a6e618..a891ca86b8d 100644 --- a/tools/test/h5dump/CMakeTestsXML.cmake +++ b/tools/test/h5dump/CMakeTestsXML.cmake @@ -207,7 +207,6 @@ macro (ADD_XML_H5_TEST resultfile resultcode) ) endif () set_tests_properties (H5DUMP_XML-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/xml" ) if ("H5DUMP_XML-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/h5dump/CMakeVFDTests.cmake b/tools/test/h5dump/CMakeVFDTests.cmake index 4e41fcd0ed9..800c640aee5 100644 --- a/tools/test/h5dump/CMakeVFDTests.cmake +++ b/tools/test/h5dump/CMakeVFDTests.cmake @@ -92,7 +92,6 @@ macro (ADD_VFD_H5DUMP_TEST vfdname resultfile resultcode) ) set_tests_properties (H5DUMP_VFD-${vfdname}-${resultfile}-h5dump PROPERTIES TIMEOUT ${CTEST_SHORT_TIMEOUT} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5DUMP_VFD-${vfdname}-${resultfile}-h5dump" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5DUMP_VFD-${vfdname}-${resultfile}-h5dump PROPERTIES DISABLED true) diff --git a/tools/test/h5format_convert/CMakeTests.cmake b/tools/test/h5format_convert/CMakeTests.cmake index caf349fd92e..fe69eb19461 100644 --- a/tools/test/h5format_convert/CMakeTests.cmake +++ b/tools/test/h5format_convert/CMakeTests.cmake @@ -122,7 +122,6 @@ macro (ADD_H5_OUTPUT testname resultfile resultcode testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC-${testname}-${testfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5FC-${testname}-${testfile}-tmpfile ) if ("H5FC-${testname}-${testfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -142,7 +141,6 @@ macro (ADD_H5_OUTPUT testname resultfile resultcode testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC-${testname}-${testfile}-NA PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5FC-${testname}-${testfile}-tmpfile ) if ("H5FC-${testname}-${testfile}-NA" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -185,7 +183,6 @@ macro (ADD_H5_NOERR_OUTPUT testname resultfile resultcode testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC-${testname}-${testfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5FC-${testname}-${testfile}-tmpfile ) if ("H5FC-${testname}-${testfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -228,7 +225,6 @@ macro (ADD_H5_MASK_OUTPUT testname resultfile resultcode result_errcheck testfil -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC-${testname}-${testfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5FC-${testname}-${testfile}-tmpfile ) if ("H5FC-${testname}-${testfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -283,7 +279,6 @@ macro (ADD_H5_TEST testname resultcode testfile) ) set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile" - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_H5FC-${testname} ) if ("H5FC-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -301,7 +296,6 @@ macro (ADD_H5_CHECK_IDX dependtest testname) ) set_tests_properties (H5FC_CHECK_IDX-${dependtest}-${testname} PROPERTIES DEPENDS "H5FC-${dependtest}" - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_H5FC-${dependtest} ) if ("H5FC_CHECK_IDX-${dependtest}-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -337,7 +331,6 @@ macro (ADD_H5_TEST_CHECK_IDX testname resultcode testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC_TEST_CHECK_IDX-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5FC_TEST_CHECK_IDX-${testname}-tmpfile" ) if ("H5FC_TEST_CHECK_IDX-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -348,7 +341,6 @@ macro (ADD_H5_TEST_CHECK_IDX testname resultcode testfile) COMMAND $ ./testfiles/${testname}-tmp.h5 ${ARGN} ) set_tests_properties (H5FC_TEST_CHECK_IDX-${testname}-check PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5FC_TEST_CHECK_IDX-${testname}" ) if ("H5FC_TEST_CHECK_IDX-${testname}-check" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -392,7 +384,6 @@ macro (ADD_H5_H5DUMP_CHECK testname) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC_H5DUMP_CHECK-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5FC_H5DUMP_CHECK-${testname}-tmpfile" ) if ("H5FC_H5DUMP_CHECK-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -410,7 +401,6 @@ macro (ADD_H5_H5DUMP_CHECK testname) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5FC_H5DUMP_CHECK-${testname}-dump PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5FC_H5DUMP_CHECK-${testname}" ) if ("H5FC_H5DUMP_CHECK-${testname}-dump" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/h5import/CMakeTests.cmake b/tools/test/h5import/CMakeTests.cmake index e2edeeeacf6..cc86c68a13f 100644 --- a/tools/test/h5import/CMakeTests.cmake +++ b/tools/test/h5import/CMakeTests.cmake @@ -115,7 +115,6 @@ macro (ADD_H5_TEST testname importfile conffile testfile) add_test (NAME H5IMPORT-${testname} COMMAND $ ${importfile} -c ${conffile} -o ${testfile}) set_tests_properties (H5IMPORT-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5IMPORT-${testname}-clear-objects FIXTURES_REQUIRED set_h5importtest ) @@ -138,7 +137,6 @@ macro (ADD_H5_TEST testname importfile conffile testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT-${testname}-H5DMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5IMPORT-${testname} FIXTURES_REQUIRED set_h5importtest ) @@ -158,7 +156,6 @@ macro (ADD_H5_TEST testname importfile conffile testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT-${testname}-H5DMP_CMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5IMPORT-${testname}-H5DMP FIXTURES_REQUIRED set_h5importtest ) @@ -222,7 +219,6 @@ macro (ADD_H5_DUMPTEST testname datasetname testfile) ) endif () set_tests_properties (H5IMPORT-DUMP-${testname}-H5DMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5IMPORT-DUMP-${testname}-clear-objects" FIXTURES_REQUIRED set_h5importtest ) @@ -242,7 +238,6 @@ macro (ADD_H5_DUMPTEST testname datasetname testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT-DUMP-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5IMPORT-DUMP-${testname}-H5DMP" FIXTURES_REQUIRED set_h5importtest ) @@ -263,7 +258,6 @@ macro (ADD_H5_DUMPTEST testname datasetname testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT-DUMP-${testname}-H5DFF PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5IMPORT-DUMP-${testname}" FIXTURES_REQUIRED set_h5importtest ) @@ -312,7 +306,6 @@ macro (ADD_H5_DUMPSUBTEST testname testfile datasetname) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT_SUB-DUMP-${testname}-H5DMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5IMPORT_SUB-DUMP-${testname}-clear-objects" FIXTURES_REQUIRED set_h5importtest ) @@ -332,7 +325,6 @@ macro (ADD_H5_DUMPSUBTEST testname testfile datasetname) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT_SUB-DUMP-${testname}-H5IMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5IMPORT_SUB-DUMP-${testname}-H5DMP" FIXTURES_REQUIRED set_h5importtest ) @@ -351,7 +343,6 @@ macro (ADD_H5_DUMPSUBTEST testname testfile datasetname) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5IMPORT_SUB-DUMP-${testname}-CMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5IMPORT_SUB-DUMP-${testname}-H5IMP" FIXTURES_REQUIRED set_h5importtest ) @@ -501,7 +492,6 @@ add_test ( add_test (NAME H5IMPORT-h5importtest COMMAND $) set_tests_properties (H5IMPORT-h5importtest PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_SETUP set_h5importtest DEPENDS H5IMPORT-h5importtest-clear-objects ) diff --git a/tools/test/h5jam/CMakeTests.cmake b/tools/test/h5jam/CMakeTests.cmake index 4bd72edf36d..30c928bd4a1 100644 --- a/tools/test/h5jam/CMakeTests.cmake +++ b/tools/test/h5jam/CMakeTests.cmake @@ -73,9 +73,6 @@ macro (TEST_H5JAM_OUTPUT expectfile resultcode) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () - set_tests_properties (H5JAM-${expectfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if ("H5JAM-${expectfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-${expectfile} PROPERTIES DISABLED true) endif () @@ -105,9 +102,6 @@ macro (TEST_H5UNJAM_OUTPUT expectfile resultcode) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () - set_tests_properties (H5JAM-UNJAM-${expectfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if ("H5JAM-UNJAM-${expectfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-UNJAM-${expectfile} PROPERTIES DISABLED true) endif () @@ -133,7 +127,6 @@ macro (CHECKFILE testname testdepends expected actual) endif () set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP PROPERTIES DEPENDS ${testdepends} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) add_test ( NAME H5JAM-${testname}-CHECKFILE-H5DMP_CMP @@ -152,7 +145,6 @@ macro (CHECKFILE testname testdepends expected actual) endif () set_tests_properties (H5JAM-${testname}-CHECKFILE-H5DMP_CMP PROPERTIES DEPENDS H5JAM-${testname}-CHECKFILE-H5DMP - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif () endmacro () @@ -182,7 +174,6 @@ macro (UNJAMTEST testname setfile infile ufile chkfile outfile) add_test (NAME H5JAM-${testname}-UNJAM COMMAND $ -i ${infile} -u ${ufile} -o ${outfile}) set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM_D-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (compare_test ${ufile}) else () @@ -200,14 +191,12 @@ macro (UNJAMTEST testname setfile infile ufile chkfile outfile) ) set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (compare_test "${outfile}.ufile.txt") else () add_test (NAME H5JAM-${testname}-UNJAM COMMAND $ -i ${infile} -o ${outfile}) set_tests_properties (H5JAM-${testname}-UNJAM PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (compare_test "") endif () @@ -239,7 +228,6 @@ macro (UNJAMTEST testname setfile infile ufile chkfile outfile) ) set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5JAM-${testname}-UNJAM-CHECK_UB_1" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_UB_1 PROPERTIES DISABLED true) @@ -259,9 +247,6 @@ macro (UNJAMTEST testname setfile infile ufile chkfile outfile) -D "TEST_OFILE=NULL" -P "${HDF_RESOURCES_DIR}/userblockTest.cmake" ) - set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if (${compare_test}) set_tests_properties (H5JAM-${testname}-UNJAM-CHECK_NOUB PROPERTIES DEPENDS H5JAM-${testname}-UNJAM-CHECK_UB_1) else () @@ -283,9 +268,6 @@ macro (JAMTEST testname jamfile infile chkfile outfile) ) endif () add_test (NAME H5JAM-${testname} COMMAND $ -u testfiles/${jamfile} -i testfiles/${infile} -o ${outfile} ${ARGN}) - set_tests_properties (H5JAM-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" - ) if ("H5JAM-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-${testname} PROPERTIES DISABLED true) endif () @@ -320,7 +302,6 @@ macro (JAMTEST testname jamfile infile chkfile outfile) ) set_tests_properties (H5JAM-${testname}-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}-CHECK_UB_1-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5JAM-${testname}-CHECK_UB_1" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-${testname}-CHECK_UB_1 PROPERTIES DISABLED true) @@ -354,7 +335,6 @@ macro (JAMTEST_NONE testname jamfile infile setfile chkfile) add_test (NAME H5JAM-${testname}_NONE COMMAND $ -u testfiles/${jamfile} -i ${chkfile} ${ARGN}) set_tests_properties (H5JAM-${testname}_NONE PROPERTIES DEPENDS H5JAM-${testname}_NONE_COPY - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5JAM-${testname}_NONE" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-${testname}_NONE PROPERTIES DISABLED true) @@ -389,7 +369,6 @@ macro (JAMTEST_NONE testname jamfile infile setfile chkfile) ) set_tests_properties (H5JAM-${testname}_NONE-CHECK_UB_1 PROPERTIES DEPENDS H5JAM-${testname}_NONE-CHECK_UB_1-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if ("H5JAM-${testname}_NONE-CHECK_UB_1" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5JAM-${testname}_NONE-CHECK_UB_1 PROPERTIES DISABLED true) diff --git a/tools/test/h5ls/CMakeTests.cmake b/tools/test/h5ls/CMakeTests.cmake index 71ee059dc69..b2720577c9c 100644 --- a/tools/test/h5ls/CMakeTests.cmake +++ b/tools/test/h5ls/CMakeTests.cmake @@ -314,7 +314,6 @@ macro (ADD_H5_TEST testname) endif () set_tests_properties (${vol_prefix}H5LS-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${vol_workdir}" ) @@ -353,7 +352,6 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5LS_UD-${testname}-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) if ("H5LS_UD-${testname}-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -386,7 +384,7 @@ macro (ADD_H5_S3TEST resultfile resultcode credtype urlscheme urlpath) endif () set_tests_properties (H5LS_S3TEST-${resultfile}_${urlscheme}_${credtype} PROPERTIES FIXTURES_REQUIRED h5ls_s3_proxy - ENVIRONMENT "${h5ls_s3tests_env};${CROSSCOMPILING_PATH}" + ENVIRONMENT "${h5ls_s3tests_env}" WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/S3TEST ) if ("H5LS_S3TEST-${resultfile}_${urlscheme}_${credtype}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/h5ls/CMakeTestsVDS.cmake b/tools/test/h5ls/CMakeTestsVDS.cmake index d149889642c..3d7c30967e3 100644 --- a/tools/test/h5ls/CMakeTestsVDS.cmake +++ b/tools/test/h5ls/CMakeTestsVDS.cmake @@ -102,7 +102,6 @@ macro (ADD_H5_VDS_TEST resultfile resultcode) ) endif () set_tests_properties (H5LS-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds" ) if ("H5LS-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -115,7 +114,7 @@ macro (ADD_H5_VDS_PREFIX_TEST resultfile resultcode) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5LS_PREFIX-${resultfile} COMMAND $ ${ARGN}) set_tests_properties (H5LS_PREFIX-${resultfile} PROPERTIES - ENVIRONMENT "HDF5_VDS_PREFIX=\${ORIGIN};${CROSSCOMPILING_PATH}" + ENVIRONMENT "HDF5_VDS_PREFIX=\${ORIGIN}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) if ("${resultcode}" STREQUAL "1") @@ -137,7 +136,6 @@ macro (ADD_H5_VDS_PREFIX_TEST resultfile resultcode) ) endif () set_tests_properties (H5LS_PREFIX-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) if ("H5LS_PREFIX-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/h5repack/CMakeTests.cmake b/tools/test/h5repack/CMakeTests.cmake index d19e6633275..044ef36ae18 100644 --- a/tools/test/h5repack/CMakeTests.cmake +++ b/tools/test/h5repack/CMakeTests.cmake @@ -311,7 +311,6 @@ macro (ADD_HELP_TEST testname resultcode) ) endif () set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) if ("H5REPACK-h5repack-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -516,7 +515,7 @@ macro (ADD_H5_TEST testname) # First, populate VOL info to be passed to tests if (${vol_idx} EQUAL 0) set (vol "native") - set (vol_env "${CROSSCOMPILING_PATH}") + set (vol_env "") set (vol_prefix "") # Avoid names of the form XXX_BINARY_DIR due to collision risk set (BINARY_DIR_VOL "${PROJECT_BINARY_DIR}") @@ -648,7 +647,6 @@ macro (ADD_H5_TEST testname) ) set_tests_properties (${DIFF_TESTNAME} PROPERTIES DEPENDS ${REPACK_TESTNAME} - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${BINARY_DIR_VOL}" ) if ("${DIFF_TESTNAME}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -808,7 +806,6 @@ macro (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilt COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} ) set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname}-clear-objects ) @@ -827,7 +824,6 @@ macro (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilt -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname} ) @@ -857,7 +853,6 @@ macro (ADD_H5_VERIFY_SUPERBLOCK testname testfile lowbound highbound superblock) COMMAND $ -j;${lowbound};-k;${highbound} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} ) set_tests_properties (H5REPACK_VERIFY_SUPERBLOCK-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_VERIFY_SUPERBLOCK-${testname}-clear-objects ) if ("H5REPACK_VERIFY_SUPERBLOCK-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -878,7 +873,6 @@ macro (ADD_H5_VERIFY_SUPERBLOCK testname testfile lowbound highbound superblock) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_VERIFY_SUPERBLOCK-${testname}_DMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_VERIFY_SUPERBLOCK-${testname} ) if ("H5REPACK_VERIFY_SUPERBLOCK-${testname}_DMP" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -904,7 +898,6 @@ macro (ADD_H5_VERIFY_INVALIDBOUNDS testname resultcode lowbound highbound) COMMAND $ -j;${lowbound};-k;${highbound} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} ) set_tests_properties (ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname}-clear-objects WILL_FAIL "true" ) @@ -931,7 +924,6 @@ macro (ADD_H5_VERIFY_USERBLOCK testname userblocksize testfile) COMMAND $ --enable-error-stack ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} ) set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_VERIFY_USERBLOCK-${testname}-clear-objects ) if ("H5REPACK_VERIFY_USERBLOCK-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -952,7 +944,6 @@ macro (ADD_H5_VERIFY_USERBLOCK testname userblocksize testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_VERIFY_USERBLOCK-${testname}_DMP PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_VERIFY_USERBLOCK-${testname} ) if ("H5REPACK_VERIFY_USERBLOCK-${testname}_DMP" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -981,7 +972,6 @@ macro (ADD_H5_TEST_META testname testfile) COMMAND $ ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 ) set_tests_properties (H5REPACK_META-${testname}_N PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_META-${testname}-clear-objects ) if ("H5REPACK_META-${testname}_N" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -999,7 +989,6 @@ macro (ADD_H5_TEST_META testname testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_META-${testname}_N_DFF PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_META-${testname}_N ) if ("H5REPACK_META-${testname}_N_DFF" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1010,7 +999,6 @@ macro (ADD_H5_TEST_META testname testfile) COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5 ) set_tests_properties (H5REPACK_META-${testname}_M PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_META-${testname}_N_DFF ) if ("H5REPACK_META-${testname}_M" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1028,7 +1016,6 @@ macro (ADD_H5_TEST_META testname testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_META-${testname}_M_DFF PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_META-${testname}_M ) if ("H5REPACK_META-${testname}_M_DFF" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1082,7 +1069,6 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_UD-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_UD-${testname}-clear-objects ) if ("H5REPACK_UD-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1104,7 +1090,6 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5REPACK_UD-${testname}-h5dump PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_UD-${testname} ) if ("H5REPACK_UD-${testname}-h5dump" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -1168,7 +1153,6 @@ macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) COMMAND $ --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5 ) set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF1 PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_EXTERNAL-${testname}_CPY ) @@ -1181,7 +1165,6 @@ macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) COMMAND $ --enable-error-stack ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ) set_tests_properties (H5REPACK_EXTERNAL-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_EXTERNAL-${testname}_DFF1 ) @@ -1194,7 +1177,6 @@ macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) COMMAND $ --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}.h5 ) set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF2 PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_EXTERNAL-${testname} ) @@ -1206,7 +1188,6 @@ macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) COMMAND $ --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5 ) set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF3 PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_EXTERNAL-${testname}_DFF2 ) @@ -1231,7 +1212,6 @@ macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) COMMAND $ --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}.h5 ) set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF4 PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_EXTERNAL-${testname}_DATA_RMV ) @@ -1244,7 +1224,6 @@ macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) COMMAND $ --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5 ) set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF_FAIL PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5REPACK_EXTERNAL-${testname}_DFF4 WILL_FAIL "true" @@ -1319,14 +1298,12 @@ else () endif () set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-h5repack-${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) set (last_test "H5REPACK-testh5repack_detect_szip") # add_test (NAME H5REPACK-h5repacktest COMMAND $) # set_tests_properties (H5REPACK-h5repacktest PROPERTIES # DEPENDS H5REPACK-testh5repack_detect_szip -# ENVIRONMENT "${CROSSCOMPILING_PATH}" # ) # set (last_test "H5REPACK-h5repacktest") # @@ -1777,7 +1754,6 @@ add_test ( ) set_tests_properties (H5REPACK-HDFFV-10590 PROPERTIES WILL_FAIL "true" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) # test CVE-2018-14460 fix @@ -1787,7 +1763,6 @@ add_test ( ) set_tests_properties (H5REPACK-HDFFV-11223 PROPERTIES WILL_FAIL "true" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) # tests for metadata block size option ('-M') diff --git a/tools/test/h5repack/CMakeVFDTests.cmake b/tools/test/h5repack/CMakeVFDTests.cmake index 1815ef0521d..44a32b80d93 100644 --- a/tools/test/h5repack/CMakeVFDTests.cmake +++ b/tools/test/h5repack/CMakeVFDTests.cmake @@ -79,7 +79,6 @@ macro (ADD_VFD_TEST vfdname resultcode) -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" ) set_tests_properties (H5REPACK_VFD-${vfdname}-h5repacktest PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5REPACK_VFD-${vfdname}-h5repacktest-clear-objects TIMEOUT ${CTEST_SHORT_TIMEOUT} ) diff --git a/tools/test/h5stat/CMakeTests.cmake b/tools/test/h5stat/CMakeTests.cmake index 3f81d03b165..3719f7d5e4b 100644 --- a/tools/test/h5stat/CMakeTests.cmake +++ b/tools/test/h5stat/CMakeTests.cmake @@ -109,7 +109,6 @@ macro (ADD_H5_TEST resultfile resultcode) ) endif () set_tests_properties (H5STAT-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" ) if ("H5STAT-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -140,7 +139,6 @@ macro (ADD_H5_ERR_TEST resultfile resultcode errtext) ) endif () set_tests_properties (H5STAT-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" ) if ("H5STAT-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -171,7 +169,6 @@ macro (ADD_H5_CMP_TEST resultfile resultcode errtext) ) endif () set_tests_properties (H5STAT-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" ) if ("H5STAT-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -203,7 +200,7 @@ macro (ADD_H5_S3TEST resultfile resultcode credtype urlscheme urlpath) endif () set_tests_properties (H5STAT_S3TEST-${resultfile}_${urlscheme}_${credtype} PROPERTIES FIXTURES_REQUIRED h5stat_s3_proxy - ENVIRONMENT "${h5stat_s3tests_env};${CROSSCOMPILING_PATH}" + ENVIRONMENT "${h5stat_s3tests_env}" WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/S3TEST ) if ("H5STAT_S3TEST-${resultfile}_${urlscheme}_${credtype}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/misc/CMakeLists.txt b/tools/test/misc/CMakeLists.txt index 754bd9ce6cc..59eaa6abd72 100644 --- a/tools/test/misc/CMakeLists.txt +++ b/tools/test/misc/CMakeLists.txt @@ -20,7 +20,6 @@ else () endif () set_target_properties (h5clear_gentest PROPERTIES FOLDER tools) #add_test (NAME H5CLEAR-h5clear_gentest COMMAND $) -#set_target_properties (h5clear_gentest ENVIRONMENT "${CROSSCOMPILING_PATH}") #----------------------------------------------------------------------------- # Add Target to clang-format diff --git a/tools/test/misc/CMakeTestsClear.cmake b/tools/test/misc/CMakeTestsClear.cmake index f278c28e28d..ec8d862e4a7 100644 --- a/tools/test/misc/CMakeTestsClear.cmake +++ b/tools/test/misc/CMakeTestsClear.cmake @@ -94,7 +94,6 @@ macro (ADD_H5_CMP testname resultfile resultcode) -D "TEST_REFERENCE=${resultfile}.ddl" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES ENVIRONMENT "${CROSSCOMPILING_PATH}") if ("H5CLEAR_CMP-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES DISABLED true) endif () @@ -120,7 +119,6 @@ macro (ADD_H5_ERR_CMP testname resultfile resultcode result_errcheck) -D "TEST_SKIP_COMPARE=true" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) - set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES ENVIRONMENT "${CROSSCOMPILING_PATH}") if ("H5CLEAR_CMP-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES DISABLED true) endif () @@ -157,7 +155,6 @@ macro (ADD_H5_CMP_WITH_COPY testname resultcode resultfile testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR_CMP-copy_${testname} ) if ("H5CLEAR_CMP-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -193,7 +190,6 @@ macro (ADD_H5_ERR_CMP_WITH_COPY testname resultcode resultfile testfile) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR_CMP-copy_${testname} ) if ("H5CLEAR_CMP-${testname}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -209,7 +205,6 @@ macro (ADD_H5_RETTEST testname resultcode) COMMAND $ ${ARGN} ) set_tests_properties (H5CLEAR_RET-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" WILL_FAIL "${resultcode}" ) @@ -245,7 +240,6 @@ macro (ADD_H5_FILESIZE_TEST testname resultcode resultfile incr_size) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5CLEAR_FILESIZE_CMP-${testname}_before_size PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR_FILESIZE_TEST-copy_${testname} ) if ("H5CLEAR_FILESIZE_CMP-${testname}_before_size" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -263,7 +257,6 @@ macro (ADD_H5_FILESIZE_TEST testname resultcode resultfile incr_size) ) endif () set_tests_properties (H5CLEAR_FILESIZE_INCR-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" WILL_FAIL "${resultcode}" DEPENDS H5CLEAR_FILESIZE_CMP-${testname}_before_size @@ -283,7 +276,6 @@ macro (ADD_H5_FILESIZE_TEST testname resultcode resultfile incr_size) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5CLEAR_FILESIZE_CMP-${testname}_after_size PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR_FILESIZE_INCR-${testname} ) if ("H5CLEAR_FILESIZE_CMP-${testname}_after_size" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -321,7 +313,6 @@ macro (ADD_H5_FILESIZE_FAIL_TEST testname resultcode resultfile incr_size) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5CLEAR_FILESIZE_FAIL_CMP-${testname}_before_size PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR_FILESIZE_FAIL_TEST-copy_${testname} ) if ("H5CLEAR_FILESIZE_FAIL_CMP-${testname}_before_size" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -339,7 +330,6 @@ macro (ADD_H5_FILESIZE_FAIL_TEST testname resultcode resultfile incr_size) ) endif () set_tests_properties (H5CLEAR_FILESIZE_FAIL_INCR-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5CLEAR_FILESIZE_FAIL_CMP-${testname}_before_size ) @@ -358,7 +348,6 @@ macro (ADD_H5_FILESIZE_FAIL_TEST testname resultcode resultfile incr_size) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5CLEAR_FILESIZE_FAIL_CMP-${testname}_after_size PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR_FILESIZE_FAIL_INCR-${testname} ) if ("H5CLEAR_FILESIZE_FAIL_CMP-${testname}_after_size" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -382,7 +371,6 @@ macro (ADD_H5_TEST testname testfile resultcode) COMMAND $ ${testfile}.h5 ) set_tests_properties (H5CLEAR-clr_open_chk-${testname}_${resultcode} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WILL_FAIL "${resultcode}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" DEPENDS H5CLEAR-clr_open_chk-copy_${testname}.h5 @@ -397,7 +385,6 @@ macro (ADD_H5_TEST testname testfile resultcode) COMMAND $ -s ${testfile}.h5 ) set_tests_properties (H5CLEAR-h5clr-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR-clr_open_chk-${testname}_${resultcode} WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) @@ -409,7 +396,6 @@ macro (ADD_H5_TEST testname testfile resultcode) COMMAND $ ${testfile}.h5 ) set_tests_properties (H5CLEAR-clr_open_chk-${testname} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5CLEAR-h5clr-${testname} WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) diff --git a/tools/test/misc/CMakeTestsMkgrp.cmake b/tools/test/misc/CMakeTestsMkgrp.cmake index 0153106ee2c..01168e60d2e 100644 --- a/tools/test/misc/CMakeTestsMkgrp.cmake +++ b/tools/test/misc/CMakeTestsMkgrp.cmake @@ -142,7 +142,6 @@ macro (ADD_H5_TEST testname) WORKING_DIRECTORY "${vol_workdir}" # h5delete will return an error code if targeted file does not exist - accept any result PASS_REGULAR_EXPRESSION "^$|" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") @@ -166,7 +165,6 @@ macro (ADD_H5_TEST testname) if (NOT HDF5_ENABLE_USING_MEMCHECKER) set_tests_properties (${vol_prefix}H5MKGRP-${testname} PROPERTIES DEPENDS ${vol_prefix}H5MKGRP-${testname}-clear-objects - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endif() @@ -192,7 +190,6 @@ macro (ADD_H5_TEST testname) set_tests_properties (${vol_prefix}H5MKGRP-${testname}-h5ls PROPERTIES DEPENDS ${vol_prefix}H5MKGRP-${testname} - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) if (NOT "${vol}" STREQUAL "native") @@ -208,7 +205,6 @@ macro (ADD_H5_TEST testname) set_tests_properties ("${vol_prefix}H5MKGRP-${testname}" PROPERTIES WORKING_DIRECTORY "${vol_workdir}" - ENVIRONMENT "${CROSSCOMPILING_PATH}" ) endforeach () # per-VOL loop endmacro () @@ -217,7 +213,6 @@ macro (ADD_H5_CMP resultfile resultcode) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5MKGRP_CMP-${resultfile} COMMAND $ ${ARGN}) set_tests_properties (H5MKGRP_CMP-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) else () @@ -240,7 +235,6 @@ macro (ADD_H5_CMP resultfile resultcode) -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5MKGRP_CMP-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS H5MKGRP_CMP-${resultfile}-clear-objects ) if ("H5MKGRP_CMP-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") diff --git a/tools/test/misc/CMakeTestsRepart.cmake b/tools/test/misc/CMakeTestsRepart.cmake index ca19b9f8f81..1abb2cbdb18 100644 --- a/tools/test/misc/CMakeTestsRepart.cmake +++ b/tools/test/misc/CMakeTestsRepart.cmake @@ -85,7 +85,6 @@ add_test ( COMMAND $ -m 20000 family_file%05d.h5 fst_family%05d.h5 ) set_tests_properties (H5REPART-h5repart_20K PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_testrepart ) if ("H5REPART-h5repart_20K" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -98,7 +97,6 @@ add_test ( COMMAND $ -m 5k family_file%05d.h5 scd_family%05d.h5 ) set_tests_properties (H5REPART-h5repart_5K PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_testrepart ) if ("H5REPART-h5repart_5K" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -111,7 +109,6 @@ add_test ( COMMAND $ -m 20000 -family_to_single family_file%05d.h5 family_to_single.h5 ) set_tests_properties (H5REPART-h5repart_single PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_testrepart ) if ("H5REPART-h5repart_single" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -124,7 +121,6 @@ add_test ( COMMAND $ -m 20000 -family_to_sec2 family_file%05d.h5 family_to_sec2.h5 ) set_tests_properties (H5REPART-h5repart_sec2 PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_testrepart ) if ("H5REPART-h5repart_sec2" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -137,7 +133,6 @@ add_test ( COMMAND $ ) set_tests_properties (H5REPART-h5repart_test PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "H5REPART-h5repart_20K;H5REPART-h5repart_5K;H5REPART-h5repart_single;H5REPART-h5repart_sec2" FIXTURES_REQUIRED clear_testrepart ) diff --git a/tools/test/perform/CMakeTests.cmake b/tools/test/perform/CMakeTests.cmake index 1bb61878d1c..79f0c87dc43 100644 --- a/tools/test/perform/CMakeTests.cmake +++ b/tools/test/perform/CMakeTests.cmake @@ -65,7 +65,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_h5perf_serial PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" TIMEOUT ${CTEST_VERY_LONG_TIMEOUT} FIXTURES_REQUIRED clear_perform ) @@ -88,7 +87,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_chunk PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_perform ) if ("PERFORM_chunk" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -110,7 +108,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_iopipe PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_perform ) if ("PERFORM_iopipe" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -132,7 +129,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_overhead PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_perform ) if ("PERFORM_overhead" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -154,7 +150,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_perf_meta PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_perform ) if ("PERFORM_perf_meta" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -176,7 +171,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_zip_perf_help PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" FIXTURES_REQUIRED clear_perform ) if ("PERFORM_zip_perf_help" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") @@ -198,7 +192,6 @@ if (HDF5_TEST_SERIAL) ) endif () set_tests_properties (PERFORM_zip_perf PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" DEPENDS "PERFORM_zip_perf_help" FIXTURES_REQUIRED clear_perform ) diff --git a/utils/tools/test/h5dwalk/CMakeTests.cmake b/utils/tools/test/h5dwalk/CMakeTests.cmake index 2f3303d8123..f9de2f9a9aa 100644 --- a/utils/tools/test/h5dwalk/CMakeTests.cmake +++ b/utils/tools/test/h5dwalk/CMakeTests.cmake @@ -48,7 +48,6 @@ macro (ADD_H5_TEST resultfile resultcode) ) endif () set_tests_properties (H5DWALK-${resultfile} PROPERTIES - ENVIRONMENT "${CROSSCOMPILING_PATH}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" ) endmacro ()