# Maintainer: Antoine Lambert <antoine.lambert@inria.fr>

_realname=tulip
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=5.7.4
pkgrel=3
pkgdesc="Large graphs analysis, drawing and visualization framework (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64')
url="https://tulip.labri.fr/"
license=('spdx:LGPL-3.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-freetype"
         "${MINGW_PACKAGE_PREFIX}-glew"
         "${MINGW_PACKAGE_PREFIX}-libzip"
         "${MINGW_PACKAGE_PREFIX}-omp"
         "${MINGW_PACKAGE_PREFIX}-python"
         "${MINGW_PACKAGE_PREFIX}-qhull"
         "${MINGW_PACKAGE_PREFIX}-qt6-base"
         "${MINGW_PACKAGE_PREFIX}-qt6-5compat"
         #"${MINGW_PACKAGE_PREFIX}-yajl"
         "${MINGW_PACKAGE_PREFIX}-zlib")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja"
             "${MINGW_PACKAGE_PREFIX}-doxygen"
             #"${MINGW_PACKAGE_PREFIX}-sip" requires sip4
             "${MINGW_PACKAGE_PREFIX}-python-sphinx"
             "${MINGW_PACKAGE_PREFIX}-python-setuptools")
source=("https://sourceforge.net/projects/auber/files/tulip/${_realname}-${pkgver}/${_realname}-${pkgver}_src.tar.gz"
        "001-fix-tulip-python-install.patch"
        "002-fix-template-instatiation.patch"
        "003-fix-clang-omp-link.patch"
        "004-fix-tulip-core-headers.patch"
        "005-fix-cmakelists.patch"
        "006-fix-build-with-qt6.patch"
        "007-find-shared-qhull.patch"
        # https://github.com/frankheckenbach/ftgl/commit/d546aefd
        "008-fix-build-ftgl-with-gcc-14.patch")
sha256sums=('ef3db55a43e2d6fd801a2b210e65d93c079d3238173d19e95221d3cc49dce4b6'
            '90418ac3795d100f6c550011800e129165cecf9a07ca9a619633a5b4322f5df6'
            '8572c14d233a9026fcc984ab9d94e1c8230eadee63ff2eaeed6ad01e5063610b'
            '20bc5ed1744505ab89a4aec597e5286451d37c49241b8a784e0a51957f43dc7b'
            'ace5318108e15b61202440e112ed2ac81d49dd44fa5d6cc3766f09da8299b6b5'
            '32193596196c0eda8a2989bd4467a22c7daf3eaaba3d51d88f0de11b50ba543d'
            '238d4e0400a17ac7d4a8277c5467a01a1a6124df3df64119d9b7d09eb583d1c5'
            '3e0bc0f97ea37643cb471bf7893ac3c7803bc932abec457875a2fcaac97ed119'
            '922ab11b1863f559f83c250acbe0c0379eaadb8a60178bf569f92daa406a055a')

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

prepare() {
  cd "${srcdir}/${_realname}-${pkgver}"
  apply_patch_with_msg \
    001-fix-tulip-python-install.patch \
    002-fix-template-instatiation.patch \
    003-fix-clang-omp-link.patch \
    004-fix-tulip-core-headers.patch \
    005-fix-cmakelists.patch \
    006-fix-build-with-qt6.patch \
    007-find-shared-qhull.patch \
    008-fix-build-ftgl-with-gcc-14.patch
}

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

  if [[ ${CC} == gcc ]]; then
    CXXFLAGS+=" -Wno-template-id-cdtor"
  else
    CXXFLAGS+="  -Wno-dtor-name"
  fi

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake \
    -GNinja \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    "${_extra_config[@]}" \
    -DCMAKE_NEED_RESPONSE=ON \
    -DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib \
    -DTULIP_FIXUP_BUNDLE=OFF \
    -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python3.exe \
    -DTULIP_PYTHON_SITE_INSTALL=ON \
    -DTULIP_USE_QT6=ON \
    ../${_realname}-${pkgver}

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

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

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

  install -Dm644 "${srcdir}"/${_realname}-${pkgver}/COPYING "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/COPYING
  install -Dm644 "${srcdir}"/${_realname}-${pkgver}/COPYING.LESSER "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/COPYING.LESSER
}
