Created
January 7, 2020 19:41
-
-
Save psstoyanov/6892ef4907f12c523536ad0e58bf0a9d to your computer and use it in GitHub Desktop.
PKGBUILD of gcc with ada (V2)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Post-bootrapped gcc with ada. Reverted islver and pkgver. | |
# Increased pkgrel to 5 so that it won't be blocking pacman upgrade on Manjaro. | |
# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org> | |
# Contributor: Allan McRae <allan@archlinux.org> | |
# Contributor: Daniel Kozak <kozzi11@gmail.com> | |
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc | |
# NOTE: libtool requires rebuilt with each new gcc version | |
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org> | |
# - disabled make check, too much stress, kills plugs :( | |
# - specifid build host, disabled distcc | |
# - replaced bugurl with our GitHub issue page | |
# - patch to disable LDRD/STRD instructions on ARMv5 | |
noautobuild=1 | |
pkgname=(gcc gcc-libs gcc-fortran gcc-objc gcc-go gcc-ada gcc-d) | |
pkgver=9.2.0 | |
_majorver=${pkgver:0:1} | |
_islver=0.21 | |
pkgrel=5 | |
pkgdesc='The GNU Compiler Collection' | |
arch=(aarch64) | |
license=(GPL LGPL FDL custom) | |
url='https://gcc.gnu.org' | |
makedepends=(binutils libmpc doxygen python subversion) | |
checkdepends=(dejagnu inetutils) | |
options=(!emptydirs !distcc) | |
#source=(https://sources.archlinux.org/other/gcc/gcc-${pkgver/+/-}.tar.xz{,.sig} | |
source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig} | |
#source=(gcc::svn://gcc.gnu.org/svn/gcc/branches/gcc-${_majorver}-branch | |
http://isl.gforge.inria.fr/isl-${_islver}.tar.xz | |
c89 c99 | |
gdc_phobos_path.patch | |
gdc_artificial_decl.patch | |
gdc_thunk_weak_ref.patch | |
0001-ARMv5-disable-LDRD-STRD.patch) | |
validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9 # bpiotrowski@archlinux.org | |
86CFFCA918CF3AF47147588051E8B148A9999C34 # evangelos@foutrelis.com | |
13975A70E63C361C73AE69EF6EEB81F8981C74C7 # richard.guenther@gmail.com | |
33C235A34C46AA3FFB293709A328C3A2C3C45C06) # Jakub Jelinek <jakub@redhat.com> | |
sha256sums=('ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206' | |
'SKIP' | |
'777058852a3db9500954361e294881214f6ecd4b594c00da5eee974cd6a54960' | |
'de48736f6e4153f03d0a5d38ceb6c6fdb7f054e8f47ddd6af0a3dbf14f27b931' | |
'2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a' | |
'c86372c207d174c0918d4aedf1cb79f7fc093649eb1ad8d9450dccc46849d308' | |
'3862757491160700ac2fb723096f6f636f30320cccc6efd9537149ed348b57d1' | |
'9699d7105375754f0dcf6abff87d09b270565bfc6578a13641770f3fc62d678a' | |
'ac6663528a1cbea30ed9627ef41ef13f25b3cd49c31e22b45b04aa911e6f562f') | |
_svnrev=264010 | |
_svnurl=svn://gcc.gnu.org/svn/gcc/branches/gcc-${_majorver}-branch | |
_libdir=usr/lib/gcc/$CHOST/${pkgver%%+*} | |
snapshot() { | |
svn export -r${_svnrev} ${_svnurl} gcc-r${_svnrev} | |
local datestamp basever _pkgver | |
basever=$(< gcc-r${_svnrev}/gcc/BASE-VER) | |
datestamp=$(< gcc-r${_svnrev}/gcc/DATESTAMP) | |
_pkgver=${basever}-${datestamp} | |
mv gcc-r${_svnrev} gcc-${_pkgver} | |
tar cf - gcc-${_pkgver} | xz > gcc-${_pkgver}.tar.xz | |
rm -rf gcc-${_pkgver} | |
gpg -b gcc-${_pkgver}.tar.xz | |
scp gcc-${_pkgver}.tar.xz{,.sig} sources.archlinux.org:/srv/ftp/other/gcc/ | |
echo | |
echo "pkgver=${_pkgver/-/+}" | |
} | |
prepare() { | |
[[ ! -d gcc ]] && ln -s gcc-${pkgver/+/-} gcc | |
cd gcc | |
# link isl for in-tree build | |
ln -s ../isl-${_islver} isl | |
# Do not run fixincludes | |
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in | |
# Arch Linux installs x86_64 libraries /lib | |
[[ $CARCH == "x86_64" ]] && sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64 | |
# Arch Linux ARM installs aarch64 libraries /lib | |
[[ $CARCH == "aarch64" ]] && sed -i '/lp64=/s/lib64/lib/' gcc/config/aarch64/t-aarch64-linux | |
# hack! - some configure tests for header files using "$CPP $CPPFLAGS" | |
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure | |
# D hacks | |
patch -p1 -i "$srcdir/gdc_phobos_path.patch" | |
patch -p1 -i "$srcdir/gdc_artificial_decl.patch" | |
patch -p1 -i "$srcdir/gdc_thunk_weak_ref.patch" | |
#sed -i "/GDCFLAGSX=/s/-Wall/-shared-libphobos -Wall/" libphobos/configure | |
# ALARM: Specify build host types, triplet patch | |
[[ $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 --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419" | |
mkdir -p "$srcdir/gcc-build" | |
# Disable LDRD/STRD on ARMv5 (64-bit alignment issues) | |
patch -p1 -i ../0001-ARMv5-disable-LDRD-STRD.patch | |
} | |
build() { | |
cd gcc-build | |
# using -pipe causes spurious test-suite failures | |
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565 | |
CFLAGS=${CFLAGS/-pipe/} | |
CXXFLAGS=${CXXFLAGS/-pipe/} | |
"$srcdir/gcc/configure" --prefix=/usr \ | |
--libdir=/usr/lib \ | |
--libexecdir=/usr/lib \ | |
--mandir=/usr/share/man \ | |
--infodir=/usr/share/info \ | |
--with-bugurl=https://github.com/archlinuxarm/PKGBUILDs/issues \ | |
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d \ | |
--enable-shared \ | |
--enable-threads=posix \ | |
--with-system-zlib \ | |
--with-isl \ | |
--enable-__cxa_atexit \ | |
--disable-libunwind-exceptions \ | |
--enable-clocale=gnu \ | |
--disable-libstdcxx-pch \ | |
--disable-libssp \ | |
--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-checking=release \ | |
--enable-default-pie \ | |
--enable-default-ssp \ | |
$CONFIGFLAG \ | |
gdc_include_dir=/usr/include/dlang/gdc | |
make | |
# make documentation | |
make -C $CHOST/libstdc++-v3/doc doc-man-doxygen | |
} | |
check() { | |
cd gcc-build | |
# disable libphobos test to avoid segfaults and other unfunny ways to waste my time | |
sed -i '/maybe-check-target-libphobos \\/d' Makefile | |
# do not abort on error as some are "expected" | |
make -k check || true | |
"$srcdir/gcc/contrib/test_summary" | |
} | |
package_gcc-libs() { | |
pkgdesc='Runtime libraries shipped by GCC' | |
groups=(base) | |
depends=('glibc>=2.27') | |
options+=(!strip) | |
provides=(libgo.so libgfortran.so libgphobos.so | |
libubsan.so libasan.so liblsan.so) | |
replaces=(libgphobos) | |
if [[ $CARCH == "aarch64" ]]; then | |
provides+=(libtsan.so) | |
fi | |
cd gcc-build | |
make -C $CHOST/libgcc DESTDIR="$pkgdir" install-shared | |
rm -f "$pkgdir/$_libdir/libgcc_eh.a" | |
for lib in libatomic \ | |
libgfortran \ | |
libgo \ | |
libgomp \ | |
libitm \ | |
libquadmath \ | |
libsanitizer/{a,l,ub}san \ | |
libstdc++-v3/src \ | |
libvtv; do | |
make -C $CHOST/$lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES | |
done | |
if [[ $CARCH == "x86_64" || $CARCH == "aarch64" ]]; then | |
make -C $CHOST/libsanitizer/tsan DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES | |
fi | |
make -C $CHOST/libobjc DESTDIR="$pkgdir" install-libs | |
make -C $CHOST/libstdc++-v3/po DESTDIR="$pkgdir" install | |
make -C $CHOST/libphobos DESTDIR="$pkgdir" install | |
rm -rf "$pkgdir"/usr/lib/gcc/*/9.2.0/include/d/ | |
rm -f "$pkgdir"/usr/lib/libgphobos.spec | |
for lib in libgomp \ | |
libitm \ | |
libquadmath; do | |
make -C $CHOST/$lib DESTDIR="$pkgdir" install-info | |
done | |
# Install Runtime Library Exception | |
install -Dm644 "$srcdir/gcc/COPYING.RUNTIME" \ | |
"$pkgdir/usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION" | |
} | |
package_gcc() { | |
pkgdesc="The GNU Compiler Collection - C and C++ frontends" | |
depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.28' libmpc) | |
groups=('base-devel') | |
options+=(staticlibs) | |
cd gcc-build | |
make -C gcc DESTDIR="$pkgdir" install-driver install-cpp install-gcc-ar \ | |
c++.install-common install-headers install-plugin install-lto-wrapper | |
install -m755 -t "$pkgdir/usr/bin/" gcc/gcov{,-tool} | |
install -m755 -t "$pkgdir/${_libdir}/" gcc/{cc1,cc1plus,collect2,lto1} | |
make -C $CHOST/libgcc DESTDIR="$pkgdir" install | |
rm -f "$pkgdir"/usr/lib/libgcc_s.so* | |
make -C $CHOST/libstdc++-v3/src DESTDIR="$pkgdir" install | |
make -C $CHOST/libstdc++-v3/include DESTDIR="$pkgdir" install | |
make -C $CHOST/libstdc++-v3/libsupc++ DESTDIR="$pkgdir" install | |
make -C $CHOST/libstdc++-v3/python DESTDIR="$pkgdir" install | |
make DESTDIR="$pkgdir" install-libcc1 | |
install -d "$pkgdir/usr/share/gdb/auto-load/usr/lib" | |
mv "$pkgdir"/usr/lib/libstdc++.so.6.*-gdb.py \ | |
"$pkgdir/usr/share/gdb/auto-load/usr/lib/" | |
rm "$pkgdir"/usr/lib/libstdc++.so* | |
make DESTDIR="$pkgdir" install-fixincludes | |
make -C gcc DESTDIR="$pkgdir" install-mkheaders | |
make -C lto-plugin DESTDIR="$pkgdir" install | |
install -dm755 "$pkgdir"/usr/lib/bfd-plugins/ | |
ln -s /${_libdir}/liblto_plugin.so \ | |
"$pkgdir/usr/lib/bfd-plugins/" | |
make -C $CHOST/libgomp DESTDIR="$pkgdir" install-nodist_{libsubinclude,toolexeclib}HEADERS | |
make -C $CHOST/libitm DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C $CHOST/libquadmath DESTDIR="$pkgdir" install-nodist_libsubincludeHEADERS | |
make -C $CHOST/libsanitizer DESTDIR="$pkgdir" install-nodist_{saninclude,toolexeclib}HEADERS | |
make -C $CHOST/libsanitizer/asan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
if [[ $CARCH == "aarch64" ]]; then | |
make -C $CHOST/libsanitizer/tsan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
fi | |
make -C $CHOST/libsanitizer/lsan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C libiberty DESTDIR="$pkgdir" install | |
install -m644 libiberty/pic/libiberty.a "$pkgdir/usr/lib" | |
make -C gcc DESTDIR="$pkgdir" install-man install-info | |
rm "$pkgdir"/usr/share/man/man1/{gccgo,gfortran,gdc}.1 | |
rm "$pkgdir"/usr/share/info/{gccgo,gfortran,gnat-style,gnat_rm,gnat_ugn,gdc}.info | |
make -C libcpp DESTDIR="$pkgdir" install | |
make -C gcc DESTDIR="$pkgdir" install-po | |
# many packages expect this symlink | |
ln -s gcc "$pkgdir"/usr/bin/cc | |
# POSIX conformance launcher scripts for c89 and c99 | |
install -Dm755 "$srcdir/c89" "$pkgdir/usr/bin/c89" | |
install -Dm755 "$srcdir/c99" "$pkgdir/usr/bin/c99" | |
# install the libstdc++ man pages | |
make -C $CHOST/libstdc++-v3/doc DESTDIR="$pkgdir" doc-install-man | |
# byte-compile python libraries | |
python -m compileall "$pkgdir/usr/share/gcc-${pkgver%%+*}/" | |
python -O -m compileall "$pkgdir/usr/share/gcc-${pkgver%%+*}/" | |
# Install Runtime Library Exception | |
install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
"$pkgdir/usr/share/licenses/$pkgname/" | |
} | |
package_gcc-fortran() { | |
pkgdesc='Fortran front-end for GCC' | |
depends=("gcc=$pkgver-$pkgrel") | |
cd gcc-build | |
make -C $CHOST/libgfortran DESTDIR="$pkgdir" install-cafexeclibLTLIBRARIES \ | |
install-{toolexeclibDATA,nodist_fincludeHEADERS,gfor_cHEADERS} | |
make -C $CHOST/libgomp DESTDIR="$pkgdir" install-nodist_fincludeHEADERS | |
make -C gcc DESTDIR="$pkgdir" fortran.install-{common,man,info} | |
install -Dm755 gcc/f951 "$pkgdir/${_libdir}/f951" | |
ln -s gfortran "$pkgdir/usr/bin/f95" | |
# Install Runtime Library Exception | |
install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
"$pkgdir/usr/share/licenses/$pkgname/" | |
} | |
package_gcc-objc() { | |
pkgdesc='Objective-C front-end for GCC' | |
depends=("gcc=$pkgver-$pkgrel") | |
cd gcc-build | |
make DESTDIR="$pkgdir" -C $CHOST/libobjc install-headers | |
install -dm755 "$pkgdir/${_libdir}" | |
install -m755 gcc/cc1obj{,plus} "$pkgdir/${_libdir}/" | |
# Install Runtime Library Exception | |
install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
"$pkgdir/usr/share/licenses/$pkgname/" | |
} | |
package_gcc-ada() { | |
pkgdesc='Ada front-end for GCC (GNAT)' | |
depends=("gcc=$pkgver-$pkgrel") | |
options+=(staticlibs) | |
cd gcc-build/gcc | |
make DESTDIR="$pkgdir" ada.install-{common,info} | |
install -m755 gnat1 "$pkgdir/${_libdir}" | |
ln -s gcc "$pkgdir/usr/bin/gnatgcc" | |
# insist on dynamic linking, but keep static libraries because gnatmake complains | |
mv "$pkgdir"/${_libdir}/adalib/libgna{rl,t}-${_majorver}.so "$pkgdir/usr/lib" | |
ln -s libgnarl-${_majorver}.so "$pkgdir/usr/lib/libgnarl.so" | |
ln -s libgnat-${_majorver}.so "$pkgdir/usr/lib/libgnat.so" | |
rm -f "$pkgdir"/${_libdir}/adalib/libgna{rl,t}.so | |
# Install Runtime Library Exception | |
install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
"$pkgdir/usr/share/licenses/$pkgname/" | |
} | |
package_gcc-go() { | |
pkgdesc='Go front-end for GCC' | |
depends=("gcc=$pkgver-$pkgrel") | |
provides=("go=1.12.2") | |
conflicts=(go) | |
cd gcc-build | |
make -C $CHOST/libgo DESTDIR="$pkgdir" install-exec-am | |
make DESTDIR="$pkgdir" install-gotools | |
make -C gcc DESTDIR="$pkgdir" go.install-{common,man,info} | |
rm -f "$pkgdir"/usr/lib/libgo.so* | |
install -Dm755 gcc/go1 "$pkgdir/${_libdir}/go1" | |
# Install Runtime Library Exception | |
install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
"$pkgdir/usr/share/licenses/$pkgname/" | |
} | |
package_gcc-d() { | |
pkgdesc="D frontend for GCC" | |
depends=("gcc=$pkgver-$pkgrel") | |
provides=(gdc) | |
replaces=(gdc) | |
options=('staticlibs') | |
cd gcc-build | |
make -C gcc DESTDIR="$pkgdir" d.install-{common,man,info} | |
install -Dm755 gcc/gdc "$pkgdir"/usr/bin/gdc | |
install -Dm755 gcc/d21 "$pkgdir"/"$_libdir"/d21 | |
make -C $CHOST/libphobos DESTDIR="$pkgdir" install | |
rm -f "$pkgdir/usr/lib/"lib{gphobos,gdruntime}.so* | |
rm -f "$pkgdir/usr/lib32/"lib{gphobos,gdruntime}.so* | |
install -d "$pkgdir"/usr/include/dlang | |
ln -s /"${_libdir}"/include/d "$pkgdir"/usr/include/dlang/gdc | |
# Install Runtime Library Exception | |
install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
"$pkgdir/usr/share/licenses/$pkgname/" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment