PKGNAME=pipewire
PKGSEC=sound
PKGDES="Server and user space API to deal with multimedia pipelines"
# NOTE: AppArmor support is baked in, not fancy dlopen() imports.
# NOTE: Without this Snap applications may not be able to play and record
# audio.
PKGDEP="alsa-lib bluez dbus ffmpeg gstreamer-1-0 gst-plugins-base-1-0 \
        libcanberra libfdk-aac libldac libfreeaptx libsndfile libusb libva \
        lilv ncurses readline rtkit sbc systemd v4l-utils vulkan \
        webrtc-audio-processing libcamera wireplumber x11-lib glib opus \
        libebur128 fftw onnxruntime apparmor"
PKGDEP__SNAPD="${PKGDEP} snapd-glib"
PKGDEP__AMD64="${PKGDEP__SNAPD} libffado"
PKGDEP__ARM64="${PKGDEP__SNAPD}"
PKGDEP__PPC64EL="${PKGDEP__SNAPD}"
PKGDEP__RISCV64="${PKGDEP__SNAPD}"
# libcanberra for X11 bell support.
PKGDEP__RETRO="systemd dbus fftw readline pulseaudio alsa-lib bluez libebur128 \
               opus wireplumber x11-lib libsndfile libcanberra libfdk-aac \
               libldac sbc libfreeaptx glib spandsp"
PKGRECOM="pipewire-jack"
PKGRECOM__RETRO=""

BUILDDEP="avahi doxygen graphviz meson ninja pulseaudio sdl2 gettext"
# NOTE: doxygen is required to generate manual pages.
BUILDDEP__RETRO="meson ninja gettext doxygen"

# FIXME: Autobuild is not yet capable of generating Spiral markers for gstreamer1.0-* modules.
PKGPROV="gstreamer1.0-pipewire_spiral"

# Must specify ABTYPE here because PipeWire owns Makefiles in the source root
# to make building fairly straightforward as they say
ABTYPE=meson
MESON_AFTER=(
    '-Ddocs=disabled'
    '-Dman=enabled'
    '-Dexamples=enabled'
    '-Dtests=disabled'
    '-Dinstalled_tests=disabled'
    '-Dgstreamer=enabled'
    '-Dgstreamer-device-provider=enabled'
    '-Dlibsystemd=enabled'
    '-Dlogind=enabled'
    '-Dlogind-provider=libsystemd'
    '-Dsystemd-system-service=disabled'
    '-Dsystemd-user-service=enabled'
    '-Dselinux=disabled'
    '-Dpipewire-alsa=enabled'
    '-Dpipewire-jack=enabled'
    '-Dpipewire-v4l2=enabled'
    '-Djack-devel=false'
    '-Dspa-plugins=enabled'
    '-Dalsa=enabled'
    '-Daudiomixer=enabled'
    '-Daudioconvert=enabled'
    '-Dbluez5=enabled'
    '-Dbluez5-backend-hsp-native=enabled'
    '-Dbluez5-backend-hfp-native=enabled'
    '-Dbluez5-backend-native-mm=disabled'
    '-Dbluez5-backend-ofono=enabled'
    '-Dbluez5-backend-hsphfpd=enabled'
    '-Dbluez5-codec-aptx=enabled'
    '-Dbluez5-codec-ldac=enabled'
    '-Dbluez5-codec-ldac-dec=disabled'
    '-Dbluez5-codec-aac=enabled'
    '-Dbluez5-codec-lc3plus=disabled'
    '-Dbluez5-codec-opus=enabled'
    '-Dbluez5-codec-lc3=disabled'
    '-Dbluez5-codec-g722=enabled'
    '-Dbluez5-plc-spandsp=enabled'
    '-Dcontrol=enabled'
    '-Daudiotestsrc=enabled'
    '-Dffmpeg=enabled'
    '-Djack=enabled'
    '-Dsupport=enabled'
    '-Devl=disabled'
    '-Dtest=disabled'
    '-Dv4l2=enabled'
    '-Ddbus=enabled'
    '-Dlibcamera=enabled'
    '-Daudiotestsrc=disabled'
    '-Dvideotestsrc=disabled'
    '-Dvolume=disabled'
    '-Dvulkan=enabled'
    '-Dpw-cat=enabled'
    '-Dpw-cat-ffmpeg=enabled'
    '-Dudev=enabled'
    '-Dsdl2=enabled'
    '-Dsndfile=enabled'
    '-Dlibmysofa=disabled'
    '-Dlibpulse=enabled'
    '-Droc=disabled'
    '-Davahi=enabled'
    '-Dsession-managers=/usr/bin/wireplumber'
    '-Draop=enabled'
    '-Dlv2=enabled'
    '-Dx11=enabled'
    '-Dx11-xfixes=enabled'
    '-Dlibcanberra=enabled'
    '-Dlegacy-rtkit=true'
    '-Davb=enabled'
    '-Dflatpak=enabled'
    '-Dreadline=enabled'
    '-Dgsettings=enabled'
    '-Dcompress-offload=enabled'
    '-Dpam-defaults-install=false'
    '-Drlimits-install=false'
    '-Dopus=enabled'
    '-Dlibffado=disabled'
    '-Dgsettings-pulse-schema=enabled'
    '-Dsnap=disabled'
    '-Debur128=enabled'
    '-Dfftw=enabled'
    '-Donnxruntime=enabled'
    "-Dudevrulesdir=${LIBDIR}/udev/rules.d"
)
MESON_AFTER__SNAPD=(
    '-Dsnap=enabled'
)
MESON_AFTER__AMD64=(
    "${MESON_AFTER[@]}"
    "${MESON_AFTER__SNAPD[@]}"
    '-Dlibffado=enabled'
)
MESON_AFTER__ARM64=(
    "${MESON_AFTER[@]}"
    "${MESON_AFTER__SNAPD[@]}"
)
MESON_AFTER__PPC64EL=(
    "${MESON_AFTER[@]}"
    "${MESON_AFTER__SNAPD[@]}"
)
MESON_AFTER__RISCV64=(
    "${MESON_AFTER[@]}"
    "${MESON_AFTER__SNAPD[@]}"
)

# NOTE: Be aware of certain SPA plugins: their build script are not well
# written, so be careful disabling certain plugins. It may result in
# undefined variable errors!
MESON_AFTER__RETRO=(
    "${MESON_AFTER[@]}"
    '-Dexamples=disabled'
    '-Dtests=disabled'
    '-Dgstreamer=disabled'
    '-Dgstreamer-device-provider=disabled'
    '-Dselinux=disabled'
    '-Dpipewire-jack=disabled'
    '-Dpipewire-v4l2=disabled'
    '-Daudiotestsrc=disabled'
    '-Dffmpeg=disabled'
    '-Dsupport=disabled'
    '-Dv4l2=disabled'
    '-Dpw-cat-ffmpeg=disabled'
    '-Dlibcamera=disabled'
    '-Dvulkan=disabled'
    '-Dsdl2=disabled'
    '-Davahi=disabled'
    '-Draop=disabled'
    '-Dlv2=disabled'
    '-Djack=disabled'
    '-Dflatpak=disabled'
    '-Donnxruntime=disabled'
)

# Needed by Afterglow, whereas FAIL_ARCH defaults to mainline-only.
FAIL_ARCH="!(mainline|retro)"
