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

_bootstrap=1

_realname=sbcl
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=2.6.2
pkgrel=2
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=('afb49358fa58484ffeed0b26a1dfdd829a6fb066d4a8b25f2b0bbccfcae571d7')
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+=('974848ce053d10d25ad4c4668fd1b9241abed3843dfe8d0c9aa07876ca401584')
  else
    source+=("https://downloads.sourceforge.net/project/sbcl/sbcl/${pkgver}/${_realname}-${pkgver}-arm64-windows-binary.msi")
    sha256sums+=('fa1febaaf42660b72d4c3662b44ce9f455f0ac29224f79cc826afe9ca840a26a')
  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"
}
