]> mj.ucw.cz Git - eval.git/blobdiff - public/compile
Parts of local history.
[eval.git] / public / compile
index b640c89bbe2082af3644086c9e4fe498f4a2fa46..0a180d3f2d81b19cc8652c82cf2ced8750058681 100644 (file)
@@ -6,14 +6,29 @@ set -e
 . $MO_PUBLIC/bin/lib
 . $MO_PUBLIC/config
 
 . $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
 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
 fi