. $MO_PUBLIC/bin/lib
. $MO_PUBLIC/config
-[ -n "$1" ] || die "Usage: compile <problem>"
-PROBLEM=$1
-public-setup
-. $PDIR/config
-locate-source
-if compile ; then
- mv $TDIR/$PROBLEM .
+[ -n "$1" ] || die "Usage: compile (<problem> | <file> [<options>])"
+if [ "${1%%.*}" == "$1" ] ; then
+ # Compiling problem
+ PROBLEM=$1
+ public-setup
+ . $PDIR/config
+ locate-source
+ if compile ; then
+ mv $TDIR/$PROBLEM .
+ else
+ echo >&2
+ sed <log >&2 '1,/^Compiler output:/d;/^Compiler output files:/,$d;/^Exited /d'
+ fi
else
- echo >&2
- sed <log >&2 '1,/^Compiler output:/d;/^Compiler output files:/,$d;/^Exited /d'
+ SRC=$1
+ [ -f $SRC ] || die "$SRC doesn't exist"
+ EXE=${1%%.*}
+ SRCEXT=${1/*./}
+ shift
+ EXTRA_CFLAGS="$@"
+ CCMD=COMP_$SRCEXT
+ [ -n "${!CCMD}" ] || die "Don't know how to compile $SRC"
+ CCMD="`eval echo ${!CCMD}`"
+ echo "$CCMD"
+ $CCMD
fi