# Maintainer: Jonathan Schleifer <js@nil.im>
_realname=objfw
pkgname=("${MINGW_PACKAGE_PREFIX}-libobjfw"
         "${MINGW_PACKAGE_PREFIX}-libobjfwrt"
         "${MINGW_PACKAGE_PREFIX}-libobjfwtls"
         "${MINGW_PACKAGE_PREFIX}-ofarc"
         "${MINGW_PACKAGE_PREFIX}-ofdns"
         "${MINGW_PACKAGE_PREFIX}-ofhash"
         "${MINGW_PACKAGE_PREFIX}-ofhttp")
pkgbase=mingw-w64-${_realname}
pkgver=1.0.12
pkgrel=1
pkgdesc="Portable, lightweight framework for the Objective-C language"
arch=('any')
mingw_arch=('mingw32' 'clang64' 'clangarm64')
url="https://objfw.nil.im/"
license=('custom:QPL' 'GPL3' 'GPL2')
makedepends=("${MINGW_PACKAGE_PREFIX}-clang"
             "${MINGW_PACKAGE_PREFIX}-openssl")
groups=("${MINGW_PACKAGE_PREFIX}-${_realname}")
source=("${_realname}-${pkgver}.tar.gz::https://objfw.nil.im/downloads/${_realname}-${pkgver}.tar.gz")
sha256sums=(d5f9d5dcb95c52f7b243b1b818a34be99cecaaa5afd6de1c5b2502214f5df7f7)

build() {
  cd "${_realname}-${pkgver}"
  ./configure \
    --prefix=${MINGW_PREFIX} \
    --build=${MINGW_CHOST} \
    --host=${MINGW_CHOST} \
    --target=${MINGW_CHOST} \
    --with-tls=openssl \
    OBJC=clang
  make
}

check() {
  cd "${_realname}-${pkgver}"
  make check
}

package_libobjfw() {
  pkgdesc="ObjFW library"
  depends=("${MINGW_PACKAGE_PREFIX}-libobjfwrt"
           "bash")

  cd "${_realname}-${pkgver}"
  make DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done

  # Those are in subpackages
  rm -f "${pkgdir}/${MINGW_PREFIX}/bin/objfwrt1.dll"
  rm -f "${pkgdir}/${MINGW_PREFIX}/bin/objfwtls1.dll"
  rm -f "${pkgdir}/${MINGW_PREFIX}/bin/ofarc.exe"
  rm -f "${pkgdir}/${MINGW_PREFIX}/bin/ofdns.exe"
  rm -f "${pkgdir}/${MINGW_PREFIX}/bin/ofhash.exe"
  rm -f "${pkgdir}/${MINGW_PREFIX}/bin/ofhttp.exe"
  rm -fr "${pkgdir}/${MINGW_PREFIX}/include/ObjFWRT"
  rm -fr "${pkgdir}/${MINGW_PREFIX}/include/ObjFWTLS"
  rm -f "${pkgdir}/${MINGW_PREFIX}/lib/libobjfwrt.dll.a"
  rm -f "${pkgdir}/${MINGW_PREFIX}/lib/libobjfwtls.dll.a"
  rm -fr "${pkgdir}/${MINGW_PREFIX}/share/ofarc"
  rm -fr "${pkgdir}/${MINGW_PREFIX}/share/ofdns"
  rm -fr "${pkgdir}/${MINGW_PREFIX}/share/ofhash"
  rm -fr "${pkgdir}/${MINGW_PREFIX}/share/ofhttp"
}

package_libobjfwrt() {
  pkgdesc="ObjFW Objective-C runtime library"

  cd "${_realname}-${pkgver}"
  make -C src/runtime DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done
}

package_libobjfwtls() {
  pkgdesc="TLS support for ObjFW"
  depends=("${MINGW_PACKAGE_PREFIX}-libobjfw"
           "${MINGW_PACKAGE_PREFIX}-libobjfwrt"
           "${MINGW_PACKAGE_PREFIX}-openssl")

  cd "${_realname}-${pkgver}"
  make -C src/tls DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done
}

package_ofarc() {
  pkgdesc="Utility for handling ZIP, Tar and LHA archives"
  depends=("${MINGW_PACKAGE_PREFIX}-libobjfw"
           "${MINGW_PACKAGE_PREFIX}-libobjfwrt")

  cd "${_realname}-${pkgver}"
  make -C utils/ofarc DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done
}

package_ofdns() {
  pkgdesc="Utility for performing DNS requests on the command line"
  depends=("${MINGW_PACKAGE_PREFIX}-libobjfw"
           "${MINGW_PACKAGE_PREFIX}-libobjfwrt")

  cd "${_realname}-${pkgver}"
  make -C utils/ofdns DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done
}

package_ofhash() {
  pkgdesc="Utility to hash files with various cryptographic hash functions"
  depends=("${MINGW_PACKAGE_PREFIX}-libobjfw"
           "${MINGW_PACKAGE_PREFIX}-libobjfwrt")

  cd "${_realname}-${pkgver}"
  make -C utils/ofhash DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done
}

package_ofhttp() {
  pkgdesc="Command line downloader for HTTP(S)"
  depends=("${MINGW_PACKAGE_PREFIX}-libobjfw"
           "${MINGW_PACKAGE_PREFIX}-libobjfwrt"
           "${MINGW_PACKAGE_PREFIX}-libobjfwtls")

  cd "${_realname}-${pkgver}"
  make -C utils/ofhttp DESTDIR="${pkgdir}/" install

  for i in LICENSE.QPL LICENSE.GPLv3 LICENSE.GPLv2; do
    install -D -m 644 "${i}" \
      "${pkgdir}/${MINGW_PREFIX}/share/licenses/${pkgname}/${i}"
  done
}

# 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;
