blob: f5df18263b34aec559964fae05ab1d1a2944a883 [file] [log] [blame]
#!/bin/bash
OS=`uname`
HOSTARCH=`uname -m`
ARCHSUFFIX=.xz
PARALLEL=-j8
GNU_FTP=ftp://ftp.gnu.org/gnu
if [ "x$ARCHES" = "x" ]; then
echo need to specify architectures to build in the ARCHES environment variable
echo ie. ARCHES=\"arm sh\"
exit 1
fi
# load GCCVER and BINVER
. toolvers
UNAME=`uname`
if [ "$UNAME" = "Darwin" ]; then
export CPPFLAGS=-I/opt/local/include
export LDFLAGS=-L/opt/local/lib
fi
if [ "$FETCH" = "1" ]; then
ARCHSUFFIX=.bz2
wget -N $GNU_FTP/binutils/binutils-$BINVER.tar$ARCHSUFFIX
wget -N $GNU_FTP/gcc/gcc-$GCCVER/gcc-$GCCVER.tar$ARCHSUFFIX
wget -N $GNU_FTP/gdb/gdb-$GDBVER.tar$ARCHSUFFIX
fi
if [ ! -d binutils-$BINVER.patched ]; then
echo extracting binutils-$BINVER.tar${ARCHSUFFIX}
rm -rf binutils-$BINVER
tar xf binutils-$BINVER.tar${ARCHSUFFIX} || exit 1
echo patching binutils
patch -d binutils-$BINVER -p1 < binutils-patch.txt || exit 1
rm -rf binutils-$BINVER.patched
mv binutils-$BINVER binutils-$BINVER.patched
fi
if [ ! -d gcc-$GCCVER.patched ]; then
echo extracting gcc-$GCCVER.tar${ARCHSUFFIX}
rm -rf gcc-$GCCVER
tar xf gcc-$GCCVER.tar${ARCHSUFFIX} || exit 1
echo patching gcc
patch -d gcc-$GCCVER -p1 < gcc-patch.txt || exit 1
rm -rf gcc-$GCCVER.patched
mv gcc-$GCCVER gcc-$GCCVER.patched
fi
if [ ! -d gdb-$GDBVER.patched ]; then
echo extracting gdb-$GDBVER.tar${ARCHSUFFIX}
rm -rf gdb-$GDBVER
tar xf gdb-$GDBVER.tar${ARCHSUFFIX} || exit 1
echo patching gdb
patch -d gdb-$GDBVER -p1 < gdb-patch.txt || exit 1
rm -rf gdb-$GDBVER.patched
mv gdb-$GDBVER gdb-$GDBVER.patched
fi
for ARCH in $ARCHES; do
if [ "$ARCH" == "arm" ]; then
TARGET=arm-eabi
else
TARGET=$ARCH-elf
fi
INSTALLPATH=`pwd`/$TARGET-$GCCVER-$OS-$HOSTARCH
BINBUILDPATH=build-binutils-$BINVER-$ARCH-$OS-$HOSTARCH
GCCBUILDPATH=build-gcc-$GCCVER-$ARCH-$OS-$HOSTARCH
GDBBUILDPATH=build-gdb-$GDBVER-$ARCH-$OS-$HOSTARCH
export PATH=$INSTALLPATH/bin:$PATH
if [ ! -f $BINBUILDPATH/built.txt ]; then
(mkdir -p $BINBUILDPATH &&
cd $BINBUILDPATH &&
../binutils-$BINVER.patched/configure --target=$TARGET --prefix=$INSTALLPATH &&
#make configure-host &&
make $PARALLEL &&
make install &&
touch built.txt)
fi
if [ ! -f $GCCBUILDPATH/built.txt ]; then
ARCH_OPTIONS=
if [ $ARCH == "arm" ]; then
ARCH_OPTIONS="--with-cpu=arm926ej-s --with-fpu=vfp"
fi
(mkdir -p $GCCBUILDPATH &&
cd $GCCBUILDPATH &&
../gcc-$GCCVER.patched/configure --target=$TARGET --prefix=$INSTALLPATH --enable-languages=c,c++ $ARCH_OPTIONS &&
make all-gcc $PARALLEL &&
make all-target-libgcc $PARALLEL &&
make install-gcc &&
make install-target-libgcc &&
touch built.txt)
fi
if [ ! -f $GDBBUILDPATH/built.txt ]; then
(mkdir -p $GDBBUILDPATH &&
cd $GDBBUILDPATH &&
../gdb-$GDBVER.patched/configure --target=$TARGET --prefix=$INSTALLPATH &&
make $PARALLEL &&
make install &&
touch built.txt)
fi
done