# Maintainer: Konstantin Podsvirov <konstantin@podsvirov.su>

_realname=wt
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=4.12.3
pkgrel=1
pkgdesc="A C++ library and application server for developing and deploying web applications (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://www.webtoolkit.eu/"
msys2_repository_url="https://github.com/emweb/wt"
msys2_changelog_url='https://www.webtoolkit.eu/wt/doc/reference/html/Releasenotes.html'
license=('spdx:GPL-2.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-cc-libs"
         "${MINGW_PACKAGE_PREFIX}-boost-libs"
         "${MINGW_PACKAGE_PREFIX}-fontconfig"
         "${MINGW_PACKAGE_PREFIX}-glib2"
         "${MINGW_PACKAGE_PREFIX}-glew"
         "${MINGW_PACKAGE_PREFIX}-graphicsmagick"
         "${MINGW_PACKAGE_PREFIX}-libharu"
         "${MINGW_PACKAGE_PREFIX}-libwinpthread"
         "${MINGW_PACKAGE_PREFIX}-openssl"
         "${MINGW_PACKAGE_PREFIX}-pango"
         "${MINGW_PACKAGE_PREFIX}-zlib")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja"
             "${MINGW_PACKAGE_PREFIX}-doxygen"
             "${MINGW_PACKAGE_PREFIX}-graphviz"
             "${MINGW_PACKAGE_PREFIX}-asciidoc"
             "${MINGW_PACKAGE_PREFIX}-boost"
             "${MINGW_PACKAGE_PREFIX}-python-setuptools"
             "${MINGW_PACKAGE_PREFIX}-python-pygments"
             "${MINGW_PACKAGE_PREFIX}-postgresql"
             "${MINGW_PACKAGE_PREFIX}-libmariadbclient"
             "${MINGW_PACKAGE_PREFIX}-sqlite3"
             "${MINGW_PACKAGE_PREFIX}-qt5-tools"
             "${MINGW_PACKAGE_PREFIX}-qt6-tools")
optdepends=("${MINGW_PACKAGE_PREFIX}-postgresql: for PostgreSQL Dbo support"
            "${MINGW_PACKAGE_PREFIX}-libmariadbclient: for MySQL Dbo support"
            "${MINGW_PACKAGE_PREFIX}-sqlite3: for Sqlite Dbo support")
source=("${msys2_repository_url}/archive/${pkgver}/${_realname}-${pkgver}.tar.gz"
         '001-wt-4.4.0-fix-find-gm.patch'
         '002-wt-4.4.0-skip-some-examples.patch'
         '003-wt-4.4.0-disable-win32-configdir.patch'
         '004-wt-4.4.0-disable-win32-examples-bat.patch'
         '005-path-string.patch')
sha256sums=('8be7611abcfa0d1d26dfebbd36067990ce0e051aab0b07842c78750fed938439'
            '8e42ec247e796117363d8cbfad7b36ba2e4387597f431adbc8846e4ae78d6610'
            '325181981bd46cca61592e501448717b0451be167ad8e3e46ba84ec2cdd42574'
            'aecd2b9bea499b247d622f9c5d774d42e78ced9f14a0f85fdbb2df942e49efe6'
            '28f00d01de98822950b425069c203c3d2c25e5e69e901d6f887020f9bf6ace8e'
            '45bf28203c5fb095063d877323b4ea1bbedf5daf2706979067c1021b458d709a')

apply_patch_with_msg() {
  for _fname in "$@"
  do
    msg2 "Applying ${_fname}"
    patch -Nbp1 -i "${srcdir}"/${_fname}
  done
}

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

  apply_patch_with_msg \
    001-wt-4.4.0-fix-find-gm.patch \
    002-wt-4.4.0-skip-some-examples.patch \
    003-wt-4.4.0-disable-win32-configdir.patch \
    004-wt-4.4.0-disable-win32-examples-bat.patch \
    005-path-string.patch

  find . -name "*.orig" -exec rm -f {} \;
}

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

  declare -a _extra_config
  if check_option "debug" "n"; then
    _extra_config+=("-DCMAKE_BUILD_TYPE=Release")
  else
    _extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
  fi

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake \
    -G"Ninja" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    "${_extra_config[@]}" \
    -DCONNECTOR_HTTP=ON \
    -DWT_WRASTERIMAGE_IMPLEMENTATION=GraphicsMagick \
    -DGM_PREFIX=${MINGW_PREFIX} \
    -DWEBUSER=http \
    -DWEBGROUP=http \
    -DUSE_SYSTEM_SQLITE3=ON \
    -DBUILD_EXAMPLES=OFF \
    -DINSTALL_EXAMPLES=ON \
    -DINSTALL_DOCUMENTATION=ON \
    -DBUILD_TESTS=OFF \
    -DSHARED_LIBS=ON \
    -DBOOST_DYNAMIC=ON \
    -DHARU_DYNAMIC=ON \
    -DMYSQL_PREFIX=${MINGW_PREFIX} \
    ../${_realname}-${pkgver}

  ${MINGW_PREFIX}/bin/cmake --build .
}

package() {
  cd "${srcdir}/build-${MSYSTEM}"

  DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install .

  local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
  for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/wt/*.cmake; do
    sed -e "s|${PREFIX_WIN}|\$\{_IMPORT_PREFIX\}|g" -i ${_f}
    sed -e "s|${MINGW_PREFIX}|\$\{_IMPORT_PREFIX\}|g" -i ${_f}
  done

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