rendered paste body#!/bin/bash
TARGET_DIR=`pwd`
BINUTILS_VER=2.18.50
GCC_VER=4.3.0
NEWLIB_VER=1.16.0
GMP_VER=4.2.2
MPFR_VER=2.3.1
GDB_VER=6.7.1
TARGET=m68k-elf
HOST=linux-x86_64
LOGFILETMP=$TARGET_DIR/gen/$HOST/$TARGET/tmp.log
mkdir -p $TARGET_DIR/gen/$HOST/$TARGET/
echo "Building $TARGET cross compile tools for $HOST"
echo " - Downloading necessary packages"
mkdir -p $TARGET_DIR/source
cd $TARGET_DIR/source
if [ ! -e "gmp-$GMP_VER.tar.bz2" ]
then wget http://ftp.sunet.se/pub/gnu/gmp/gmp-$GMP_VER.tar.bz2
fi
if [ ! -e "mpfr-$MPFR_VER.tar.bz2" ]
then wget http://www.mpfr.org/mpfr-current/mpfr-$MPFR_VER.tar.bz2
fi
if [ ! -e "binutils-$BINUTILS_VER.tar.bz2" ]
then wget ftp://ftp.sunet.se/pub/gnu/binutils/binutils-$BINUTILS_VER.tar.bz2
fi
if [ ! -e "newlib-$NEWLIB_VER.tar.gz" ]
then wget ftp://sources.redhat.com/pub/newlib/newlib-$NEWLIB_VER.tar.gz
fi
if [ ! -e "gcc-$GCC_VER.tar.bz2" ]
then wget ftp://ftp.sunet.se/pub/gnu/gcc/releases/gcc-$GCC_VER/gcc-$GCC_VER.tar.bz2
fi
echo " - Extracting packages"
cd $TARGET_DIR/source
if [ ! -e "gmp-$GMP_VER" ]
then echo " >> gmp-$GMP_VER.tar.bz2"
tar -xf gmp-$GMP_VER.tar.bz2
fi
if [ ! -e "mpfr-$MPFR_VER" ]
then echo " >> mpfr-$MPFR_VER.tar.bz2"
tar -xf mpfr-$MPFR_VER.tar.bz2
fi
if [ ! -e "binutils-$BINUTILS_VER" ]
then echo " >> binutils-$BINUTILS_VER.tar.bz2"
tar -xf binutils-$BINUTILS_VER.tar.bz2
fi
if [ ! -e "newlib-$NEWLIB_VER" ]
then echo " >> newlib-$NEWLIB_VER.tar.gz"
tar -xf newlib-$NEWLIB_VER.tar.gz
fi
if [ ! -e "gcc-$GCC_VER" ]
then echo " >> gcc-$GCC_VER.tar.bz2"
tar -xf gcc-$GCC_VER.tar.bz2
fi
export target=$TARGET
export host_prefix=$TARGET_DIR/bin/$HOST
export cross_prefix=$host_prefix/tools/$TARGET
export i=$cross_prefix/bin
mkdir -p $TARGET_DIR/gen/$HOST/
if [ -e "$TARGET_DIR/source/gmp-$GMP_VER" ]
then echo " - Building GMP $GMP_VER (prerequisite)"
mkdir -p $TARGET_DIR/gen/$HOST/gmp-$GMP_VER
cd $TARGET_DIR/gen/$HOST/gmp-$GMP_VER
if [ ! -e "$TARGET_DIR/gen/$HOST/gmp-$GMP_VER/.configured" ]
then echo " Configuring .."
rm $TARGET_DIR/gen/$HOST/gmp-config.log 2>/dev/null >/dev/null
../../../source/gmp-$GMP_VER/configure --prefix=$host_prefix 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/gmp-config.log
echo "done" > $TARGET_DIR/gen/$HOST/gmp-$GMP_VER/.configured
fi
echo " Compiling .."
rm $TARGET_DIR/gen/$HOST/gmp-build.log 2>/dev/null >/dev/null
make 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/gmp-build.log
make install 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/gmp-build.log
make clean 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/gmp-build.log
fi
if [ -e "$TARGET_DIR/source/mpfr-$MPFR_VER" ]
then echo " - Building MPFR $MPFR_VER (prerequisite)"
mkdir -p $TARGET_DIR/gen/$HOST/mpfr-$MPFR_VER
cd $TARGET_DIR/gen/$HOST/mpfr-$MPFR_VER
if [ ! -e "$TARGET_DIR/gen/$HOST/mpfr-$MPFR_VER/.configured" ]
then echo " Configuring .."
rm $TARGET_DIR/gen/$HOST/mpfr-config.log 2>/dev/null >/dev/null
../../../source/mpfr-$MPFR_VER/configure --prefix=$host_prefix 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/mpfr-config.log
echo "done" > $TARGET_DIR/gen/$HOST/mpfr-$MPFR_VER/.configured
fi
echo " Compiling .."
rm $TARGET_DIR/gen/$HOST/mpfr-build.log 2>/dev/null >/dev/null
make 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/mpfr-build.log
make check 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/mpfr-build.log
make install 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/mpfr-build.log
make clean 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/mpfr-build.log
fi
if [ -e "$TARGET_DIR/source/binutils-$BINUTILS_VER" ]
then echo " - Building toolchain"
mkdir -p $TARGET_DIR/gen/$HOST/$TARGET/binutils-$BINUTILS_VER
cd $TARGET_DIR/gen/$HOST/$TARGET/binutils-$BINUTILS_VER
if [ ! -e "$TARGET_DIR/gen/$HOST/$TARGET/binutils-$BINUTILS_VER/.configured" ]
then echo " Configuring .."
rm $TARGET_DIR/gen/$HOST/$TARGET/binutils-config.log 2>/dev/null >/dev/null
../../../../source/binutils-$BINUTILS_VER/configure --target=$target --prefix=$cross_prefix 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/binutils-config.log
echo "done" > $TARGET_DIR/gen/$HOST/$TARGET/binutils-$BINUTILS_VER/.configured
fi
echo " Compiling .."
rm $TARGET_DIR/gen/$HOST/$TARGET/binutils-build.log 2>/dev/null >/dev/null
make 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/binutils-build.log
make install 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/binutils-build.log
make clean 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/binutils-build.log
fi
if [ -e "$TARGET_DIR/source/gcc-$GCC_VER" ]
then echo " - Building GCC $GCC_VER"
if [ -e "$TARGET_DIR/source/newlib-$NEWLIB_VER" ]
then echo " Creating prerequisite library aliases"
cd $TARGET_DIR/source/gcc-$GCC_VER
ln -s ../newlib-$NEWLIB_VER/newlib . 2>/dev/null >/dev/null
ln -s ../newlib-$NEWLIB_VER/libgloss . 2>/dev/null >/dev/null
fi
mkdir -p $TARGET_DIR/gen/$HOST/$TARGET/gcc-$GCC_VER
cd $TARGET_DIR/gen/$HOST/$TARGET/gcc-$GCC_VER
if [ ! -e "$TARGET_DIR/gen/$HOST/$TARGET/gcc-$GCC_VER/.configured" ]
then echo " Configuring .."
rm $TARGET_DIR/gen/$HOST/$TARGET/gcc-config.log 2>/dev/null >/dev/null
../../../../source/gcc-$GCC_VER/configure --target=$target --prefix=$cross_prefix --enable-languages=c --disable-libssp --with-newlib --enable-newlib-io-long-long --with-gnu-as --with-gnu-ld --with-gmp-lib=$host_prefix/lib --with-gmp-include=$host_prefix/include --with-mpfr-lib=$host_prefix/lib --with-mpfr-include=$host_prefix/include 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/gcc-config.log
echo "done" > $TARGET_DIR/gen/$HOST/$TARGET/gcc-$GCC_VER/.configured
fi
echo " Compiling .."
rm $TARGET_DIR/gen/$HOST/$TARGET/gcc-build.log 2>/dev/null >/dev/null
make "CFLAGS = -DREENTRANT_SYSCALLS_PROVIDED" 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/gcc-build.log
make install 2>$LOGFILETMP >$LOGFILETMP
cat $LOGFILETMP >> $TARGET_DIR/gen/$HOST/$TARGET/gcc-build.log
fi
rm $LOGFILETMP
echo "Build of $TARGET cross compile tools completed"