#!/bin/bash
GDB_VERSION="3.4-5"
GCC_VERSION="4.0"
GCC_DEBIAN_VERSION="4.0.3-7"
LIBC_VERSION="2.3.6.ds1-8"
HEADERS_VERSION="2.6.18-6"
ARCH=arm
MIRROR=http://debian.osuosl.org/debian
if test -d cross-toolchain ; then
    echo "The cross-toolchain directory already exists; please move or remove it."
fi
mkdir cross-toolchain
cd cross-toolchain
for p in fakeroot dpkg-cross gobjc gobjc-4.1 libobjc1 type-handling 
do
	if ! dpkg --status $p | grep -q '^Status: install ok installed$' ; then
		apt-get install $p
	fi
done
apt-get source binutils gcc-$GCC_VERSION=$GCC_DEBIAN_VERSION gdb
sudo apt-get build-dep binutils gcc-$GCC_VERSION

# Build and install binutils
cd binutils*/
TARGET=$ARCH-linux-gnu fakeroot debian/rules binary-cross > ../binutils.build 2>&1 || echo 'Build error'
cd ..
sudo dpkg -i binutils-$ARCH-linux-gnu_*.deb

# Convert and install target library packages
wget "${MIRROR}/pool/main/g/glibc/libc6-dev_${LIBC_VERSION}_${ARCH}.deb"
wget "${MIRROR}/pool/main/g/glibc/libc6_${LIBC_VERSION}_${ARCH}.deb"
wget "${MIRROR}/pool/main/l/linux-kernel-headers/linux-kernel-headers_${HEADERS_VERSION}_${ARCH}.deb"
dpkg-cross -a ${ARCH} -b l*.deb
sudo dpkg -i l*${ARCH}-cross*.deb

# Build and install GCC
cd gcc-*/
export GCC_TARGET=$ARCH
export DEB_CROSS_INDEPENDENT=yes
debian/rules control
dpkg-buildpackage -us -uc -rfakeroot -b > ../gcc.build 2>&1 || echo 'Build error'
cd ..
sudo dpkg -i *-4.0-${ARCH}-linux-gnu*.deb *-${ARCH}-cross_4.0*.deb

# Build and install GDB
cd gdb*/
./configure --target=arm-linux-gnu
make
sudo make prefix=/usr/local/stow/gdb-arm
