# Maintainer: Alexey Pavlov <alexpux@gmail.com>

_realname=kicad
pkgbase=mingw-w64-${_realname}
_sub=("footprints" "symbols" "templates" "packages3D")
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-meta"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-footprints"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-symbols"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-templates"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-packages3D")
pkgver=5.0.2
pkgrel=1
pkgdesc="Software for the creation of electronic schematic diagrams and printed circuit board artwork (mingw-w64)"
arch=("any")
url="http://www.kicad-pcb.org"
license=("GPLv3+")
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-doxygen"
             "${MINGW_PACKAGE_PREFIX}-gcc"
             "${MINGW_PACKAGE_PREFIX}-glm"
             "${MINGW_PACKAGE_PREFIX}-python2"
             "${MINGW_PACKAGE_PREFIX}-pkg-config"
             "${MINGW_PACKAGE_PREFIX}-swig")
source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/KiCad/kicad-source-mirror/archive/${pkgver}.tar.gz"
        "${_realname}-i18n-${pkgver}.tar.gz"::"https://github.com/KiCad/kicad-i18n/archive/${pkgver}.tar.gz"
        "${_realname}-footprints-${pkgver}.tar.gz"::"https://github.com/KiCad/kicad-footprints/archive/${pkgver}.tar.gz"
        "${_realname}-symbols-${pkgver}.tar.gz"::"https://github.com/KiCad/kicad-symbols/archive/${pkgver}.tar.gz"
        "${_realname}-templates-${pkgver}.tar.gz"::"https://github.com/KiCad/kicad-templates/archive/${pkgver}.tar.gz"
        "${_realname}-packages3D-${pkgver}.tar.gz"::"https://github.com/KiCad/kicad-packages3D/archive/${pkgver}.tar.gz")
sha256sums=('0668374b785d3ba8b3c51ff637e48d4d3027e66e6962d99b5c5247ef6a657077'
            'cde8939ad031519847f90daa1ad6d87516ab224949e028a5f89a895c7595870a'
            '430c3d58ad85aa87c2514b3243536f73d8690681693d63bc5886ce3b82e2e841'
            'eeb58a46ab9423ae2b66307f50cc0c897a1a7679d91f423402edb80f0df21cdc'
            'ca46396cfbc31cbf78f5edbcf5950caccd18fc1486ccb145884e577cac076b76'
            '86e20dfb3a4720082a4dd92d66c7d3581e11f3638c8dc3a832a526ab3fc321fa')

prepare() {
  cd "${srcdir}"

  cp -f "${srcdir}"/${_realname}-source-mirror-${pkgver}/template/kicad.pro "${srcdir}"/kicad-templates-${pkgver}/
  
  [[ -d build-${MINGW_CHOST} ]] && rm -r build-${MINGW_CHOST}
  [[ -d build-i18n ]] && rm -r build-i18n
  for _i in ${_sub[@]}; do
    [[ -d build-${_i} ]] && rm -r build-${_i}
  done
  true
}

build_kicad() {
  cd "${srcdir}"
  # Configure and build KiCad.
  mkdir -p build-${MINGW_CHOST} && cd build-${MINGW_CHOST}

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=;DCMAKE_PREFIX_PATH=;DEFAULT_INSTALL_PATH=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G"MSYS Makefiles" \
    -DCMAKE_PREFIX_PATH=${MINGW_PREFIX} \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    -DCMAKE_BUILD_TYPE=Release \
    -DDEFAULT_INSTALL_PATH=${MINGW_PREFIX} \
    -DOPENSSL_ROOT_DIR=${MINGW_PREFIX} \
    -DKICAD_SCRIPTING=ON \
    -DKICAD_SCRIPTING_MODULES=ON \
    -DKICAD_SCRIPTING_WXPYTHON=ON \
    -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python2.exe \
    ../${_realname}-source-mirror-${pkgver}

  make

  cd "${srcdir}"
  # Configure the translationn installation build.
  mkdir -p build-i18n && cd build-i18n
  
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G "MSYS Makefiles" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    ../${_realname}-i18n-${pkgver}
}

build_sub() {
  cd "${srcdir}"
  mkdir -p build-${1} && cd build-${1}
  
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G "MSYS Makefiles" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    ../${_realname}-${1}-${pkgver}
}

_doc=("ca" "de" "en" "es" "fr" "id" "it" "ja" "nl" "pl" "ru" "zh")
for _d in ${_doc[@]}; do _doc_pkg+=("\"${MINGW_PACKAGE_PREFIX}-${_realname}-doc-${_d}: Documentation for KiCad (mingw-w64)\""); done
for _s in ${_sub[@]}; do _sub_pkg+=("${MINGW_PACKAGE_PREFIX}-${_realname}-${_s}"); done

eval "package_${MINGW_PACKAGE_PREFIX}-${_realname}() {
  depends=("${MINGW_PACKAGE_PREFIX}-boost"
           "${MINGW_PACKAGE_PREFIX}-cairo"
           "${MINGW_PACKAGE_PREFIX}-curl"
           "${MINGW_PACKAGE_PREFIX}-glew"
           "${MINGW_PACKAGE_PREFIX}-ngspice"
           "${MINGW_PACKAGE_PREFIX}-oce"
           "${MINGW_PACKAGE_PREFIX}-openssl"
           "${MINGW_PACKAGE_PREFIX}-wxPython"
           "${MINGW_PACKAGE_PREFIX}-wxWidgets")
  optdepends+=("${_doc_pkg[@]}" "\${_sub_pkg[@]}")
  conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
  replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
  
  build_kicad
  
  cd "\"\${srcdir}\"/build-${MINGW_CHOST}"
  make DESTDIR="\"\${pkgdir}\"" install

  cd "\"\${srcdir}\"/build-i18n"
  make DESTDIR="\"\${pkgdir}\"" install
}"

eval "package_${MINGW_PACKAGE_PREFIX}-${_realname}-meta() {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}"
           "${_sub_pkg[@]}")
}"

for _s in ${_sub[@]}; do
  eval "package_${MINGW_PACKAGE_PREFIX}-${_realname}-${_s}() {
    options=('!strip')
    conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-${_s}-git")
    replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-${_s}-git")
    build_sub ${_s}
    cd "\"\${srcdir}\"/build-${_s}"
    make DESTDIR="\"\${pkgdir}\"" install
  }"
done
