mpd/.github/workflows/build.yml

200 lines
5.4 KiB
YAML
Raw Normal View History

---
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