# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Jason Chu <jchu@xentac.net>

pkgbase=openal
pkgname=(
  openal
  openal-examples
)
pkgver=1.24.3
pkgrel=2
pkgdesc="Cross-platform 3D audio library, software implementation"
url="https://github.com/kcat/openal-soft"
arch=(x86_64 aarch64)
license=(LGPL-2.0-or-later)
depends=(
  gcc-libs
  glibc
)
makedepends=(
  alsa-lib
  cmake
  ffmpeg
  fluidsynth
  git
  jack
  libmysofa
  libpulse
  libsndfile
  ninja
  pipewire
  portaudio
  qt5-base
  sdl3
)
source=("git+https://github.com/kcat/openal-soft#tag=$pkgver")
b2sums=('57c685f1978ab961e90df74e667bb5fcb114fbac37ba59874619800e85a2c05c877fcc26eaf0a204138357f2bb4e6fa185e7ea4bef0e8dab3dd583486f8eaf69')

prepare() {
  cd openal-soft
}

build() {
  local cmake_options=(
    -DCMAKE_INSTALL_PREFIX=/usr
    -DCMAKE_BUILD_TYPE=None
    -DCMAKE_INSTALL_LIBDIR=lib
  )

  cmake -S openal-soft -B build -G Ninja "${cmake_options[@]}"
  cmake --build build
}

_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_openal() {
  optdepends=(
    'qt5-base: alsoft-config GUI Configurator'
    'fluidsynth: MIDI rendering'
    'libmysofa: makemhr tool'
  )
  provides+=(libopenal.so)

  DESTDIR="$pkgdir" cmake --install build
  install -Dt "$pkgdir/usr/share/doc/openal" -m644 openal-soft/docs/*

  cd "$pkgdir"
  _pick examples usr/bin/al{direct,ffplay,hrtf,latency,loopback,multireverb}
  _pick examples usr/bin/al{debug,lafplay,play,record,reverb,stream,tonegen}
}

package_openal-examples() {
  pkgdesc+=" (example programs)"
  depends+=(
    "openal=$pkgver-$pkgrel"
    ffmpeg
    libsndfile
    sdl3
  )

  mv examples/* "$pkgdir"
}

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