summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgenprog.sh49
1 files changed, 37 insertions, 12 deletions
diff --git a/genprog.sh b/genprog.sh
index 6a78a2b..96216f2 100755
--- a/genprog.sh
+++ b/genprog.sh
@@ -29,11 +29,31 @@ set -e # stop on any errors
MYDIR=$(dirname "$0")
CFLAGS="-Wall -W -ansi -Wno-unused -Wstrict-prototypes -Wmissing-prototypes"
+STANDALONE_ONLY=
. "$MYDIR"/lib.sh
+while [ $# -ge 1 ] ; do
+ case "$1" in
+ --standalone-only )
+ STANDALONE_ONLY=y
+ shift
+ ;;
+ --* | -* )
+ printf "%s: unrecognized option %s\n" "$0" "$1"
+ exit 1
+ ;;
+ * )
+ break
+ ;;
+ esac
+done
+
if [ $# != 2 ] ; then
- printf "usage: $0 <halting_decider>.c <error_decider.c>\n"
+ printf "usage: %s [ <options> ] <halting_decider>.c <error_decider.c>\n" "$0"
+ printf "options:\n"
+ printf " --standalone-only generate only stand-alone decider, compile it,\n"
+ printf " and do not execute it.\n"
exit 1
fi
@@ -57,8 +77,10 @@ STANDALONE_DECIDER_BASENAME=sa-${HD_HASH}
printf "halting decider: %s\n" $HALTING_DECIDER
printf "error decider: %s\n" $ERROR_DECIDER
-printf "\n"
-printf "generating program %s from these deciders\n" $PROGRAM_BASENAME.c
+
+if [ -z "$STANDALONE_ONLY" ] ; then
+ printf "\n"
+ printf "generating program %s from these deciders\n" $PROGRAM_BASENAME.c
cat > ${PROGRAM_BASENAME}.c <<!
#include <stdio.h>
@@ -122,8 +144,9 @@ int main(int argc, char **argv)
#include "$HALTING_DECIDER"
!
-printf "compiling %s to %s\n" $PROGRAM_BASENAME.c $PROGRAM_BASENAME
-gcc $CFLAGS $PROGRAM_BASENAME.c -o $PROGRAM_BASENAME
+ printf "compiling %s to %s\n" $PROGRAM_BASENAME.c $PROGRAM_BASENAME
+ gcc $CFLAGS $PROGRAM_BASENAME.c -o $PROGRAM_BASENAME
+fi
printf "\n"
@@ -163,14 +186,16 @@ int main(int argc, char **argv)
printf "compiling %s to %s\n" $STANDALONE_DECIDER_BASENAME.c $STANDALONE_DECIDER_BASENAME
gcc $CFLAGS $STANDALONE_DECIDER_BASENAME.c -o $STANDALONE_DECIDER_BASENAME
-printf "\n"
+if [ -z "$STANDALONE_ONLY" ] ; then
+ printf "\n"
-printf "executing stand alone decider: %s %s %s\n" \
- ./$STANDALONE_DECIDER_BASENAME $PROGRAM_BASENAME.c $PROGRAM_BASENAME.c
+ printf "executing stand alone decider: %s %s %s\n" \
+ ./$STANDALONE_DECIDER_BASENAME $PROGRAM_BASENAME.c $PROGRAM_BASENAME.c
-./$STANDALONE_DECIDER_BASENAME $PROGRAM_BASENAME.c $PROGRAM_BASENAME.c
+ ./$STANDALONE_DECIDER_BASENAME $PROGRAM_BASENAME.c $PROGRAM_BASENAME.c
-printf "\n"
+ printf "\n"
-printf "executing test case %s %s\n" ./$PROGRAM_BASENAME $PROGRAM_BASENAME.c
-./$PROGRAM_BASENAME $PROGRAM_BASENAME.c
+ printf "executing test case %s %s\n" ./$PROGRAM_BASENAME $PROGRAM_BASENAME.c
+ ./$PROGRAM_BASENAME $PROGRAM_BASENAME.c
+fi