#!/bin/bash

# http://www.nongnu.org/avr-libc/user-manual/install_tools.html

# Stop on errors
set -e
if [ ! -f .prereq ];then ./prerequise.sh;fi

source avr-file-names

# Figure out which version of the patch to use
OLD_PATCH_CUTOFF="2.32"
OLD_PATCH_CUTOFF_MAJ=${OLD_PATCH_CUTOFF%%.*}
OLD_PATCH_CUTOFF_MIN=${OLD_PATCH_CUTOFF#*.}

BINUTILS_VER=${NAME_BINUTILS#binutils-}
BINUTILS_VER_MAJ=${BINUTILS_VER%%.*}
BINUTILS_VER_MIN_TMP=${BINUTILS_VER#*.}
BINUTILS_VER_MIN=${BINUTILS_VER_MIN_TMP%.*}

if [ $BINUTILS_VER_MAJ -eq "1" ]; then
  echo "ERROR:  Binutils version 1.xx is too old -- use at least version 2.xx"
  exit 1;
fi

if [ $BINUTILS_VER_MAJ -gt $OLD_PATCH_CUTOFF_MAJ ] || \
( [ $BINUTILS_VER_MAJ -eq $OLD_PATCH_CUTOFF_MAJ ] && [ $BINUTILS_VER_MIN -gt $OLD_PATCH_CUTOFF_MIN ] ) ; then
  NAME_BINUTILS_SIZE_PATCH="avr-binutils-size-2.33.patch";
else
  NAME_BINUTILS_SIZE_PATCH="avr-binutils-size-2.32.patch";
fi


TIME_START=$(date +%s)

makeDir()
{
	rm -rf "$1/"
	mkdir -p "$1"
}


echo "Downloading sources..."

if [ ! -f $NAME_BINUTILS.tar.xz ]; then
    wget http://wareck.free.fr/cross_compilation/avr_toolchain/$NAME_BINUTILS.tar.xz
fi


# Make AVR-Binutils
NAME_BINUTILS_BLD=${NAME_BINUTILS}_bld
echo "Making Binutils in $NAME_BINUTILS_BLD..."
echo "Extracting..."
rm -rf $NAME_BINUTILS/
tar xJf $NAME_BINUTILS.tar.xz

# Patch the size function
cd $NAME_BINUTILS/binutils
patch -p 1 < ../../pack/$NAME_BINUTILS_SIZE_PATCH
cd ../..

makeDir $NAME_BINUTILS_BLD
cd $NAME_BINUTILS_BLD
../$NAME_BINUTILS/configure --prefix=$PREFIX --target=avr --disable-nls
make -j $JOBCOUNT
sudo make install-strip
cd ..


TIME_END=$(date +%s)
TIME_RUN=$(($TIME_END - $TIME_START))

echo ""
echo "Done in $TIME_RUN seconds"

exit 0