1 (edited by throgh 2020-03-31 17:25:47)

Topic: [gcc] PKGBUILDs for newer versions

Hello you all,

within the last weeks I was busy creating further newer PKGBUILD-files for the newer gcc-multilib suite and named packages. So first of I'd like to thank Luke as I've used the files as examples. Attention therefore: You should use them incremental, so if you want version 9.3.0 on your system you'll need the previous version for building. Same with this one to repeat!

Human being in favor with clear principles and so also for freedom in soft- and hardware!

Certainly anyone who has the power to make you believe absurdities has the power to make you commit injustices: For a life of every being full with peace and kindness, including diversity and freedom. Capitalism is destroying our minds, the planet itself and the universe in the end!

2 (edited by throgh 2020-03-31 19:35:35)

Re: [gcc] PKGBUILDs for newer versions

PKGBUILD for gcc-multilib 7.5.0

# Maintainer (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor (Arch): Allan McRae <allan@archlinux.org>
# Maintainer: André Silva <emulatorman@hyperbola.info>
# Contributor: Luke R. <g4jc@hyperbola.info>

# toolchain build order: linux-libre-api-headers->glibc->binutils->gcc->binutils->glibc
# NOTE: libtool requires rebuilt with each new gcc version

pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib')
pkgver=7.5.0
pkgrel=1
_pkgver=7
_islver=0.18
pkgdesc="The GNU Compiler Collection for multilib"
arch=('x86_64')
license=('GPL-3' 'LGPL-3' 'custom:GCC-Exception-3.1' 'FDL-1.3')
url="https://gcc.gnu.org"
makedepends=('binutils>=2.28' 'libmpc' 'gcc-ada-multilib' 'doxygen'
             'lib32-glibc>=2.25' 'quilt')
checkdepends=('dejagnu' 'inetutils')
options=('!emptydirs')
source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}
        http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
        COPYING.DOC)
validpgpkeys=('33C235A34C46AA3FFB293709A328C3A2C3C45C06') # Jakub Jelinek <jakub@redhat.com> # Note: (Weak DSA) :(
sha512sums=('fe716cc19f2e3255d3a8b1b8290777bf769c6d98e6e0b07b81a3d6ad43f8af74cb170dfa18b1555dbfcd3f55ae582b91a286ccef496b9b65c1579902f96a1f60'
            'SKIP'
            '85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94'
            'bea1788b2bdc84f470e459114b871cf4ee991718964a63e18adde65116806d7676484cb30857cf74dece5eef5f96a015ee4a21900e019623e5d3484868b28b7f')

_libdir="usr/lib/gcc/$CHOST/$pkgver"

prepare() {
  cd ${srcdir}/gcc-$pkgver

  # 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

  # Hyperbola installs x86_64 libraries /lib
  [[ $CARCH == "x86_64" ]] && 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 ${srcdir}/gcc-build
}

build() {
  cd ${srcdir}/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-$pkgver/configure --prefix=/usr \
      --libdir=/usr/lib \
      --libexecdir=/usr/libexec \
      --mandir=/usr/share/man \
      --infodir=/usr/share/info \
      --with-bugurl=https://issues.hyperbola.info/ \
      --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ \
      --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

  make

  # make documentation
  make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
}

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}/gcc-$pkgver/contrib/test_summary
}

package_lib32-gcc-libs()
{
  pkgdesc="Runtime libraries shipped by GCC (32-bit)"
  depends=('lib32-glibc>=2.25')
  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 \
             libgo \
             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

  make -C $CHOST/32/libmpx DESTDIR=${pkgdir} install
  rm ${pkgdir}/usr/lib32/libmpx.spec

  # remove stuff in gcc-libs-multilib
  rm -r ${pkgdir}/usr/lib

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/lib32-gcc-libs
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/lib32-gcc-libs
}

package_gcc-libs-multilib()
{
  pkgdesc="Runtime libraries shipped by GCC for multilib"
  depends=('glibc>=2.25' "lib32-gcc-libs=$pkgver-$pkgrel")
  provides=("gcc-libs=$pkgver-$pkgrel")
  conflicts=('gcc-libs')
  options=('!emptydirs' '!strip')

  cd ${srcdir}/gcc-build

  make -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared
  rm ${pkgdir}/${_libdir}/libgcc_eh.a

  for lib in libatomic \
             libcilkrts \
             libgfortran \
             libgo \
             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

  make -C $CHOST/libmpx DESTDIR=${pkgdir} install
  rm ${pkgdir}/usr/lib/libmpx.spec

  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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-libs-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-libs-multilib
}

package_gcc-multilib()
{
  pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib"
  depends=("gcc-libs-multilib=$pkgver-$pkgrel" 'binutils>=2.28' 'libmpc')
  groups=('multilib-devel')
  options=('staticlibs')
  provides=("gcc=$pkgver-$pkgrel")
  conflicts=('gcc')

  cd ${srcdir}/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 ${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 /usr/lib/gcc/$CHOST/${pkgver}/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 $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 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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-multilib
}

package_gcc-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')

  cd ${srcdir}/gcc-build
  make -C $CHOST/libgfortran DESTDIR=$pkgdir install-cafexeclibLTLIBRARIES \
    install-{toolexeclibDATA,nodist_fincludeHEADERS}
  make -C $CHOST/32/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,man,info}
  install -Dm755 gcc/f951 $pkgdir/${_libdir}/f951

  ln -s gfortran ${pkgdir}/usr/bin/f95

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-fortran-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-fortran-multilib
}

package_gcc-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}/

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-objc-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-objc-multilib
}

package_gcc-ada-multilib()
{
  pkgdesc="Ada front-end for GCC (GNAT) for multilib"
  depends=("gcc-multilib=$pkgver-$pkgrel")
  provides=("gcc-ada=$pkgver-$pkgrel")
  conflicts=('gcc-ada')
  options=('staticlibs' '!emptydirs')

  cd ${srcdir}/gcc-build/gcc
  make DESTDIR=$pkgdir ada.install-{common,info}
  install -m755 gnat1 $pkgdir/${_libdir}

  cd ../$CHOST/32/libada
  make DESTDIR=${pkgdir} INSTALL="install" \
    INSTALL_DATA="install -m644" install-gnatlib

  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}-${_pkgver}.so ${pkgdir}/usr/lib
  ln -s libgnarl-${_pkgver}.so ${pkgdir}/usr/lib/libgnarl.so
  ln -s libgnat-${_pkgver}.so ${pkgdir}/usr/lib/libgnat.so
  rm ${pkgdir}/${_libdir}/adalib/libgna{rl,t}.so

  install -d ${pkgdir}/usr/lib32/
  mv ${pkgdir}/${_libdir}/32/adalib/libgna{rl,t}-${_pkgver}.so ${pkgdir}/usr/lib32
  ln -s libgnarl-${_pkgver}.so ${pkgdir}/usr/lib32/libgnarl.so
  ln -s libgnat-${_pkgver}.so ${pkgdir}/usr/lib32/libgnat.so
  rm ${pkgdir}/${_libdir}/32/adalib/libgna{rl,t}.so

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-ada-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-ada-multilib
}

package_gcc-go-multilib()
{
  pkgdesc="Go front-end for GCC for multilib"
  depends=("gcc-multilib=$pkgver-$pkgrel")
  provides=("gcc-go=$pkgver-$pkgrel")
  conflicts=('go' 'gcc-go')
  options=('!emptydirs')

  cd ${srcdir}/gcc-build
  make -C $CHOST/libgo DESTDIR=$pkgdir install-exec-am
  make -C $CHOST/32/libgo DESTDIR=$pkgdir install-exec-am
  rm ${pkgdir}/usr/lib/libgo.so* ${pkgdir}/usr/lib32/libgo.so*
  make -C gcc DESTDIR=$pkgdir go.install-{common,man,info}
  install -Dm755 gcc/go1 $pkgdir/${_libdir}/go1

  make DESTDIR=${pkgdir} install-gotools

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-go-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-go-multilib
}

This can be built with gcc-multilib 6.3 we already have within the repositories!

Human being in favor with clear principles and so also for freedom in soft- and hardware!

Certainly anyone who has the power to make you believe absurdities has the power to make you commit injustices: For a life of every being full with peace and kindness, including diversity and freedom. Capitalism is destroying our minds, the planet itself and the universe in the end!

3 (edited by throgh 2020-03-31 17:24:34)

Re: [gcc] PKGBUILDs for newer versions

PKGBUILD for gcc-multilib 8.4.0

# Maintainer (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor (Arch): Allan McRae <allan@archlinux.org>
# Maintainer: André Silva <emulatorman@hyperbola.info>
# Contributor: Luke R. <g4jc@hyperbola.info>

# toolchain build order: linux-libre-api-headers->glibc->binutils->gcc->binutils->glibc
# NOTE: libtool requires rebuilt with each new gcc version

pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib')
pkgver=8.4.0
pkgrel=1
_pkgver=8
_islver=0.21
pkgdesc="The GNU Compiler Collection for multilib"
arch=('x86_64')
license=('GPL-3' 'LGPL-3' 'custom:GCC-Exception-3.1' 'FDL-1.3')
url="https://gcc.gnu.org"
makedepends=('binutils>=2.28' 'libmpc' 'gcc-ada-multilib' 'doxygen'
             'lib32-glibc>=2.25' 'quilt')
checkdepends=('dejagnu' 'inetutils')
options=('!emptydirs')
source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}
        http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
        COPYING.DOC)
validpgpkeys=('33C235A34C46AA3FFB293709A328C3A2C3C45C06') # Jakub Jelinek <jakub@redhat.com> # Note: (Weak DSA) :(
sha512sums=('6de904f552a02de33b11ef52312bb664396efd7e1ce3bbe37bfad5ef617f133095b3767b4804bc7fe78df335cb53bc83f1ac055baed40979ce4c2c3e46b70280'
            'SKIP'
            '48f3b8d90550e8ab28837b5757f87bf99cddec67769877e04942abef69bbe526ef4c863951d55dd89a6027dc09df48988c8df6029782f990aa4d5b67e65f6d53'
            'bea1788b2bdc84f470e459114b871cf4ee991718964a63e18adde65116806d7676484cb30857cf74dece5eef5f96a015ee4a21900e019623e5d3484868b28b7f')

_libdir="usr/lib/gcc/$CHOST/$pkgver"

prepare() {
  cd ${srcdir}/gcc-$pkgver

  # 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

  # Hyperbola installs x86_64 libraries /lib
  [[ $CARCH == "x86_64" ]] && 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 ${srcdir}/gcc-build
}

build() {
  cd ${srcdir}/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-$pkgver/configure --prefix=/usr \
      --libdir=/usr/lib \
      --libexecdir=/usr/libexec \
      --mandir=/usr/share/man \
      --infodir=/usr/share/info \
      --with-bugurl=https://issues.hyperbola.info/ \
      --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ \
      --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

  make

  # make documentation
  make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
}

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}/gcc-$pkgver/contrib/test_summary
}

package_lib32-gcc-libs()
{
  pkgdesc="Runtime libraries shipped by GCC (32-bit)"
  depends=('lib32-glibc>=2.25')
  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 \
             libgfortran \
             libgo \
             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

  make -C $CHOST/32/libmpx DESTDIR=${pkgdir} install
  rm ${pkgdir}/usr/lib32/libmpx.spec

  # remove stuff in gcc-libs-multilib
  rm -r ${pkgdir}/usr/lib

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/lib32-gcc-libs
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/lib32-gcc-libs
}

package_gcc-libs-multilib()
{
  pkgdesc="Runtime libraries shipped by GCC for multilib"
  depends=('glibc>=2.25' "lib32-gcc-libs=$pkgver-$pkgrel")
  provides=("gcc-libs=$pkgver-$pkgrel")
  conflicts=('gcc-libs')
  options=('!emptydirs' '!strip')

  cd ${srcdir}/gcc-build

  make -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared
  rm ${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

  [[ $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

  make -C $CHOST/libmpx DESTDIR=${pkgdir} install
  rm ${pkgdir}/usr/lib/libmpx.spec

  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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-libs-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-libs-multilib
}

package_gcc-multilib()
{
  pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib"
  depends=("gcc-libs-multilib=$pkgver-$pkgrel" 'binutils>=2.28' 'libmpc')
  groups=('multilib-devel')
  options=('staticlibs')
  provides=("gcc=$pkgver-$pkgrel")
  conflicts=('gcc')

  cd ${srcdir}/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 ${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 /usr/lib/gcc/$CHOST/${pkgver}/liblto_plugin.so \
    ${pkgdir}/usr/lib/bfd-plugins/

  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 $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 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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-multilib
}

package_gcc-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')

  cd ${srcdir}/gcc-build
  make -C $CHOST/libgfortran DESTDIR=$pkgdir install-cafexeclibLTLIBRARIES \
    install-{toolexeclibDATA,nodist_fincludeHEADERS}
  make -C $CHOST/32/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,man,info}
  install -Dm755 gcc/f951 $pkgdir/${_libdir}/f951

  ln -s gfortran ${pkgdir}/usr/bin/f95

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-fortran-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-fortran-multilib
}

package_gcc-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}/

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-objc-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-objc-multilib
}

package_gcc-ada-multilib()
{
  pkgdesc="Ada front-end for GCC (GNAT) for multilib"
  depends=("gcc-multilib=$pkgver-$pkgrel")
  provides=("gcc-ada=$pkgver-$pkgrel")
  conflicts=('gcc-ada')
  options=('staticlibs' '!emptydirs')

  cd ${srcdir}/gcc-build/gcc
  make DESTDIR=$pkgdir ada.install-{common,info}
  install -m755 gnat1 $pkgdir/${_libdir}

  cd ../$CHOST/32/libada
  make DESTDIR=${pkgdir} INSTALL="install" \
    INSTALL_DATA="install -m644" install-gnatlib

  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}-${_pkgver}.so ${pkgdir}/usr/lib
  ln -s libgnarl-${_pkgver}.so ${pkgdir}/usr/lib/libgnarl.so
  ln -s libgnat-${_pkgver}.so ${pkgdir}/usr/lib/libgnat.so
  rm ${pkgdir}/${_libdir}/adalib/libgna{rl,t}.so

  install -d ${pkgdir}/usr/lib32/
  mv ${pkgdir}/${_libdir}/32/adalib/libgna{rl,t}-${_pkgver}.so ${pkgdir}/usr/lib32
  ln -s libgnarl-${_pkgver}.so ${pkgdir}/usr/lib32/libgnarl.so
  ln -s libgnat-${_pkgver}.so ${pkgdir}/usr/lib32/libgnat.so
  rm ${pkgdir}/${_libdir}/32/adalib/libgna{rl,t}.so

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-ada-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-ada-multilib
}

package_gcc-go-multilib()
{
  pkgdesc="Go front-end for GCC for multilib"
  depends=("gcc-multilib=$pkgver-$pkgrel")
  provides=("gcc-go=$pkgver-$pkgrel")
  conflicts=('go' 'gcc-go')
  options=('!emptydirs')

  cd ${srcdir}/gcc-build
  make -C $CHOST/libgo DESTDIR=$pkgdir install-exec-am
  make -C $CHOST/32/libgo DESTDIR=$pkgdir install-exec-am
  rm ${pkgdir}/usr/lib/libgo.so* ${pkgdir}/usr/lib32/libgo.so*
  make -C gcc DESTDIR=$pkgdir go.install-{common,man,info}
  install -Dm755 gcc/go1 $pkgdir/${_libdir}/go1

  make DESTDIR=${pkgdir} install-gotools

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-go-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-go-multilib
}
Human being in favor with clear principles and so also for freedom in soft- and hardware!

Certainly anyone who has the power to make you believe absurdities has the power to make you commit injustices: For a life of every being full with peace and kindness, including diversity and freedom. Capitalism is destroying our minds, the planet itself and the universe in the end!

4 (edited by throgh 2020-04-02 15:03:25)

Re: [gcc] PKGBUILDs for newer versions

PKGBUILD for gcc-multilib 9.3.0

# Maintainer (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor (Arch): Allan McRae <allan@archlinux.org>
# Maintainer: André Silva <emulatorman@hyperbola.info>
# Contributor: Luke R. <g4jc@hyperbola.info>

# toolchain build order: linux-libre-api-headers->glibc->binutils->gcc->binutils->glibc
# NOTE: libtool requires rebuilt with each new gcc version

pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib')
pkgver=9.3.0
pkgrel=1
_pkgver=9
_islver=0.21
pkgdesc="The GNU Compiler Collection for multilib"
arch=('x86_64')
license=('GPL-3' 'LGPL-3' 'custom:GCC-Exception-3.1' 'FDL-1.3')
url="https://gcc.gnu.org"
makedepends=('binutils>=2.28' 'libmpc' 'gcc-ada-multilib' 'doxygen'
             'lib32-glibc>=2.25' 'quilt')
checkdepends=('dejagnu' 'inetutils')
options=('!emptydirs')
source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}
        http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
        COPYING.DOC)
validpgpkeys=('33C235A34C46AA3FFB293709A328C3A2C3C45C06') # Jakub Jelinek <jakub@redhat.com> # Note: (Weak DSA) :(
sha512sums=('4b9e3639eef6e623747a22c37a904b4750c93b6da77cf3958d5047e9b5ebddb7eebe091cc16ca0a227c0ecbd2bf3b984b221130f269a97ee4cc18f9cf6c444de'
            'SKIP'
            '48f3b8d90550e8ab28837b5757f87bf99cddec67769877e04942abef69bbe526ef4c863951d55dd89a6027dc09df48988c8df6029782f990aa4d5b67e65f6d53'
            'bea1788b2bdc84f470e459114b871cf4ee991718964a63e18adde65116806d7676484cb30857cf74dece5eef5f96a015ee4a21900e019623e5d3484868b28b7f')

_libdir="usr/lib/gcc/$CHOST/$pkgver"

prepare() {
  cd ${srcdir}/gcc-$pkgver

  # 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

  # Hyperbola installs x86_64 libraries /lib
  [[ $CARCH == "x86_64" ]] && 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 ${srcdir}/gcc-build
}

build() {
  cd ${srcdir}/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-$pkgver/configure --prefix=/usr \
      --libdir=/usr/lib \
      --libexecdir=/usr/libexec \
      --mandir=/usr/share/man \
      --infodir=/usr/share/info \
      --with-bugurl=https://issues.hyperbola.info/ \
      --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ \
      --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 \
      --enable-multilib \
      --disable-werror \
      --enable-checking=release \
      --enable-default-pie \
      --enable-default-ssp \
      --enable-cet=auto \
      gdc_include_dir=/usr/include/dlang/gdc

  make -j8

  # make documentation
  make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
}

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}/gcc-$pkgver/contrib/test_summary
}

package_lib32-gcc-libs()
{
  pkgdesc="Runtime libraries shipped by GCC (32-bit)"
  depends=('lib32-glibc>=2.25')
  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 \
             libgfortran \
             libgo \
             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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/lib32-gcc-libs
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/lib32-gcc-libs
}

package_gcc-libs-multilib()
{
  pkgdesc="Runtime libraries shipped by GCC for multilib"
  depends=('glibc>=2.25' "lib32-gcc-libs=$pkgver-$pkgrel")
  provides=("gcc-libs=$pkgver-$pkgrel")
  conflicts=('gcc-libs')
  options=('!emptydirs' '!strip')

  cd ${srcdir}/gcc-build

  make -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared
  rm ${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

  [[ $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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-libs-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-libs-multilib
}

package_gcc-multilib()
{
  pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib"
  depends=("gcc-libs-multilib=$pkgver-$pkgrel" 'binutils>=2.28' 'libmpc')
  groups=('multilib-devel')
  options=('staticlibs')
  provides=("gcc=$pkgver-$pkgrel")
  conflicts=('gcc')

  cd ${srcdir}/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 ${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 /usr/lib/gcc/$CHOST/${pkgver}/liblto_plugin.so \
    ${pkgdir}/usr/lib/bfd-plugins/

  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/libsanitizer/tsan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
  make -C $CHOST/libsanitizer/lsan 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 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

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-multilib
}

package_gcc-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')

  cd ${srcdir}/gcc-build
  make -C $CHOST/libgfortran DESTDIR=$pkgdir install-cafexeclibLTLIBRARIES \
    install-{toolexeclibDATA,nodist_fincludeHEADERS}
  make -C $CHOST/32/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,man,info}
  install -Dm755 gcc/f951 $pkgdir/${_libdir}/f951

  ln -s gfortran ${pkgdir}/usr/bin/f95

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-fortran-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-fortran-multilib
}

package_gcc-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}/

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-objc-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-objc-multilib
}

package_gcc-ada-multilib()
{
  pkgdesc="Ada front-end for GCC (GNAT) for multilib"
  depends=("gcc-multilib=$pkgver-$pkgrel")
  provides=("gcc-ada=$pkgver-$pkgrel")
  conflicts=('gcc-ada')
  options=('staticlibs' '!emptydirs')

  cd ${srcdir}/gcc-build/gcc
  make DESTDIR=$pkgdir ada.install-{common,info}
  install -m755 gnat1 $pkgdir/${_libdir}

  cd ../$CHOST/32/libada
  make DESTDIR=${pkgdir} INSTALL="install" \
    INSTALL_DATA="install -m644" install-libada

  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}-${_pkgver}.so ${pkgdir}/usr/lib
  ln -s libgnarl-${_pkgver}.so ${pkgdir}/usr/lib/libgnarl.so
  ln -s libgnat-${_pkgver}.so ${pkgdir}/usr/lib/libgnat.so
  rm ${pkgdir}/${_libdir}/adalib/libgna{rl,t}.so

  install -d ${pkgdir}/usr/lib32/
  mv ${pkgdir}/${_libdir}/32/adalib/libgna{rl,t}-${_pkgver}.so ${pkgdir}/usr/lib32
  ln -s libgnarl-${_pkgver}.so ${pkgdir}/usr/lib32/libgnarl.so
  ln -s libgnat-${_pkgver}.so ${pkgdir}/usr/lib32/libgnat.so
  rm ${pkgdir}/${_libdir}/32/adalib/libgna{rl,t}.so

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-ada-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-ada-multilib
}

package_gcc-go-multilib()
{
  pkgdesc="Go front-end for GCC for multilib"
  depends=("gcc-multilib=$pkgver-$pkgrel")
  provides=("gcc-go=$pkgver-$pkgrel")
  conflicts=('go' 'gcc-go')
  options=('!emptydirs')

  cd ${srcdir}/gcc-build
  make -C $CHOST/libgo DESTDIR=$pkgdir install-exec-am
  make -C $CHOST/32/libgo DESTDIR=$pkgdir install-exec-am
  rm ${pkgdir}/usr/lib/libgo.so* ${pkgdir}/usr/lib32/libgo.so*
  make -C gcc DESTDIR=$pkgdir go.install-{common,man,info}
  install -Dm755 gcc/go1 $pkgdir/${_libdir}/go1

  make DESTDIR=${pkgdir} install-gotools

  # Add licenses
  install -m755 -d ${pkgdir}/usr/share/licenses/gcc-go-multilib
  install -m644 ${srcdir}/gcc-$pkgver/COPYING{3{,.LIB},.RUNTIME} ${srcdir}/COPYING.DOC \
    ${pkgdir}/usr/share/licenses/gcc-go-multilib
}

NOTE; You need a newer version of glibc for sure to finalize the compilation. Looking here for the concurrent PKGBUILD for version 2.27!

Human being in favor with clear principles and so also for freedom in soft- and hardware!

Certainly anyone who has the power to make you believe absurdities has the power to make you commit injustices: For a life of every being full with peace and kindness, including diversity and freedom. Capitalism is destroying our minds, the planet itself and the universe in the end!