234 lines
7.8 KiB
YAML
234 lines
7.8 KiB
YAML
name: hdf5 dev CI
|
|
|
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8 ]
|
|
paths-ignore:
|
|
- '.github/CODEOWNERS'
|
|
- '.github/FUNDING.yml'
|
|
- 'doc/**'
|
|
- 'release_docs/**'
|
|
- 'ACKNOWLEDGEMENTS'
|
|
- 'COPYING**'
|
|
- '**.md'
|
|
|
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
jobs:
|
|
# This workflow contains a single job called "build"
|
|
build:
|
|
strategy:
|
|
# fail-fast: false
|
|
matrix:
|
|
name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Ubuntu Debug Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"]
|
|
include:
|
|
- name: "Windows Latest MSVC"
|
|
artifact: "Windows-MSVC.tar.xz"
|
|
os: windows-2022
|
|
build_type: "Release"
|
|
toolchain: ""
|
|
cpp: ON
|
|
fortran: OFF
|
|
java: ON
|
|
ts: OFF
|
|
hl: ON
|
|
parallel: OFF
|
|
generator: "-G \"Visual Studio 17 2022\" -A x64"
|
|
- name: "Ubuntu Latest GCC"
|
|
artifact: "Linux.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "Release"
|
|
cpp: ON
|
|
fortran: ON
|
|
java: ON
|
|
ts: OFF
|
|
hl: ON
|
|
parallel: OFF
|
|
toolchain: "config/toolchain/GCC.cmake"
|
|
generator: "-G Ninja"
|
|
- name: "macOS Latest Clang"
|
|
artifact: "macOS.tar.xz"
|
|
os: macos-latest
|
|
build_type: "Release"
|
|
cpp: ON
|
|
fortran: OFF
|
|
java: ON
|
|
ts: OFF
|
|
hl: ON
|
|
parallel: OFF
|
|
toolchain: "config/toolchain/clang.cmake"
|
|
generator: "-G Ninja"
|
|
- name: "Ubuntu Debug GCC"
|
|
artifact: "LinuxDBG.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "Debug"
|
|
cpp: ON
|
|
fortran: OFF
|
|
java: OFF
|
|
ts: OFF
|
|
hl: ON
|
|
parallel: OFF
|
|
toolchain: "config/toolchain/GCC.cmake"
|
|
generator: "-G Ninja"
|
|
- name: "Ubuntu Autotools GCC"
|
|
artifact: "LinuxA.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "production"
|
|
cpp: enable
|
|
fortran: enable
|
|
java: enable
|
|
ts: disable
|
|
hl: enable
|
|
parallel: disable
|
|
toolchain: ""
|
|
generator: "autogen"
|
|
- name: "Ubuntu Debug Autotools GCC"
|
|
artifact: "LinuxA.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "debug"
|
|
cpp: enable
|
|
fortran: enable
|
|
java: enable
|
|
ts: disable
|
|
hl: enable
|
|
parallel: disable
|
|
toolchain: ""
|
|
generator: "autogen"
|
|
# Threadsafe runs
|
|
- name: "Windows TS MSVC"
|
|
artifact: "Windows-MSVCTS.tar.xz"
|
|
os: windows-2019
|
|
build_type: "Release"
|
|
toolchain: ""
|
|
cpp: OFF
|
|
fortran: OFF
|
|
java: OFF
|
|
ts: ON
|
|
hl: OFF
|
|
parallel: OFF
|
|
generator: "-G \"Visual Studio 16 2019\" -A x64"
|
|
- name: "Ubuntu TS GCC"
|
|
artifact: "LinuxTS.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "Release"
|
|
cpp: OFF
|
|
fortran: OFF
|
|
java: OFF
|
|
ts: ON
|
|
hl: OFF
|
|
parallel: OFF
|
|
toolchain: "config/toolchain/GCC.cmake"
|
|
generator: "-G Ninja"
|
|
- name: "macOS TS Clang"
|
|
artifact: "macOSTS.tar.xz"
|
|
os: macos-latest
|
|
build_type: "Release"
|
|
cpp: OFF
|
|
fortran: OFF
|
|
java: OFF
|
|
ts: ON
|
|
hl: OFF
|
|
parallel: OFF
|
|
toolchain: "config/toolchain/clang.cmake"
|
|
generator: "-G Ninja"
|
|
- name: "TS Debug GCC"
|
|
artifact: "LinuxTSDBG.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "Debug"
|
|
cpp: OFF
|
|
fortran: OFF
|
|
java: OFF
|
|
ts: ON
|
|
hl: OFF
|
|
parallel: OFF
|
|
toolchain: "config/toolchain/GCC.cmake"
|
|
generator: "-G Ninja"
|
|
- name: "TS Autotools GCC"
|
|
artifact: "LinuxATS.tar.xz"
|
|
os: ubuntu-latest
|
|
build_type: "production"
|
|
cpp: disable
|
|
fortran: disable
|
|
java: disable
|
|
ts: enable
|
|
hl: disable
|
|
parallel: disable
|
|
toolchain: ""
|
|
generator: "autogen"
|
|
|
|
name: ${{ matrix.name }}
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os }}
|
|
if: "!contains(github.event.head_commit.message, 'skip-ci')"
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
- name: Install Dependencies (Linux)
|
|
run: sudo apt-get install ninja-build
|
|
if: matrix.os == 'ubuntu-latest'
|
|
- name: Install Autotools Dependencies (Linux)
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install automake autoconf libtool libtool-bin
|
|
sudo apt install gcc-11 g++-11 gfortran-11
|
|
sudo apt install openmpi-bin openmpi-common
|
|
if: matrix.generator == 'autogen'
|
|
- name: Install Dependencies (Windows)
|
|
run: choco install ninja
|
|
if: matrix.os == 'windows-latest'
|
|
- name: Install Dependencies (macOS)
|
|
run: brew install ninja
|
|
if: matrix.os == 'macos-latest'
|
|
- name: Set environment for MSVC (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
# Set these env vars so cmake picks the correct compiler
|
|
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@v2
|
|
|
|
- name: Autotools Configure
|
|
if: matrix.generator == 'autogen'
|
|
run: |
|
|
sh ./autogen.sh
|
|
mkdir "${{ runner.workspace }}/build"
|
|
cd "${{ runner.workspace }}/build"
|
|
$GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_type }} --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java
|
|
shell: bash
|
|
env:
|
|
CC: gcc-11
|
|
CXX: g++-11
|
|
FC: gfortran-11
|
|
|
|
- name: Configure
|
|
if: matrix.generator != 'autogen'
|
|
run: |
|
|
mkdir "${{ runner.workspace }}/build"
|
|
cd "${{ runner.workspace }}/build"
|
|
cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_THREADSAFE:BOOL=${{ matrix.ts }} -DHDF5_BUILD_HL_LIB:BOOL=${{ matrix.hl }} -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=${{ matrix.java }} $GITHUB_WORKSPACE
|
|
shell: bash
|
|
|
|
- name: Autotools Build
|
|
if: matrix.generator == 'autogen'
|
|
run: make
|
|
working-directory: ${{ runner.workspace }}/build
|
|
|
|
- name: Build
|
|
if: matrix.generator != 'autogen'
|
|
run: cmake --build . --config ${{ matrix.build_type }}
|
|
working-directory: ${{ runner.workspace }}/build
|
|
|
|
- name: Autotools Test
|
|
if: matrix.generator == 'autogen'
|
|
run: make check
|
|
working-directory: ${{ runner.workspace }}/build
|
|
|
|
- name: Test
|
|
if: matrix.generator != 'autogen'
|
|
run: ctest --build . -C ${{ matrix.build_type }} -V
|
|
working-directory: ${{ runner.workspace }}/build
|