# Maintainer: Konstantin Podsvirov <konstantin@podsvirov.su>

_realname=koboldcpp
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.100.1
pkgrel=1
pkgdesc="An easy-to-use AI text-generation software for GGML and GGUF models (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64' 'clang64')
url='https://github.com/LostRuins/koboldcpp'
license=('spdx:AGPL-3.0-only')
depends=("${MINGW_PACKAGE_PREFIX}-python"
         "${MINGW_PACKAGE_PREFIX}-openblas"
         "${MINGW_PACKAGE_PREFIX}-clblast"
         "${MINGW_PACKAGE_PREFIX}-vulkan-loader")
optdepends=("${MINGW_PACKAGE_PREFIX}-python-customtkinter: for GUI launcher"
            "${MINGW_PACKAGE_PREFIX}-python-psutil: increasing the process CPU priority")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc")
source=("${url}/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        '0001-koboldcpp-1.95.1-fix-vulkan-shaders-gen.patch')
sha256sums=('5f0cd793ad512685f147cb51a086db7d298dabc4735ab84099538a5e8634ebc4'
            'c35f31899e276b87a86f63aacf1e84136f0551dca3b6d21d633ddd9eb3be735a')

prepare() {
  cd "${srcdir}/${_realname}-${pkgver}"

  patch -Np1 -i "${srcdir}"/0001-koboldcpp-1.95.1-fix-vulkan-shaders-gen.patch
}

build() {
  cd "${srcdir}/${_realname}-${pkgver}"

  make LLAMA_VULKAN=1 LLAMA_CLBLAST=1
}

package() {
  cd "${srcdir}/${_realname}-${pkgver}"

  install -d "${pkgdir}${MINGW_PREFIX}/share/koboldcpp"
  install -Dm644 ./koboldcpp_*.dll "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/"
  install -Dm644 json_to_gbnf.py "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/"
  install -Dm644 koboldcpp.py "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/"

  install -d "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/embd_res"
  install -Dm644 ./embd_res/* "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/embd_res"

  install -d "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/kcpp_adapters"
  install -m644 "kcpp_adapters"/* "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/kcpp_adapters/"

  echo '#!/bin/sh' >koboldcpp
  echo 'python ${MINGW_PREFIX}/share/koboldcpp/koboldcpp.py "$@"' >>koboldcpp
  install -Dm755 koboldcpp "${pkgdir}${MINGW_PREFIX}/bin/koboldcpp"

  install -Dm644 "LICENSE.md" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE.md"
}
