# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>

_realname=harfbuzz
pkgbase=mingw-w64-jellyfin-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-jellyfin-${_realname}")
pkgver=10.4.0
pkgrel=1
pkgdesc="OpenType text shaping engine"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://github.com/harfbuzz/harfbuzz"
msys2_references=(
  "archlinux: harfbuzz"
  "cpe: cpe:/a:harfbuzz_project:harfbuzz"
)
license=('spdx:MIT')
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-meson"
             "${MINGW_PACKAGE_PREFIX}-pkgconf"
             "${MINGW_PACKAGE_PREFIX}-python"
             "${MINGW_PACKAGE_PREFIX}-gtk-doc"
             "${MINGW_PACKAGE_PREFIX}-ragel")
depends=("${MINGW_PACKAGE_PREFIX}-jellyfin-freetype"
         "${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-gettext-runtime")
checkdepends=("${MINGW_PACKAGE_PREFIX}-python-fonttools"
              "${MINGW_PACKAGE_PREFIX}-python-setuptools")
source=("https://github.com/harfbuzz/harfbuzz/releases/download/${pkgver}/harfbuzz-${pkgver}.tar.xz"
        "001-fix-build-with-chafa.patch")
sha256sums=('480b6d25014169300669aa1fc39fb356c142d5028324ea52b3a27648b9beaad8'
            '26b37a1ca9872973905ecb96bcbe3f054472252320956faa74428206900d360e')
noextract=("harfbuzz-${pkgver}.tar.xz")

export MINGW_TOOLCHAIN_PREFIX="${MINGW_PREFIX}"
export FF_MINGW_PREFIX="${MINGW_TOOLCHAIN_PREFIX}/ffbuild"

prepare() {
  echo "Extracting harfbuzz-${pkgver}.tar.xz..."
  tar -xJf harfbuzz-${pkgver}.tar.xz || true

  cd ${_realname}-${pkgver}
  patch -p1 -i "${srcdir}"/001-fix-build-with-chafa.patch
}

build() {
  export PKG_CONFIG_PATH="${FF_MINGW_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
  local -a _static_flags=(
    -DGIO_STATIC_COMPILATION
    -DGLIB_STATIC_COMPILATION
    -DGMODULE_STATIC_COMPILATION
    -DGOBJECT_STATIC_COMPILATION
    -DGRAPHITE2_STATIC
  )

  CFLAGS+=" ${_static_flags[@]}" \
  CXXFLAGS+=" ${_static_flags[@]}" \
  MSYS2_ARG_CONV_EXCL="--prefix=" \
  ${MINGW_TOOLCHAIN_PREFIX}/bin/meson setup \
    --prefix="${FF_MINGW_PREFIX}" \
    --buildtype plain \
    --prefer-static \
    --wrap-mode=nofallback \
    --default-library=static \
    -Dauto_features=enabled \
    -Dintrospection=disabled \
    -Dgobject=disabled \
    -Dicu=disabled \
    -Dfreetype=enabled \
    -Dgdi=disabled \
    -Dgraphite=disabled \
    -Ddirectwrite=disabled \
    -Dtests=disabled \
    -Ddocs=disabled \
    -Dchafa=disabled \
    -Dcairo=disabled \
    -Dglib=disabled \
    "build-${MSYSTEM}-static" \
    "${_realname}-${pkgver}"

  ${MINGW_TOOLCHAIN_PREFIX}/bin/meson compile -C "build-${MSYSTEM}-static"
}

check(){
  :
}

package_harfbuzz() {
  pkgdesc+=" (mingw-w64)"

  ${MINGW_TOOLCHAIN_PREFIX}/bin/meson install -C "build-${MSYSTEM}-static" --destdir "${pkgdir}"

  install -Dm644 "${srcdir}"/${_realname}-${pkgver}/COPYING \
    "${pkgdir}"${FF_MINGW_PREFIX}/share/licenses/${_realname}/COPYING
}

# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-jellyfin-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
