#!/bin/bash

# $Id: build-tinyos-2.x-latest-cvs,v 1.3 2006/08/03 15:35:12 razvanm Exp $

PREFIX=$HOME/local

# ### AVR

# # avr-binutils
echo --- Building avr-binutils... 

tar xjvf binutils-2.15.tar.bz2
cd binutils-2.15
patch -p1 < ../avr-binutils-2.15tinyos.patch
./configure --target=avr --prefix=$PREFIX
make || exit 1
make install
cd ..

# # avr-gcc
echo --- Building avr-gcc... 

tar xjvf gcc-core-3.4.3.tar.bz2
cd gcc-3.4.3
# tar xjvf avr-gcc-3.3tinyos.tar.bz2
# cd avr-gcc-3.3tinyos
./configure --target=avr --disable-nls --prefix=$PREFIX
make || exit 1
make install
cd ..

# # avr-libc
echo --- Building avr-libc... 

tar xjvf avr-libc-1.2.3.tar.bz2
cd avr-libc-1.2.3
# update ./doconf
perl -i.orig -pe 's{\{(PREFIX:=)(.*)\}}{\{${1}'"$PREFIX"'\}}' doconf
./doconf
cd build/
make || exit 1
make install
cd ../..

### MSP430

# msp430-binutils
echo --- Building msp430-binutils... 

tar --bzip2 -xvf binutils-2.16.tar.bz2
cd binutils-2.16
perl -i.orig -pe 's/define (LEX_DOLLAR) 0/undef $1/' gas/config/tc-msp430.h
./configure --target=msp430 --prefix=$PREFIX
make || exit 1
make install || exit 1
cd ..

# msp430-gcc
echo --- Building msp430-gcc... 

#cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co -P gcc
tar xzvf msp430-gcc.2005-05-23.tar.gz
mv gcc mspgcc-cvs
tar --bzip2 -xvf gcc-core-3.2.3.tar.bz2
cp -a mspgcc-cvs/gcc-3.3/* gcc-3.2.3
cd gcc-3.2.3
./configure --target=msp430 --prefix=$PREFIX
make || exit 1
make install || exit 1
cd ..

# msp430-libc
echo --- Building msp430-libc... 

#cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co -P msp430-libc
tar xzvf msp430-libc.2005-05-23.tar.gz
cd msp430-libc/src
[ -d msp1 ] || mkdir msp1
[ -d msp2 ] || mkdir msp2
perl -i.orig -pe 's{^(prefix\s*=\s*)(.*)}{${1}'"$PREFIX"'}' Makefile
make || exit 1
make install || exit 1
cd ../..

# msp430tools-python-tools-1.0-1.tar.gz
echo --- Unpacking msp430tools-python-tools-1.0-1.tar.gz... 
tar xzvf msp430tools-python-tools-1.0-1.tar.gz
cp -rp msp430tools-python-tools-1.0-1/* $PREFIX
rmdir msp430-bsl

### nesC/TinyOS

# nesc
echo --- Building nesc... 

tar xzvf nesc-1.2.8a.tar.gz
cd nesc-1.2.8a
./configure --prefix=$PREFIX
make || exit 1
make install || exit 1
cd ..

# tinyos
echo --- Downloading tinyos... 

cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co tinyos-2.x
cd tinyos-2.x/tools
./Bootstrap
./configure --prefix=$PREFIX
make || exit 1
make install || exit 1
cd ../..

# compile the C SDK for serial communication
cd tinyos-2.x/support/sdk/c/
./bootstrap
./configure --prefix=$PREFIX
make || exit 1
cd ../../../../

cat <<EOF
Add this to the ~/.bash_profile:
  export TOSROOT=`pwd`/tinyos-2.x
  export TOSDIR=\$TOSROOT/tos
  export MAKERULES=\$TOSROOT/support/make/Makerules
EOF
