#!/bin/bash -e source $(dirname $0)/functions source $(dirname $0)/pkgversion filename=$(echo $0 | rev | cut -d / -f1 | rev) TMP=${TMP:-/tmp/build} LOG=${LOG:-$(dirname $0)/log} SRC=${SRC:-$(dirname $0)/src} NAME=gcc VERSION=${GCC_VER} fetch "http://www.mpfr.org/mpfr-$MPFR_VER/mpfr-$MPFR_VER.tar.xz" $SRC fetch "https://ftp.gnu.org/gnu/mpc/mpc-$MPC_VER.tar.gz" $SRC fetch "http://ftp.gnu.org/gnu/gmp/gmp-$GMP_VER.tar.xz" $SRC fetch "http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/gcc-$GCC_VER.tar.xz" $SRC [ "$1" = "fetch" ] && exit 0 rm -fr $TMP mkdir -p $TMP $LOG $SRC tar xf $SRC/$tarballname -C $TMP tar -xf $SRC/mpfr-$MPFR_VER.tar.xz -C $TMP/$NAME-$VERSION tar -xf $SRC/gmp-$GMP_VER.tar.xz -C $TMP/$NAME-$VERSION tar -xf $SRC/mpc-$MPC_VER.tar.gz -C $TMP/$NAME-$VERSION { time \ { cd $TMP/$NAME-$VERSION cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h for file in gcc/config/{linux,i386/linux{,64}}.h do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_STARTFILE_PREFIX_1 #undef STANDARD_STARTFILE_PREFIX_2 #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 ;; esac mv -v mpfr-$MPFR_VER mpfr mv -v gmp-$GMP_VER gmp mv -v mpc-$MPC_VER mpc mkdir -v build cd build CC=$LFS_TGT-gcc \ CXX=$LFS_TGT-g++ \ AR=$LFS_TGT-ar \ RANLIB=$LFS_TGT-ranlib \ ../configure \ --prefix=/tools \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ --disable-multilib \ --disable-bootstrap \ --disable-libgomp make make install ln -sv gcc /tools/bin/cc } } 2>&1 | tee $LOG/$filename.log [ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS rm -fr $TMP