--- on: workflow_dispatch: push: paths-ignore: - 'android/**' - 'build/**' - 'doc/**' - 'python/**' - 'subprojects/**' - 'systemd/**' - 'win32/**' branches: - master - v0.23.x pull_request: paths-ignore: - 'android/**' - 'build/**' - 'doc/**' - 'python/**' - 'subprojects/**' - 'systemd/**' - 'win32/**' branches: - master - v0.23.x permissions: contents: read # to fetch code (actions/checkout) jobs: build-linux: strategy: matrix: compiler: [gcc14, gcc10, clang] include: - compiler: gcc14 os: ubuntu-24.04 cc: gcc-14 cxx: g++-14 packages: g++-14 meson_options: - compiler: gcc10 os: ubuntu-24.04 cc: gcc-10 cxx: g++-10 packages: g++-10 meson_options: - compiler: clang os: ubuntu-24.04 cc: clang cxx: clang++ packages: clang meson_options: --force-fallback-for=fmt,gtest runs-on: ${{ matrix.os }} env: CC: ccache ${{ matrix.cc }} CXX: ccache ${{ matrix.cxx }} steps: - id: checkout uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ ${{ matrix.packages }} \ meson \ ccache \ libfmt-dev \ libgtest-dev \ libpcre2-dev \ libsystemd-dev libdbus-1-dev \ libicu-dev \ libcurl4-gnutls-dev \ libpcre2-dev \ libavahi-client-dev \ libmad0-dev libmpg123-dev libid3tag0-dev \ libflac-dev libvorbis-dev libopus-dev libogg-dev \ libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \ libfluidsynth-dev libgme-dev libmikmod-dev libmodplug-dev \ libmpcdec-dev libwavpack-dev libwildmidi-dev \ libsidplay2-dev libsidutils-dev libresid-builder-dev \ libavcodec-dev libavformat-dev \ libmp3lame-dev libtwolame-dev libshine-dev \ libsamplerate0-dev libsoxr-dev \ libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \ libzzip-dev \ libyajl-dev libexpat-dev \ libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \ libpulse-dev libshout3-dev \ libsndio-dev \ libmpdclient-dev \ libnfs-dev \ libupnp-dev \ libsqlite3-dev \ libchromaprint-dev \ libgcrypt20-dev - id: cache-ccache uses: hendrikmuhs/ccache-action@v1 with: key: ${{ matrix.compiler }} - name: Configure run: | meson setup \ -Ddocumentation=disabled \ -Dtest=true \ -Dsystemd=enabled \ -Dpcre=enabled \ --wrap-mode nofallback \ ${{ matrix.meson_options }} \ output/full - name: Build run: meson compile -C output/full --verbose - name: Unit Tests run: meson test -C output/full - name: Configure Mini run: | meson setup \ -Dbuildtype=minsize \ -Dauto_features=disabled \ -Dtest=true \ -Ddaemon=false \ -Dinotify=false -Depoll=false -Deventfd=false \ -Dsignalfd=false \ -Dtcp=false \ -Ddsd=false \ -Ddatabase=false \ -Dneighbor=false \ -Dcue=false \ -Dfifo=false \ -Dhttpd=false -Dpipe=false -Drecorder=false \ -Dsnapcast=false \ --wrap-mode nofallback \ ${{ matrix.meson_options }} \ output/mini - name: Build Mini run: meson compile -C output/mini --verbose - name: Unit Tests Mini run: meson test -C output/mini build-msys2: strategy: matrix: platform: ['MINGW64', 'UCRT64'] defaults: run: shell: msys2 {0} runs-on: windows-latest steps: - id: checkout uses: actions/checkout@v4 - uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.platform}} pacboy: >- cc:p cmake:p dbus:p faad2:p ffmpeg:p fmt:p flac:p gtest:p jack2:p libao:p libid3tag:p libmad:p libmpcdec:p libopenmpt:p libsamplerate:p libshout:p libsndfile:p libsoxr:p libvorbis:p meson:p ninja:p opus:p pulseaudio:p shine:p twolame:p yajl:p - name: Compile and Test run: | meson setup "${{github.workspace}}/build" -Dbzip2=disabled -Dcdio_paranoia=disabled -Dchromaprint=disabled -Ddocumentation=disabled -Dfluidsynth=disabled -Dicu=disabled -Diso9660=disabled -Dmikmod=disabled -Dmpg123=disabled -Dnfs=disabled -Dsidplay=disabled -Dudisks=disabled -Dupnp=disabled -Dwavpack=disabled -Dzzip=disabled -Dtest=true -Dwarning_level=3 meson compile -C "${{github.workspace}}/build" --verbose