summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2024-03-14 14:16:53 (GMT)
committerGitHub <noreply@github.com>2024-03-14 14:16:53 (GMT)
commit112f445019484597a0add53e78970323713213fb (patch)
tree40345174ee201c93203f2b9063f95860f3d6f495
parent782c0e5a8ce1970cdcff14e3fac5175aca89cf57 (diff)
downloadhdf5-112f445019484597a0add53e78970323713213fb.zip
hdf5-112f445019484597a0add53e78970323713213fb.tar.gz
hdf5-112f445019484597a0add53e78970323713213fb.tar.bz2
Add cygwin CI and update yaml files for consistency and accuracy (#4131)
* Add cygwin CI * add cygwin packages * Correct option names * Cleanup yaml file and synch look and feel * Synch CI look and feel and correct path issues * Upgrade oneapi version * pwsh needs env: for vars * No continuation char for pwsh * restore correct pwsh step * Run subset of tests for cygwin workflow * Remove space chars in regex * restore full tests
-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.yml10
-rw-r--r--.github/workflows/cmake.yml11
-rw-r--r--.github/workflows/cygwin-auto.yml62
-rw-r--r--.github/workflows/cygwin-cmake.yml63
-rw-r--r--.github/workflows/intel-auto.yml83
-rw-r--r--.github/workflows/intel-cmake.yml56
-rw-r--r--.github/workflows/main-auto.yml4
-rw-r--r--.github/workflows/main-cmake.yml23
-rw-r--r--.github/workflows/main.yml6
-rw-r--r--.github/workflows/mingw-cmake.yml91
-rw-r--r--.github/workflows/msys2-auto.yml66
-rw-r--r--.github/workflows/nvhpc-auto.yml17
-rw-r--r--.github/workflows/nvhpc-cmake.yml14
-rw-r--r--config/cmake/ConfigureChecks.cmake2
-rw-r--r--config/cmake/scripts/CTestScript.cmake31
-rw-r--r--configure.ac4
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