build, gh ci: use CMake presets #278
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: Build | |
on: [push] | |
jobs: | |
build-and-test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
preset: [debug, release] | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Install Ninja | |
uses: seanmiddleditch/gha-setup-ninja@v5 | |
- name: VC Vars | |
# Setup vcvars on Windows | |
# MSVC's address sanitizer attaches dependencies to several DLLs which are not in PATH | |
# vcvars will add them to PATH and allow msvc asan executables to run | |
if: matrix.os == 'windows-latest' | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Configure ASAN | |
run: cmake --preset=${{ matrix.preset }}-asan -B asan | |
- name: Build ASAN | |
run: cmake --build asan | |
- name: Test ASAN | |
run: ctest --test-dir asan --output-on-failure | |
env: | |
UBSAN_OPTIONS: halt_on_error=1 | |
- name: Configure TSAN | |
run: cmake --preset=${{ matrix.preset }}-tsan -B tsan | |
- name: Build TSAN | |
run: cmake --build tsan | |
- name: Test TSAN | |
run: ctest --test-dir tsan -L tsan --output-on-failure |