#!/bin/bash
#Small wrapper to deal with compilation of the compiler and the stdlib.

RUN_DIR="`pwd`"

SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"

COMPILER_DIR="$SCRIPT_DIR/compiler"
COMPILER=heptc.byte
COMPILER_DEBUG=heptc.d.byte
LIB_DIR="$SCRIPT_DIR/lib"

#the symlink
HEPTC="$COMPILER_DIR/$COMPILER"
HEPTC_DEBUG="$COMPILER_DIR/$COMPILER_DEBUG"

#compile the compiler
if [ ! -x "$HEPTC" ]
then
	if [ -x "$HEPTC_DEBUG" ]
	then
		#use the debug
		HEPTC=$HEPTC_DEBUG
	else
		cd "$COMPILER_DIR"
		ocamlbuild -j 0 "$COMPILER"
		cd -
	fi
fi

#compile the stdlib
if [ ! -e "$LIB_DIR/pervasives.epci" ] || [ "$HEPTC" -nt "$LIB_DIR/pervasives.epci" ]
then
	cd "$LIB_DIR"
	echo "Recompile pervasives.epci"
	"$HEPTC" -nopervasives pervasives.epi
	cd -
fi

#call the compiler with the passed arguments.
cd "$RUN_DIR"
"$HEPTC" -stdlib "$LIB_DIR" "$@"