name: Continuous Integration on: push: branches: [ "master" ] tags-ignore: ['*'] paths-ignore: ['**.md'] pull_request: branches: [ "master" ] paths-ignore: ['**.md'] jobs: build: name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} defaults: run: shell: ${{ matrix.config.shell }} strategy: fail-fast: false matrix: config: - { name: Linux GCC, os: ubuntu-latest, compiler: gcc, shell: bash, options: -Dfloating-point=double, } - { name: Linux GCC (Single Precision), os: ubuntu-latest, compiler: gcc, shell: bash, options: -Dfloating-point=single, } - { name: macOS Clang, os: macos-latest, compiler: clang, shell: bash, } - { name: MSYS2 UCRT64, os: windows-latest, compiler: gcc, shell: 'msys2 {0}', msystem: ucrt64, msys-env: mingw-w64-ucrt-x86_64, } - { name: Windows MSVC, os: windows-latest, compiler: cl, shell: pwsh, options: -Dfloating-point=double, } steps: - name: Install dependencies (Ubuntu) if: runner.os == 'Linux' run: sudo apt install meson-1.5 - name: Install dependencies (macOS) if: runner.os == 'macOS' env: HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 run: | brew update || true brew install \ meson - name: Install dependencies (MSYS2) if: matrix.config.shell == 'msys2 {0}' uses: msys2/setup-msys2@v2.31.0 with: msystem: ${{ matrix.config.msystem }} update: false install: >- ${{ matrix.config.msys-env }}-meson ${{ matrix.config.msys-env }}-gcc - name: Install dependencies (MSVC) if: matrix.config.compiler == 'cl' run: | pip install meson ninja - name: Set up MSVC if: matrix.config.compiler == 'cl' uses: ilammy/msvc-dev-cmd@v1 with: arch: x64 - uses: actions/checkout@v6 - name: Build (MSYS2) if: matrix.config.shell == 'msys2 {0}' env: CC: ${{ matrix.config.compiler }} run: | mkdir -p build temp cd build meson setup .. -Dprefix=$(realpath ../temp) ${{ matrix.config.options }} meson install - name: Build (General) if: matrix.config.shell != 'msys2 {0}' env: CC: ${{ matrix.config.compiler }} run: | meson setup build -Dprefix="${{ github.workspace }}/temp" ${{ matrix.config.options }} meson install -C build - name: Upload artifacts (Windows) uses: actions/upload-artifact@v7 if: runner.os == 'Windows' with: name: faac-${{ github.sha }}-${{ matrix.config.name }} path: temp/* cppcheck: name: Cppcheck runs-on: ubuntu-latest steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install cppcheck - uses: actions/checkout@v6 - name: Run cppcheck shell: bash run: | cppcheck --version cppcheck --error-exitcode=1 -j4 -q --check-level=exhaustive -Iinclude/ libfaac/ frontend/