# Maintainer: Christoph Reiter <reiter.christoph@gmail.com>

_bootstrap=0

_realname=sbcl
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=2.6.4
pkgrel=1
pkgdesc="Steel Bank Common Lisp (mingw-w64)"
url="https://www.sbcl.org/"
msys2_repository_url="https://sourceforge.net/p/sbcl/sbcl"
msys2_changelog_url="https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/NEWS"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
license=('custom')
depends=("${MINGW_PACKAGE_PREFIX}-zstd")
source=("https://downloads.sourceforge.net/project/sbcl/sbcl/${pkgver}/${_realname}-${pkgver}-source.tar.bz2")
sha256sums=('3ba53e654b60feb7c4f50466199d6d5260f2661c711ba22d4b770b655400d57b')
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
              $([[ ${MINGW_PACKAGE_PREFIX} != *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-compat"))

if (( _bootstrap )); then
  makedepends+=("${MINGW_PACKAGE_PREFIX}-msitools")
  if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-aarch64* ]]
  then
    source+=("https://downloads.sourceforge.net/project/sbcl/sbcl/${pkgver}/${_realname}-${pkgver}-x86-64-windows-binary.msi")
    sha256sums+=('b213e802d3fdd49f292f0e248bf2d529cd3d47e7e7d508ad48f4ceb2625067fb')
  else
    source+=("https://downloads.sourceforge.net/project/sbcl/sbcl/${pkgver}/${_realname}-${pkgver}-arm64-windows-binary.msi")
    sha256sums+=('08951b0eef21e085a22363d6518bc67020f36ed91f6fe973c3f00d1fce67919a')
  fi
else
  makedepends+=("${MINGW_PACKAGE_PREFIX}-sbcl")
fi

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

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

  if (( _bootstrap )); then
    mkdir -p "${srcdir}/sbcl-bootstrap"
    cd "${srcdir}/sbcl-bootstrap"
    if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-aarch64* ]]
    then
      msiextract "${srcdir}/${_realname}-${pkgver}-x86-64-windows-binary.msi"
    else
      msiextract "${srcdir}/${_realname}-${pkgver}-arm64-windows-binary.msi"
    fi
    export PATH="${srcdir}/sbcl-bootstrap/PFiles/Steel Bank Common Lisp:${PATH}"
    cd "${srcdir}/${_realname}-${pkgver}"
  fi

  export LINKFLAGS="${LDFLAGS}"
  if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-aarch64* ]]
  then
    ./make.sh sbcl --prefix="${MINGW_PREFIX}" --fancy
  else
    ./make.sh sbcl --arch=arm64 --prefix="${MINGW_PREFIX}" --fancy
  fi
}

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

  INSTALL_ROOT="${pkgdir}${MINGW_PREFIX}" ./install.sh

  install -D -m644 "${srcdir}/${_realname}-${pkgver}/COPYING" \
                   "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING"
}
