# Maintainer: David Runge <dvzrv@archlinux.org>

pkgbase=vst3sdk
pkgname=('vst3sdk' 'vst3sdk-examples')
pkgver=3.7.0_build_116
_commit=ef0a70df2f82a3c218abaca0dbfbb66ae6c61025 # 3.7.0_build_116
pkgrel=1
pkgdesc="VST 3 Plug-In SDK"
arch=('x86_64')
url="https://github.com/steinbergmedia/vst3sdk"
license=('GPL3' 'BSD')
makedepends=('cairo' 'cmake' 'expat' 'fontconfig' 'git' 'glibc' 'freetype2'
'gtkmm3' 'libx11' 'libxcb' 'libxext' 'libxkbcommon' 'libxkbcommon-x11'
'xcb-util-cursor' 'xcb-util-keysyms' 'xcb-util')
# upstream does not provide proper tarballs:
# https://github.com/steinbergmedia/vst3sdk/issues/65
source=("git+https://github.com/steinbergmedia/${pkgname}#commit=${_commit}"
        "git+https://github.com/steinbergmedia/vst3_base"
        "git+https://github.com/steinbergmedia/vst3_cmake"
        "git+https://github.com/steinbergmedia/vst3_doc"
        "git+https://github.com/steinbergmedia/vst3_pluginterfaces"
        "git+https://github.com/steinbergmedia/vst3_public_sdk"
        "git+https://github.com/steinbergmedia/vstgui"
        "${pkgname}-3.7.0_build_116-missing_includes.patch::https://github.com/dvzrv/vst3_public_sdk/commit/2ea8e1086b1c298e8df29bc7b02e4009c60fd689.patch"
        "${pkgname}.pc"
)
noextract=()
sha512sums=('SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'a6b3b908b4d39b166eaf8e253a81f519091efc36c19098232411bc19ba0b33678c1dc332b770f4df466a873cb22c4ca60d91a8962ebc18b61da874d9c9795c85'
            '87b9f6ac84af35dfe7e7c33c51243a69afd8c49362b2d7c720556307b71c0eb1cc6e647778c22abf0bdbdea13de4c5796ffa9620723687f3c3fc4c557f36fde1')
b2sums=('SKIP'
        'SKIP'
        'SKIP'
        'SKIP'
        'SKIP'
        'SKIP'
        'SKIP'
        '60de2ca387a19a5f251455c2816d31246c4223f0796da4ef1496e16ba043335b85b38944e5c49f5564a4ac52caa7b326dfc814582707ca378dda35e643e25787'
        '663f3f78032b0ab19fc8758862c108599d4506b797953a7d8e5cb0808badd5fd4e7273c2e195f4a1d84324352e3c569beeec30145bb36590c959eb1e6dbf8503')
validpgpkeys=()

prepare() {
  # upstream does not provide a pkg-config integration:
  # https://github.com/steinbergmedia/vst3sdk/issues/68
  sed -e "s/VERSION/${pkgver}/" -i "${pkgname}.pc"
  cd "$pkgname"
  git submodule init
  git config submodule.base.url ../vst3_base
  git config submodule.cmake.url ../vst3_cmake
  git config submodule.doc.url ../vst3_doc
  git config submodule.pluginterfaces.url ../vst3_pluginterfaces
  git config submodule.public.sdk.url ../vst3_public_sdk
  git config submodule.vstgui4.url ../vstgui
  git submodule update
  # add missing includes for gcc >= 10:
  # https://github.com/steinbergmedia/vst3_public_sdk/issues/20
  cd public.sdk
  patch -Np1 -i "${srcdir}/${pkgname}-3.7.0_build_116-missing_includes.patch"
}

build() {
  cd "$pkgname"
  export CFLAGS+=" -DNDEBUG"
  export CXXFLAGS+=" -DNDEBUG"
  cmake -DCMAKE_INSTALL_PREFIX=/usr \
        -DCMAKE_BUILD_TYPE='None' \
        -Wno-dev \
        -B build \
        -S .
  make VERBOSE=1 -C build
}

package_vst3sdk() {
  cd "$pkgbase"
  install -vDm 644 "../${pkgname}.pc" -t "${pkgdir}/usr/lib/pkgconfig/"
  find base -type f \( -iname "*.cpp" -or -iname "*.h" \) -exec install -vDm 644 {} "${pkgdir}/usr/include/${pkgname}/"{} \;
  find pluginterfaces \( -type f -iname "*.cpp" -or -iname "*.h" \) -exec install -vDm 644 {} "${pkgdir}/usr/include/${pkgname}/"{} \;
  find public.sdk -type f \( -iname "*.cpp" -or -iname "*.h" \) -exec install -vDm 644 {} "${pkgdir}/usr/include/${pkgname}/"{} \;
  install -vDm 644 README.md -t "${pkgdir}/usr/share/doc/${pkgname}"

  install -vDm 644 LICENSE.txt -t "${pkgdir}/usr/share/licenses/${pkgname}/"
  install -vDm 644 base/LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.base.txt"
  install -vDm 644 public.sdk/LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.public.sdk.txt"
}

package_vst3sdk-examples() {
  pkgdesc+=' (examples)'
  depends+=('cairo' 'gcc-libs' 'glibc' 'libx11' 'libxcb' 'libxext'
  'libxkbcommon' 'libxkbcommon-x11' 'xcb-util-cursor' 'xcb-util-keysyms'
  'xcb-util' 'libexpat.so' 'libfontconfig.so' 'libfreetype.so')

  cd "$pkgbase"

  (
    cd build/VST3/None
    find . -type f -iname "*.so" -exec install -vDm 755 {} "${pkgdir}/usr/lib/vst3/"{} \;
    find . -type f \( -iname "*.png" -or -iname "*.uidesc" \) -exec install -vDm 644 {} "${pkgdir}/usr/lib/vst3/"{} \;
  )

  install -vDm 644 LICENSE.txt -t "${pkgdir}/usr/share/licenses/${pkgname}/"
  install -vDm 644 base/LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.base.txt"
  install -vDm 644 public.sdk/LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.public.sdk.txt"
  install -vDm 644 public.sdk/README.md -t "${pkgdir}/usr/share/doc/${pkgname}"
}
