1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
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,
cflags: -Wall
}
- {
name: Linux GCC (Single Precision),
os: ubuntu-latest,
compiler: gcc,
shell: bash,
options: -Dfloating-point=single,
cflags: -Wall
}
- {
name: macOS Clang,
os: macos-latest,
compiler: clang,
shell: bash,
cflags: -Wall
}
- {
name: MSYS2 UCRT64,
os: windows-latest,
compiler: gcc,
shell: 'msys2 {0}',
msystem: ucrt64,
msys-env: mingw-w64-ucrt-x86_64,
cflags: -Wall
}
- {
name: Windows MSVC,
os: windows-latest,
compiler: cl,
shell: pwsh,
options: -Dfloating-point=double,
cflags: /W4
}
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.30.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 }}
CFLAGS: ${{ matrix.config.cflags }}
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 }}
CFLAGS: ${{ matrix.config.cflags }}
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/
|