Files
mips/toolchain/make.sh
T
jens ae7bc7083b - added work dir
- added .gitigore.templ
2022-06-30 17:31:16 +02:00

231 lines
6.0 KiB
Bash
Executable File

#!/bin/sh
TARGET=mips-elf
WORK_DIR=$(pwd)/work
PREFIX=$WORK_DIR/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
mkdir -p $WORK_DIR
cd $WORK_DIR
# ---------------------------------------------------------------
# 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.