_realname=ollama
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgdesc='Create, run and share large language models (LLMs) (mingw-w64)'
pkgver=0.1.28
pkgrel=1
arch=(any)
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url='https://github.com/jmorganca/ollama'
license=(MIT)
_ollamacommit=3b4bab3dc55c615a14b1ae74ea64815d3891b5b0 # tag: v0.1.28
# The llama.cpp git submodule commit hash can be found here:
# https://github.com/jmorganca/ollama/tree/v0.1.28/llm
# The llama repository is not relevant for msys2 because it is hardcoded in the powershell build script
#_llama_cpp_commit=87c91c07663b707e831c59ec373b5e665ff9d64a 
makedepends=(${MINGW_PACKAGE_PREFIX}-cmake git ${MINGW_PACKAGE_PREFIX}-go ${MINGW_PACKAGE_PREFIX}-gcc)
source=(git+$url#commit=$_ollamacommit
        0001-Hijack-the-build-for-msys2-P.patch
)
b2sums=('SKIP'
        '0cdb1b996e4b11968a1a3694d72a22f4b479ea428badc6a349ed7779c90addbd9a13714cc6d2fe442d63c34a8ae6a45e05d59673a5edc8fdc227fb607dad514c')

prepare() {
  #rm -rf llm/llama.cpp
  patch -Np1 -d $_realname -i ../0001*.patch
  cd $_realname
  # Copy git submodule files instead of symlinking because the build process is sensitive to symlinks
#  cp -r "$srcdir/llama.cpp" llm/llama.cpp

}

build() {
  cd $_realname
  export CGO_CFLAGS="$CFLAGS" CGO_CPPFLAGS="$CPPFLAGS" CGO_CXXFLAGS="$CXXFLAGS" CGO_LDFLAGS="$LDFLAGS"
  export GOPROXY=direct 
  export GOROOT=${MINGW_PREFIX}/lib/go
  export GOPATH=${MINGW_PREFIX}/
  go generate ./...
  go build -buildmode=pie -trimpath -mod=readonly -modcacherw -ldflags=-linkmode=external \
    -ldflags=-buildid='' -ldflags="-X=github.com/jmorganca/ollama/version.Version=$pkgver" -o "${srcdir}/build-${MSYSTEM}/"

}


check() {
  cd $_realname
  ./ollama --version >/dev/null
  go test .
}

package() {
 cd $srcdir/build-$MSYSTEM
 mkdir -p ${pkgdir}${MINGW_PREFIX}/bin
 install ollama.exe -t"${pkgdir}${MINGW_PREFIX}/bin/"
}
