# Maintainer: David Runge <dvzrv@archlinux.org>
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>

pkgbase=lib32-pipewire
pkgname=(
  lib32-pipewire
  lib32-libpipewire
  lib32-pipewire-jack
  lib32-pipewire-v4l2
)
pkgver=1.0.5
_so_ver=0.3
pkgrel=1
epoch=1
pkgdesc="Low-latency audio/video router and processor - 32-bit"
url="https://pipewire.org"
arch=(x86_64)
license=(MIT)
makedepends=(
  git
  lib32-alsa-lib
  lib32-dbus
  lib32-glib2
  lib32-systemd
  meson
  systemd
)
source=(
  "git+https://gitlab.freedesktop.org/pipewire/pipewire.git#tag=$pkgver"
)
b2sums=('46f2e8e0206077590af8e3accd338c84ed66c954955b01bb316f1dd723f4c75d111078b845a0e682c5ca7a8ff398023a9c2d0074530ff85f87ac0c2dee1a6c34')

pkgver() {
  cd pipewire
  git describe --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
  cd pipewire
}

build() {
  local meson_options=(
    --cross-file lib32
    -D avahi=disabled
    -D avb=disabled
    -D bluez5-codec-lc3=disabled
    -D bluez5-codec-lc3plus=disabled
    -D bluez5-codec-opus=disabled
    -D bluez5=disabled
    -D compress-offload=disabled
    -D docs=disabled
    -D echo-cancel-webrtc=disabled
    -D examples=disabled
    -D gstreamer-device-provider=disabled
    -D gstreamer=disabled
    -D jack-devel=true
    -D jack=disabled
    -D libcamera=disabled
    -D libcanberra=disabled
    -D libffado=disabled
    -D libjack-path=/usr/lib32
    -D libmysofa=disabled
    -D libpulse=disabled
    -D libusb=disabled
    -D lv2=disabled
    -D man=disabled
    -D opus=disabled
    -D pw-cat=disabled
    -D raop=disabled
    -D readline=disabled
    -D rlimits-install=false
    -D roc=disabled
    -D sdl2=disabled
    -D selinux=disabled
    -D session-managers=[]
    -D sndfile=disabled
    -D systemd-user-service=disabled
    -D tests=disabled
    -D udevrulesdir=/usr/lib/udev/rules.d
    -D v4l2=disabled
    -D x11-xfixes=disabled
    -D x11=disabled
  )

  arch-meson pipewire build "${meson_options[@]}"
  meson compile -C build
}

check() {
  meson test -C build --print-errorlogs
}

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_lib32-pipewire() {
  depends=(
    lib32-gcc-libs
    lib32-glibc
    "lib32-libpipewire=$epoch:$pkgver-$pkgrel"
    libasound.so
    libdbus-1.so
    libglib-2.0.so
    libpipewire-$_so_ver.so
    libsystemd.so
    pipewire
  )
  optdepends=(
    'lib32-pipewire-jack: JACK support'
    'lib32-pipewire-v4l2: V4L2 interceptor'
  )

  meson install -C build --destdir "$pkgdir"

  (
    cd "$pkgdir"

    _pick lib usr/lib32/libpipewire-$_so_ver.so*
    _pick lib usr/lib32/pkgconfig/lib{pipewire-$_so_ver,spa-0.2}.pc

    _pick jack usr/lib32/libjack*
    _pick jack usr/lib32/pkgconfig/jack.pc

    _pick v4l2 usr/lib32/pipewire-$_so_ver/v4l2

    rm -r usr/{bin,include,lib,share}
  )

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
}

package_lib32-libpipewire() {
  pkgdesc+=" - client library"
  depends=(
    lib32-gcc-libs
    lib32-glibc
    libpipewire
  )
  provides=(libpipewire-$_so_ver.so)

  mv lib/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
}

package_lib32-pipewire-jack() {
  pkgdesc+=" - JACK support"
  license+=(GPL-2.0-only)  # libjackserver
  depends=(
    lib32-glibc
    lib32-pipewire
    libpipewire-$_so_ver.so
    pipewire-jack
  )
  conflicts=(
    lib32-jack
    lib32-jack2
  )
  provides=(
    lib32-jack libjack.so libjackserver.so libjacknet.so
  )

  mv jack/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
}

package_lib32-pipewire-v4l2() {
  pkgdesc+=" - V4L2 interceptor"
  depends=(
    lib32-glibc
    lib32-pipewire
    libpipewire-$_so_ver.so
    pipewire-v4l2
  )

  mv v4l2/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
}

# vim:set sw=2 sts=-1 et:
