name: C on: push: paths: - "**.c" - "**.h" - "CMakeLists.txt" - "meson.build" - "configure.ac" - "GNUmakefile.am" - "ocusts.pc.in" - ".github/workflows/c.yml" pull_request: paths: - "**.c" - "**.h" - "CMakeLists.txt" - "meson.build" - "configure.ac" - "GNUmakefile.am" - "ocusts.pc.in" - ".github/workflows/c.yml" jobs: autoconf: name: Autoconf Builds runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: # TODO: Add Windows and macOS support os: [ubuntu-latest] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup MSYS2 on Windows if: matrix.os == 'windows-latest' uses: msys2/setup-msys2@v2 with: msystem: UCRT64 update: true install: autotools mingw-w64-ucrt-x86_64-gcc - name: Install autoconf on macOS if: matrix.os == 'macos-latest' run: brew install automake libtool - name: Run Autoconf run: autoreconf -fi - name: Configure run: ./configure - name: Build run: make cmake: name: CMake Builds runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Configure CMake run: cmake -B build -S . - name: Build run: cmake --build build - name: Test run: ctest --test-dir build --output-on-failure -C Debug meson: name: Meson Builds runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install dependencies run: python -m pip install meson ninja - name: Configure Meson run: meson setup build - name: Build run: ninja -C build - name: Test run: meson test -C build --print-errorlogs