Show More
Commit Description:
[grader] import script now support raw with testruns...
Commit Description:
[grader] import script now support raw with testruns git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@267 6386c4cd-e34a-4fa8-8920-d93eb39b512e
File last commit:
Show/Diff file:
Action:
std-script/compile | 107 lines | 2.4 KiB | text/plain | TextLexer |
#!/bin/sh
##############################
#
# Standard Compile Script
#
# Supported compilers:
# gcc, g++, and fpc.
#
##############################
talk ()
{
if [ "$TALKATIVE" != "" ]; then
echo "$1"
fi
}
export C_COMPILER=/usr/bin/gcc
export CPLUSPLUS_COMPILER=/usr/bin/g++
export PASCAL_COMPILER=/usr/bin/fpc
export C_OPTIONS="-O2 -s -static -std=c99 -DCONTEST -lm -Wall"
export CPLUSPLUS_OPTIONS="-O2 -s -static -DCONTEST -lm -Wall"
export PASCAL_OPTIONS="-O1 -XS -dCONTEST"
# Check for the correct number of arguments. Otherwise, print usage.
if [ $# -eq 0 -o $# -gt 4 ]
then
echo "Usage: $0 <language> [<source-file>] [<output-file>] [<message-file>]"
echo
echo "<source-file> is defaulted to \"source\"."
echo "<output-file> is defaulted to \"a.out\"."
echo "<message-file> is defaulted to \"compiler_message\"."
echo
exit 127
fi
# Retrieve the arguments.
if [ $# -ge 1 ]
then
export PROG_LANG=$1
talk "programming language: ${PROG_LANG}"
fi
if [ $# -ge 2 ]
then
export SOURCE_FILE=$2
else
export SOURCE_FILE=source
fi
talk " source file: $SOURCE_FILE"
if [ $# -ge 3 ]
then
export OUTPUT_FILE=$3
else
export OUTPUT_FILE=a.out
fi
talk " output file: $OUTPUT_FILE"
if [ $# -eq 4 ]
then
export MESSAGE_FILE=$4
else
export MESSAGE_FILE=compiler_message
fi
talk " message file: $MESSAGE_FILE"
# Remove any remaining output files or message files.
rm -Rf $OUTPUT_FILE
rm -Rf $MESSAGE_FILE
# Check if the source file exists before attempt compiling.
if [ ! -f $SOURCE_FILE ]
then
talk "ERROR: The source file does not exist!"
echo "ERROR: The source file did not exist." > $MESSAGE_FILE
exit 127
fi
# Compile.
if [ $PROG_LANG = "c" ]
then
$C_COMPILER $SOURCE_FILE -o $OUTPUT_FILE $C_OPTIONS 2>$MESSAGE_FILE
elif [ $PROG_LANG = "c++" ]
then
$CPLUSPLUS_COMPILER $SOURCE_FILE -o $OUTPUT_FILE $CPLUSPLUS_OPTIONS 2>$MESSAGE_FILE
elif [ $PROG_LANG = "pas" ]
then
$PASCAL_COMPILER $SOURCE_FILE -ooutpas $PASCAL_OPTIONS >$MESSAGE_FILE
mv outpas $OUTPUT_FILE
else
talk "ERROR: Invalid language specified!"
echo "ERROR: Invalid language specified!" > $MESSAGE_FILE
exit 127
fi
# Report success or failure.
if [ -f $OUTPUT_FILE ]
then
talk "Compilation was successful!"
else
talk "ERROR: Something was wrong during the compilation!"
talk "Dumping compiler message:"
#cat $MESSAGE_FILE
fi