# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Arch Haskell Team <arch-haskell@haskell.org>

pkgname=c2hs
pkgver=0.28.8
pkgrel=337
pkgdesc="C->Haskell FFI tool that gives some cross-language type safety"
url="https://github.com/haskell/c2hs"
license=("GPL2")
arch=('x86_64')
depends=('ghc-libs' 'haskell-dlist' 'haskell-language-c')
makedepends=('ghc' 'uusi' 'haskell-test-framework' 'haskell-test-framework-hunit' 'haskell-hunit'
             'haskell-shelly')
source=("https://hackage.haskell.org/packages/archive/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz"
        https://github.com/haskell/c2hs/archive/fbb4c2fa6ec5528aa068512f1b691298db420321.tar.gz)
sha512sums=('ff9119acecddd853f2f797385f971c249bcd92d4b141e8e7ea5f5d3e63aa257502c80ded2720a46e3186260026b94c9e518f08f8e452a64c9f888d0183ee1749'
            '2953a07fecc95cfd5086b973a0d12b7407417f16bf73ad0f7d261e9e1884cf14b18663c15d86c8bf047dff05de70d4f01195e5d70c3225c86695fc57c8cf70e9')

prepare() {
    cd c2hs-$pkgver
    sed -i 's/cmd "ghc"/cmd "ghc" "-dynamic"/' tests/test-*.hs
    sed -i 's/HC=ghc/HC="ghc -dynamic"/' tests/system/Makefile
    sed -i 's/"ghc", \["-/"ghc", ["-dynamic", "-/' tests/test-*.hs

    # GCC 15 https://github.com/haskell/c2hs/issues/300
    sed -i 's/typedef char bool, mychar;/typedef char mychar;/' tests/system/structs/structs.h

    # Missing test files
    # https://github.com/haskell/c2hs/pull/266
    cp -r ../c2hs-fbb4c2fa6ec5528aa068512f1b691298db420321/tests/bugs/issue-242 tests/bugs/
    cp -r ../c2hs-fbb4c2fa6ec5528aa068512f1b691298db420321/tests/system/interruptible tests/system/

    uusi -u language-c -u shelly
}

build() {
    cd $pkgname-$pkgver

    runhaskell Setup configure -O --enable-executable-dynamic --prefix=/usr \
        --docdir=/usr/share/doc/$pkgname --datasubdir=$pkgname --enable-tests \
            -f-regression -fbase3 --ghc-option='-pie'
    runhaskell Setup build $MAKEFLAGS
}

check() {
    cd $pkgname-$pkgver
    # https://github.com/haskell/c2hs/issues/300
    runhaskell Setup test --show-details=direct || echo "Tests failed"
}

package() {
    cd $pkgname-$pkgver
    runhaskell Setup copy --destdir="$pkgdir"
}
