# Maintainer: Fabien Chouteau <chouteau@adacore.com>

_realname=gnatcoll
pkgbase=mingw-w64-${_realname}
pkgname=${MINGW_PACKAGE_PREFIX}-${_realname}
pkgver=24.0.0
pkgrel=1
pkgdesc="The GNAT Components Collection (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64')
msys2_references=(
  'aur: gnatcoll-core'
)
replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-gpl")
url="https://github.com/AdaCore/gnatcoll-core"
msys2_references=(
  'aur: gnatcoll'
)
license=('spdx:GPL-3.0-or-later with GCC-exception-3.1')
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc-ada"
             "${MINGW_PACKAGE_PREFIX}-gprbuild"
             "${MINGW_PACKAGE_PREFIX}-python3")
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-gcc-ada"
         "${MINGW_PACKAGE_PREFIX}-gmp"
         "${MINGW_PACKAGE_PREFIX}-libiconv"
         "${MINGW_PACKAGE_PREFIX}-xmlada"
         "${MINGW_PACKAGE_PREFIX}-libgpr")
source=("https://github.com/AdaCore/gnatcoll-core/archive/v${pkgver}/gnatcoll-core.tar.gz"
        "https://github.com/AdaCore/gnatcoll-bindings/archive/v${pkgver}/gnatcoll-bindings.tar.gz"
        'gmp.gpr'
        'iconv.gpr')
sha256sums=('0b3ef5687d9d7be115d90143a3b9da2c30779ea8bfe0a6226bedc7715d28fd8d'
            'd123733ca9a9206572e77bfbffbe0cd50e96ea8f8e276055048dc209e5327791'
            'd2456f318fee53f010dcf9e236f1a06dfcec51a541e80b8eaf8c3b58bbce9318'
            'c0951f33fcc65ee9a333621135941e5ffee7884445e943538ec744762d628f26')
options=('strip')

prepare() {
  echo "${pkgver}" > "${srcdir}/gnatcoll-bindings-${pkgver}/version_information"
  echo "${pkgver}" > "${srcdir}/gnatcoll-core-${pkgver}/version_information"
}

build() {
  cd "${srcdir}/gnatcoll-core-${pkgver}"

  make BUILD=PROD PROCESSORS="$(nproc)" ENABLE_SHARED=yes

  export "GPR_PROJECT_PATH=${srcdir}/gnatcoll-core-${pkgver}"

  # Build bindings components
  for component in gmp iconv; do
    cd "${srcdir}/gnatcoll-bindings-${pkgver}/${component}"
    ${MINGW_PREFIX}/bin/python3 setup.py build --jobs="$(nproc)" --reconfigure
  done
}

package() {

  cd "${srcdir}/gnatcoll-core-${pkgver}"

  make install BUILD=PROD PROCESSORS="$(nproc)" ENABLE_SHARED=yes prefix="${pkgdir}${MINGW_PREFIX}"

  export "GPR_PROJECT_PATH=${pkgdir}${MINGW_PREFIX}/share/gpr/"

  # Install bindings components
  for component in gmp iconv; do
    cd "${srcdir}/gnatcoll-bindings-${pkgver}/${component}"
    python3 setup.py install --prefix="${pkgdir}${MINGW_PREFIX}"
  done

  # In GNAT Community gnatcoll_gmp is built with libgmp embedded in
  # libgnatcoll_gmp.dll This is not what we want here, so we install
  # a gmp.gpr with Externally_Built attribute. Same for iconv.

  # Copy external gpr files
  cp -pf "${srcdir}/gmp.gpr" "${pkgdir}${MINGW_PREFIX}/share/gpr/"
  cp -pf "${srcdir}/iconv.gpr" "${pkgdir}${MINGW_PREFIX}/share/gpr/"

  # Add with for external gpr files
  sed -i 's/with "gnatcoll";/with "gnatcoll"; with "gmp";/' "${pkgdir}${MINGW_PREFIX}/share/gpr/gnatcoll_gmp.gpr"
  sed -i 's/with "gnatcoll";/with "gnatcoll"; with "iconv";/' "${pkgdir}${MINGW_PREFIX}/share/gpr/gnatcoll_iconv.gpr"

  # Copy License Files
  install -Dm644 -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}" \
    "${srcdir}/gnatcoll-core-${pkgver}"/COPYING*
}
