| # Maintainer ncihnegn <ningchen@outlook.com> |
| # Maintainer: Alethea Rose <alethea@alethearose.com> |
| |
| _realname=ghc |
| pkgbase=mingw-w64-${_realname} |
| pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" |
| pkgver=8.6.5 |
| pkgrel=2 |
| pkgdesc="The Glorious Glasgow Haskell Compilation System (mingw-w64)" |
| arch=('any') |
| mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') |
| group="${MINGW_PACKAGE_PREFIX}-haskell-platform" |
| url='https://www.haskell.org/ghc/' |
| license=('The Glasgow Haskell Compiler License') |
| depends=("${MINGW_PACKAGE_PREFIX}-binutils" |
| "${MINGW_PACKAGE_PREFIX}-crt" |
| "${MINGW_PACKAGE_PREFIX}-gcc" |
| "${MINGW_PACKAGE_PREFIX}-gcc-libs" |
| "${MINGW_PACKAGE_PREFIX}-gmp" |
| "${MINGW_PACKAGE_PREFIX}-headers" |
| "${MINGW_PACKAGE_PREFIX}-isl" |
| "${MINGW_PACKAGE_PREFIX}-libiconv" |
| "${MINGW_PACKAGE_PREFIX}-libffi" |
| "${MINGW_PACKAGE_PREFIX}-libwinpthread" |
| "${MINGW_PACKAGE_PREFIX}-mpc" |
| "${MINGW_PACKAGE_PREFIX}-mpfr") |
| provides=("${MINGW_PACKAGE_PREFIX}-haskell-array=0.5.3.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-base=4.12.0.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-binary=0.8.6.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-bytestring=0.10.8.2" |
| "${MINGW_PACKAGE_PREFIX}-haskell-containers=0.6.0.1" |
| "${MINGW_PACKAGE_PREFIX}-haskell-deepseq=1.4.4.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-directory=1.3.3.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-filepath=1.4.2.1" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-boot=${pkgver}" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-boot-th=${pkgver}" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-compact=0.1.0.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghci=${pkgver}" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-heap=${pkgver}" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-prim=0.5.3.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-haskeline=0.7.4.3" |
| "${MINGW_PACKAGE_PREFIX}-haskell-hpc=0.6.0.3" |
| "${MINGW_PACKAGE_PREFIX}-haskell-integer-gmp=1.0.2.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-integer-simple=0.1.1.1" |
| "${MINGW_PACKAGE_PREFIX}-haskell-libiserv=${pkgver}" |
| "${MINGW_PACKAGE_PREFIX}-haskell-mtl=2.2.2" |
| "${MINGW_PACKAGE_PREFIX}-haskell-parsec=3.1.13.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-pretty=1.1.3.6" |
| "${MINGW_PACKAGE_PREFIX}-haskell-process=1.6.5.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-stm=2.5.0.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-template-haskell=2.14.0.0" |
| "${MINGW_PACKAGE_PREFIX}-haskell-terminfo=0.4.1.2" |
| "${MINGW_PACKAGE_PREFIX}-haskell-text=1.2.3.1" |
| "${MINGW_PACKAGE_PREFIX}-haskell-time=1.8.0.2" |
| "${MINGW_PACKAGE_PREFIX}-haskell-transformers=0.5.6.2" |
| "${MINGW_PACKAGE_PREFIX}-haskell-win32=2.7.2.2" |
| "${MINGW_PACKAGE_PREFIX}-haskell-xhtml=3000.2.2.1" |
| "${MINGW_PACKAGE_PREFIX}-haskell-cabal=2.4.0.1") |
| replaces=("${MINGW_PACKAGE_PREFIX}-haskell-array" |
| "${MINGW_PACKAGE_PREFIX}-haskell-base" |
| "${MINGW_PACKAGE_PREFIX}-haskell-binary" |
| "${MINGW_PACKAGE_PREFIX}-haskell-bytestring" |
| "${MINGW_PACKAGE_PREFIX}-haskell-containers" |
| "${MINGW_PACKAGE_PREFIX}-haskell-deepseq" |
| "${MINGW_PACKAGE_PREFIX}-haskell-directory" |
| "${MINGW_PACKAGE_PREFIX}-haskell-filepath" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-boot" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-boot-th" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-compact" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghci" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-heap" |
| "${MINGW_PACKAGE_PREFIX}-haskell-ghc-prim" |
| "${MINGW_PACKAGE_PREFIX}-haskell-haskeline" |
| "${MINGW_PACKAGE_PREFIX}-haskell-hpc" |
| "${MINGW_PACKAGE_PREFIX}-haskell-integer-gmp" |
| "${MINGW_PACKAGE_PREFIX}-haskell-integer-simple" |
| "${MINGW_PACKAGE_PREFIX}-haskell-libiserv" |
| "${MINGW_PACKAGE_PREFIX}-haskell-mtl" |
| "${MINGW_PACKAGE_PREFIX}-haskell-parsec" |
| "${MINGW_PACKAGE_PREFIX}-haskell-pretty" |
| "${MINGW_PACKAGE_PREFIX}-haskell-process" |
| "${MINGW_PACKAGE_PREFIX}-haskell-stm" |
| "${MINGW_PACKAGE_PREFIX}-haskell-template-haskell" |
| "${MINGW_PACKAGE_PREFIX}-haskell-terminfo" |
| "${MINGW_PACKAGE_PREFIX}-haskell-text" |
| "${MINGW_PACKAGE_PREFIX}-haskell-time" |
| "${MINGW_PACKAGE_PREFIX}-haskell-transformers" |
| "${MINGW_PACKAGE_PREFIX}-haskell-win32" |
| "${MINGW_PACKAGE_PREFIX}-haskell-xhtml" |
| "${MINGW_PACKAGE_PREFIX}-haskell-cabal") |
| makedepends=("${MINGW_PACKAGE_PREFIX}-python3-sphinx" |
| "${MINGW_PACKAGE_PREFIX}-llvm" |
| 'make' |
| 'perl') |
| optdepends=("${MINGW_PACKAGE_PREFIX}-llvm: use LLVM for an optimized backend") |
| install="ghc-${MSYSTEM}.install" |
| |
| _hsarch=$CARCH |
| if [[ ${_hsarch} == "i686" ]]; then |
| _hsarch="i386" |
| fi |
| _hooks=('ghc-register.hook' 'ghc-unregister.hook' 'ghc-rebuild-doc-index.hook') |
| |
| source=("https://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-src.tar.xz"{,.sig} |
| "https://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-testsuite.tar.xz"{,.sig} |
| "https://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-${_hsarch}-unknown-mingw32.tar.xz"{,.sig} |
| 'build.mk' |
| '0002-Switch-to-LLVM-version-7.0.patch' |
| 'ghc-register.hook' |
| 'ghc-unregister.hook' |
| 'ghc-rebuild-doc-index.hook') |
| noextract=("ghc-${pkgver}-${_hsarch}-unknown-mingw32.tar.xz") |
| |
| sha256sums=('4d4aa1e96f4001b934ac6193ab09af5d6172f41f5a5d39d8e43393b9aafee361' |
| 'SKIP' |
| '21391cb63a8a6b327f6c9519217a3dad39493e72c48967008ae35af142ca895f' |
| 'SKIP' |
| '2a8fb73080ed4335f7a172fe6cf9da1a2faa51fdb72817c50088292f497fc57a' |
| 'SKIP' |
| '7001599139d0e81bcb098158eede2a3910428f69d65dbcacb9372633d0fa6076' |
| '6904893a6f97b2818abe89b952765752d6894e611c4838f7ebff5a6a577c18d5' |
| '633b6a02efa3a6f30c4c40062f24bf0ffa9689c21d0e16da09ed8b699ba6050e' |
| '33bde1f07e6317017e9c7fc7b2e7ad2d63ed3dcde407a23401d0a03861301cea' |
| '31f3b191bcfe7ad09a886e90f6d71c3be5bee02304a81bffe61ac1f5dcdae703') |
| validpgpkeys=('FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD') # Benjamin Gamari <ben@well-typed.com> |
| |
| prepare() { |
| cd "${srcdir}" |
| |
| mkdir -p ${CARCH}/host |
| rm -rf ${CARCH}/ghc-${pkgver} |
| mv {,$CARCH/}ghc-${pkgver} |
| |
| msg "Extracting binaries: ghc-${pkgver}-${_hsarch}-unknown-mingw32.tar.xz..." |
| bsdtar -xf ghc-${pkgver}-${_hsarch}-unknown-mingw32.tar.xz \ |
| -C ${CARCH}/host --strip-components 1 |
| |
| for _hook in "${_hooks[@]}"; do |
| echo $_hook |
| sed -e "s|MINGW_PREFIX|$(basename ${MINGW_PREFIX})|" \ |
| ${_hook} > ${CARCH}/${_hook} |
| done |
| |
| export PATH="${srcdir}/${CARCH}/host/bin:$PATH" |
| |
| cp -v "${srcdir}/build.mk" "${srcdir}/${CARCH}/ghc-${pkgver}/mk/build.mk" |
| |
| cd "${srcdir}/${CARCH}/ghc-${pkgver}" |
| patch -Np1 -i "${srcdir}/0002-Switch-to-LLVM-version-7.0.patch" |
| } |
| |
| build() { |
| export PATH="${srcdir}/${CARCH}/host/bin:${PATH}" |
| cd "${srcdir}/${CARCH}/ghc-${pkgver}" |
| |
| ./boot |
| ./configure \ |
| --prefix=${MINGW_PREFIX} \ |
| --build=${MINGW_CHOST} \ |
| --host=${MINGW_CHOST} \ |
| --with-system-libffi \ |
| --enable-distro-toolchain \ |
| --with-ffi-includes="$(cygpath -u $(pkg-config --variable=includedir libffi))" |
| |
| make |
| make html |
| } |
| |
| check() { |
| cd "${srcdir}/${CARCH}/ghc-${pkgver}" |
| |
| make test |
| } |
| |
| package() { |
| cd "${srcdir}/${CARCH}/ghc-${pkgver}" |
| |
| make prefix="${pkgdir}${MINGW_PREFIX}" \ |
| docdir="${pkgdir}${MINGW_PREFIX}/share/docs/ghc" \ |
| install |
| |
| for _hook in "${_hooks[@]}"; do |
| install -Dm644 "${srcdir}/${CARCH}/${_hook}" \ |
| "${pkgdir}/usr/share/libalpm/hooks/${MINGW_PACKAGE_PREFIX}-${_hook}" |
| done |
| |
| mkdir -vp "${pkgdir}${MINGW_PREFIX}/share/haskell/"{register,unregister} |
| |
| install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/ghc/LICENSE" |
| } |