Created
January 6, 2020 22:30
-
-
Save psstoyanov/d197f69ed7e7ba0b6188bc58ae14ca69 to your computer and use it in GitHub Desktop.
Arch arm gcc pkgbuild changes with ada after bootstrapped ada package
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
# Original idea and implementation here: https://github.com/archlinuxarm/PKGBUILDs/pull/1557 | |
# 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> | |
# - removed ada packages | |
# - removed gnat (ada stuff) from gcc packaging | |
# - 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.1.0 | |
_majorver=${pkgver:0:1} | |
_islver=0.20 | |
pkgrel=4 | |
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=('79a66834e96a6050d8fe78db2c3b32fb285b230b855d0a66288235bc04b327a0' | |
'SKIP' | |
'SKIP' | |
'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