blob: 1d73682305b4c249628134c19e792a39d8f682ce [file] [log] [blame]
#!/bin/bash
OS=`uname`
HOSTARCH=`uname -m`
ARCHSUFFIX=.xz
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
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
cd gcc-$GCCVER
tar xf ../gmp-*
tar xf ../mpc-*
tar xf ../mpfr-*
ln -sf gmp-* gmp
ln -sf mpc-* mpc
ln -sf mpfr-* mpfr
cd ..
rm -rf gcc-$GCCVER.patched
mv gcc-$GCCVER gcc-$GCCVER.patched
fi
for ARCH in $ARCHES; do
# INSTALLPATH=~/toolchains/$ARCH-elf-$GCCVER
INSTALLPATH=`pwd`/$ARCH-elf-$GCCVER-$OS-$HOSTARCH
BINBUILDPATH=build-binutils-$BINVER-$ARCH-$OS-$HOSTARCH
GCCBUILDPATH=build-gcc-$GCCVER-$ARCH-$OS-$HOSTARCH
export PATH=$INSTALLPATH/bin:$PATH
if [ ! -f $BINBUILDPATH/built.txt ]; then
(mkdir -p $BINBUILDPATH &&
cd $BINBUILDPATH &&
../binutils-$BINVER.patched/configure --target=$ARCH-elf --prefix=$INSTALLPATH &&
make configure-host &&
make -j32 &&
make install &&
touch built.txt)
fi
if [ ! -f $GCCBUILDPATH/built.txt ]; then
(mkdir -p $GCCBUILDPATH &&
cd $GCCBUILDPATH &&
../gcc-$GCCVER.patched/configure --target=$ARCH-elf --prefix=$INSTALLPATH --enable-languages=c,c++ --disable-libssp &&
make configure-host &&
make -j32 &&
make install &&
touch built.txt)
fi
done