#!/bin/bash

# compile check-oast with the SaveUnmarshal ocaml compiler
# need to adopt the its location in OCAML_TY_DIR below

#set -x
#debug=yes
#native=no

if [ ${debug:=no} = "yes" ] ; then
    native=no
fi

OCAML_TY_DIR=/usr/local/stow/ocaml-ty-2006-10-23/bin
OCAMLC=$OCAML_TY_DIR/ocamlc.opt
OCAMLOPT=$OCAML_TY_DIR/ocamlopt.opt

if [ ${native:="yes"} = "yes" ] ; then
    OCAML_LIB_EXT="cmxa"
    OCAML_OBJ_EXT="cmx"
    OCAMLCC=$OCAMLOPT
else
    OCAML_LIB_EXT="cma"
    OCAML_OBJ_EXT="cmo"
    OCAMLCC=$OCAMLC
fi

if [ $debug = "no" ] ; then
    makevar_1="OCAMLC=$OCAMLC"
    makevar_2="OCAMLOPT=$OCAMLOPT"
    makevar_3="OCAMLCC=$OCAMLCC"
    makevar_4="OCAML_OBJ_EXT=$OCAML_OBJ_EXT"
    makevar_5="OCAML_LIB_EXT=$OCAML_LIB_EXT"
else
    makevar_1="OCAMLC=$OCAMLC -g"
    makevar_2="OCAMLOPT=dont-use-ocamlopt"
    makevar_3="OCAMLCC=$OCAMLC -g"
    makevar_4="OCAML_OBJ_EXT=$OCAML_OBJ_EXT"
    makevar_5="OCAML_LIB_EXT=$OCAML_LIB_EXT"
fi

# first try if cmi are available at all
file ../elsa/*cmi 2>&1 >/dev/null

if [ $? = 0 ] ; then
    version=$(file ../elsa/*cmi | head -1 | \
	sed -e ' s/.*file (\([^)]*\)) (Version \([0-9]*\).*/\1-\2/')
else
    version=""
fi

#echo version = $version

if [ ${version:=".cmi-010"} = ".cmi-010" ] ; then
#    set -x
    (cd ../elsa; rm -f *cmi *cmo *cmx)
    (cd ../ast; rm -f *cmi *cmo *cmx)
    rm -f *cmi *cmo *cmx

    make -C ../ast "$makevar_1" "$makevar_2" "$makevar_3" "$makevar_4" \
	"$makevar_5" ast_ml_objects
    make -C ../elsa "$makevar_1" "$makevar_2" "$makevar_3" "$makevar_4" \
	"$makevar_5" elsa_ml_objects
#    set +x
fi

#set -x
make -C . "$makevar_1" "$makevar_2" "$makevar_3" "$makevar_4" "$makevar_5" \
    check-oast
make -C . "$makevar_1" "$makevar_2" "$makevar_3" "$makevar_4" "$makevar_5" \
    unmarshal