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

_realname=koboldcpp
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.96.2
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=('12dfee7e11d2d62988b08d75aec1f375a47bd7a609405fb88be31a7210bee6bf'
            'fa82b39d88f0d9d9e49be27df11dac0cc05a9fed0e7624e40798f1efac090f2b')

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 ./*.embd "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/"
  install -Dm644 json_to_gbnf.py "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/"

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

  install -Dm644 koboldcpp.py "${pkgdir}${MINGW_PREFIX}/share/koboldcpp/"

  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"
}
