
_realname=ghdl
pkgbase="mingw-w64-${_realname}"
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-llvm")
pkgver=4.0.0
pkgrel=2
pkgdesc='GHDL: the open-source analyzer, compiler, simulator and (experimental) synthesizer for VHDL (LLVM backend) (mingw-w64)'
arch=('any')
mingw_arch=('mingw64' 'ucrt64')
url='https://github.com/ghdl/ghdl'
license=('spdx:GPL-2.0-or-later')
groups=("${MINGW_PACKAGE_PREFIX}-eda")
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
depends=(
  "${MINGW_PACKAGE_PREFIX}-gcc-ada"
  "${MINGW_PACKAGE_PREFIX}-llvm-libs"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-clang"
  "${MINGW_PACKAGE_PREFIX}-autotools"
)
checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest")
options=(!emptydirs)
source=("https://github.com/ghdl/ghdl/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        001-support-llvm-18.1.patch)
sha256sums=('97c88b36b73e7b5086366c1dd49a4224f3b200142b60c005305fc5c8a835740c'
            '301ab0836c3af6b2f00856f0054322edbbd7ac25f2f0c9e02c17173198d74d1d')

prepare() {
  cd ${_realname}-${pkgver}
  patch -p1 -i ${srcdir}/001-support-llvm-18.1.patch
}

build() {
  mkdir -p "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM}

  CC=clang \
  CXX=clang++ \
  MSYS2_ARG_CONV_EXCL="--prefix" \
  ../${_realname}-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --enable-checks \
    --enable-libghdl \
    --enable-synth \
    --with-llvm-config

  make GNATMAKE="gnatmake -j$(nproc)"
}

check() {
  cd "${srcdir}/build-${MSYSTEM}"
  make install.vpi.local
  make test
}

package() {
  cd "${srcdir}"/build-${MSYSTEM}
  make DESTDIR="${pkgdir}" install

  local PREFIX_DEPS=$(cygpath -am ${MINGW_PREFIX})
  sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i "${pkgdir}"${MINGW_PREFIX}/lib/libghdl.link
  sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i "${pkgdir}"${MINGW_PREFIX}/lib/ghdl/grt.lst

  # License
  install -Dm644 "${srcdir}"/${_realname}-${pkgver}/doc/licenses.rst "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/licenses.rst
}
