# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Tim Stahlhut <stahta01@gmail.com>

# Remember to update mingw-w64-kicad-doc and mingw-w64-kicad-library when
# updating this build rule.

_wx_basever=3.2

_realname=kicad
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=8.0.5
pkgrel=1
pkgdesc="Software for the creation of electronic schematic diagrams and printed circuit board artwork (mingw-w64)"
arch=(any)
mingw_arch=('mingw64' 'ucrt64' 'clang64')
url="https://www.kicad.org/"
msys2_repository_url="https://gitlab.com/kicad/code/kicad"
msys2_references=(
  'archlinux: kicad'
  "cpe: cpe:/a:kicad:eda"
  "cpe: cpe:/a:kicad:kicad_eda"
)
license=("spdx:GPL-3.0-or-later")
groups=("${MINGW_PACKAGE_PREFIX}-eda")
conflicts=(${MINGW_PACKAGE_PREFIX}-${_realname}-git)
replaces=(${MINGW_PACKAGE_PREFIX}-${_realname}-git)
depends=(
  "${MINGW_PACKAGE_PREFIX}-boost"
  "${MINGW_PACKAGE_PREFIX}-cairo"
  "${MINGW_PACKAGE_PREFIX}-curl"
  "${MINGW_PACKAGE_PREFIX}-fmt"
  "${MINGW_PACKAGE_PREFIX}-freeglut"
  "${MINGW_PACKAGE_PREFIX}-glew"
  "${MINGW_PACKAGE_PREFIX}-glm"
  "${MINGW_PACKAGE_PREFIX}-kicad-footprints"
  "${MINGW_PACKAGE_PREFIX}-kicad-symbols"
  "${MINGW_PACKAGE_PREFIX}-libgit2"
  "${MINGW_PACKAGE_PREFIX}-ngspice"
  "${MINGW_PACKAGE_PREFIX}-python"
  "${MINGW_PACKAGE_PREFIX}-opencascade"
  "${MINGW_PACKAGE_PREFIX}-openssl"
  "${MINGW_PACKAGE_PREFIX}-wxPython"
  "${MINGW_PACKAGE_PREFIX}-wxwidgets${_wx_basever}-msw-libs"
  "${MINGW_PACKAGE_PREFIX}-zlib"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-pkgconf"
  "${MINGW_PACKAGE_PREFIX}-doxygen"
  "${MINGW_PACKAGE_PREFIX}-swig"
  "${MINGW_PACKAGE_PREFIX}-wxwidgets${_wx_basever}-msw"
  "git"
)
optdepends=(
  "${MINGW_PACKAGE_PREFIX}-kicad-templates: for template libraries"
  "${MINGW_PACKAGE_PREFIX}-kicad-packages3D: for 3D model libraries"
)
_doc=("ca" "de" "en" "es" "fr" "id" "it" "ja" "nl" "pl" "ru" "zh")
for _doclang in ${_doc[@]}; do
  optdepends+=("${MINGW_PACKAGE_PREFIX}-${_realname}-doc-${_doclang}: for documentation (${_doclang})");
done
source=(
  "https://gitlab.com/kicad/code/kicad/-/archive/${pkgver}/kicad-${pkgver}.tar.bz2"
  '001-fix-build-with-fmt-11.patch'
  '002-ki-6.0-cmake-fixes-for-MINGW-CLANG.patch'
  '003-ki-6.0-code-fixes-for-GNUC-CLANG.patch'
  '004-fix-loading-ngspice-dll.patch'
  '005-clang-fmt-workaround.patch'
  '006-ki-6.0-rewrite-kiwin32_rc_for_clang.patch'
  # Patches 007,008,and 009 are from 8.0 git branch
  '007-Fix-compilation-with-Boost-1.86.patch'
  '008-KIID-Use-Boost-uuids-own-hash-function-fix-Boost-1.8.patch'
  '009-Fix-Boost-1.86-SHA1-one-last-time.patch'
)
sha256sums=('04e539d2b48957d2808fdf57274557021391e622f963b5cd8840b8331ee91b99'
            '3c51482f1e452e37e75c06a65996aa5d631a93e82fbef7dd8274ae8ebbd53601'
            '2924a86849c02aecd21cded0bd2069353fca33c3364f9b41f9bfdd80e19085cf'
            'd8d5f4bdd0aa6d8a907710c523f6f95840636cb2ef69e5275c6ed4966f134353'
            'f35a96c2393c21c266dbcd42616df64f9ee13b2423478bf6de029a3ad4e0ee8a'
            'bc7ad66d81d56dcfc237dfffe31fff58addff98622f65f64c45df11f70088c37'
            '3155b9515ec7c094221441ce337c566c346bf76bb7aa42e86660cfdfb599e307'
            'c986c80756d566d7178c7a9afcc8dc05297d93d897bffa42a9aade572feddfee'
            '5473f506c6639b1e98c454f38178675f9386dcaa20e0ba75d983aff0fee741d7'
            '2293fda3fcecfada2308ae090679710b67f52226425c708c6601b0261ba3a31b')

# Helper macros to help make tasks easier #
apply_patch_with_msg() {
  for _fname in "$@"
  do
    msg2 "Applying ${_fname}"
    patch -Nbp1 -i "${srcdir}"/${_fname}
  done
}

prepare() {
  cd ${_realname}-${pkgver}

  apply_patch_with_msg \
    001-fix-build-with-fmt-11.patch \
    002-ki-6.0-cmake-fixes-for-MINGW-CLANG.patch \
    003-ki-6.0-code-fixes-for-GNUC-CLANG.patch \
    004-fix-loading-ngspice-dll.patch \
    005-clang-fmt-workaround.patch \
    006-ki-6.0-rewrite-kiwin32_rc_for_clang.patch \
    007-Fix-compilation-with-Boost-1.86.patch \
    008-KIID-Use-Boost-uuids-own-hash-function-fix-Boost-1.8.patch \
    009-Fix-Boost-1.86-SHA1-one-last-time.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

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=;DCMAKE_PREFIX_PATH=;DEFAULT_INSTALL_PATH=" \
    "${MINGW_PREFIX}"/bin/cmake.exe -Wno-dev \
      -GNinja \
      -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
      "${_extra_config[@]}" \
      -DCMAKE_PREFIX_PATH="${MINGW_PREFIX}" \
      -DDEFAULT_INSTALL_PATH="${MINGW_PREFIX}" \
      -DwxWidgets_CONFIG_EXECUTABLE="${MINGW_PREFIX}"/bin/wx-config-${_wx_basever} \
      -DOCC_INCLUDE_DIR="${MINGW_PREFIX}"/include/opencascade \
      -DKICAD_SCRIPTING_WXPYTHON=ON \
      -DKICAD_BUILD_I18N=ON \
      -DKICAD_BUILD_QA_TESTS=OFF \
      -DPYTHON_EXECUTABLE="${MINGW_PREFIX}"/bin/python.exe \
      -DPYTHON_INCLUDE_DIR=$("${MINGW_PREFIX}"/bin/python.exe -c "from sysconfig import get_paths as gp; print(gp()[\"include\"])") \
      -DPYTHON_ROOT_DIR="${MINGW_PREFIX}" \
      -DNGSPICE_ROOT_DIR=${MINGW_PREFIX} \
      ../${_realname}-${pkgver}

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

package() {
  cd "${srcdir}/build-${MSYSTEM}"
  DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install .

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