| 1 | name: CI |
| 2 | |
| 3 | on: |
| 4 | push: |
| 5 | branches: [ main ] |
| 6 | pull_request: |
| 7 | branches: [ main ] |
| 8 | |
| 9 | jobs: |
| 10 | build: |
| 11 | strategy: |
| 12 | matrix: |
| 13 | platform: |
| 14 | - os: ubuntu-latest |
| 15 | generator: Unix Makefiles |
| 16 | env: |
| 17 | CFLAGS: "-Werror -Wall -Wextra" |
| 18 | - os: ubuntu-latest |
| 19 | generator: Unix Makefiles |
| 20 | env: |
| 21 | CC: "clang" |
| 22 | CFLAGS: "-Werror -Wall -Wextra -fsanitize=leak" |
| 23 | - os: ubuntu-latest |
| 24 | generator: Unix Makefiles |
| 25 | image: i386/debian:latest |
| 26 | env: |
| 27 | CFLAGS: "-Werror -Wall -Wextra" |
| 28 | - os: macos-latest |
| 29 | generator: Unix Makefiles |
| 30 | env: |
| 31 | CFLAGS: "-Werror -Wall -Wextra" |
| 32 | - os: windows-latest |
| 33 | generator: Visual Studio 17 2022 |
| 34 | - os: windows-latest |
| 35 | generator: MSYS Makefiles |
| 36 | env: |
| 37 | CFLAGS: "-Werror -Wall -Wextra" |
| 38 | - os: windows-latest |
| 39 | generator: MinGW Makefiles |
| 40 | env: |
| 41 | CFLAGS: "-Werror -Wall -Wextra" |
| 42 | fail-fast: false |
| 43 | |
| 44 | runs-on: ${{ matrix.platform.os }} |
| 45 | container: ${{matrix.platform.image}} |
| 46 | |
| 47 | env: |
| 48 | CC: ${{matrix.platform.env.CC}} |
| 49 | CFLAGS: ${{matrix.platform.env.CFLAGS}} |
| 50 | |
| 51 | steps: |
| 52 | - name: Prepare 32 bit container image |
| 53 | if: matrix.platform.image == 'i386/debian:latest' |
| 54 | run: apt -q update && apt -q -y install cmake gcc libc6-amd64 lib64stdc++6 make python3 |
| 55 | - name: Check out |
| 56 | uses: actions/checkout@v6 |
| 57 | - name: Build |
| 58 | shell: bash |
| 59 | run: | |
| 60 | mkdir build |
| 61 | cd build |
| 62 | cmake .. -G "${{matrix.platform.generator}}" |
| 63 | cmake --build . --verbose |
| 64 | - name: Test |
| 65 | shell: bash |
| 66 | run: | |
| 67 | cd build |
| 68 | CTEST_OUTPUT_ON_FAILURE=1 ctest --build-config Debug |