don't run tests by default & make park_section_no_miss test less brit… #54
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: CMake on multiple platforms | |
on: | |
push: | |
branches: [ "main" ] | |
jobs: | |
# Normal multi-platform build (Linux/Windows/macOS) | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, windows-latest, macos-latest ] | |
build_type: [ Release ] | |
c_compiler: [ gcc, clang, cl ] | |
include: | |
# Windows MSVC | |
- os: windows-latest | |
c_compiler: cl | |
cpp_compiler: cl | |
# Ubuntu GCC | |
- os: ubuntu-latest | |
c_compiler: gcc | |
cpp_compiler: g++ | |
# Ubuntu Clang | |
- os: ubuntu-latest | |
c_compiler: clang | |
cpp_compiler: clang++ | |
# macOS Clang | |
- os: macos-latest | |
c_compiler: clang | |
cpp_compiler: clang++ | |
exclude: | |
# Exclude invalid Windows combos | |
- os: windows-latest | |
c_compiler: gcc | |
- os: windows-latest | |
c_compiler: clang | |
# Exclude invalid Ubuntu combos | |
- os: ubuntu-latest | |
c_compiler: cl | |
# Exclude invalid macOS combos | |
- os: macos-latest | |
c_compiler: gcc | |
- os: macos-latest | |
c_compiler: cl | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set reusable strings | |
id: strings | |
shell: bash | |
run: | | |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" | |
- name: Configure CMake | |
run: > | |
cmake -B ${{ steps.strings.outputs.build-output-dir }} | |
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} | |
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
-DTHREAD_PARK_RUN_TESTS=ON | |
-S ${{ github.workspace }} | |
- name: Build | |
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} | |
- name: Test | |
working-directory: ${{ steps.strings.outputs.build-output-dir }} | |
run: ctest --build-config ${{ matrix.build_type }} --rerun-failed --output-on-failure | |
# FreeBSD build using vmactions/freebsd-vm@v1 | |
build-freebsd: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Build & Test on FreeBSD | |
uses: vmactions/freebsd-vm@v1 | |
with: | |
release: "13.4" | |
usesh: true | |
prepare: | | |
pkg update -f | |
pkg install -y cmake ninja llvm16 | |
run: | | |
export PATH="/usr/local/llvm16/bin:$PATH" | |
which clang-scan-deps || (echo "clang-scan-deps not found!" && exit 1) | |
mkdir -p build | |
cmake -B build -G Ninja \ | |
-DCMAKE_C_COMPILER=cc \ | |
-DCMAKE_CXX_COMPILER=c++ \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DTHREAD_PARK_RUN_TESTS=ON \ | |
. | |
cmake --build build | |
cd build | |
ctest --output-on-failure | |
# OpenBSD build using vmactions/openbsd-vm@v1 | |
build-openbsd: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Build & Test on OpenBSD | |
uses: vmactions/openbsd-vm@v1 | |
with: | |
release: "7.6" | |
usesh: true | |
prepare: | | |
export PKG_PATH="https://cdn.openbsd.org/pub/OpenBSD/7.6/packages/amd64/" | |
pkg_add -I cmake-3.30.1v1 ninja-1.11.1p0v0 llvm-16.0.6p30 | |
run: | | |
export PATH="/usr/local/llvm/bin:$PATH" | |
which clang-scan-deps || (echo "clang-scan-deps not found!" && exit 1) | |
mkdir -p build | |
cmake -B build -G Ninja \ | |
-DCMAKE_C_COMPILER=cc \ | |
-DCMAKE_CXX_COMPILER=c++ \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DTHREAD_PARK_RUN_TESTS=ON \ | |
. | |
cmake --build build | |
cd build | |
ctest --output-on-failure |