PKGBUILDs/community/gdc/PKGBUILD
2018-12-07 02:31:57 +00:00

167 lines
6.4 KiB
Bash

# Maintainer: Filipe Laíns (FFY00) <lains@archlinux.org>
# Contributor: Daniel Kozak (kozzi) <kozzi11@gmail.com>
# Contributor: Mihails Strasuns <public@dicebot.lv>
# Contributor: Moritz Maxeiner <moritz@ucworks.org>
# Contributor: Jerome Berger <jeberger@free.fr>
# Contributor: Jesus Alvarez <jeezusjr@gmail.com>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Elijah Stone <elronnd@elronnd.net>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - --disable-libmpx
# - specified build host
# - patch for AArch64
pkgbase=gdc
pkgname=(gdc libgphobos)
pkgver=8.2.1+2.068.2
#_branch=gdc-8-stable
_islver=0.20 # Change here
_gccver=8-20180831 # Change here
_gdc_commit=76136b64ad3a5b8b38992c56f7f70ec700702e76 # Change here
_gdmd_commit=0b374bfb3b0df7d0ad76de95e9dd0d5ff7ea07fa # Change here
_d_ver=''
pkgrel=2
arch=('x86_64')
license=('GPL3')
url="https://github.com/D-Programming-GDC/GDC"
pkgdesc="GCC based D compiler"
groups=('dlang')
makedepends=('git')
source=("ftp://gcc.gnu.org/pub/gcc/snapshots/$_gccver/gcc-$_gccver.tar.xz"
"http://isl.gforge.inria.fr/isl-$_islver.tar.bz2"
"gdc::git+https://github.com/D-Programming-GDC/GDC.git#commit=$_gdc_commit"
"git+https://github.com/D-Programming-GDC/GDMD.git#commit=$_gdmd_commit"
'paths.diff'
'0001-AArch64-fix.patch')
sha512sums=('56f00dfb37611183a446d80f3c56c91fc4e5287801eaa5871ba6695b19654ecd424d4f9346f03ab1d30017e81fb5646beecd6cb1c63b88767ab2b3f8181fef2a'
'afe2e159b74646a26449268637403d271f9e3f6410d8cc1c9cffca41370c4357b165dea844db0c2a654591f954e54710dda650c8088abd4711406aa6302da950'
'SKIP'
'SKIP'
'841504e9dffe718f7e5a5fbbf03299f2b51acd783d47f99894aa5d411abcc56aedfffd4b16595e3a9446f2206f9eb29cb01e235e82c211796cd24dc23c02b578'
'71bd4fa334d1c927d6f4266fa25b7bb55ad7f36fa75a260d19ff677aa66a1e05318d5f6a40b3c4e70003a6f51704236bdbc63155dbead90654684e10b544ae75')
pkgver() {
if [ -f gdc/gcc/d/verstr.h ]; then
_d_ver="+$(cat gdc/gcc/d/verstr.h | sed 's|\"||g')"
elif [ -f gdc/gcc/d/VERSION ]; then
_d_ver="+$(cat gdc/gcc/d/VERSION | sed 's|\"||g')"
fi
echo "$(cat gcc/gcc/BASE-VER | sed -e 's|gcc-||' -e 's|-.*||')$_d_ver"
}
prepare() {
# Setup paths
ln -sf "$srcdir"/gcc-$_gccver "$srcdir"/gcc
ln -sf "$srcdir"/isl-$_islver "$srcdir"/gcc/isl
# Setup gcc
cd "$srcdir"/gcc
sed -i 's|\./fixinc\.sh|-c true|' gcc/Makefile.in # Do not run fixincludes
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure # hack! - some configure tests for header files using "$CPP $CPPFLAGS"
# Seup gdc
cd "$srcdir"/gdc
git apply "$srcdir"/paths.diff
git apply "$srcdir"/0001-AArch64-fix.patch
./setup-gcc.sh ../gcc
mkdir "$srcdir"/gcc-build
}
build() {
cd gcc-build
# ALARM: Specify build host types
[[ $CARCH == "arm" ]] && CONFIGFLAG="--host=armv5tel-unknown-linux-gnueabi --build=armv5tel-unknown-linux-gnueabi --with-arch=armv5te --with-float=soft"
[[ $CARCH == "armv6h" ]] && CONFIGFLAG="--host=armv6l-unknown-linux-gnueabihf --build=armv6l-unknown-linux-gnueabihf --with-arch=armv6 --with-float=hard --with-fpu=vfp"
[[ $CARCH == "armv7h" ]] && CONFIGFLAG="--host=armv7l-unknown-linux-gnueabihf --build=armv7l-unknown-linux-gnueabihf --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16"
[[ $CARCH == "aarch64" ]] && CONFIGFLAG="--host=aarch64-unknown-linux-gnu --build=aarch64-unknown-linux-gnu --with-arch=armv8-a"
# using -pipe causes spurious test-suite failures
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565
export CFLAGS="${CFLAGS/-pipe/} -O2"
export CXXFLAGS="${CXXFLAGS/-pipe/} -O2"
"$srcdir"/gcc/configure --prefix=/usr \
--libdir=/usr/lib \
--libexecdir=/usr/lib \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--enable-languages=c++,d,lto \
--enable-checking=release \
--enable-link-mutex \
--disable-libgomp \
--disable-libmudflap \
--disable-libquadmath \
--disable-multilib \
--enable-shared \
--enable-static \
--enable-threads=posix \
--disable-libmpx \
--with-system-zlib \
--with-isl \
--disable-libunwind-exceptions \
--enable-clocale=gnu \
--disable-libstdcxx-pch \
--enable-gnu-unique-object \
--enable-linker-build-id \
--enable-lto \
--enable-plugin \
--enable-install-libiberty \
--with-linker-hash-style=gnu \
--enable-gnu-indirect-function \
--disable-multilib \
--disable-werror \
--enable-default-pie \
--enable-default-ssp \
--with-bugurl=https://bugzilla.gdcproject.org/ \
--with-pkgversion="GDC ${pkgver%+*} based on D v${pkgver#*+} built with ISL $_islver for Arch Linux" \
gdc_include_dir=/usr/include/dlang/gdc $CONFIGFLAG
make
}
#check() {
# cd gcc-build
#
# make check-d
# grep -v "^PASS" gcc/testsuite/gdc*/gdc.sum ||:
#
# cd x86_64-pc-linux-gnu/libphobos/libdruntime
#
# make unittest
# ./unittest
#}
package_gdc() {
depends=('gcc' 'perl' 'binutils' 'libgphobos')
provides=("d-compiler=${pkgver#*+}")
pkgdesc="Compiler for D programming language which uses gcc backend"
# Binaries
install -Dm 755 gcc-build/gcc/gdc "$pkgdir"/usr/bin/gdc
install -Dm 755 gcc-build/gcc/cc1d "$pkgdir"/usr/lib/gcc/$CHOST/${pkgver%+*}/cc1d
install -Dm 755 GDMD/dmd-script "$pkgdir"/usr/bin/gdmd
# Doc
install -Dm 644 "$srcdir"/GDMD/dmd-script.1 "$pkgdir"/usr/share/man/man1/gdmd.1
}
package_libgphobos() {
pkgdesc="Standard library for D programming language, GDC port"
provides=('d-runtime' 'd-stdlib')
options=('staticlibs')
cd "$srcdir"/gcc-build
make -C $CHOST/libphobos DESTDIR="$pkgdir" install
if [ -d "$pkgdir"/usr/lib64 ]; then
mv "$pkgdir"/usr/lib64/* "$pkgdir"/usr/lib
rmdir "$pkgdir"/usr/lib64
fi
}