# Maintainer: Christoph Reiter <reiter.christoph@gmail.com>

_realname=sonivox
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=4.0.1
pkgrel=1
pkgdesc="Fork of the AOSP 'platform_external_sonivox' to use outside of Android (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://github.com/EmbeddedSynth/sonivox"
license=('spdx:Apache-2.0')
depends=(
  "${MINGW_PACKAGE_PREFIX}-cc-libs"
  "${MINGW_PACKAGE_PREFIX}-zlib"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-gtest"
)
source=(
  "${_realname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz"
  "https://www.ronimusic.com/sf2/Airfont_340.dls"  # soundfont required for testing...
)
sha256sums=('dabdbd54bd6ba8d5be995bd9ef504c2a34bdf654f41a389510c99043cfc237ca'
            'beb3e39e3c9fc51ef4dff36fdd8db0361471a91d244c3ee78af90f6d3c783b04')

prepare() {
  # Symlink the soundfont required for unit tests into place:
  # https://github.com/pedrolcl/sonivox/issues/87
  ln -s Airfont_340.dls soundfont.dls
}

build() {
  declare -a extra_config
  if check_option "debug" "n"; then
    extra_config+=("-DCMAKE_BUILD_TYPE=Release")
  else
    extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
  fi
  
  # This ensures the soundfont used in unit tests is found and not downloaded during build.
  export TEMP="${srcdir}"
 
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    cmake \
      -GNinja \
      -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
	  "${extra_config[@]}" \
	  -DBUILD_SHARED_LIBS=OFF \
      -S "${_realname}-${pkgver}" \
      -B build-${MSYSTEM}-static \
      -W no-dev

  cmake --build "build-${MSYSTEM}-static" --verbose
  
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    cmake \
      -GNinja \
      -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
	  "${extra_config[@]}" \
	  -DBUILD_SHARED_LIBS=ON \
      -DCMAKE_DLL_NAME_WITH_SOVERSION=ON \
	  -DBUILD_APPLICATION=OFF \
	  -DBUILD_TESTING=OFF \
      -S "${_realname}-${pkgver}" \
      -B build-${MSYSTEM}-shared \
      -W no-dev
  
  cmake --build "build-${MSYSTEM}-shared" --verbose
}

check() {
  ctest --test-dir "build-${MSYSTEM}-static" --output-on-failure
}

package() {
  DESTDIR="${pkgdir}" cmake --install "build-${MSYSTEM}-static"
  DESTDIR="${pkgdir}" cmake --install "build-${MSYSTEM}-shared"
}
