name=gcc version=9.2.0 gmp_version=6.1.2 mpc_version=1.1.0 mpfr_version=4.0.2 source=(http://ftp.gnu.org/gnu/gcc/gcc-$version/gcc-$version.tar.xz http://ftp.gnu.org/gnu/gmp/gmp-$gmp_version.tar.xz https://ftp.gnu.org/gnu/mpc/mpc-$mpc_version.tar.gz http://www.mpfr.org/mpfr-$mpfr_version/mpfr-$mpfr_version.tar.xz) build() { if [ "$MULTILIB" = "yes" ]; then multilibopt="--with-multilib-list=m32,m64" else multilibopt="--disable-multilib" fi cd $name-$version mv -v ../mpfr-$mpfr_version mpfr mv -v ../gmp-$gmp_version gmp mv -v ../mpc-$mpc_version mpc 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 if [ "$MULTILIB" = "yes" ]; then sed -i -e 's@/lib/ld-linux.so.2@/lib32/ld-linux.so.2@g' gcc/config/i386/linux64.h sed -i -e '/MULTILIB_OSDIRNAMES/d' gcc/config/i386/t-linux64 echo "MULTILIB_OSDIRNAMES = m64=../lib m32=../lib32 mx32=../libx32" >> gcc/config/i386/t-linux64 else sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 fi mkdir -v build cd build CC=$LFS_TGT-gcc \ CXX=$LFS_TGT-g++ \ AR=$LFS_TGT-ar \ RANLIB=$LFS_TGT-ranlib \ ../configure $multilibopt \ --prefix=/tools \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ --disable-bootstrap \ --disable-libgomp make make install ln -sv gcc /tools/bin/cc }