#! /bin/sh
# jcomp -- compile Java code using BOCK
# usage: jcomp <startclass> <programfile> <sourcefile>...

set -e

if test $# = 0; then
  cat 1>&2 << EOF
usage: jcomp [-O] [-E] [-o programfile] [-s startclass] sourcefile...
 -O        optimise
 -E        write C to standard output; don'\''t generate binary
 -o name   write program to name (j.out if not specified)
 -s class  start executing at class.main() (taken from name of first
                                        source file if not specified
EOF
#If no source files, use <programfile>*.java'
#If no startclass, use Test'
#If no programfile, use j.out'
  exit 1
fi

opt=
output=false
programfile=j.out
startclass=
sourcefile=

while test $# -gt 0; do
  case "$1" in
  -O) opt=-02 ;;
  -E) output=true ;;
  -o) programfile="$2" ; shift ;;
  -s) startclass="$2" ; shift ;;
  -*) echo 1>&2 "Unknown flag $1" ; exit 1 ;;
  *) sourcefile="$sourcefile $1" ;;
  esac
  shift
done

if test "$sourcefile" = ""; then
  echo 1>&2 "No sourcefile specified" ; exit 1
fi

if test "$startclass" = ""; then
  startclass=`basename "$sourcefile" .java`
  echo 1>&2 "Startclass not specified; using $startclass"
fi

imfile=jcomp.$$.c
trap 'rm -f $imfile' EXIT

#if test "$*" = ""; then set ${programfile}*.java; fi

prefix=/usr
exec_prefix=${prefix}

set +e

if $output; then
  ${BOCK:-bock} -s $startclass $sourcefile ${BOCKLIB:-${prefix}/share/bock/lib}/*
else
  ${BOCK:-bock} -s $startclass $sourcefile -o $imfile \
                ${BOCKLIB:-${prefix}/share/bock/lib}/* \
  && ${CC:-cc} $opt $imfile -o $programfile -lgc 
fi

exit $?
