# Maintainer: Some One <some.one@some.email.com>

_realname=z3
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=4.8.9
pkgrel=2
pkgdesc="Z3 is a high-performance theorem prover being developed at Microsoft Research (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://github.com/Z3Prover/z3"
license=('MIT')
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-python3")
options=('strip' 'staticlibs')
source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/Z3Prover/z3/archive/z3-${pkgver}.tar.gz"
        001-mingw-fixes.patch
        003-fix-dll-exports.patch
        004-fix-python-bindings-install.patch
        005-fix-clang.patch)
sha256sums=('c9fd04b9b33be74fffaac3ec2bc2c320d1a4cc32e395203c55126b12a14ff3f4'
            '78554202e1071d5686aed96336ad1020d6249f6d9080c2a7862cb7f72b51379c'
            'ce01668afae8e60c32a0d7937d3f8f67a7dc23aa4270913d157e676d061dfe6a'
            '7c73e0b6afac99948ca383a709668ae753b8034139332503c8f2d0e310382ac6'
            '51c2d1071845efbe29e2b38124d7ce7ef210e8441294cd2d53df65348874118a')

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

prepare() {
  cd "${srcdir}"/${_realname}-${_realname}-${pkgver}
  apply_patch_with_msg \
    001-mingw-fixes.patch \
    003-fix-dll-exports.patch \
    004-fix-python-bindings-install.patch \
    005-fix-clang.patch
}

build() {
  local -a extra_config

  if check_option "debug" "y"; then
    extra_config+=(-DCMAKE_BUILD_TYPE=Debug)
    VERBOSE="VERBOSE=1"
  else
    extra_config+=(-DCMAKE_BUILD_TYPE=Release)
  fi

  [[ -d "${srcdir}"/build-${CARCH}-static ]] && rm -rf "${srcdir}"/build-${CARCH}-static
  mkdir -p "${srcdir}"/build-${CARCH}-static && cd "${srcdir}"/build-${CARCH}-static

  msg "Build static z3"
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G"MSYS Makefiles" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    -DZ3_BUILD_LIBZ3_SHARED=OFF \
    -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python3.exe \
    "${extra_config[@]}" \
    ../${_realname}-${_realname}-${pkgver}

  make

  [[ -d "${srcdir}"/build-${CARCH}-shared ]] && rm -rf "${srcdir}"/build-${CARCH}-shared
  mkdir -p "${srcdir}"/build-${CARCH}-shared && cd "${srcdir}"/build-${CARCH}-shared

  msg "Build shared z3"
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
    -G"MSYS Makefiles" \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    -DZ3_BUILD_LIBZ3_SHARED=ON \
    -DBUILD_PYTHON_BINDINGS=ON \
    -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python3.exe \
    "${extra_config[@]}" \
    ../${_realname}-${_realname}-${pkgver}

  make
}

check() {
 cd "${srcdir}"/build-${CARCH}-shared
 make test-z3 || true
}

package() {
  cd "${srcdir}"/build-${CARCH}-static
  make install DESTDIR="${pkgdir}"

  cd "${srcdir}"/build-${CARCH}-shared
  make install DESTDIR="${pkgdir}"

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