4 # Author: Markus Wenzel, TU Muenchen
6 # DESCRIPTION: build object-logic or run examples
11 PRG="$(basename "$0")"
16 echo "Usage: $PRG [OPTIONS] LOGIC NAME"
19 echo " -C BOOL copy existing document directory to -D PATH (default true)"
20 echo " -D PATH dump generated document sources into PATH"
21 echo " -M MAX multithreading: maximum number of worker threads (default 1)"
22 echo " -P PATH set path for remote theory browsing information"
23 echo " -T LEVEL multithreading: trace level (default 0)"
24 echo " -V VERSION declare alternative document VERSION"
25 echo " -b build mode (output heap image, using current dir)"
26 echo " -c BOOL tell ML system to compress output image (default true)"
27 echo " -d FORMAT build document as FORMAT (default false)"
28 echo " -f NAME use ML file NAME (default ROOT.ML)"
29 echo " -g BOOL generate session graph image for document (default false)"
30 echo " -i BOOL generate HTML and graph browser information (default false)"
31 echo " -m MODE add print mode for output"
32 echo " -p LEVEL set level of detail for proof objects"
33 echo " -r reset session path"
34 echo " -s NAME override session NAME"
35 echo " -v BOOL be verbose (default false)"
37 echo " Build object-logic or run examples. Also creates browsing"
38 echo " information (HTML etc.) according to settings."
40 echo " ISABELLE_USEDIR_OPTIONS=$ISABELLE_USEDIR_OPTIONS"
41 echo " HOL_USEDIR_OPTIONS=$HOL_USEDIR_OPTIONS"
54 [ "$1" = true -o "$1" = false ] || fail "Bad boolean: \"$1\""
57 function check_number()
59 [ -n "$1" -a -z "$(echo "$1" | tr -d '[0-9]')" ] || fail "Bad number: \"$1\""
63 ## process command line
88 while getopts "C:D:M:P:T:V:bc:d:f:g:i:m:p:rs:v:" OPT
99 check_number "$OPTARG"
106 check_number "$OPTARG"
107 TRACETHREADS="$OPTARG"
110 if [ -z "$DOCUMENT_VERSIONS" ]; then
111 DOCUMENT_VERSIONS="\"$OPTARG\""
113 DOCUMENT_VERSIONS="$DOCUMENT_VERSIONS, \"$OPTARG\""
131 DOCUMENT_GRAPH="$OPTARG"
138 if [ -z "$MODES" ]; then
141 MODES="\"$OPTARG\", $MODES"
145 check_number "$OPTARG"
165 getoptions $ISABELLE_USEDIR_OPTIONS
168 shift $(($OPTIND - 1))
173 [ "$#" -ne 2 ] && usage
178 [ -z "$SESSION" ] && SESSION=$(basename "$NAME")
184 # prepare browser info dir
186 if [ "$INFO" = "true" -a ! -f "$ISABELLE_BROWSER_INFO/index.html" ]; then
187 mkdir -p "$ISABELLE_BROWSER_INFO"
188 cp "$ISABELLE_HOME/lib/logo/isabelle.gif" "$ISABELLE_BROWSER_INFO/isabelle.gif"
189 cp "$ISABELLE_HOME/lib/html/index.html" "$ISABELLE_BROWSER_INFO/index.html"
195 LOGDIR="$ISABELLE_OUTPUT/log"
201 PARENT=$(basename "$LOGIC")
203 if [ -z "$BUILD" ]; then
204 cd "$NAME" || fail "Bad session directory '$NAME'"
207 if [ "$DOCUMENT" != false ]; then
214 . "$ISABELLE_HOME/lib/scripts/timestart.bash"
216 if [ -n "$BUILD" ]; then
218 echo "Building $ITEM ..." >&2
222 [ "$COMPRESS" = true ] && OPT_C="-c"
225 -e "Session.use_dir \"$ROOT_FILE\" true [$MODES] $RESET $INFO \"$DOC\" $DOCUMENT_GRAPH [$DOCUMENT_VERSIONS] \"$PARENT\" \"$SESSION\" ($COPY_DUMP, \"$DUMP\") \"$RPATH\" $PROOFS $VERBOSE $MAXTHREADS $TRACETHREADS;" \
226 $OPT_C -q -w $LOGIC $NAME > "$LOG"
229 ITEM=$(basename "$LOGIC")-"$SESSION"
230 echo "Running $ITEM ..." >&2
234 -e "Session.use_dir \"$ROOT_FILE\" false [$MODES] $RESET $INFO \"$DOC\" $DOCUMENT_GRAPH [$DOCUMENT_VERSIONS] \"$PARENT\" \"$SESSION\" ($COPY_DUMP, \"$DUMP\") \"$RPATH\" $PROOFS $VERBOSE $MAXTHREADS $TRACETHREADS; quit();" \
235 -r -q "$LOGIC" > "$LOG"
240 . "$ISABELLE_HOME/lib/scripts/timestop.bash"
245 if [ "$RC" -eq 0 ]; then
246 echo "Finished $ITEM ($TIMES_REPORT)" >&2
249 { echo "$ITEM FAILED";
250 echo "(see also $LOG)";
251 echo; tail "$LOG"; echo; } >&2