summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-01-14 18:43:24 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-01-14 18:43:24 -0800
commit10270fb7bc611aa253571c9aad6b154d08471577 (patch)
tree49fed8270cd8975606a02148a3b16ebef7755f6d
parentfd41d24de546e69d12b2212e6176eb4d0ae1f858 (diff)
downloadhalt3-10270fb7bc611aa253571c9aad6b154d08471577.tar.gz
halt3-10270fb7bc611aa253571c9aad6b154d08471577.tar.bz2
halt3-10270fb7bc611aa253571c9aad6b154d08471577.zip
Support --standalone-only option.halt3-1.5
This option allows one to just generate a standalone program for testing a decider.
-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