summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD413
1 files changed, 118 insertions, 295 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 95eab63a955f..da68ad5bcab5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,346 +1,169 @@
# $Id$
-# Maintainer: Yurii Kolesnykov (yurikooles) <yurikoles@gmail.com>
-# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com
+# Contributor: Felix Schindler <felix at schindlerfaimly dot de>
+# Contributor: Ruben Van Boxem <vanboxem.ruben@gmail.com>
+# Contributor: Yurii Kolesnykov (yurikooles) <yurikoles@gmail.com>
+# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# 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=('gcc49-multilib' 'gcc49-libs-multilib' 'lib32-gcc49-libs' 'gcc49-fortran-multilib' 'gcc49-objc-multilib' 'gcc49-go-multilib')
-pkgver=4.9.3
-_pkgver=4.9
-_islver=0.12.2
-_cloogver=0.18.1
-pkgrel=2
+pkgname='gcc49-multilib'
+_pkgver='4.9'
+_pkgver_minor='3'
+pkgver="${_pkgver}.${_pkgver_minor}"
+_islver='0.12.2'
+_cloogver='0.18.1'
+pkgrel='3'
#_snapshot=4.9-20150304
-pkgdesc="The GNU Compiler Collection for multilib"
+pkgdesc="The GNU Compiler Collection for multilib (${_pkgver}.x)"
arch=('x86_64')
-license=('GPL' 'LGPL' 'FDL' 'custom')
url="http://gcc.gnu.org"
-makedepends=('binutils>=2.25' 'libmpc' 'doxygen'
- 'lib32-glibc>=2.20')
+license=('GPL' 'LGPL' 'FDL' 'custom')
+makedepends=('binutils>=2.25' 'libmpc' 'doxygen')
+makedepends+=('lib32-glibc>=2.20')
checkdepends=('dejagnu' 'inetutils')
+provides=('gcc49')
+conflicts=('gcc49')
options=('!emptydirs')
-source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2
+source=("ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2"
#ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
- http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
- http://www.bastoul.net/cloog/pages/download/cloog-${_cloogver}.tar.gz)
-md5sums=('6f831b4d251872736e8e9cc09746f327'
- 'e039bfcfb6c2ab039b8ee69bf883e824'
- 'e34fca0540d840e5d0f6427e98c92252')
-
-if [ -n "${_snapshot}" ]; then
- _basedir=gcc-${_snapshot}
+ "http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2"
+ "http://www.bastoul.net/cloog/pages/download/cloog-${_cloogver}.tar.gz"
+ "gcc-4.9-fix-build-with-gcc-6.patch")
+sha256sums=('2332b2a5a321b57508b9031354a8503af6fdfb868b8c1748d33028d100a8b67e'
+ 'f4b3dbee9712850006e44f0db2103441ab3d13b406f77996d1df19ee89d11fb4'
+ '02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196'
+ 'd775a053fad367f5490111038fde7c875b4e842919d2d197f95b915e1ae562a9')
+PKGEXT='.pkg.tar.gz'
+
+if [ -n "${_snapshot:-}" ]; then
+ _basedir="gcc-${_snapshot}"
else
- _basedir=gcc-${pkgver}
+ _basedir="gcc-${pkgver}"
fi
-_libdir="usr/lib/gcc/$CHOST/$pkgver"
+#_libdir="usr/lib/gcc/${CHOST}/${pkgver}"
prepare() {
- cd ${srcdir}/${_basedir}
+ cd "${_basedir}"
# link isl/cloog for in-tree builds
- ln -s ../isl-${_islver} isl
- ln -s ../cloog-${_cloogver} cloog
+ ln -s "../isl-${_islver}" 'isl'
+ ln -s "../cloog-${_cloogver}" 'cloog'
# Do not run fixincludes
- sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
+ sed -i -e 's@\./fixinc\.sh@-c true@' 'gcc/Makefile.in'
+
+ # fix build with GCC 6
+ patch -p1 < "${srcdir}/gcc-4.9-fix-build-with-gcc-6.patch"
# Arch Linux installs x86_64 libraries /lib
- [[ $CARCH == "x86_64" ]] && sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
+ case "${CARCH}" in
+ 'x86_64') sed -i -e '/m64=/s/lib64/lib/' 'gcc/config/i386/t-linux64' ;;
+ esac
- echo ${pkgver} > gcc/BASE-VER
+ echo "${pkgver}" > 'gcc/BASE-VER'
# hack! - some configure tests for header files using "$CPP $CPPFLAGS"
- sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure
+ sed -i -e '/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/' {libiberty,gcc}/configure
- mkdir ${srcdir}/gcc-build
-}
+ mkdir "${srcdir}/gcc-build"
-build() {
- cd ${srcdir}/gcc-build
+ # build
+ cd "${srcdir}/gcc-build"
+
+ # Doesn't like FORTIFY_SOURCE
+ export CPPFLAGS="${CPPFLAGS//-D_FORTIFY_SOURCE=?/}"
+
+ # Doesn't like -fstack-protector-strong
+ export CFLAGS="${CFLAGS//-fstack-protector-strong/-fstack-protector}"
+ export CXXFLAGS="${CXXFLAGS//-fstack-protector-strong/-fstack-protector}"
# using -pipe causes spurious test-suite failures
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565
- CFLAGS=${CFLAGS/-pipe/}
- CXXFLAGS=${CXXFLAGS/-pipe/}
+ export CFLAGS="${CFLAGS/-pipe/}"
+ export CXXFLAGS="${CXXFLAGS/-pipe/}"
+
+ # The following options are one per line, sorted so they are easy to diff compare to other gcc packages.
+ "${srcdir}/${_basedir}/configure" \
+ --build="${CHOST}" \
+ --disable-libssp \
+ --disable-libstdcxx-pch \
+ --disable-libunwind-exceptions \
+ --disable-werror \
+ --enable-__cxa_atexit \
+ --enable-checking=release \
+ --enable-clocale='gnu' \
+ --enable-cloog-backend='isl' \
+ --enable-gnu-unique-object \
+ --enable-install-libiberty \
+ --enable-languages='c,c++,fortran,go,lto,objc,obj-c++' \
+ --enable-linker-build-id \
+ --enable-lto \
+ --enable-multilib \
+ --enable-plugin \
+ --enable-shared \
+ --enable-threads='posix' \
+ --enable-version-specific-runtime-libs \
+ --infodir='/usr/share/info' \
+ --libdir='/usr/lib' \
+ --libexecdir='/usr/lib' \
+ --mandir='/usr/share/man' \
+ --prefix='/usr' \
+ --program-suffix="-${_pkgver}" \
+ --with-bugurl='https://bugs.archlinux.org/' \
+ --with-linker-hash-style='gnu' \
+ --with-system-zlib
+# CXX='g++-4.9' CC='gcc-4.9'
+
+# gcc-5.0 changes
+# --with-default-libstdcxx-abi=c++98 - before gcc-5.0 c++ rebuild
+# --enable-gnu-indirect-function
+# --with-isl - cloog no longer needed
+
+}
+
+build() {
+ cd "${srcdir}/gcc-build"
+
+ export LD_PRELOAD='/usr/lib/libstdc++.so'
+ local _nproc="$(nproc)"; _nproc=$((_nproc>8?8:_nproc))
+ make -s -j "${_nproc}"
- ${srcdir}/${_basedir}/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,go,lto,objc,obj-c++ \
- --enable-shared --enable-threads=posix \
- --with-system-zlib --enable-__cxa_atexit \
- --disable-libunwind-exceptions --enable-clocale=gnu \
- --disable-libstdcxx-pch --disable-libssp \
- --enable-gnu-unique-object --enable-linker-build-id \
- --enable-cloog-backend=isl \
- --enable-lto --enable-plugin --enable-install-libiberty \
- --with-linker-hash-style=gnu \
- --enable-multilib --disable-werror \
- --enable-checking=release
- make
-
# make documentation
- make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
+ make -s -j1 -C "${CHOST}/libstdc++-v3/doc" 'doc-man-doxygen'
}
-check() {
- cd ${srcdir}/gcc-build
+_fn_check() {
+ cd "${srcdir}/gcc-build"
# increase stack size to prevent test failures
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827
ulimit -s 32768
# do not abort on error as some are "expected"
- make -k check || true
- ${srcdir}/${_basedir}/contrib/test_summary
-}
-
-package_lib32-gcc49-libs()
-{
- pkgdesc="Runtime libraries shipped by GCC (32-bit)"
- depends=('lib32-glibc>=2.20')
- options=('!emptydirs' '!strip')
-
- cd ${srcdir}/gcc-build
-
- make -C $CHOST/32/libgcc DESTDIR=${pkgdir} install-shared
- rm ${pkgdir}/${_libdir}/32/libgcc_eh.a
-
- for lib in libatomic \
- libcilkrts \
- libgfortran \
- libgomp \
- libitm \
- libquadmath \
- libsanitizer/{a,l,ub}san \
- libstdc++-v3/src \
- libvtv; do
- make -C $CHOST/32/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
- done
-
- make -C $CHOST/32/libobjc DESTDIR=${pkgdir} install-libs
-
- # remove stuff in gcc-libs-multilib
- rm -r ${pkgdir}/usr/lib
-
- # Install Runtime Library Exception
- install -Dm644 ${srcdir}/${_basedir}/COPYING.RUNTIME \
- ${pkgdir}/usr/share/licenses/lib32-gcc-libs/RUNTIME.LIBRARY.EXCEPTION
-}
-
-package_gcc49-libs-multilib()
-{
- pkgdesc="Runtime libraries shipped by GCC for multilib"
- depends=('glibc>=2.20' "lib32-gcc-libs=$pkgver-$pkgrel")
- provides=("gcc-libs=$pkgver-$pkgrel")
- conflicts=('gcc-libs')
- options=('!emptydirs' '!strip')
- install=gcc49-libs.install
-
- cd ${srcdir}/gcc-build
-
- make -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared
- rm ${pkgdir}/${_libdir}/libgcc_eh.a
-
- for lib in libatomic \
- libcilkrts \
- libgfortran \
- libgomp \
- libitm \
- libquadmath \
- libsanitizer/{a,l,ub}san \
- libstdc++-v3/src \
- libvtv; do
- make -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
- done
-
- [[ $CARCH == "x86_64" ]] && \
- make -C $CHOST/libsanitizer/tsan DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
-
- make -C $CHOST/libobjc DESTDIR=${pkgdir} install-libs
-
- make -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install
-
- for lib in libgomp \
- libitm \
- libquadmath; do
- make -C $CHOST/$lib DESTDIR=${pkgdir} install-info
- done
-
- # remove stuff in lib32-gcc-libs
- rm -r ${pkgdir}/usr/lib32
-
- # Install Runtime Library Exception
- install -Dm644 ${srcdir}/${_basedir}/COPYING.RUNTIME \
- ${pkgdir}/usr/share/licenses/gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION
+ make -k check || :
+ "${srcdir}/${_basedir}/contrib/test_summary"
}
-package_gcc49-multilib()
+package()
{
- pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib"
- depends=("gcc-libs-multilib=$pkgver-$pkgrel" 'binutils>=2.25' 'libmpc')
- groups=('multilib-devel')
- options=('staticlibs')
- provides=("gcc=$pkgver-$pkgrel")
- conflicts=('gcc')
- install=gcc49.install
+ cd "${srcdir}/gcc-build"
- cd ${srcdir}/gcc-build
+ make -s -j1 DESTDIR="${pkgdir}" install
- make -C gcc DESTDIR=${pkgdir} install-driver install-cpp install-gcc-ar \
- c++.install-common install-headers install-plugin install-lto-wrapper
+ ## Lazy way of dealing with conflicting man and info pages and locales...
+ rm -rf "${pkgdir}/usr"/{share,include}/
+ find "${pkgdir}/" -name '*iberty*' | xargs rm
- install -m755 gcc/gcov $pkgdir/usr/bin/
- 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 ${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
-
- 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
-
- 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_toolexeclibHEADERS
- make -C $CHOST/libsanitizer/asan 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_toolexeclibHEADERS
- make -C $CHOST/32/libsanitizer/asan DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
-
- make -C libiberty DESTDIR=${pkgdir} install
- # install PIC version of libiberty
- install -m644 ${srcdir}/gcc-build/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
- cat > $pkgdir/usr/bin/c89 <<"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 $fl ${1+"$@"}
-EOF
-
- cat > $pkgdir/usr/bin/c99 <<"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 $fl ${1+"$@"}
-EOF
-
- chmod 755 $pkgdir/usr/bin/c{8,9}9
-
- # install the libstdc++ man pages
- make -C $CHOST/libstdc++-v3/doc DESTDIR=$pkgdir doc-install-man
-
- # Install Runtime Library Exception
- install -d ${pkgdir}/usr/share/licenses/gcc-multilib/
- ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-multilib/
-}
-
-package_gcc49-fortran-multilib()
-{
- pkgdesc="Fortran front-end for GCC for multilib"
- depends=("gcc-multilib=$pkgver-$pkgrel")
- provides=("gcc-fortran=$pkgver-$pkgrel")
- conflicts=('gcc-fortran')
- options=('!emptydirs')
- install=gcc49-fortran.install
-
- cd ${srcdir}/gcc-build
- make -C $CHOST/libgfortran DESTDIR=$pkgdir install-{{caf,my}execlibLTLIBRARIES,toolexeclibDATA}
- make -C $CHOST/32/libgfortran DESTDIR=$pkgdir install-{{caf,my}execlibLTLIBRARIES,toolexeclibDATA}
- 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
+ # Move potentially conflicting stuff to version specific subdirectory
+ mv "${pkgdir}/usr/lib/gcc/${CHOST}"/lib*/ "${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/"
# Install Runtime Library Exception
- install -d ${pkgdir}/usr/share/licenses/gcc-fortran-multilib/
- ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-fortran-multilib/
-}
-
-package_gcc49-objc-multilib()
-{
- pkgdesc="Objective-C front-end for GCC for multilib"
- depends=("gcc-multilib=$pkgver-$pkgrel")
- provides=("gcc-objc=$pkgver-$pkgrel")
- conflicts=('gcc-objc')
-
- cd ${srcdir}/gcc-build
- make DESTDIR=$pkgdir -C $CHOST/libobjc install-headers
- install -dm755 $pkgdir/${_libdir}
- install -m755 gcc/cc1obj{,plus} $pkgdir/${_libdir}/
+ install -Dm644 "${srcdir}/gcc-${pkgver}/COPYING.RUNTIME" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/RUNTIME.LIBRARY.EXCEPTION"
- # Install Runtime Library Exception
- install -d ${pkgdir}/usr/share/licenses/gcc-objc-multilib/
- ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-objc-multilib/
-}
-
-
-package_gcc49-go-multilib()
-{
- pkgdesc="Go front-end for GCC for multilib"
- depends=("gcc-multilib=$pkgver-$pkgrel")
- provides=("gcc-go=$pkgver-$pkgrel")
- conflicts=('gcc-go')
- options=('!emptydirs')
- install=gcc49-go.install
-
- cd ${srcdir}/gcc-build
- make -C $CHOST/libgo DESTDIR=$pkgdir install-exec-am
- make -C $CHOST/32/libgo DESTDIR=$pkgdir install-exec-am
- make -C gcc DESTDIR=$pkgdir go.install-{common,man,info}
- install -Dm755 gcc/go1 $pkgdir/${_libdir}/go1
-
- # Install Runtime Library Exception
- install -d ${pkgdir}/usr/share/licenses/gcc-go-multilib/
- ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-go-multilib/
+ # We don't want symlinks. There's no point in installing gcc-4.9.{0..infinity}. One x.x version will be fine!
}