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

_realname=harfbuzz
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=4.2.1
pkgrel=1
pkgdesc="OpenType text shaping engine (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://www.freedesktop.org/wiki/Software/HarfBuzz"
license=("MIT")
makedepends=("${MINGW_PACKAGE_PREFIX}-icu"
             "${MINGW_PACKAGE_PREFIX}-gobject-introspection"
             "${MINGW_PACKAGE_PREFIX}-pkg-config"
             "${MINGW_PACKAGE_PREFIX}-cairo"
             "${MINGW_PACKAGE_PREFIX}-python"
             "${MINGW_PACKAGE_PREFIX}-meson"
             "${MINGW_PACKAGE_PREFIX}-ragel"
             "${MINGW_PACKAGE_PREFIX}-cc")
depends=("${MINGW_PACKAGE_PREFIX}-freetype"
         "${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-glib2"
         "${MINGW_PACKAGE_PREFIX}-graphite2")
checkdepends=("${MINGW_PACKAGE_PREFIX}-python-fonttools" 
              "${MINGW_PACKAGE_PREFIX}-python-setuptools")
options=('strip' 'staticlibs')
optdepends=("${MINGW_PACKAGE_PREFIX}-icu: harfbuzz-icu support"
            "${MINGW_PACKAGE_PREFIX}-cairo: hb-view program")
source=("${_realname}-${pkgver}.tar.gz::https://github.com/harfbuzz/harfbuzz/archive/${pkgver}.tar.gz")
sha256sums=('99fcd30e2f4c66d05af3d61ad4cdba2abc2a51ecabb7eb6dc222520a892b50b0')

build() {
  # Build static and shared libs separately due to necessity of defining DGRAPHITE2_STATIC
  # manually when building static version
  export _static_dir="${srcdir}/build-${MSYSTEM}-static"
  export _shared_dir="${srcdir}/build-${MSYSTEM}-shared"

 [[ -d "${_static_dir}" ]] && rm -rf "${_static_dir}"
  mkdir -p "${_static_dir}" && cd "${_static_dir}"

  # static build
  CFLAGS="${CFLAGS} -DGRAPHITE2_STATIC" \
  CXXFLAGS="${CXXFLAGS} -DGRAPHITE2_STATIC" \
  MSYS2_ARG_CONV_EXCL="--prefix=" \
  ${MINGW_PREFIX}/bin/meson \
    --prefix="${MINGW_PREFIX}" \
    --buildtype plain \
    --wrap-mode=nofallback \
    --default-library=static \
    -Dauto_features=enabled \
    -Dintrospection=disabled \
    -Dgobject=enabled \
    -Dicu=enabled \
    -Dgdi=enabled \
    -Dgraphite=enabled \
    -Dchafa=disabled \
    -Ddirectwrite=enabled \
    ../${_realname}-${pkgver}

  meson compile

  # shared build
  [[ -d "${_shared_dir}" ]] && rm -rf "${_shared_dir}"
  mkdir -p "${_shared_dir}" && cd "${_shared_dir}"

  MSYS2_ARG_CONV_EXCL="--prefix=" \
  ${MINGW_PREFIX}/bin/meson \
    --prefix="${MINGW_PREFIX}" \
    --buildtype plain \
    --wrap-mode=nofallback \
    --default-library=shared \
    -Dauto_features=enabled \
    -Dintrospection=enabled \
    -Dgobject=enabled \
    -Dicu=enabled \
    -Dgdi=enabled \
    -Dgraphite=enabled \
    -Dchafa=disabled \
    -Ddirectwrite=enabled \
    ../${_realname}-${pkgver}

  meson compile
}

check(){
  cd "${srcdir}/build-${MSYSTEM}-shared"
  meson test
}

package() {
  cd "${srcdir}/build-${MSYSTEM}-static"
  DESTDIR="${pkgdir}" meson install

  cd "${srcdir}/build-${MSYSTEM}-shared"
  DESTDIR="${pkgdir}" meson install

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