#!/bin/sh

INPUTNAME=""
CTALKBIN=`which ctalk`
GCCBIN=`which gcc`
EXTRALIBS=
GCCMAJORVER=`$GCCBIN --version | cut -d . -f 1`
OUTFILENAME="ctalk.out"
CTALKOUTPUT="ctalk.out.i"
INCLUDEFLAGS=""
LD_LIBRARY_OPT=`if [ $LD_LIBRARY_PATH ]; then printf "%s" -L$LD_LIBRARY_PATH; else printf " "; fi;`

case $GCCMAJORVER in 
    2)
    GCCFLAGS=""
    ;;
    *)
    GCCFLAGS="-O3"
    ;;
esac

help () {
    echo "Usage: ctcc [-h] [-I dir] [-k] [-m] [-o output-file] input-files"
    echo "-h      Print help and exit."
    echo "-I dir  Add directory to Ctalk search path."
    echo "-m      Add -lm to linker flags."
    echo "-o arg  Name the output file to the argument.  The default output "
    echo "        file name is, \"ctalk.out.\""
    echo "Report bugs to: ctalk@ctalklang.org."
    exit 1;
}

if [ $# -eq 0 ] ; then help; fi

while [ $# -ge 1 ] ; do
    case $1 in
	-m)
	  EXTRALIBS=$EXTRALIBS" -lm";
	  shift 1;
	  ;;
	-h)
	  help;
	  ;;
	-I)
	  shift 1;
	  INCLUDEFLAGS=$INCLUDEFLAGS" -I $1 ";
	  shift 1;
	  ;;
	-o)
	  shift 1;
	  OUTFILENAME=$1;
	  CTALKOUTPUT=$OUTFILENAME".i";
	  shift 1;
	  ;;
	*)
	  INPUTNAME=$INPUTNAME" $1 ";
	  shift 1;
	  ;;
    esac
done

if [ -z "$INPUTNAME" ] ; then help; fi 

echo "$CTALKBIN $INCLUDEFLAGS $CTALKFLAGS $INPUTNAME -o $CTALKOUTPUT && $GCCBIN $GCCFLAGS $CTALKOUTPUT -o $OUTFILENAME -lctalk $LD_LIBRARY_OPT $EXTRALIBS "
$CTALKBIN $INCLUDEFLAGS $CTALKFLAGS $INPUTNAME -o $CTALKOUTPUT && $GCCBIN $GCCFLAGS $CTALKOUTPUT -o $OUTFILENAME -lctalk $LD_LIBRARY_OPT $EXTRALIBS 

