#!/bin/sh TARGET=mips-elf PREFIX=$(pwd)/install SRC_BINUTILS=binutils-2.36 SRC_GCC=gcc-10.2.0 SRC_NEWLIB=newlib-4.1.0 SRC_GMP=gmp-6.2.1 SRC_MPFR=mpfr-4.1.0 SRC_MPC=mpc-1.2.1 SRC_GDB=gdb-10.1 # --------------------------------------------------------------- # 10. Binutils bauen und installieren # --------------------------------------------------------------- BINUTILS_FILENAME=$SRC_BINUTILS.tar.bz2 if [ ! -e $BINUTILS_FILENAME ]; then echo Downloading $SRC_BINUTILS wget ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/binutils/$BINUTILS_FILENAME || exit 1 else echo Skipped downloading $SRC_BINUTILS fi if [ ! -e ./$SRC_BINUTILS ]; then echo Unpacking $SRC_BINUTILS tar -xjf $BINUTILS_FILENAME || exit 1 else echo Skipped unpacking $SRC_BINUTILS fi if [ ! -e ./$SRC_BINUTILS-build ]; then echo Building $SRC_BINUTILS mkdir -p $SRC_BINUTILS-build cd $SRC_BINUTILS-build ../$SRC_BINUTILS/configure --target=$TARGET --prefix=$PREFIX --disable-nls --disable-werror || exit 1 make -j4 || exit 1 make install || exit 1 cd .. else echo $SRC_BINUTILS is already built. fi # --------------------------------------------------------------- # 20. GMP bauen und installieren # --------------------------------------------------------------- GMP_FILENAME=$SRC_GMP.tar.lz if [ ! -e $GMP_FILENAME ]; then echo Downloading $SRC_GMP wget http://gmplib.org/download/gmp/$GMP_FILENAME || exit 1 else echo Skipped downloading $SRC_GMP fi if [ ! -e ./$SRC_GMP ]; then echo Unpacking $SRC_GMP tar --lzip -xf $GMP_FILENAME || exit 1 else echo Skipped unpacking $SRC_GMP fi if [ ! -e ./$SRC_GMP-build ]; then echo Building $SRC_GMP mkdir -p $SRC_GMP-build cd $SRC_GMP-build ../$SRC_GMP/configure --prefix=$PREFIX || exit 1 make -j4 || exit 1 make check || exit 1 make install || exit 1 cd .. else echo $SRC_GMP is already built. fi # --------------------------------------------------------------- # 30. MPFR bauen und installieren # --------------------------------------------------------------- MPFR_FILENAME=$SRC_MPFR.tar.bz2 if [ ! -e $MPFR_FILENAME ]; then echo Downloading $SRC_MPFR wget http://www.mpfr.org/mpfr-current/$MPFR_FILENAME || exit 1 else echo Skipped downloading $SRC_MPFR fi if [ ! -e ./$SRC_MPFR ]; then echo Unpacking $SRC_MPFR tar -xjf $MPFR_FILENAME || exit 1 else echo Skipped unpacking $SRC_MPFR fi if [ ! -e ./$SRC_MPFR-build ]; then echo Building $SRC_MPFR mkdir -p $SRC_MPFR-build cd $SRC_MPFR-build ../$SRC_MPFR/configure --prefix=$PREFIX --with-gmp=$PREFIX || exit 1 make -j4 || exit 1 make check || exit 1 make install || exit 1 cd .. else echo $SRC_MPFR is already built. fi # --------------------------------------------------------------- # 31. MPC bauen und installieren # --------------------------------------------------------------- MPC_FILENAME=$SRC_MPC.tar.gz if [ ! -e $MPC_FILENAME ]; then echo Downloading $SRC_MPC wget ftp://ftp.gnu.org/gnu/mpc/$MPC_FILENAME || exit 1 else echo Skipped downloading $SRC_MPC fi if [ ! -e ./$SRC_MPC ]; then echo Unpacking $SRC_MPC tar -xzf $MPC_FILENAME || exit 1 else echo Skipped unpacking $SRC_MPC fi if [ ! -e ./$SRC_MPC-build ]; then echo Building $SRC_MPC mkdir -p $SRC_MPC-build cd $SRC_MPC-build ../$SRC_MPC/configure --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX || exit 1 make -j4 || exit 1 make check || exit 1 make install || exit 1 cd .. else echo $SRC_MPC is already built. fi # --------------------------------------------------------------- # 40. GCC & newlib bauen und installieren # --------------------------------------------------------------- NEWLIB_FILENAME=$SRC_NEWLIB.tar.gz if [ ! -e $NEWLIB_FILENAME ]; then echo Downloading $SRC_NEWLIB wget ftp://sourceware.org/pub/newlib/$NEWLIB_FILENAME || exit 1 else echo Skipped downloading $SRC_NEWLIB fi if [ ! -e ./$SRC_NEWLIB ]; then echo Unpacking $SRC_NEWLIB tar -xzf $NEWLIB_FILENAME || exit 1 if [ -e $SRC_NEWLIB-jens.patch ]; then echo Patching $SRC_NEWLIB patch -p0 < $SRC_NEWLIB-jens.patch || exit 1 fi else echo Skipped unpacking $SRC_NEWLIB fi GCC_FILENAME=$SRC_GCC.tar.gz if [ ! -e $GCC_FILENAME ]; then echo Downloading $SRC_GCC wget ftp://ftp.gnu.org/gnu/gcc/$SRC_GCC/$GCC_FILENAME || exit 1 else echo Skipped downloading $SRC_GCC fi if [ ! -e ./$SRC_GCC ]; then echo Unpacking $SRC_GCC tar -xzf $GCC_FILENAME || exit 1 cd ./$SRC_GCC ln -sf ../$SRC_NEWLIB/newlib/ . cd .. else echo Skipped unpacking $SRC_GCC fi if [ ! -e ./$SRC_GCC-build ]; then echo Building $SRC_GCC mkdir -p $SRC_GCC-build cd $SRC_GCC-build ../$SRC_GCC/configure --target=$TARGET --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-float=soft --with-newlib --verbose --enable-languages="c,c++" --with-gnu-as --with-gnu-ld --disable-nls --disable-threads --disable-multilib --without-headers --disable-shared --enable-lto -disable-werror || exit 1 make -j4 all || exit 1 make info || exit 1 make install || exit 1 cd .. echo $PREFIX/lib >$TARGET.conf echo $PREFIX/$TARGET/lib >>$TARGET.conf echo "Do the following:" echo " #$ sudo mv local.conf /etc/ld.so.conf.d/$TARGET.conf" echo " #$ sudo ldconfig" else echo $SRC_GCC is already built. fi # --------------------------------------------------------------- # 50. GDB bauen und installieren # --------------------------------------------------------------- GDB_FILENAME=$SRC_GDB.tar.xz if [ ! -e $GDB_FILENAME ]; then echo Downloading $SRC_GDB wget ftp://ftp.gnu.org/gnu/gdb/$GDB_FILENAME || exit 1 else echo Skipped downloading $SRC_GDB fi if [ ! -e ./$SRC_GDB ]; then echo Unpacking $SRC_GDB tar -xJf $GDB_FILENAME || exit 1 else echo Skipped unpacking $SRC_GDB fi if [ ! -e ./$SRC_GDB-build ]; then echo Building $SRC_GDB mkdir -p $SRC_GDB-build cd $SRC_GDB-build ../$SRC_GDB/configure --target=$TARGET --prefix=$PREFIX || exit 1 make || exit 1 make install || exit 1 cd .. else echo $SRC_GDB is already built. fi echo Finished building toolchain.