CMake: fix git-version-gen path #748
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI for CMake | |
on: | |
push: | |
paths: | |
- "**/CMakeLists.txt" | |
- "**.cmake" | |
- "**.cmake.in" | |
- "**.c" | |
- "**.h" | |
- "**.h.in" | |
- ".github/workflows/ci_cmake.yml" | |
pull_request: | |
release: | |
types: [published] | |
env: | |
CTEST_NO_TESTS_ACTION: "error" | |
CMAKE_BUILD_PARALLEL_LEVEL: 4 | |
CTEST_PARALLEL_LEVEL: 0 | |
jobs: | |
linux-gcc14: | |
runs-on: ubuntu-24.04 | |
name: Linux mpi=${{ matrix.mpi }} CC=${{ matrix.cc }} shared=${{ matrix.shared }} | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
cc: [gcc-12, gcc-13, gcc-14] | |
shared: [false] | |
mpi: [true] | |
include: | |
- cc: gcc | |
shared: true | |
mpi: true | |
- cc: gcc | |
mpi: false | |
- cc: clang-18 | |
mpi: true | |
env: | |
CC: ${{ matrix.cc }} | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Install system dependencies | |
if: ${{ matrix.mpi }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install --no-install-recommends \ | |
libmpich-dev mpich | |
- name: CMake composite steps (build, test, install, examples) | |
uses: ./.github/workflows/composite-cmake | |
linux-gcc9: | |
runs-on: ubuntu-22.04 | |
name: Linux mpi=${{ matrix.mpi }} CC=${{ matrix.cc }} shared=${{ matrix.shared }} | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
cc: [gcc-9, gcc-10, gcc-11] | |
shared: [false] | |
mpi: [true] | |
env: | |
CC: ${{ matrix.cc }} | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Install system dependencies | |
if: ${{ matrix.mpi }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install --no-install-recommends \ | |
libmpich-dev mpich | |
- name: CMake composite steps (build, test, install, examples) | |
uses: ./.github/workflows/composite-cmake | |
linux-valgrind: | |
needs: linux-gcc14 | |
runs-on: ubuntu-24.04 | |
name: Valgrind Linux mpi=${{ matrix.mpi }} CC=${{ matrix.cc }} shared=${{ matrix.shared }} | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
cc: [gcc] | |
shared: [false] | |
mpi: [true] | |
valgrind: [ON] | |
env: | |
CC: ${{ matrix.cc }} | |
steps: | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update -yq | |
sudo apt-get install -yq --no-install-recommends \ | |
libmpich-dev mpich valgrind | |
- name: Checkout source code | |
uses: actions/checkout@v4 | |
- name: CMake configure | |
run: cmake --preset default -Dmpi:BOOL=${{ matrix.mpi }} --install-prefix=${{ runner.temp }} -DBUILD_SHARED_LIBS:BOOL=${{ matrix.shared }} -DTEST_WITH_VALGRIND:BOOL=${{ matrix.valgrind }} | |
- name: CMake build | |
run: cmake --build --preset default | |
- name: CMake Test | |
run: ctest --preset default | |
- name: Upload log files | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux_cmake_valgrind_log | |
path: | | |
./build/CMakeFiles/CMakeConfigureLog.yaml | |
./build/Testing/Temporary/LastTest.log | |
mac: | |
# macos-14 is to use Apple Silicon hardware as most Apple users nowadays would have | |
# https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/ | |
runs-on: macos-14 | |
name: macOS mpi=${{ matrix.mpi }} CC=${{ matrix.cc }} shared=${{ matrix.shared }} | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
cc: [clang, gcc-13] | |
mpi: [true] | |
shared: [false] | |
include: | |
- shared: true | |
cc: clang | |
env: | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
CC: ${{ matrix.cc }} | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Install system dependencies | |
run: brew install open-mpi | |
- name: CMake composite steps (build, test, install, examples) | |
uses: ./.github/workflows/composite-cmake | |
windows: | |
runs-on: windows-latest | |
name: Windows | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
shared: [false] | |
# GitHub Action Windows shared libs is generally broken, even with MSYS2, but works on real laptops etc. | |
env: | |
CMAKE_GENERATOR: "MinGW Makefiles" | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: CMake configure without MPI | |
run: cmake --preset default -Dmpi:BOOL=no --install-prefix=${{ runner.temp }} -DBUILD_SHARED_LIBS:BOOL=${{ matrix.shared }} | |
- name: CMake build | |
run: cmake --build --preset default --parallel | |
- name: CMake Test | |
run: ctest --preset default | |
- name: CMake install (for examples) | |
run: cmake --install build | |
- name: CMake configure examples without MPI | |
run: cmake -B example/build -S example -DCMAKE_PREFIX_PATH:PATH=${{ runner.temp }} | |
- name: CMake build examples | |
run: cmake --build example/build --parallel | |
- name: Create package | |
if: github.event.action == 'published' | |
run: cpack --config build/CPackConfig.cmake | |
- name: Upload package | |
if: github.event.action == 'published' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-binary-archive | |
path: build/package | |
- name: Upload log files | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows_cmake_log | |
path: | | |
./build/CMakeFiles/CMakeConfigureLog.yaml | |
./build/Testing/Temporary/LastTest.log |