#!/bin/bash

OS=`uname`
HOSTARCH=`uname -m`
ARCHSUFFIX=.xz
PARALLEL=-j32
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

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
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

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
	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
done
