diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml new file mode 100644 index 0000000..4e57484 --- /dev/null +++ b/.github/workflows/master.yml @@ -0,0 +1,94 @@ +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, + } + - { + 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, + } + + steps: + + - name: Install dependencies (macOS) + if: runner.os == 'macOS' + env: + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 + run: | + brew update || true + brew install \ + autoconf \ + automake \ + libtool + + - name: Install dependencies (MSYS2) + if: matrix.config.shell == 'msys2 {0}' + uses: msys2/setup-msys2@v2 + with: + msystem: ${{ matrix.config.msystem }} + update: false + install: >- + ${{ matrix.config.msys-env }}-autotools + ${{ matrix.config.msys-env }}-gcc + + - uses: actions/checkout@v3 + + - name: Build + env: + CC: ${{ matrix.config.compiler }} + CFLAGS: -Wall + run: | + autoreconf -fiv + ./configure + make + + cppcheck: + name: Cppcheck + runs-on: ubuntu-latest + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install cppcheck + + - uses: actions/checkout@v3 + + - name: Run cppcheck + shell: bash + run: | + cppcheck --version + cppcheck --error-exitcode=1 -j4 -q --check-level=exhaustive -Iinclude/ libfaac/ frontend/