diff options
author | Chris Severance | 2016-06-12 05:26:56 -0400 |
---|---|---|
committer | Chris Severance | 2016-06-12 05:26:56 -0400 |
commit | a0778eacb2d554b075812fcd6d3ac7ba819643bb (patch) | |
tree | 91263e1b1aa0d861f4455dd640ee942031105934 /PKGBUILD | |
parent | 1d968603d4c032947cd72471885f2774b34ce489 (diff) | |
download | aur-a0778eacb2d554b075812fcd6d3ac7ba819643bb.tar.gz |
Update to gcc 6.0 compile
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 178 |
1 files changed, 104 insertions, 74 deletions
@@ -1,118 +1,148 @@ -# Maintainer: Felix Schindler <felix at schindlerfaimly dot de> +# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com +# Contributor: Felix Schindler <felix at schindlerfaimly dot de> # Contributor: Allan McRae <allan@archlinux.org> # -# This PKGBUILD is maintained at https://github.com/ftalbrecht/aur +# This PKGBUILD has been maintained at https://github.com/ftalbrecht/aur # in the gcc48 branch # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc # NOTE: libtool requires rebuilt with each new gcc version -pkgname=gcc48 -_pkgver_minor=4.8 -pkgver=${_pkgver_minor}.5 -pkgrel=1 -pkgdesc="The GNU Compiler Collection - C and C++ frontends (4.8.x)" +pkgname='gcc48' +_pkgver='4.8' +pkgver="${_pkgver}.5" +pkgrel='1' +pkgdesc="The GNU Compiler Collection - C and C++ frontends (${_pkgver}.x)" arch=('i686' 'x86_64') -license=('GPL' 'LGPL' 'FDL' 'custom') url="http://gcc.gnu.org" -depends=('binutils>=2.24' 'libmpc' 'cloog') -makedepends=('binutils>=2.24' 'libmpc' 'cloog' 'doxygen') +license=('GPL' 'LGPL' 'FDL' 'custom') +makedepends=('binutils>=2.24' 'libmpc' 'doxygen') +makedepends+=('cloog') checkdepends=('dejagnu' 'inetutils') options=('!emptydirs' 'staticlibs' '!libtool') -source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2) -md5sums=('80d2c2982a3392bb0b89673ff136e223') +source=( + "ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2" + "gcc-4.9-fix-build-with-gcc-6.patch" +) +sha256sums=('22fb1e7e0f68a63cee631d85b20461d1ea6bda162f03096350e38c8d427ecf23' + 'd775a053fad367f5490111038fde7c875b4e842919d2d197f95b915e1ae562a9') +PKGEXT='.pkg.tar.gz' -_basedir=gcc-${pkgver} + _basedir="gcc-${pkgver}" -_libdir="usr/lib/gcc/$CHOST/$pkgver" +#_libdir="usr/lib/gcc/${CHOST}/${pkgver}" -build() { - # prepare - cd ${srcdir}/${_basedir} +prepare() { + cd "${_basedir}" # 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 # installing libiberty headers is broken # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56780#c6 - sed -i 's#@target_header_dir@#libiberty#' libiberty/Makefile.in + sed -i -e 's#@target_header_dir@#libiberty#' 'libiberty/Makefile.in' - mkdir ${srcdir}/gcc-build + mkdir "${srcdir}/gcc-build" # build - cd ${srcdir}/gcc-build + cd "${srcdir}/gcc-build" # Doesn't like FORTIFY_SOURCE - CPPFLAGS=${CPPFLAGS//-D_FORTIFY_SOURCE=?/} - export CPPFLAGS + export CPPFLAGS="${CPPFLAGS//-D_FORTIFY_SOURCE=?/}" # Doesn't like -fstack-protector-strong - CFLAGS=${CFLAGS//-fstack-protector-strong/-fstack-protector} - export CFLAGS - CXXFLAGS=${CXXFLAGS//-fstack-protector-strong/-fstack-protector} - export CXXFLAGS + 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/} - - LD_PRELOAD=/usr/lib/libstdc++.so.6 ${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 \ - --enable-shared --enable-threads=posix \ - --with-system-zlib --enable-__cxa_atexit \ - --disable-libunwind-exceptions --enable-clocale=gnu \ - --disable-libstdcxx-pch \ - --enable-gnu-unique-object \ - --with-ppl \ - --disable-multilib --disable-werror \ - --enable-linker-build-id \ - --enable-cloog-backend=isl \ - --enable-lto --enable-gold --enable-ld=default \ - --enable-plugin --with-plugin-ld=ld.gold \ - --program-suffix=-${pkgver} --enable-version-specific-runtime-libs \ - --enable-checking=release - - make - + export CFLAGS="${CFLAGS/-pipe/}" + export CXXFLAGS="${CXXFLAGS/-pipe/}" + + # The following options are one per line, mostly sorted so they are easy to diff compare to other gcc packages. + "${srcdir}/${_basedir}/configure" \ + --build="${CHOST}" \ + --disable-libstdcxx-pch \ + --disable-libunwind-exceptions \ + --disable-multilib \ + --disable-werror \ + --enable-__cxa_atexit \ + --enable-checking='release' \ + --enable-clocale='gnu' \ + --enable-cloog-backend='isl' \ + --enable-gnu-unique-object \ + --enable-gold \ + --enable-languages='c,c++,fortran' \ + --enable-ld=default \ + --enable-linker-build-id \ + --enable-lto \ + --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' \ + --program-suffix="-${_pkgver}" \ + --with-bugurl='https://bugs.archlinux.org/' \ + --with-plugin-ld='ld.gold' \ + --with-ppl \ + --with-system-zlib \ + --prefix='/usr' +# CXX='g++-4.9' CC='gcc-4.9' +} + +build() { + cd "${srcdir}/gcc-build" + + local _nproc="$(nproc)"; _nproc=$((_nproc>8?8:_nproc)) + LD_PRELOAD='/usr/lib/libstdc++.so' \ + make -s -j "${_nproc}" + # make documentation - make -C $CHOST/libstdc++-v3/doc doc-man-doxygen + make -s -j1 -C "${CHOST}/libstdc++-v3/doc" 'doc-man-doxygen' +} + +_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 || : + "${srcdir}/${_basedir}/contrib/test_summary" } package() { - cd ${srcdir}/gcc-build + cd "${srcdir}/gcc-build" + + make -s -j1 DESTDIR="${pkgdir}" install - make -j1 DESTDIR=${pkgdir} install - ## Lazy way of dealing with conflicting man and info pages and locales... - rm -rf ${pkgdir}/usr/share/ - rm -rf ${pkgdir}/usr/include/ - find ${pkgdir}/ -name \*iberty\* | xargs rm - + rm -rf "${pkgdir}/usr"/{share,include}/ + find "${pkgdir}/" -name '*iberty*' | xargs rm + # Move potentially conflicting stuff to version specific subdirectory - $(ls "$pkgdir"/usr/lib/gcc/$CHOST/lib* &> /dev/null) && mv "$pkgdir"/usr/lib/gcc/$CHOST/lib* "$pkgdir/usr/lib/gcc/$CHOST/$pkgver/" - + mv "${pkgdir}/usr/lib/gcc/${CHOST}"/lib*/ "${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/" + # Install Runtime Library Exception - install -Dm644 ${srcdir}/gcc-${pkgver}/COPYING.RUNTIME \ - ${pkgdir}/usr/share/licenses/$pkgname/RUNTIME.LIBRARY.EXCEPTION - - # create symlinks - cd ${pkgdir}/usr/bin - for ii in c++ g++ gcc gcc-ar gcc-nm gcc-ranlib gfortran; do - ln -s ${ii}-${pkgver} ${ii}-${_pkgver_minor} - ln -s ${CHOST}-${ii}-${pkgver} ${CHOST}-${ii}-${_pkgver_minor} - done - ln -s gcov-${pkgver} gcov-${_pkgver_minor} + install -Dm644 "${srcdir}/gcc-${pkgver}/COPYING.RUNTIME" \ + "${pkgdir}/usr/share/licenses/${pkgname}/RUNTIME.LIBRARY.EXCEPTION" } |