# Maintainer: Maksim Bondarenkov <maksapple2306@gmail.com>

_realname=c3c
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.7.8
pkgrel=3
pkgdesc="Compiler for the C3 language (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64' 'clang64' 'clangarm64')
url='https://c3-lang.org'
msys2_repository_url='https://github.com/c3lang/c3c'
license=('spdx:LGPL-3.0-or-later OR MIT')
depends=("${MINGW_PACKAGE_PREFIX}-cc-libs"
         "${MINGW_PACKAGE_PREFIX}-llvm-libs"
         "${MINGW_PACKAGE_PREFIX}-zlib"
         "${MINGW_PACKAGE_PREFIX}-zstd")
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja"
             "${MINGW_PACKAGE_PREFIX}-clang"
             "${MINGW_PACKAGE_PREFIX}-llvm"
             "${MINGW_PACKAGE_PREFIX}-lld"
             'git')
source=("git+${msys2_repository_url}.git#tag=v${pkgver}"
        "install-man.patch")
sha256sums=('85a318a7506609413ea1ce1723a04b24bf6595a0553896fbf906a4ef03d07d97'
            'c800461ae8d1c6be4bb76018a7aee93b5d980664959195ba85c1195686fa5f4d')

prepare() {
  git -C c3c apply ../install-man.patch
  sed -i "s|libLLVM.so|libLLVM-21|g" c3c/CMakeLists.txt
  sed -i "s|\.so||g" c3c/CMakeLists.txt
}

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

  CC=clang \
  CXX=clang++ \
  CXXFLAGS+=" -fuse-ld=lld" \
  LDFLAGS+=" -lzstd -lz" \
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    cmake \
      -GNinja \
      -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
      -DC3_LINK_DYNAMIC=ON\ 
      "${extra_config[@]}" \
      -S "${_realname}" \
      -B "build-${MSYSTEM}"

  cmake --build "build-${MSYSTEM}"
}

check() {
  cmake --build "build-${MSYSTEM}" --target test
}

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

  install -Dm644 "${_realname}"/LICENSE{,_SRC} -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/"
}
