#!/bin/sh -e
PREFIX=/usr/local/arm/
KERNEL=/home/sylam/armbuild/src/linux
#HOST=sparc-linux
HOST=
mkdir -p $PREFIX
if [ "$KERNEL" = "" -o ! -f "$KERNEL/Documentation/arm/README" ]; then
  echo "You haven't changed KERNEL to point at a valid kernel tree"
  exit 1
fi
if [ ! -f binutils-2.13.tar.bz2 ]; then
  echo Binutils 2.13 seems to be missing
  exit 1
fi
if [ ! -f gcc-3.2.tar.gz ]; then
  echo GCC 3.2 seems to be missing
  exit 1
fi
tar jxf binutils-2.13.tar.bz2
pushd binutils-2.13
./configure --target=arm-linux --prefix=$PREFIX
make 
make install
popd
rm -rf binutils-2.13
PATH=$PATH:$PREFIX/bin
rm -rf gcc-3.2
tar zxf gcc-3.2.tar.gz
pushd gcc-3.2
perl -pi -e 's/^(TARGET_LIBGCC2_CFLAGS.*)/$1 -Dinhibit_libc -D__gthr_posix_h/' gcc/config/arm/t-linux
echo 'T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h' >> gcc/config/arm/t-linux
./configure --target=arm-linux --prefix=$PREFIX $HOST --with-headers=$KERNEL/include --disable-shared --disable-threads --enable-languages="c"
make 
make install 
popd
rm -rf gcc-3.2
rm -rf glibc-2.2.5
tar zxf glibc-2.2.5.tar.gz
tar -C glibc-2.2.5 -zxf glibc-linuxthreads-2.2.5.tar.gz
pushd glibc-2.2.5
perl -pi -e 's/i386/arm*)\n\tlibc_cv_gcc_unwind_find_fde=yes\n\tarch_minimum_kernel=2.0.10\n\t;;\n   i386/' sysdeps/unix/sysv/linux/configure
perl -pi -e 's/weak_alias \(__old_sys_nerr/\/\/ $&/' sysdeps/unix/sysv/linux/arm/errlist.c
./configure arm-linux --build=i686-pc-linux-gnu --with-headers=$KERNEL/include --enable-add-ons --enable-shared --prefix=$PREFIX
make
make install
popd
pushd $PREFIX/arm-linux/lib
ln -s $PREFIX/lib/* .
popd
rm -rf glibc-2.2.5
tar zxf gcc-3.2.tar.gz
pushd gcc-3.2
./configure --target=arm-linux --prefix=$PREFIX $HOST --with-headers=$KERNEL/include 
perl -pi -e 's/int namelen/unsigned int namelen/' libjava/java/net/natInetAddress.cc
make 
make install 
popd
rm -rf gcc-3.2
