# Maintainer: Alexey Pavlov <alexpux@gmail.com>

pkgbase=glib2
pkgname=(glib2 glib2-devel glib2-docs)
pkgver=2.78.6
pkgrel=1
pkgdesc="Common C routines used by GTK+ and other libs"
license=('spdx:LGPL-2.1-or-later')
url="https://gitlab.gnome.org/GNOME/glib"
msys2_references=(
  "cpe: cpe:/a:gnome:glib"
)
arch=('i686' 'x86_64')
makedepends=('docbook-xsl'
             'gcc'
             'gtk-doc'
             'libffi-devel'
             'libiconv-devel'
             'libxslt-devel'
             'pcre2-devel'
             'pkgconf'
             'python3'
             'meson'
             'ninja'
             'zlib-devel')
source=(https://download.gnome.org/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz
        001-gmodule-lib-prefix.patch)
noextract=("glib-$pkgver.tar.xz")
sha256sums=('244854654dd82c7ebcb2f8e246156d2a05eb9cd1ad07ed7a779659b4602c9fae'
            '31bce1aff2dab2262ea372d101081162a77e9310fe0d68400da8c85d698ce65e')
msys2_references=(
  'cygwin: glib2.0'
)

prepare() {
  bsdtar -zxf "glib-${pkgver}.tar.xz" || true

  cd glib-${pkgver}

  patch -p1 -i ${srcdir}/001-gmodule-lib-prefix.patch
}

build() {
  mkdir "${srcdir}"/build && cd "${srcdir}"/build

  meson setup \
    --wrap-mode=nodownload \
    --auto-features=enabled \
    --buildtype=plain \
    --prefix=/usr \
    -Dgtk_doc=true \
    -Dlibelf=disabled \
    "../glib-${pkgver}"

  meson compile

  DESTDIR="${srcdir}/dest" meson install

  pushd ${srcdir}/dest/usr/share/gdb/auto-load/usr/lib > /dev/null
    mv libglib* msys-glib-2.0-0.dll-gdb.py
    mv libgobject* msys-gobject-2.0-0.dll-gdb.py
  popd > /dev/null
}

check() {
  cd "${srcdir}"/build

  meson test
}

package_glib2() {
  depends=('libxslt' 'libpcre2_8' 'libffi' 'libiconv' 'zlib')
  options=('!docs' '!emptydirs')
  license=('LGPL')

  mkdir -p ${pkgdir}/usr/{bin,lib,share}
  cp -f ${srcdir}/dest/usr/bin/*.dll ${pkgdir}/usr/bin/
  for file in gapplication gdbus gio-querymodules glib-compile-schemas gobject-query gsettings; do
    cp -f ${srcdir}/dest/usr/bin/${file}.exe ${pkgdir}/usr/bin/
  done

  cp -rf ${srcdir}/dest/usr/share/gdb ${pkgdir}/usr/share/

  mkdir -p ${pkgdir}/usr/share/{man,glib-2.0}
  cp -rf ${srcdir}/dest/usr/share/glib-2.0/gdb ${pkgdir}/usr/share/glib-2.0/
  cp -rf ${srcdir}/dest/usr/share/glib-2.0/schemas ${pkgdir}/usr/share/glib-2.0/
  cp -rf ${srcdir}/dest/usr/share/locale ${pkgdir}/usr/share/

  cp -rf ${srcdir}/dest/usr/share/bash-completion ${pkgdir}/usr/share/

  for _i in "${pkgdir}/usr/share/bash-completion/completions/"*; do
    chmod -x "$_i"
  done

  python3 -m compileall -o 0 -o 1 -s "${pkgdir}" "${pkgdir}/usr/share"
}

package_glib2-devel() {
  pkgdesc="glib2 headers and libraries"
  groups=('development')
  depends=("glib2=${pkgver}" 'gettext-devel' 'libffi-devel' 'libiconv-devel' 'pcre2-devel' 'zlib-devel')
  optdepends=('python3: for gdbus-codegen and gtester-report')
  options=('emptydirs')

  mkdir -p ${pkgdir}/usr/{bin,lib,share}
  cp -f ${srcdir}/dest/usr/bin/gdbus-codegen ${pkgdir}/usr/bin/
  cp -f ${srcdir}/dest/usr/bin/glib-* ${pkgdir}/usr/bin/
  rm -f ${pkgdir}/usr/bin/glib-compile-schemas*
  cp -f ${srcdir}/dest/usr/bin/gresource* ${pkgdir}/usr/bin/
  cp -f ${srcdir}/dest/usr/bin/gtester* ${pkgdir}/usr/bin/

  cp -rf ${srcdir}/dest/usr/lib/pkgconfig ${pkgdir}/usr/lib/
  cp -f ${srcdir}/dest/usr/lib/*.a ${pkgdir}/usr/lib/
  cp -rf ${srcdir}/dest/usr/lib/glib* ${pkgdir}/usr/lib/

  cp -rf ${srcdir}/dest/usr/include ${pkgdir}/usr/
  cp -rf ${srcdir}/dest/usr/share/aclocal ${pkgdir}/usr/share/
  cp -rf ${srcdir}/dest/usr/share/glib-2.0 ${pkgdir}/usr/share/
  rm -rf ${pkgdir}/usr/share/glib-2.0/gdb
  rm -rf ${pkgdir}/usr/share/glib-2.0/schemas

  python3 -m compileall -o 0 -o 1 -s "${pkgdir}" "${pkgdir}/usr/share/glib-2.0/codegen"
}

package_glib2-docs() {
  pkgdesc="Documentation for glib2"
  conflicts=('gobject2-docs')
  replaces=('gobject2-docs')
  license=('custom')
  options=('docs' '!emptydirs')

  mkdir -p ${pkgdir}/usr/share
  cp -rf ${srcdir}/dest/usr/share/gtk-doc ${pkgdir}/usr/share

  cd glib-$pkgver/docs
  install -m755 -d "${pkgdir}/usr/share/licenses/glib2-docs"
  install -m644 reference/COPYING "${pkgdir}/usr/share/licenses/glib2-docs/"
}
