SETUP_ARGS="'exit-on-error 'quiet-load"

# Setup options (based on script's name)
case "`basename "$0"`" in

    checkout-larceny-solaris-native)
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'solaris 'native"
	HEAP_DUMP_SCRIPT=src/Build/sparc-larceny-heap.sch
	DIRNAME=native
    ;;
    checkout-mzscheme-solaris-native)
	SCHEME_PGM=mzscheme
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'mzscheme 'host: 'solaris 'native"
	HEAP_DUMP_SCRIPT=src/Build/sparc-larceny-heap.sch
	DIRNAME=native
    ;;
    checkout-larceny-solaris-petit)
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'solaris"
	HEAP_DUMP_SCRIPT=src/Build/sparc-larceny-heap.sch
	DIRNAME=native
    ;;
    checkout-mzscheme-solaris-petit)
	SCHEME_PGM=mzscheme
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'mzscheme 'host: 'solaris"
	HEAP_DUMP_SCRIPT=src/Build/sparc-larceny-heap.sch
	DIRNAME=native
    ;;

    checkout-larceny-linux86-petit)
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'linux86"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=petit
    ;;
    checkout-mzscheme-linux86-petit)
	SCHEME_PGM=mzscheme
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'mzscheme 'host: 'linux86"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=petit
    ;;
    checkout-larceny-linux86-dotnet)
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'linux86 'dotnet"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=dotnet
    ;;
    checkout-mzscheme-linux86-dotnet)
	SCHEME_PGM=mzscheme
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'mzscheme 'host: 'linux86 'dotnet"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=dotnet
    ;;
    checkout-larceny-linux86-native)
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'linux86 'sassy"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=native
    ;;
    checkout-mzscheme-linux86-native)
	SCHEME_PGM=mzscheme
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'mzscheme 'host: 'linux86 'sassy"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=native
    ;;
    *)
    case "`uname`" in
	SunOS)
	echo "Setup arguments not specified; assuming Solaris native build."
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'solaris 'native"
	HEAP_DUMP_SCRIPT=src/Build/sparc-larceny-heap.sch
	DIRNAME=default
	;;
	Linux)
	echo "Setup arguments not specified; assuming linux86 native build."
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'linux86 'sassy"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=default
	;;
	Darwin)
	echo "Setup arguments not specified; assuming macosx86 native build."	
	SCHEME_PGM=larceny
	SETUP_ARGS="${SETUP_ARGS} 'scheme: 'larceny  'host: 'macosx-el 'sassy"
	HEAP_DUMP_SCRIPT=src/Build/iasn-larceny-heap.sch
	DIRNAME=default
	;;
	*)
	echo "Setup arguments not specified; unknown target architecture."
	exit 1
	;;
    esac
    ;;
esac

# Perhaps add more to this, like the hour and minute?
TODAY=`date +%Y-%m-%d` 
DIR=${HOME}/larcenytest/larceny-${DIRNAME}-${TODAY}

# Checkout source tree
mkdir -p ${DIR}
pushd ${DIR} > /dev/null
svn checkout http://uighur.ccs.neu.edu:3457/larceny-svn/trunk/larceny_src
cd larceny_src

# Build the bootstrap heap 
$SCHEME_PGM <<EOF
(begin 
  (load "setup.sch")
  (setup ${SETUP_ARGS} )
  (build-config-files)
  (load-compiler)
  (set! *make-verbose* #f)
  (build-heap)
  (build-runtime)
  (build-executable)
  (build-larceny-files))
EOF

# Build the larceny heap
echo | ./larceny.bin -stopcopy -- ${HEAP_DUMP_SCRIPT}

# Library tests
pushd test/Lib > /dev/null
../../larceny <<EOF
(begin 
  (load "load-all-tests.sch")
  (run-all-tests))
EOF
popd > /dev/null

# Compiler tests (sanity switches only)
pushd test/Compiler > /dev/null
../../larceny <<EOF
(begin 
  (load "run-tests.sch")
  (run-compiler-tests sanity-switches))
EOF
popd > /dev/null

# Benchmarks
pushd test/Benchmarking/CrossPlatform > /dev/null
LARCENY=`pwd`/../../../larceny ./bench -r 3 larceny normal
../../../larceny <<EOF
(begin
  (load "summarize.sch")
  ((summarize larceny-results) "results.Larceny"))
EOF
cat results.Larceny >> Results/results.Larceny
rm results.Larceny
popd > /dev/null

popd > /dev/null
# rm -rf $DIR
