| author | berghofe | 
| Mon, 31 Jul 2006 14:08:42 +0200 | |
| changeset 20267 | 1154363129be | 
| parent 17792 | 4a34fd6884b1 | 
| child 20923 | 059926d1d074 | 
| permissions | -rwxr-xr-x | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 1 | #!/usr/bin/env bash | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 2 | # | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 3 | # $Id$ | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 4 | # Author: Markus Wenzel, TU Muenchen | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 5 | # | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 6 | # Isabelle process startup script. | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 7 | |
| 15843 | 8 | if [ -L "$0" ]; then | 
| 9 | TARGET="$(LC_ALL=C ls -l "$0" | sed 's/.* -> //')" | |
| 15967 | 10 | exec "$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd "$(dirname "$TARGET")"; pwd)/$(basename "$TARGET")" "$@" | 
| 15843 | 11 | fi | 
| 12 | ||
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 13 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 14 | ## settings | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 15 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 16 | PRG="$(basename "$0")" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 17 | |
| 15967 | 18 | ISABELLE_HOME="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd ..; pwd)" | 
| 19 | source "$ISABELLE_HOME/lib/scripts/getsettings" || exit 2 | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 20 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 21 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 22 | ## diagnostics | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 23 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 24 | function usage() | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 25 | {
 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 26 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 27 | echo "Usage: $PRG [OPTIONS] [INPUT] [OUTPUT]" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 28 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 29 | echo " Options are:" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 30 | echo " -C tell ML system to copy output image" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 31 | echo " -I startup Isar interaction mode" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 32 | echo " -P startup Proof General interaction mode" | 
| 16101 | 33 | echo " -X startup PGIP interaction mode" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 34 | echo " -c tell ML system to compress output image" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 35 | echo " -e MLTEXT pass MLTEXT to the ML session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 36 | echo " -f pass 'Session.finish();' to the ML session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 37 | echo " -m MODE add print mode for output" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 38 | echo " -q non-interactive session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 39 | echo " -r open heap file read-only" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 40 | echo " -u pass 'use\"ROOT.ML\";' to the ML session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 41 | echo " -w reset write permissions on OUTPUT" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 42 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 43 | echo " INPUT (default \"$ISABELLE_LOGIC\") and OUTPUT specify in/out heaps." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 44 | echo " These are either names to be searched in the Isabelle path, or" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 45 | echo " actual file names (containing at least one /)." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 46 | echo " If INPUT is \"RAW_ML_SYSTEM\", just start the bare bones ML system." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 47 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 48 | exit 1 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 49 | } | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 50 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 51 | function fail() | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 52 | {
 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 53 | echo "$1" >&2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 54 | exit 2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 55 | } | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 56 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 57 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 58 | ## process command line | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 59 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 60 | # options | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 61 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 62 | COPYDB="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 63 | ISAR=false | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 64 | PROOFGENERAL="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 65 | COMPRESS="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 66 | MLTEXT="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 67 | MODES="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 68 | TERMINATE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 69 | READONLY="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 70 | NOWRITE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 71 | |
| 16101 | 72 | while getopts "XCIPce:fm:qruw" OPT | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 73 | do | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 74 | case "$OPT" in | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 75 | C) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 76 | COPYDB=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 77 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 78 | I) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 79 | ISAR=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 80 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 81 | P) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 82 | PROOFGENERAL=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 83 | ;; | 
| 16101 | 84 | X) | 
| 85 | PGIP=true | |
| 86 | ;; | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 87 | c) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 88 | COMPRESS=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 89 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 90 | e) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 91 | MLTEXT="$MLTEXT $OPTARG" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 92 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 93 | f) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 94 | MLTEXT="$MLTEXT Session.finish();" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 95 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 96 | m) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 97 | if [ -z "$MODES" ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 98 | MODES="\"$OPTARG\"" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 99 | else | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 100 | MODES="\"$OPTARG\", $MODES" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 101 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 102 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 103 | q) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 104 | TERMINATE=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 105 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 106 | r) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 107 | READONLY=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 108 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 109 | u) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 110 | MLTEXT="$MLTEXT use\"ROOT.ML\";" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 111 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 112 | w) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 113 | NOWRITE=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 114 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 115 | \?) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 116 | usage | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 117 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 118 | esac | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 119 | done | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 120 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 121 | shift $(($OPTIND - 1)) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 122 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 123 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 124 | # args | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 125 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 126 | INPUT="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 127 | OUTPUT="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 128 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 129 | if [ "$#" -ge 1 ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 130 | INPUT="$1" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 131 | shift | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 132 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 133 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 134 | if [ "$#" -ge 1 ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 135 | OUTPUT="$1" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 136 | shift | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 137 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 138 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 139 | [ "$#" -ne 0 ] && { echo "Bad args: $*"; usage; }
 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 140 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 141 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 142 | ## check ML system | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 143 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 144 | [ -z "$ML_SYSTEM" ] && fail "Missing ML system settings! Unable to run Isabelle." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 145 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 146 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 147 | ## input heap file | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 148 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 149 | [ -z "$INPUT" ] && INPUT="$ISABELLE_LOGIC" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 150 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 151 | case "$INPUT" in | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 152 | RAW_ML_SYSTEM) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 153 | INFILE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 154 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 155 | */*) | 
| 17792 | 156 | INFILE="$INPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 157 | [ ! -f "$INFILE" ] && fail "Bad heap file: \"$INFILE\"" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 158 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 159 | *) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 160 | INFILE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 161 | ISA_PATH="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 162 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 163 | ORIG_IFS="$IFS" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 164 | IFS=":" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 165 | for DIR in $ISABELLE_PATH | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 166 | do | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 167 | DIR="$DIR/$ML_IDENTIFIER" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 168 | ISA_PATH="$ISA_PATH $DIR\n" | 
| 17792 | 169 | [ -z "$INFILE" -a -f "$DIR/$INPUT$ML_SUFFIX" ] && INFILE="$DIR/$INPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 170 | done | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 171 | IFS="$ORIG_IFS" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 172 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 173 | if [ -z "$INFILE" ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 174 | echo "Unknown logic \"$INPUT\" -- no heap file found in:" >&2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 175 | echo -ne "$ISA_PATH" >&2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 176 | exit 2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 177 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 178 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 179 | esac | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 180 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 181 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 182 | ## output heap file | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 183 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 184 | case "$OUTPUT" in | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 185 | "") | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 186 | [ -z "$READONLY" -a -w "$INFILE" ] && OUTFILE="$INFILE" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 187 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 188 | */*) | 
| 17792 | 189 | OUTFILE="$OUTPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 190 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 191 | *) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 192 | mkdir -p "$ISABELLE_OUTPUT" | 
| 17792 | 193 | OUTFILE="$ISABELLE_OUTPUT/$OUTPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 194 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 195 | esac | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 196 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 197 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 198 | ## prepare tmp directory | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 199 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 200 | [ -z "$ISABELLE_TMP_PREFIX" ] && ISABELLE_TMP_PREFIX=/tmp/isabelle | 
| 16874 | 201 | ISABELLE_PID="$$" | 
| 17792 | 202 | ISABELLE_TMP="$ISABELLE_TMP_PREFIX$ISABELLE_PID" | 
| 16874 | 203 | mkdir -p "$ISABELLE_TMP" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 204 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 205 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 206 | ## run it! | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 207 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 208 | ML_SYSTEM_BASE=$(echo "$ML_SYSTEM" | cut -f1 -d-) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 209 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 210 | [ -n "$MODES" ] && MLTEXT="print_mode := [$MODES]; $MLTEXT" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 211 | |
| 16101 | 212 | if [ -n "$PGIP" ]; then | 
| 213 | MLTEXT="$MLTEXT; ProofGeneral.init_pgip $ISAR;" | |
| 214 | elif [ -n "$PROOFGENERAL" ]; then | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 215 | MLTEXT="$MLTEXT; ProofGeneral.init $ISAR;" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 216 | elif [ "$ISAR" = true ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 217 | MLTEXT="$MLTEXT; Isar.main();" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 218 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 219 | |
| 16874 | 220 | export INFILE OUTFILE COPYDB COMPRESS MLTEXT TERMINATE NOWRITE \ | 
| 221 | ISABELLE_PID ISABELLE_TMP | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 222 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 223 | if [ -f "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 224 | "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 225 | else | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 226 | "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM_BASE" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 227 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 228 | RC="$?" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 229 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 230 | rmdir "$ISABELLE_TMP" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 231 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 232 | exit "$RC" |