summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-10-16 13:24:18 +0200
committerErich Eckner <git@eckner.net>2018-10-16 13:24:18 +0200
commit2c9ae3522d1c70c169107cc858aff0ca2d8f3aa5 (patch)
treecbf32ece63a63a097929719e0a5965840623e37c
parent8300b6845f252f290950adae39ffacd7656f46dd (diff)
downloadarchlinuxewe-2c9ae3522d1c70c169107cc858aff0ca2d8f3aa5.tar.xz
gcc6 neu - mit gcj
-rw-r--r--gcc6/.gitignore1
-rw-r--r--gcc6/PKGBUILD322
-rw-r--r--gcc6/glibc2.28-ustat.patch31
3 files changed, 354 insertions, 0 deletions
diff --git a/gcc6/.gitignore b/gcc6/.gitignore
new file mode 100644
index 000000000..90584dda5
--- /dev/null
+++ b/gcc6/.gitignore
@@ -0,0 +1 @@
+gcc
diff --git a/gcc6/PKGBUILD b/gcc6/PKGBUILD
new file mode 100644
index 000000000..00b21286e
--- /dev/null
+++ b/gcc6/PKGBUILD
@@ -0,0 +1,322 @@
+# Maintainer: Erich Eckner <arch at eckner dot net>
+# Contributor: Sebastiaan Lokhorst <sebastiaanlokhorst@gmail.com>
+# Contributor: frankspace
+# Contributor: Renan Manola <rmanola@gmail.com>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Contributor: Joey Dumont <joey.dumont@gmail.com>
+# Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+
+pkgbase=gcc6
+pkgname=('gcc6' 'gcc6-libs' 'gcc6-fortran' 'gcc6-gcj')
+pkgver=6.4.1
+_ver=6
+_svnrev=263436
+_islver=0.18
+_cloogver=0.18.4
+pkgrel=8
+pkgdesc="The GNU Compiler Collection (6.x.x)"
+arch=(i686 x86_64)
+license=(GPL LGPL FDL custom)
+url="https://gcc.gnu.org/gcc-6/"
+makedepends=(binutils libmpc doxygen subversion java-environment-common zip jdk8-openjdk gtk2 libart-lgpl libxtst)
+checkdepends=('dejagnu' 'inetutils')
+options=(!emptydirs)
+source=(gcc::svn://gcc.gnu.org/svn/gcc/branches/gcc-${_ver}-branch#revision=$_svnrev
+ http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
+ http://www.bastoul.net/cloog/pages/download/cloog-${_cloogver}.tar.gz
+ glibc2.28-ustat.patch)
+sha512sums=('SKIP'
+ '85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94'
+ 'd35d67b08ffe13c1a010b65bfe4dd02b0ae013d5b489e330dc950bd3514defca8f734bd37781856dcedf0491ff6122c34eecb4b0fe32a22d7e6bdadea98c8c23'
+ 'db5d70f6f556c8b17bba89f29487136ce948f82afd064c1715fa1228cfa07e17724f65d3325312d833d2c9bfe37faa85721fa839d4f53c6b6bf1bc3c3e21dafb')
+
+_libdir="/usr/lib/gcc/$CHOST/$pkgver"
+
+prepare() {
+ cd gcc
+
+ # Fix build with glibc 2.28, which removes <sys/ustat.h>
+ patch -p0 -i "$srcdir/glibc2.28-ustat.patch"
+
+ # Link isl/cloog for in-tree builds
+ ln -sf ../isl-${_islver} isl
+ ln -sf ../cloog-${_cloogver} cloog
+
+ # 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
+
+ # Arch uses python version 3 as default python (for gcc6-gcj).
+ sed -i '1s+python+python2+' libjava/contrib/aot-compile.in
+
+ 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++,fortran,lto,java \
+ --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 \
+ --with-linker-hash-style=gnu \
+ --enable-gnu-indirect-function \
+ --disable-multilib \
+ --disable-werror \
+ --enable-checking=release \
+ --enable-java-awt=gtk \
+ --with-java-home="$JAVA_HOME" \
+ --enable-libgcj-multifile \
+ --enable-default-pie \
+ --enable-default-ssp \
+ --enable-version-specific-runtime-libs \
+ --program-suffix=-${_ver} \
+ --build="${CHOST}"
+
+ make
+
+ # make documentation
+ make -C ${CHOST}/libstdc++-v3/doc doc-man-doxygen
+}
+
+package_gcc6-libs() {
+ pkgdesc="Runtime libraries shipped by GCC"
+ depends=('glibc>=2.25')
+ options=('!emptydirs' '!strip')
+
+ cd gcc-build
+ make -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared
+ rm ${pkgdir}/${_libdir}/libgcc_eh.a
+
+ for lib in libatomic \
+ libcilkrts \
+ libjava \
+ libgfortran \
+ libgomp \
+ libitm \
+ libquadmath \
+ libsanitizer/{a,l,ub}san \
+ libstdc++-v3/src \
+ libvtv
+ do
+ make -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
+ done
+
+ make -C $CHOST/libsanitizer/tsan DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
+
+ make -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install
+ make -C $CHOST/libmpx DESTDIR=${pkgdir} install
+ rm ${pkgdir}/${_libdir}/libmpx.spec
+
+ for lib in libgomp libitm libquadmath
+ do
+ make -C $CHOST/$lib DESTDIR=${pkgdir} install-info
+ done
+
+ # Lazy way of dealing with conflicting files...
+ rm -rf ${pkgdir}/usr/share/{info,locale,man}
+
+ # Install Runtime Library Exception
+ install -Dm644 ${srcdir}/gcc/COPYING.RUNTIME \
+ ${pkgdir}/usr/share/licenses/$pkgname/RUNTIME.LIBRARY.EXCEPTION
+}
+
+package_gcc6() {
+ pkgdesc="The GNU Compiler Collection - C and C++ frontends"
+ depends=("gcc6-libs=${pkgver}-${pkgrel}" 'binutils>=2.28' 'libmpc')
+ 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
+
+ for _i in gcov gcov-dump gcov-tool collect2 collect-ld lto1
+ do
+ install -Dm755 gcc/$_i $pkgdir/usr/bin/${_i}-${_ver}
+ done
+
+ make -C $CHOST/libgcc DESTDIR=${pkgdir} install
+ rm -f ${pkgdir}/usr/lib/gcc/${CHOST}/lib/libgcc_s.so*
+ rm -f ${pkgdir}/${_libdir}/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}/${_libdir}/libstdc++.so.6.*-gdb.py \
+ # ${pkgdir}/usr/share/gdb/auto-load/{_libdir}/
+ rm ${pkgdir}/${_libdir}/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_toolexeclibHEADERS \
+ install-nodist_cilkincludeHEADERS
+ make -C $CHOST/libgomp DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS \
+ install-nodist_libsubincludeHEADERS
+ 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 libiberty DESTDIR=${pkgdir} install
+ # install PIC version of libiberty
+ #install -m644 ${srcdir}/gcc-${_snapshot}/gcc-build/libiberty/pic/libiberty.a ${pkgdir}/${_libdir}/
+
+ make -C gcc DESTDIR=${pkgdir} install-man install-info
+ rm ${pkgdir}/usr/share/man/man1/gfortran-${_ver}.1
+ rm ${pkgdir}/usr/share/info/gfortran.info
+
+ make -C libcpp DESTDIR=${pkgdir} install
+ make -C gcc DESTDIR=${pkgdir} install-po
+
+ # many packages expect this symlink
+ ln -s gcc-${_ver} ${pkgdir}/usr/bin/cc-${_ver}
+
+ # POSIX conformance launcher scripts for c89 and c99
+ cat > $pkgdir/usr/bin/c89-${_ver} <<"EOF"
+#!/bin/sh
+fl="-std=c89"
+for opt; do
+ case "$opt" in
+ -ansi|-std=c89|-std=iso9899:1990) fl="";;
+ -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
+ exit 1;;
+ esac
+done
+exec gcc-${_ver} $fl ${1+"$@"}
+EOF
+
+ cat > $pkgdir/usr/bin/c99-${_ver} <<"EOF"
+#!/bin/sh
+fl="-std=c99"
+for opt; do
+ case "$opt" in
+ -std=c99|-std=iso9899:1999) fl="";;
+ -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
+ exit 1;;
+ esac
+done
+exec gcc-${_ver} $fl ${1+"$@"}
+EOF
+
+ chmod 755 $pkgdir/usr/bin/c{8,9}9-${_ver}
+
+ # Install Runtime Library Exception
+ install -d ${pkgdir}/usr/share/licenses/$pkgname/
+ ln -s ../gcc-libs/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/$pkgname
+
+ # Lazy way of dealing with conflicting files...
+ rm -rf ${pkgdir}/usr/share/{info,locale,man}
+
+ # Move potentially conflicting stuff to version specific subdirectory
+ #[[ -d ${pkgdir}/usr/lib/gcc/${CHOST}/lib/ ]] && mv ${pkgdir}/usr/lib/gcc/${CHOST}/lib/lib* \
+ # ${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/
+ mv $pkgdir/usr/lib/bfd-plugins/liblto_plugin.so ${pkgdir}/usr/lib/bfd-plugins/liblto_plugin-${_ver}.so
+ mv ${pkgdir}/usr/lib/*.so* ${pkgdir}/${_libdir}/
+ install -Dm755 gcc/cc1 ${pkgdir}/${_libdir}/cc1
+ install -Dm755 gcc/cc1plus ${pkgdir}/${_libdir}/cc1plus
+}
+
+package_gcc6-fortran() {
+ pkgdesc="Fortran front-end for GCC"
+ depends=("gcc6=$pkgver-$pkgrel")
+ options=('!emptydirs')
+
+ cd gcc-build
+ make -C $CHOST/libgfortran DESTDIR=$pkgdir install-cafexeclibLTLIBRARIES \
+ install-{toolexeclibDATA,nodist_fincludeHEADERS}
+ make -C $CHOST/libgomp DESTDIR=$pkgdir install-nodist_fincludeHEADERS
+ make -C gcc DESTDIR=$pkgdir fortran.install-common
+ install -Dm755 gcc/f951 $pkgdir/${_libdir}/f951
+
+ ln -s gfortran-6 ${pkgdir}/usr/bin/f95-${_ver}
+
+ # Install Runtime Library Exception
+ install -d ${pkgdir}/usr/share/licenses/$pkgname
+ ln -s ../gcc-libs/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/$pkgname/
+}
+
+package_gcc6-gcj() {
+ pkgdesc="Java front-end for GCC"
+ depends=("gcc6=$pkgver-$pkgrel")
+ replaces=('gcc-gcj')
+ options=('!emptydirs')
+
+ # Install libjava.
+ cd gcc-build
+ make -j1 DESTDIR=${pkgdir} install-target-libjava
+
+ # Install java-common.
+ cd gcc
+ make -j1 DESTDIR=${pkgdir} java.install-common java.install-man
+
+ install -m755 jc1 ${pkgdir}/${_libdir}/
+ install -m755 jvgenmain ${pkgdir}/${_libdir}/
+
+ # Remove conflicting files.
+ rm -f ${pkgdir}/usr/lib/gcc/${CHOST}/lib/libgcc_s.so*
+ rm -f ${pkgdir}/${_libdir}/libgcc_s.so*
+ rm ${pkgdir}/${_libdir}/libg{cj,ij}*.so*
+
+ # Rename two files to not conflict to classpath
+ mv ${pkgdir}/usr/share/info/cp-tools.info ${pkgdir}/usr/share/info/cp-tools-gcj.info
+
+ linkdir=`basename $pkgdir/usr/lib/gcj-${pkgver}*`
+ ln -sf $linkdir ${pkgdir}/usr/lib/gcj-${pkgver%.?}
+ ln -sf libgcj-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj-${pkgver%.?}.jar
+ ln -sf libgcj-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj.jar
+ ln -sf libgcj-tools-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj-tools-${pkgver%.?}.jar
+ ln -sf libgcj-tools-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj-tools.jar
+
+ rm ${pkgdir}/${_libdir}/libgcc_eh.a
+ rm ${pkgdir}/${_libdir}/crtbegin.o
+ rm ${pkgdir}/${_libdir}/crtbeginS.o
+ rm ${pkgdir}/${_libdir}/crtbeginT.o
+ rm ${pkgdir}/${_libdir}/crtend.o
+ rm ${pkgdir}/${_libdir}/crtendS.o
+ rm ${pkgdir}/${_libdir}/crtfastmath.o
+ rm ${pkgdir}/${_libdir}/crtprec32.o
+ rm ${pkgdir}/${_libdir}/crtprec64.o
+ rm ${pkgdir}/${_libdir}/crtprec80.o
+ rm ${pkgdir}/${_libdir}/include/unwind.h
+ rm ${pkgdir}/${_libdir}/libgcc.a
+ rm ${pkgdir}/${_libdir}/libgcov.a
+}
diff --git a/gcc6/glibc2.28-ustat.patch b/gcc6/glibc2.28-ustat.patch
new file mode 100644
index 000000000..7c56292d1
--- /dev/null
+++ b/gcc6/glibc2.28-ustat.patch
@@ -0,0 +1,31 @@
+--- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2018/04/25 07:39:32 259630
++++ libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2018/05/24 20:07:25 260687
+@@ -157,7 +157,6 @@
+ # include <sys/procfs.h>
+ #endif
+ #include <sys/user.h>
+-#include <sys/ustat.h>
+ #include <linux/cyclades.h>
+ #include <linux/if_eql.h>
+ #include <linux/if_plip.h>
+@@ -250,7 +249,19 @@
+ #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
+
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+- unsigned struct_ustat_sz = sizeof(struct ustat);
++ // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
++ // has been removed from glibc 2.28.
++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
++ || defined(__x86_64__)
++#define SIZEOF_STRUCT_USTAT 32
++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
++ || defined(__powerpc__) || defined(__s390__)
++#define SIZEOF_STRUCT_USTAT 20
++#else
++#error Unknown size of struct ustat
++#endif
++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID