#!/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 [] [] []" echo echo " is defaulted to \"source\"." echo " is defaulted to \"a.out\"." echo " 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