# Maintainer:  Matheus Catarino <matheus-catarino@hotmail.com>

_realname=zig
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.15.2
pkgrel=1
pkgdesc='A general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software (mingw-w64)'
arch=('any')
mingw_arch=('clang64' 'clangarm64')
url='https://ziglang.org'
msys2_repository_url='https://github.com/ziglang/zig/'
msys2_documentation_url='https://github.com/ziglang/zig?tab=readme-ov-file#readme'
msys2_references=(
  'archlinux: zig'
)
license=('spdx:MIT')
depends=("${MINGW_PACKAGE_PREFIX}-clang-libs"
         "${MINGW_PACKAGE_PREFIX}-llvm-libs"
         "${MINGW_PACKAGE_PREFIX}-zstd")
makedepends=("${MINGW_PACKAGE_PREFIX}-clang"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja"
             "${MINGW_PACKAGE_PREFIX}-llvm"
             "${MINGW_PACKAGE_PREFIX}-lld")
source=("https://github.com/ziglang/zig/archive/${pkgver}/zig-${pkgver}.tar.gz"
        "001-support-llvm-21.patch")
sha256sums=('ebe6eb7006f6bbb72e54bd25d0675f2794084909d63a95aa315f2dcf2af5fd99'
            'ace8fbec62046a32b11e69195a211545041f1421dd48abdce0961db37ba4e98d')

prepare(){
  cd ${_realname}-${pkgver}
  # https://github.com/ziglang/zig/pull/25055
  patch -p1 -i "${srcdir}"/001-support-llvm-21.patch
}

build() {
  declare -a _extra_config
  if check_option "debug" "n"; then
    _extra_config+=("-DCMAKE_BUILD_TYPE=Release")
  else
    _extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
  fi

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  cmake -Wno-dev \
    -GNinja \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    -DCMAKE_C_COMPILER=clang \
    -DCMAKE_CXX_COMPILER=clang++ \
    -DZIG_HOST_TARGET_TRIPLE=${CARCH}-windows-gnu \
    -DZIG_TARGET_TRIPLE=${CARCH}-windows-gnu \
    -DZIG_SHARED_LLVM=ON \
    -DZIG_STATIC_ZLIB=OFF \
    -DZIG_STATIC_ZSTD=OFF \
    -DZIG_SYSTEM_LIBCXX=c++ \
    -DZIG_TARGET_MCPU=baseline \
    -DZIG_USE_LLVM_CONFIG=ON \
    "${_extra_config[@]}" \
    -S ${_realname}-${pkgver} \
    -B build-${MSYSTEM}

  cmake --build build-${MSYSTEM}
}

package() {
  DESTDIR="${pkgdir}" cmake --install build-${MSYSTEM}

  install -Dm644 "${srcdir}"/${_realname}-${pkgver}/LICENSE \
    "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE
}
