diff options
-rw-r--r-- | .github/workflows/aocc-auto.yml (renamed from .github/workflows/aocc-ompi-auto.yml) | 10 | ||||
-rw-r--r-- | .github/workflows/aocc-cmake.yml (renamed from .github/workflows/aocc-ompi-cmake.yml) | 10 | ||||
-rw-r--r-- | .github/workflows/autotools.yml | 10 | ||||
-rw-r--r-- | .github/workflows/cmake.yml | 11 | ||||
-rw-r--r-- | .github/workflows/cygwin-auto.yml | 62 | ||||
-rw-r--r-- | .github/workflows/cygwin-cmake.yml | 63 | ||||
-rw-r--r-- | .github/workflows/intel-auto.yml | 83 | ||||
-rw-r--r-- | .github/workflows/intel-cmake.yml | 56 | ||||
-rw-r--r-- | .github/workflows/main-auto.yml | 4 | ||||
-rw-r--r-- | .github/workflows/main-cmake.yml | 23 | ||||
-rw-r--r-- | .github/workflows/main.yml | 6 | ||||
-rw-r--r-- | .github/workflows/mingw-cmake.yml | 91 | ||||
-rw-r--r-- | .github/workflows/msys2-auto.yml | 66 | ||||
-rw-r--r-- | .github/workflows/nvhpc-auto.yml | 17 | ||||
-rw-r--r-- | .github/workflows/nvhpc-cmake.yml | 14 | ||||
-rw-r--r-- | config/cmake/ConfigureChecks.cmake | 2 | ||||
-rw-r--r-- | config/cmake/scripts/CTestScript.cmake | 31 | ||||
-rw-r--r-- | configure.ac | 4 |
18 files changed, 399 insertions, 164 deletions
diff --git a/.github/workflows/aocc-ompi-auto.yml b/.github/workflows/aocc-auto.yml index be67672..740005d 100644 --- a/.github/workflows/aocc-ompi-auto.yml +++ b/.github/workflows/aocc-auto.yml @@ -16,9 +16,10 @@ jobs: name: "aocc ${{ inputs.build_mode }}" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources + uses: actions/checkout@v4.1.1 - - name: Install Linux dependencies + - name: Install Dependencies shell: bash run: | sudo apt update @@ -28,6 +29,7 @@ jobs: sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential - name: Install AOCC 4.1.0 + shell: bash run: | wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar tar -xvf aocc-compiler-4.1.0.tar @@ -74,7 +76,6 @@ jobs: LDFLAGS="-L/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib \ -L/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib" - # BUILD - name: Autotools Build shell: bash env: @@ -84,8 +85,6 @@ jobs: make -j3 working-directory: ${{ runner.workspace }}/build - # RUN TESTS - # NORMAL - name: Autotools Run Tests env: NPROCS: 2 @@ -94,7 +93,6 @@ jobs: make check -j working-directory: ${{ runner.workspace }}/build - # INSTALL (note that this runs even when we don't run the tests) - name: Autotools Install env: NPROCS: 2 diff --git a/.github/workflows/aocc-ompi-cmake.yml b/.github/workflows/aocc-cmake.yml index f2a834d..f1195dd 100644 --- a/.github/workflows/aocc-ompi-cmake.yml +++ b/.github/workflows/aocc-cmake.yml @@ -16,9 +16,10 @@ jobs: name: "aocc ${{ inputs.build_mode }}" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources + uses: actions/checkout@v4.1.1 - - name: Install Linux dependencies + - name: Install Dependencies shell: bash run: | sudo apt update @@ -28,6 +29,7 @@ jobs: sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential - name: Install AOCC 4.1.0 + shell: bash run: | wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar tar -xvf aocc-compiler-4.1.0.tar @@ -56,7 +58,7 @@ jobs: make make install - - name: CMake Configure with aocc + - name: CMake Configure shell: bash run: | export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib @@ -77,14 +79,12 @@ jobs: $GITHUB_WORKSPACE #cat src/libhdf5.settings - # BUILD - name: CMake Build shell: bash run: | cmake --build . --parallel 3 --config ${{ inputs.build_mode }} working-directory: ${{ runner.workspace }}/build - # RUN TESTS - name: CMake Run Tests shell: bash run: | diff --git a/.github/workflows/autotools.yml b/.github/workflows/autotools.yml index b31dbf9..b75e75d 100644 --- a/.github/workflows/autotools.yml +++ b/.github/workflows/autotools.yml @@ -73,6 +73,14 @@ jobs: call-release-auto-aocc: name: "Autotools aocc Workflows" - uses: ./.github/workflows/aocc-ompi-auto.yml + uses: ./.github/workflows/aocc-auto.yml with: build_mode: "production" + + call-release-auto-cygwin: + name: "Autotools Cygwin Workflows" + uses: ./.github/workflows/cygwin-auto.yml + with: + build_mode: "production" + +
\ No newline at end of file diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index b7f8a2b..c0077ce 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -75,7 +75,14 @@ jobs: build_mode: "Release" call-release-cmake-aocc: - name: "CMake nvhpc Workflows" - uses: ./.github/workflows/aocc-ompi-cmake.yml + name: "CMake aocc Workflows" + uses: ./.github/workflows/aocc-cmake.yml + with: + build_mode: "Release" + + call-release-cmake-cygwin: + name: "CMake Cygwin Workflows" + uses: ./.github/workflows/cygwin-cmake.yml with: build_mode: "Release" +
\ No newline at end of file diff --git a/.github/workflows/cygwin-auto.yml b/.github/workflows/cygwin-auto.yml new file mode 100644 index 0000000..13e08eb --- /dev/null +++ b/.github/workflows/cygwin-auto.yml @@ -0,0 +1,62 @@ +name: hdf5 dev autotools cygwin + +on: + workflow_call: + inputs: + build_mode: + description: "release vs. debug build" + required: true + type: string + +permissions: + contents: read + +jobs: + cygwin_build_and_test: + name: "cygwin ${{ inputs.build_mode }}" + runs-on: windows-latest + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf input + + - name: Get Sources + uses: actions/checkout@v4.1.1 + + - name: Install Cygwin + uses: cygwin/cygwin-install-action@master + with: + packages: autoconf automake make gcc-fortran libtool zlib-devel m4 flex bison perl + + - name: Autotools Configure + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + sh ./autogen.sh + mkdir build + cd build + ../configure \ + --enable-build-mode=${{ inputs.build_mode }} \ + --enable-shared \ + --enable-fortran + + - name: Autotools Build + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + cd build + make -j3 + + - name: Autotools Run Tests + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + cd build +# make check -j ---- cache test fails + + - name: Autotools Install + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + cd build + make install diff --git a/.github/workflows/cygwin-cmake.yml b/.github/workflows/cygwin-cmake.yml new file mode 100644 index 0000000..73fb538 --- /dev/null +++ b/.github/workflows/cygwin-cmake.yml @@ -0,0 +1,63 @@ +name: hdf5 dev CMake cygwin + +on: + workflow_call: + inputs: + build_mode: + description: "release vs. debug build" + required: true + type: string + +permissions: + contents: read + +jobs: + cygwin_build_and_test: + name: "cygwin-${{ inputs.build_mode }}" + runs-on: windows-latest + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf input + + - name: Get Sources + uses: actions/checkout@v4.1.1 + + - name: Install Cygwin + uses: cygwin/cygwin-install-action@master + with: + packages: cmake gcc-fortran make ninja zlib-devel flex bison perl + + - name: CMake Configure + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + mkdir build + cd build + cmake -C ../config/cmake/cacheinit.cmake \ + -G Ninja \ + --log-level=VERBOSE \ + -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF \ + -DHDF5_BUILD_CPP_LIB:BOOL=OFF \ + -DLIBAEC_USE_LOCALCONTENT=OFF \ + -DZLIB_USE_LOCALCONTENT=OFF \ + -DHDF5_BUILD_FORTRAN:BOOL=ON \ + -DHDF5_BUILD_JAVA:BOOL=OFF \ + .. + + - name: CMake Build + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + cd build + cmake --build . --parallel 3 --config ${{ inputs.build_mode }} + + - name: CMake Run Tests + shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}' + run: | + export PATH=/usr/bin:$PATH + cd build + ctest . --parallel 2 -C ${{ inputs.build_mode }} -V +# ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -R "FORTRAN|H5TEST" diff --git a/.github/workflows/intel-auto.yml b/.github/workflows/intel-auto.yml index 7bd457c..8f767e7 100644 --- a/.github/workflows/intel-auto.yml +++ b/.github/workflows/intel-auto.yml @@ -1,4 +1,4 @@ -name: hdf5 dev autotools icx CI +name: hdf5 dev autotools icx on: workflow_call: @@ -12,49 +12,33 @@ permissions: contents: read jobs: - Intel_build_and_test: - name: "Intel ${{ inputs.build_mode }}" + intel_oneapi_linux: + name: "linux-oneapi ${{ inputs.build_mode }}" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources + uses: actions/checkout@v4.1.1 - name: Install Dependencies + shell: bash run: | sudo apt-get update sudo apt-get install autoconf automake libtool libtool-bin libaec-dev - - name: Add oneAPI to apt - shell: bash - run: | - cd /tmp - wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - sudo add-apt-repository -y "deb https://apt.repos.intel.com/oneapi all main" - - - name: Install oneAPI dpcpp and fortran compiler - shell: bash - run: | - sudo apt update - sudo apt install -y intel-oneapi-compiler-dpcpp-cpp - sudo apt install -y intel-oneapi-compiler-fortran - sudo apt install -y intel-oneapi-mpi-devel - sudo apt-get install doxygen graphviz - sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev - echo "CC=icx" >> $GITHUB_ENV - echo "CXX=icpx" >> $GITHUB_ENV - echo "FC=ifx" >> $GITHUB_ENV - - - name: Install oneAPI MKL library - shell: bash - run: | - sudo apt install -y intel-oneapi-mkl-devel + - name: Install oneAPI (Linux) + uses: fortran-lang/setup-fortran@v1 + id: setup-fortran + with: + compiler: intel + version: '2024.0' - name: Autotools Configure shell: bash + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | - source /opt/intel/oneapi/setvars.sh - export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" @@ -63,37 +47,42 @@ jobs: --enable-shared \ --disable-fortran - # BUILD - name: Autotools Build + shell: bash + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | - source /opt/intel/oneapi/setvars.sh - export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin make -j3 working-directory: ${{ runner.workspace }}/build - # RUN TESTS - # NORMAL - name: Autotools Run Tests + shell: bash + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | - source /opt/intel/oneapi/setvars.sh - export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin - export SYCL_DEVICE_FILTER=opencl.cpu make check -j2 working-directory: ${{ runner.workspace }}/build - # INSTALL (note that this runs even when we don't run the tests) - name: Autotools Install + shell: bash + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | - source /opt/intel/oneapi/setvars.sh - export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin - export SYCL_DEVICE_FILTER=opencl.cpu make install working-directory: ${{ runner.workspace }}/build - name: Autotools Verify Install + shell: bash + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | - source /opt/intel/oneapi/setvars.sh - export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin - export SYCL_DEVICE_FILTER=opencl.cpu make check-install working-directory: ${{ runner.workspace }}/build diff --git a/.github/workflows/intel-cmake.yml b/.github/workflows/intel-cmake.yml index 47f16a5..a470486 100644 --- a/.github/workflows/intel-cmake.yml +++ b/.github/workflows/intel-cmake.yml @@ -1,6 +1,5 @@ -name: hdf5 dev CMake icx CI +name: hdf5 dev CMake icx -# Controls when the action will run. Triggers the workflow on a call on: workflow_call: inputs: @@ -13,30 +12,28 @@ permissions: contents: read jobs: - # Linux (Ubuntu) w/ gcc + CMake - # - Intel_oneapi_linux: - name: "ubuntu-oneapi ${{ inputs.build_mode }}" + intel_oneapi_linux: + name: "linux-oneapi ${{ inputs.build_mode }}" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources (Linux) + uses: actions/checkout@v4.1.1 - # Only CMake need ninja-build, but we just install it unilaterally - # libssl, etc. are needed for the ros3 VFD - - name: Install Linux Dependencies + - name: Install Dependencies (Linux) + shell: bash run: | sudo apt update sudo apt-get install ninja-build doxygen graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev - - name: add oneAPI to env + - name: Install oneAPI (Linux) uses: fortran-lang/setup-fortran@v1 id: setup-fortran with: compiler: intel - version: '2023.2' + version: '2024.0' - - name: CMake Configure with oneapi + - name: CMake Configure (Linux) shell: bash env: FC: ${{ steps.setup-fortran.outputs.fc }} @@ -45,14 +42,15 @@ jobs: run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja \ - -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \ - -DLIBAEC_USE_LOCALCONTENT=OFF \ - -DZLIB_USE_LOCALCONTENT=OFF \ - $GITHUB_WORKSPACE + cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \ + -G Ninja \ + --log-level=VERBOSE \ + -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \ + -DLIBAEC_USE_LOCALCONTENT=OFF \ + -DZLIB_USE_LOCALCONTENT=OFF \ + $GITHUB_WORKSPACE - # BUILD - - name: CMake Build + - name: CMake Build (Linux) shell: bash env: FC: ${{ steps.setup-fortran.outputs.fc }} @@ -62,8 +60,7 @@ jobs: cmake --build . --parallel 3 --config ${{ inputs.build_mode }} working-directory: ${{ runner.workspace }}/build - # RUN TESTS - - name: CMake Run Tests + - name: CMake Run Tests (Linux) shell: bash env: FC: ${{ steps.setup-fortran.outputs.fc }} @@ -77,19 +74,20 @@ jobs: name: "windows-oneapi ${{ inputs.build_mode }}" runs-on: windows-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources (Windows) + uses: actions/checkout@v4.1.1 - name: Install Dependencies (Windows) run: choco install ninja - - name: add oneAPI to env + - name: install oneAPI (Windows) uses: fortran-lang/setup-fortran@v1 id: setup-fortran with: compiler: intel - version: '2023.2' + version: '2024.0' - - name: CMake Configure with oneapi + - name: CMake Configure (Windows) shell: pwsh env: FC: ${{ steps.setup-fortran.outputs.fc }} @@ -100,8 +98,7 @@ jobs: Set-Location -Path "${{ runner.workspace }}\\build" cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} -DHDF5_BUILD_FORTRAN=ON -DLIBAEC_USE_LOCALCONTENT=OFF -DZLIB_USE_LOCALCONTENT=OFF ${{ github.workspace }} - # BUILD - - name: CMake Build + - name: CMake Build (Windows) shell: pwsh env: FC: ${{ steps.setup-fortran.outputs.fc }} @@ -111,8 +108,7 @@ jobs: cmake --build . --parallel 3 --config ${{ inputs.build_mode }} working-directory: ${{ runner.workspace }}/build - # RUN TESTS - - name: CMake Run Tests + - name: CMake Run Tests (Windows) shell: pwsh env: FC: ${{ steps.setup-fortran.outputs.fc }} diff --git a/.github/workflows/main-auto.yml b/.github/workflows/main-auto.yml index 51ddfdb..cab026e 100644 --- a/.github/workflows/main-auto.yml +++ b/.github/workflows/main-auto.yml @@ -51,7 +51,6 @@ jobs: - name: Get Sources uses: actions/checkout@v4.1.1 - # AUTOTOOLS CONFIGURE - name: Autotools Configure run: | sh ./autogen.sh @@ -92,13 +91,10 @@ jobs: shell: bash if: ${{ inputs.thread_safety == 'enable' }} - # BUILD - name: Autotools Build run: make -j3 working-directory: ${{ runner.workspace }}/build - # RUN TESTS - # NORMAL - name: Autotools Run Tests run: make check -j2 working-directory: ${{ runner.workspace }}/build diff --git a/.github/workflows/main-cmake.yml b/.github/workflows/main-cmake.yml index ec93d0d..2b02765 100644 --- a/.github/workflows/main-cmake.yml +++ b/.github/workflows/main-cmake.yml @@ -107,8 +107,6 @@ jobs: generator: "-G Ninja" run_tests: true - - # Sets the job's name from the properties name: "${{ matrix.name }}-${{ inputs.build_mode }}-${{ inputs.thread_safety }}" @@ -120,18 +118,11 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: - - # - # SETUP - # - #Useful for debugging - name: Dump matrix context run: echo '${{ toJSON(matrix) }}' - # Only CMake need ninja-build, but we just install it unilaterally - # libssl, etc. are needed for the ros3 VFD - - name: Install Linux Dependencies + - name: Install CMake Dependencies (Linux) run: | sudo apt update sudo apt-get install ninja-build graphviz @@ -171,13 +162,13 @@ jobs: # # CMAKE CONFIGURE # - - name: CMake Configure run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \ ${{ matrix.generator }} \ + --log-level=VERBOSE \ -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \ -DBUILD_SHARED_LIBS=ON \ -DHDF5_ENABLE_ALL_WARNINGS=ON \ @@ -198,7 +189,6 @@ jobs: shell: bash if: ${{ inputs.thread_safety != 'TS' }} - - name: CMake Configure (Thread-Safe) run: | mkdir "${{ runner.workspace }}/build" @@ -229,7 +219,6 @@ jobs: # # BUILD # - - name: CMake Build run: cmake --build . --parallel 3 --config ${{ inputs.build_mode }} working-directory: ${{ runner.workspace }}/build @@ -237,25 +226,17 @@ jobs: # # RUN TESTS # - - # NORMAL - - name: CMake Run Tests run: ctest . --parallel 2 -C ${{ inputs.build_mode }} -V working-directory: ${{ runner.workspace }}/build if: ${{ matrix.run_tests && (inputs.thread_safety != 'TS') }} # THREAD-SAFE - - name: CMake Run Thread-Safe Tests run: ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -R ttsafe working-directory: ${{ runner.workspace }}/build if: ${{ matrix.run_tests && (inputs.thread_safety == 'TS') }} - # - # INSTALL (note that this runs even when we don't run the tests) - # - - name: CMake Run Package run: cpack -C ${{ inputs.build_mode }} -V working-directory: ${{ runner.workspace }}/build diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3f878b1..845fc68 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,3 +37,9 @@ jobs: uses: ./.github/workflows/cmake.yml if: "!contains(github.event.head_commit.message, 'skip-ci')" +# workflow-msys2-autotools: +# name: "CMake msys2 Workflows" +# uses: ./.github/workflows/msys2-auto.yml +# with: +# build_mode: "production" +# build_option: "--enable-production" diff --git a/.github/workflows/mingw-cmake.yml b/.github/workflows/mingw-cmake.yml new file mode 100644 index 0000000..4761318 --- /dev/null +++ b/.github/workflows/mingw-cmake.yml @@ -0,0 +1,91 @@ +name: hdf5 dev CMake MinGW + +on: + workflow_call: + inputs: + build_mode: + description: "release vs. debug build" + required: true + type: string + shared: + description: "shared true/false" + required: true + type: string + netcdf: + description: "netcdf true/false" + required: true + type: string + +permissions: + contents: read + +jobs: + mingw_build_and_test: + name: "mingw-${{ inputs.build_mode }}-NC=${{ inputs.netcdf }}" + if: "!contains(github.event.head_commit.message, 'skip-ci')" + runs-on: ubuntu-latest + steps: + - name: Get Sources + uses: actions/checkout@v4.1.1 + + - name: Install Dependencies + shell: bash + run: | + sudo apt update + sudo apt-get install -y ninja-build libtirpc-dev graphviz + + - name: Install MinGW + uses: egor-tensin/setup-mingw@v2 + with: + platform: x64 + + - name: Install Doxygen + uses: ssciwr/doxygen-install@v1 + with: + version: "1.9.7" + + - name: CMake Configure + shell: bash + run: | + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \ + -G Ninja \ + --log-level=VERBOSE \ + -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \ + -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/config/toolchain/mingw64.cmake \ + -DBUILD_SHARED_LIBS:BOOL=${{ inputs.shared }} \ + -DHDF4_BUILD_EXAMPLES:BOOL=ON \ + -DBUILD_JPEG_WITH_PIC:BOOL=ON \ + -DHDF4_ENABLE_NETCDF:BOOL=${{ inputs.netcdf }} \ + -DHDF4_BUILD_FORTRAN:BOOL=OFF \ + -DHDF4_BUILD_JAVA:BOOL=OFF \ + -DHDF4_BUILD_DOC:BOOL=ON \ + -DJPEG_USE_LOCALCONTENT:BOOL=OFF \ + -DLIBAEC_USE_LOCALCONTENT:BOOL=OFF \ + -DZLIB_USE_LOCALCONTENT:BOOL=OFF \ + -DHDF4_PACK_EXAMPLES:BOOL=ON \ + -DHDF4_PACKAGE_EXTLIBS:BOOL=ON \ + $GITHUB_WORKSPACE + + - name: CMake Build + shell: bash + run: | + cmake --build . --parallel 3 --config ${{ inputs.build_mode }} + working-directory: ${{ runner.workspace }}/build + + - name: CMake Run Tests + shell: bash + run: | + ctest . --parallel 2 -C ${{ inputs.build_mode }} -V + if: false + + - name: CMake Package + shell: bash + run: | + cpack -C ${{ inputs.build_mode }} -V + working-directory: ${{ runner.workspace }}/build + + - name: List files in the space + run: | + ls -l ${{ runner.workspace }}/build diff --git a/.github/workflows/msys2-auto.yml b/.github/workflows/msys2-auto.yml new file mode 100644 index 0000000..4ea2da8 --- /dev/null +++ b/.github/workflows/msys2-auto.yml @@ -0,0 +1,66 @@ +name: hdf5 dev Autotools MSys2 + +on: + workflow_call: + inputs: + build_mode: + description: "release vs. debug build" + required: true + type: string + build_option: + description: "--enable-production or --disable-production" + required: true + type: string + +permissions: + contents: read + +jobs: + msys2_build_and_test: + runs-on: windows-latest + strategy: + matrix: + include: + - { icon: '⬛', sys: mingw32 } + - { icon: '🟦', sys: mingw64 } + - { icon: '🟨', sys: ucrt64 } + - { icon: '🟧', sys: clang64 } + name: ${{ matrix.icon }} msys2-${{ matrix.sys }}-${{ inputs.build_mode }} + defaults: + run: + shell: msys2 {0} + steps: + - name: Get Sources + uses: actions/checkout@v4.1.1 + + - name: '${{ matrix.icon }} Setup MSYS2' + uses: msys2/setup-msys2@v2 + with: + msystem: ${{matrix.sys}} + update: true + install: >- + git + autotools + pacboy: >- + toolchain:p + libjpeg-turbo:p + + - name: Autotools Configure + run: | + sh ./autogen.sh + mkdir "$GITHUB_WORKSPACE/build" + cd "$GITHUB_WORKSPACE/build" + LDFLAGS="-lws2_32" $GITHUB_WORKSPACE/configure \ + ${{ inputs.build_option }} \ + --disable-netcdf \ + --enable-static-exec + + - name: Autotools Build + run: | + make -j3 + working-directory: $GITHUB_WORKSPACE/build + + - name: Autotools Run Tests + run: | + make check -j + working-directory: $GITHUB_WORKSPACE/build diff --git a/.github/workflows/nvhpc-auto.yml b/.github/workflows/nvhpc-auto.yml index bc6c935..1d003c2 100644 --- a/.github/workflows/nvhpc-auto.yml +++ b/.github/workflows/nvhpc-auto.yml @@ -16,9 +16,11 @@ jobs: name: "nvhpc ${{ inputs.build_mode }}" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources + uses: actions/checkout@v4.1.1 - name: Install Dependencies + shell: bash run: | sudo apt-get update sudo apt-get install autoconf automake libtool libtool-bin libaec-dev @@ -28,17 +30,17 @@ jobs: - name: Install NVHPC shell: bash - run: | + run: | curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list sudo apt-get update -y sudo apt-get install -y nvhpc-23-9 - echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV - echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV echo "NVHPCSDK=/opt/nvidia/hpc_sdk" >> $GITHUB_ENV echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc++" >> $GITHUB_ENV echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc" >> $GITHUB_ENV echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvfortran" >> $GITHUB_ENV + echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV + echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/lib" >> $GITHUB_ENV echo "DESTDIR=/tmp" >> $GITHUB_ENV @@ -56,9 +58,7 @@ jobs: --enable-fortran \ --enable-shared \ --enable-parallel - #cat config.log - # BUILD - name: Autotools Build shell: bash run: | @@ -66,16 +66,15 @@ jobs: make -j3 working-directory: ${{ runner.workspace }}/build - # RUN TESTS - # NORMAL - name: Autotools Run Tests + shell: bash run: | export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH make check -j working-directory: ${{ runner.workspace }}/build - # INSTALL (note that this runs even when we don't run the tests) - name: Autotools Install + shell: bash run: | export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH make install diff --git a/.github/workflows/nvhpc-cmake.yml b/.github/workflows/nvhpc-cmake.yml index 3a78c06..1b56eff 100644 --- a/.github/workflows/nvhpc-cmake.yml +++ b/.github/workflows/nvhpc-cmake.yml @@ -16,9 +16,10 @@ jobs: name: "nvhpc ${{ inputs.build_mode }}" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - name: Get Sources + uses: actions/checkout@v4.1.1 - - name: Install Linux dependencies + - name: Install Dependencies shell: bash run: | sudo apt update @@ -33,16 +34,16 @@ jobs: echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list sudo apt-get update -y sudo apt-get install -y nvhpc-23-9 - echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV - echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV echo "NVHPCSDK=/opt/nvidia/hpc_sdk" >> $GITHUB_ENV echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc++" >> $GITHUB_ENV echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvc" >> $GITHUB_ENV echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin/nvfortran" >> $GITHUB_ENV + echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV + echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/cuda/12.2/lib64:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/lib" >> $GITHUB_ENV echo "DESTDIR=/tmp" >> $GITHUB_ENV - - name: CMake Configure with nvc + - name: CMake Configure shell: bash run: | export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/compilers/bin:$PATH @@ -59,16 +60,13 @@ jobs: -DHDF5_BUILD_JAVA:BOOL=OFF \ -DMPIEXEC_MAX_NUMPROCS:STRING="2" \ $GITHUB_WORKSPACE - cat src/libhdf5.settings - # BUILD - name: CMake Build shell: bash run: | cmake --build . --parallel 3 --config ${{ inputs.build_mode }} working-directory: ${{ runner.workspace }}/build - # RUN TESTS - name: CMake Run Tests shell: bash run: | diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake index 7981b64..668739e 100644 --- a/config/cmake/ConfigureChecks.cmake +++ b/config/cmake/ConfigureChecks.cmake @@ -144,6 +144,8 @@ endif () if (CYGWIN) set (${HDF_PREFIX}_HAVE_LSEEK64 0) + set (CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE") + add_definitions ("-D_GNU_SOURCE") endif () #----------------------------------------------------------------------------- diff --git a/config/cmake/scripts/CTestScript.cmake b/config/cmake/scripts/CTestScript.cmake index 4f7eb4b..ad6cd44 100644 --- a/config/cmake/scripts/CTestScript.cmake +++ b/config/cmake/scripts/CTestScript.cmake @@ -117,37 +117,6 @@ else () set (CTEST_GIT_options "pull") endif () set (CTEST_UPDATE_COMMAND "${CTEST_GIT_COMMAND}") - else () - ## -------------------------- - ## use subversion to get source - #----------------------------------------------------------------------------- - ## cygwin does not handle the find_package() call - ## -------------------------- - set (CTEST_UPDATE_COMMAND "SVNCommand") - if (NOT SITE_CYGWIN}) - find_package (Subversion) - set (CTEST_SVN_COMMAND "${Subversion_SVN_EXECUTABLE}") - set (CTEST_UPDATE_COMMAND "${Subversion_SVN_EXECUTABLE}") - else () - set (CTEST_SVN_COMMAND "/usr/bin/svn") - set (CTEST_UPDATE_COMMAND "/usr/bin/svn") - endif () - - if (NOT EXISTS "${CTEST_SOURCE_DIRECTORY}") - set (NEED_REPOSITORY_CHECKOUT 1) - endif () - - if (NOT CTEST_REPO_VERSION) - set (CTEST_REPO_VERSION "HEAD") - endif () - if (${NEED_REPOSITORY_CHECKOUT}) - set (CTEST_CHECKOUT_COMMAND - "\"${CTEST_SVN_COMMAND}\" co ${REPOSITORY_URL} \"${CTEST_SOURCE_DIRECTORY}\" -r ${CTEST_REPO_VERSION}") - else () - if (CTEST_REPO_VERSION) - set (CTEST_SVN_UPDATE_OPTIONS "-r ${CTEST_REPO_VERSION}") - endif () - endif () endif () endif () endif () diff --git a/configure.ac b/configure.ac index 0fa2b3f..dff0c4a 100644 --- a/configure.ac +++ b/configure.ac @@ -1502,6 +1502,10 @@ case "$host_cpu-$host_vendor-$host_os" in AC_DEFINE([HAVE_MINGW], [1], [Define if using MinGW]) H5_CPPFLAGS="-D_GNU_SOURCE -D__USE_MINGW_ANSI_STDIO $H5_CPPFLAGS" ;; + *cygwin*) + AC_DEFINE([HAVE_CYGWIN], [1], [Define if using Cygwin]) + H5_CPPFLAGS="-D_GNU_SOURCE $H5_CPPFLAGS" + ;; esac ## Need to add the AM_ and H5_ into CFLAGS/CPPFLAGS to make them visible |