# Maintainer: Oleg Tolmatcev <oleg.tolmatcev@gmail.com>

_realname=cvise
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
_pkgver=2.12.0
pkgver=2.12.0.r301
pkgrel=1
pkgdesc="Super-parallel Python port of the C-Reduce (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://github.com/marxin/cvise"
msys2_repository_url='https://github.com/marxin/cvise'
msys2_references=(
  "aur: cvise"
)
license=('spdx:BSD-3-Clause-Clear')
depends=(
  "${MINGW_PACKAGE_PREFIX}-cc-libs"
  "${MINGW_PACKAGE_PREFIX}-clang-libs"
  "${MINGW_PACKAGE_PREFIX}-clang"
  "${MINGW_PACKAGE_PREFIX}-llvm-libs"
  "${MINGW_PACKAGE_PREFIX}-python"
  "${MINGW_PACKAGE_PREFIX}-python-chardet"
  "${MINGW_PACKAGE_PREFIX}-python-pebble"
  "${MINGW_PACKAGE_PREFIX}-python-psutil"
  "${MINGW_PACKAGE_PREFIX}-unifdef"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-clang-tools-extra"
  "${MINGW_PACKAGE_PREFIX}-llvm"
  "${MINGW_PACKAGE_PREFIX}-tree-sitter"
  "git"
)
checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest")
optdepends=("colordiff")
_commit=3c97aa487cd22bf6057c77b32c174209c94efeba
source=("${_realname}::git+https://github.com/marxin/cvise#commit=${_commit}"
        #"https://github.com/marxin/cvise/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        "001-fix-llvm-definitions.patch"
        "002-make-relocatable.patch"
        "003-fix-cvise-delta.patch"
        "004-add-basic-bash-support.patch"
        "005-fix-readFile-call.patch")
sha256sums=('dc22c7cd9a660576185c79b78e62ece1eb2aff480173a4550b9166797062b019'
            '71fbe46ac0c0c39129543a9531e587ee6be23aee7c69b5b8dbc03869dd7a39f4'
            '11bb8f540fead95a4c726f2fbce8e0c904a5edb17db8980a74da2e0b0c072242'
            '2544e65b5100f72961066e314d0ee0ccded1241e2c48c0d85e8157c932a6966b'
            'a189c9796482499205942e83eb8e33f77f5ac9daa8ca9587c848991934c82746'
            '82bf7b515e55c0d8f433ac93227199fb5088bef62f2d35105f5abd69a5a285e1')

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

pkgver() {
  cd "${srcdir}/${_realname}"
  echo "${_pkgver}.r"`git rev-list --count v${_pkgver}..${_commit}`
}

prepare() {
  cd ${_realname}
  apply_patch_with_msg \
    001-fix-llvm-definitions.patch \
    002-make-relocatable.patch \
    003-fix-cvise-delta.patch \
    004-add-basic-bash-support.patch \
    005-fix-readFile-call.patch

  sed -i "s|-Werror||g" CMakeLists.txt
}

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

  # LLVM_DIR="${MINGW_PREFIX}/opt/llvm-21/lib/cmake/llvm" \
  # Clang_DIR="${MINGW_PREFIX}/opt/llvm-21/lib/cmake/clang" \
  ${MINGW_PREFIX}/bin/cmake \
    -Wno-dev \
    -G Ninja \
    -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
    -DCMAKE_INSTALL_LIBEXECDIR=lib \
    -DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python \
    "${_extra_config[@]}" \
    -B build-${MSYSTEM} \
    -S "${_realname}"

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

check() {
    ${MINGW_PREFIX}/bin/ctest --test-dir build-${MSYSTEM} --output-on-failure
}

package() {
  ${MINGW_PREFIX}/bin/cmake --install build-${MSYSTEM} --prefix "${pkgdir}"${MINGW_PREFIX}

  ${MINGW_PREFIX}/bin/python -m compileall -o 0 -o 1 -q "${pkgdir}"${MINGW_PREFIX}/share/cvise

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