Skip to content

refactor: optimize polymorphic_scheduler #18

refactor: optimize polymorphic_scheduler

refactor: optimize polymorphic_scheduler #18

name: CMake on multiple platforms
on:
push:
branches:
- main
paths-ignore:
- docs/**
- "**/*.md"
- "*.md"
- README*
- Dockerfile
- LICENSE.txt
- .gitignore
- .dockerignore
jobs:
build:
name: ${{ matrix.os }} / ${{ matrix.c_compiler }} / ${{ matrix.build_type }} / ${{ matrix.sanitizer }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
build_type: Debug
c_compiler: cl
cpp_compiler: cl
asan: "OFF"
ubsan: "OFF"
tsan: "OFF"
sanitizer: none
- os: windows-latest
build_type: Release
c_compiler: cl
cpp_compiler: cl
asan: "OFF"
ubsan: "OFF"
tsan: "OFF"
sanitizer: none
- os: ubuntu-latest
build_type: Debug
c_compiler: gcc
cpp_compiler: g++
asan: "OFF"
ubsan: "OFF"
tsan: "OFF"
sanitizer: none
- os: ubuntu-latest
build_type: Release
c_compiler: gcc
cpp_compiler: g++
asan: "OFF"
ubsan: "OFF"
tsan: "OFF"
sanitizer: none
- os: ubuntu-latest
build_type: Debug
c_compiler: clang
cpp_compiler: clang++
asan: "OFF"
ubsan: "OFF"
tsan: "OFF"
sanitizer: none
- os: ubuntu-latest
build_type: Release
c_compiler: clang
cpp_compiler: clang++
asan: "OFF"
ubsan: "OFF"
tsan: "OFF"
sanitizer: none
- os: ubuntu-latest
build_type: Debug
c_compiler: gcc
cpp_compiler: g++
asan: "ON"
ubsan: "OFF"
tsan: "OFF"
sanitizer: asan
- os: ubuntu-latest
build_type: Debug
c_compiler: gcc
cpp_compiler: g++
asan: "OFF"
ubsan: "OFF"
tsan: "ON"
sanitizer: tsan
- os: ubuntu-latest
build_type: Debug
c_compiler: clang
cpp_compiler: clang++
asan: "ON"
ubsan: "ON"
tsan: "OFF"
sanitizer: asan+ubsan
- os: ubuntu-latest
build_type: Debug
c_compiler: clang
cpp_compiler: clang++
asan: "OFF"
ubsan: "OFF"
tsan: "ON"
sanitizer: tsan
steps:
- uses: actions/checkout@v4
- name: Set reusable strings
id: strings
shell: bash
run: echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
run: >
cmake
-S ${{ github.workspace }}
-B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DCOIO_BUILD_TESTS=ON
-DCOIO_BUILD_EXAMPLES=OFF
-DCOIO_BUILD_WITH_ASAN=${{ matrix.asan }}
-DCOIO_BUILD_WITH_UBSAN=${{ matrix.ubsan }}
-DCOIO_BUILD_WITH_TSAN=${{ matrix.tsan }}
- 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 --output-on-failure --build-config ${{ matrix.build_type }}