name: CI on: push: branches: [develop, main] pull_request: branches: [develop, main] workflow_dispatch: jobs: linux: name: Linux GCC ${{ matrix.build_type }} threads=${{ matrix.multithread }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] multithread: [ON, OFF] steps: - uses: actions/checkout@v4 - name: Install Ninja run: sudo apt-get install -y ninja-build - name: Configure run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DMULTITHREAD_SUPPORT_ENABLED=${{ matrix.multithread }} - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure macos: name: macOS AppleClang ${{ matrix.build_type }} threads=${{ matrix.multithread }} runs-on: macos-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] multithread: [ON, OFF] steps: - uses: actions/checkout@v4 - name: Install Ninja run: brew install ninja - name: Configure run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DMULTITHREAD_SUPPORT_ENABLED=${{ matrix.multithread }} - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure linux-sanitizers: name: Linux GCC ASAN+UBSAN ${{ matrix.build_type }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] steps: - uses: actions/checkout@v4 - name: Install Ninja run: sudo apt-get install -y ninja-build - name: Configure run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DENABLE_ADDRESS_SANITIZER=ON -DENABLE_UNDEFINED_SANITIZER=ON - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure macos-sanitizers: name: macOS AppleClang ASAN+UBSAN ${{ matrix.build_type }} runs-on: macos-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] steps: - uses: actions/checkout@v4 - name: Install Ninja run: brew install ninja - name: Configure run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DENABLE_ADDRESS_SANITIZER=ON -DENABLE_UNDEFINED_SANITIZER=ON - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure windows: name: Windows MSVC ${{ matrix.build_type }} threads=${{ matrix.multithread }} runs-on: windows-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] multithread: [ON, OFF] steps: - uses: actions/checkout@v4 - name: Configure run: cmake -B build -DMULTITHREAD_SUPPORT_ENABLED=${{ matrix.multithread }} - name: Build run: cmake --build build --config ${{ matrix.build_type }} -j - name: Test run: ctest --test-dir build --output-on-failure -C ${{ matrix.build_type }} linux-tsan: name: Linux GCC TSAN ${{ matrix.build_type }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] steps: - uses: actions/checkout@v4 - name: Install Ninja run: sudo apt-get install -y ninja-build - name: Configure run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DENABLE_THREAD_SANITIZER=ON -DMULTITHREAD_SUPPORT_ENABLED=ON - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure macos-tsan: name: macOS AppleClang TSAN ${{ matrix.build_type }} runs-on: macos-latest strategy: fail-fast: false matrix: build_type: [Debug, Release] steps: - uses: actions/checkout@v4 - name: Install Ninja run: brew install ninja - name: Configure run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DENABLE_THREAD_SANITIZER=ON -DMULTITHREAD_SUPPORT_ENABLED=ON - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure