# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Maintainer: Ray Donnelly <mingw.android@gmail.com>

_realname=gobject-introspection
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-runtime")
pkgver=1.66.1
pkgrel=5
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url="https://live.gnome.org/GObjectIntrospection"
license=("LGPL")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
             "${MINGW_PACKAGE_PREFIX}-glib2"
             "${MINGW_PACKAGE_PREFIX}-libffi"
             "${MINGW_PACKAGE_PREFIX}-meson"
             "${MINGW_PACKAGE_PREFIX}-pkg-config"
             "${MINGW_PACKAGE_PREFIX}-python"
             "${MINGW_PACKAGE_PREFIX}-python-mako"
             "${MINGW_PACKAGE_PREFIX}-python-markdown"
             "${MINGW_PACKAGE_PREFIX}-python-setuptools")
source=(https://download.gnome.org/sources/gobject-introspection/${pkgver%.*}/${_realname}-${pkgver}.tar.xz
        0002-relocate-tools.patch
        0022-change-pkg-config-invocations.mingw.patch
        0024-Support-passing-arguments-to-g-ir-scanner-through-a-.all.patch
        0026-giscanner-assertions-and-waits.patch
        0027-wait-for-xml-parse-too.patch
        0028-no-rpath-on-nt.patch
        pyscript2exe.py)

sha256sums=('dd44a55ee5f426ea22b6b89624708f9e8d53f5cc94e5485c15c87cb30e06161d'
            '769abb237a074f25d5fb9ad8534822c49ea7b024e211e7720bb75a13ffc186be'
            '89224a8bae7256c68dbac5007717b622f39bd5b3a0db2b96ff07d9a17572e169'
            '594a067618922f10bdc5034f290f49d36944df3b970c9604381e2b9058a648da'
            '19ca830262339c4ac9f21bfb8d669ee8e126a949a4237d55656e00c5ae81c451'
            '3f38bdd0dd43d9cf626cbca7c2abd22a7ed0213e6756252c6d467d470d9c5948'
            '951d0462fb05b1b250608323b3ffe53c4c59919d255c44a8c5eef7fad0dacecf'
            'e57174517b08cf8f9fb4f43a381d342d23d2db3cad661107f35ca21c39b5734d')

prepare() {
  cd ${srcdir}/${_realname}-${pkgver}

  patch -p1 -i "${srcdir}"/0002-relocate-tools.patch
  patch -p1 -i "${srcdir}"/0022-change-pkg-config-invocations.mingw.patch
  patch -p1 -i "${srcdir}"/0024-Support-passing-arguments-to-g-ir-scanner-through-a-.all.patch
  patch -p1 -i "${srcdir}"/0026-giscanner-assertions-and-waits.patch
  patch -p1 -i "${srcdir}"/0027-wait-for-xml-parse-too.patch
  patch -p1 -i "${srcdir}"/0028-no-rpath-on-nt.patch
}

build() {
  [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}"
  mkdir -p "${srcdir}/build-${MINGW_CHOST}" && cd "${srcdir}/build-${MINGW_CHOST}"

  MSYS2_ARG_CONV_EXCL="--prefix=" \
  meson \
    --prefix="${MINGW_PREFIX}" \
    --buildtype=plain \
    -Ddoctool=enabled \
    -Dcairo=disabled \
    "../${_realname}-${pkgver}"

  GI_SCANNER_DISABLE_CACHE=1 ninja
}

package_gobject-introspection() {
  pkgdesc="Introspection system for GObject-based libraries (mingw-w64)"
  depends=("${MINGW_PACKAGE_PREFIX}-gobject-introspection-runtime=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-pkg-config"
           "${MINGW_PACKAGE_PREFIX}-python"
           "${MINGW_PACKAGE_PREFIX}-python-mako")
  options=('!emptydirs')

  cd "${srcdir}/build-${MINGW_CHOST}"

  DESTDIR="${pkgdir}" ninja install

  local _PRE_WIN="$(cygpath -m ${MINGW_PREFIX})"
  for name in g-ir-scanner g-ir-doc-tool g-ir-annotation-tool; do
    ${MINGW_PREFIX}/bin/python3 \
      "${srcdir}/pyscript2exe.py" "${pkgdir}${MINGW_PREFIX}/bin/${name}"
  done

  for pcfile in  "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/*.pc; do
    sed -s "s|${_PRE_WIN}/lib/libffi|\${prefix}/lib/libffi|g" -i "${pcfile}"
    # we create an .exe launcher for g-ir-scanner, so adjust here too
    sed -s "s|/g-ir-scanner|/g-ir-scanner.exe|g" -i "${pcfile}"
  done

  rm "${pkgdir}${MINGW_PREFIX}/bin/libgirepository"*.dll
  rm "${pkgdir}${MINGW_PREFIX}/lib/libgirepository"*.a
  rm -R "${pkgdir}${MINGW_PREFIX}/lib/girepository-1.0"
}

package_gobject-introspection-runtime() {
  pkgdesc="Introspection system for GObject-based libraries - runtime files (mingw-w64)"
  depends=("${MINGW_PACKAGE_PREFIX}-glib2"
           "${MINGW_PACKAGE_PREFIX}-libffi")

  cd "${srcdir}/build-${MINGW_CHOST}"
  local tmp_install="$(pwd)/_temp"

  DESTDIR="${tmp_install}" ninja install

  install -Dt "${pkgdir}${MINGW_PREFIX}/bin" "${tmp_install}${MINGW_PREFIX}/bin/libgirepository"*.dll
  install -Dt "${pkgdir}${MINGW_PREFIX}/lib" "${tmp_install}${MINGW_PREFIX}/lib/libgirepository"*.a
  install -Dt "${pkgdir}${MINGW_PREFIX}/lib/girepository-1.0" "${tmp_install}${MINGW_PREFIX}/lib/girepository-1.0/"*.typelib
}

# 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}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
