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