Created
August 14, 2018 19:20
-
-
Save raku-cat/ff7ae137bf70b82b1abb02a5b1ad15fd to your computer and use it in GitHub Desktop.
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
# $Id$ | |
# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org> | |
# Contributor: Allan McRae <allan@archlinux.org> | |
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc | |
# NOTE: libtool requires rebuilt with each new gcc version | |
pkgname=(gcc7 gcc7-libs) | |
pkgver=7.3.1+20180406 | |
_majorver=${pkgver:0:1} | |
_islver=0.18 | |
pkgrel=1 | |
pkgdesc='The GNU Compiler Collection' | |
arch=(x86_64) | |
license=(GPL LGPL FDL custom) | |
url='http://gcc.gnu.org' | |
makedepends=(binutils libmpc doxygen lib32-glibc lib32-gcc-libs python) | |
checkdepends=(dejagnu inetutils) | |
options=(!emptydirs) | |
#source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig} | |
source=(https://sources.archlinux.org/other/gcc/gcc-${pkgver/+/-}.tar.xz{,.sig} | |
http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2 | |
c89 c99 | |
bz84080.patch) | |
validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9 # bpiotrowski@archlinux.org | |
13975A70E63C361C73AE69EF6EEB81F8981C74C7) # richard.guenther@gmail.com | |
sha256sums=('41675861b7fdb4ebfb5cbbe1bce456d4e4061ce4df95096075756eaae3263e00' | |
'SKIP' | |
'6b8b0fd7f81d0a957beb3679c81bbb34ccc7568d5682844d8924424a0dadcb1b' | |
'de48736f6e4153f03d0a5d38ceb6c6fdb7f054e8f47ddd6af0a3dbf14f27b931' | |
'2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a' | |
'bce05807443558db55f0d6b4dae37a678ea1bb3388b541c876fe3d110e3717e7') | |
_svnrev=259195 | |
_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 | |
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84080 | |
patch -p0 -i "$srcdir/bz84080.patch" | |
# 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 | |
sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64 | |
# hack! - some configure tests for header files using "$CPP $CPPFLAGS" | |
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure | |
mkdir -p "$srcdir/gcc-build" | |
} | |
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://bugs.archlinux.org/ \ | |
--enable-languages=c,c++,lto \ | |
--enable-shared \ | |
--enable-threads=posix \ | |
--enable-libmpx \ | |
--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 \ | |
--enable-multilib \ | |
--disable-werror \ | |
--enable-checking=release \ | |
--enable-default-pie \ | |
--enable-default-ssp | |
make | |
# make documentation | |
make -C $CHOST/libstdc++-v3/doc doc-man-doxygen | |
} | |
check() { | |
cd gcc-build | |
# do not abort on error as some are "expected" | |
make -k check || true | |
"$srcdir/gcc/contrib/test_summary" | |
} | |
package_gcc7-libs() { | |
pkgdesc='Runtime libraries shipped by GCC' | |
groups=(base) | |
depends=('glibc>=2.27') | |
options+=(!strip) | |
provides=($pkgname-multilib libgo.so libgfortran.so) | |
replaces=($pkgname-multilib) | |
cd gcc-build | |
make -C $CHOST/libgcc DESTDIR="$pkgdir" install-shared | |
rm -f "$pkgdir/$_libdir/libgcc_eh.a" | |
for lib in libatomic \ | |
libcilkrts \ | |
libgfortran \ | |
libgo \ | |
libgomp \ | |
libitm \ | |
libquadmath \ | |
libsanitizer/{a,l,ub,t}san \ | |
libstdc++-v3/src \ | |
libvtv; do | |
make -C $CHOST/$lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES | |
done | |
make -C $CHOST/libobjc DESTDIR="$pkgdir" install-libs | |
make -C $CHOST/libstdc++-v3/po DESTDIR="$pkgdir" install | |
make -C $CHOST/libmpx DESTDIR="$pkgdir" install | |
rm -f "$pkgdir/usr/lib/libmpx.spec" | |
for lib in libgomp \ | |
libitm \ | |
libquadmath; do | |
make -C $CHOST/$lib DESTDIR="$pkgdir" install-info | |
done | |
# remove files provided by lib32-gcc-libs | |
rm -rf "$pkgdir"/usr/lib32/ | |
# Install Runtime Library Exception | |
install -Dm644 "$srcdir/gcc/COPYING.RUNTIME" \ | |
"$pkgdir/usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION" | |
} | |
package_gcc7() { | |
pkgdesc="The GNU Compiler Collection - C and C++ frontends" | |
depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.28' libmpc) | |
groups=('base-devel') | |
optdepends=('lib32-gcc-libs: for generating code for 32-bit ABI') | |
provides=($pkgname-multilib) | |
replaces=($pkgname-multilib) | |
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 | |
make -C $CHOST/32/libgcc DESTDIR="$pkgdir" install | |
rm -f "$pkgdir"/usr/lib{,32}/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 -C $CHOST/32/libstdc++-v3/src DESTDIR="$pkgdir" install | |
make -C $CHOST/32/libstdc++-v3/include DESTDIR="$pkgdir" install | |
make -C $CHOST/32/libstdc++-v3/libsupc++ 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{,32}/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/libcilkrts DESTDIR="$pkgdir" install-nodist_{toolexeclib,cilkinclude}HEADERS | |
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 | |
make -C $CHOST/libmpx DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C $CHOST/32/libcilkrts DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C $CHOST/32/libgomp DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C $CHOST/32/libitm DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C $CHOST/32/libsanitizer DESTDIR="$pkgdir" install-nodist_{saninclude,toolexeclib}HEADERS | |
make -C $CHOST/32/libsanitizer/asan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
make -C $CHOST/32/libmpx 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}.1 | |
rm "$pkgdir"/usr/share/info/{gccgo,gfortran,gnat-style,gnat_rm,gnat_ugn}.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 | |
# remove files provided by lib32-gcc-libs | |
rm -f "$pkgdir"/usr/lib32/lib{stdc++,gcc_s}.so | |
# 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/" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment