18 echo |
18 echo |
19 echo " Options are:" |
19 echo " Options are:" |
20 echo " -I FILE alternative IsaMakefile output" |
20 echo " -I FILE alternative IsaMakefile output" |
21 echo " -P include parent logic target" |
21 echo " -P include parent logic target" |
22 echo " -b setup build mode (session outputs heap image)" |
22 echo " -b setup build mode (session outputs heap image)" |
23 echo " -d setup document" |
23 echo " -q quiet mode" |
24 echo |
24 echo |
25 echo " Prepare session directory, including IsaMakefile, document etc." |
25 echo " Prepare session directory, including IsaMakefile and document source" |
26 echo " with parent LOGIC (default ISABELLE_LOGIC=$ISABELLE_LOGIC)" |
26 echo " with parent LOGIC (default ISABELLE_LOGIC=$ISABELLE_LOGIC)" |
27 echo |
27 echo |
28 exit 1 |
28 exit 1 |
29 } |
29 } |
30 |
30 |
85 NAME=$(basename "$DIR_NAME") |
85 NAME=$(basename "$DIR_NAME") |
86 |
86 |
87 |
87 |
88 ## main |
88 ## main |
89 |
89 |
|
90 [ -z "$QUIET" ] && echo "Preparing session \"$NAME\" ..." |
|
91 |
|
92 |
90 # IsaMakefile |
93 # IsaMakefile |
91 |
94 |
92 mkdir -p "$DIR" || fail "Bad directory: $DIR" |
95 mkdir -p "$DIR" || fail "Bad directory: $DIR" |
93 cd "$DIR" |
96 cd "$DIR" |
94 |
|
95 |
97 |
96 DOCUMENT_ROOT="" |
98 DOCUMENT_ROOT="" |
97 |
99 |
98 if [ -n "$BUILD" ]; then |
100 if [ -n "$BUILD" ]; then |
99 IMAGES="$NAME" |
101 IMAGES="$NAME" |
100 TEST="" |
102 TEST="" |
101 TARGET="\$(OUT)/$NAME" |
103 TARGET="\$(OUT)/$NAME" |
102 ROOT_ML="ROOT.ML" |
104 ROOT_ML="ROOT.ML" |
103 SOURCES="*.thy" |
105 SOURCES="*.thy" |
104 [ -n "$DOCUMENT" ] && DOCUMENT_ROOT="document/root.tex" |
106 DOCUMENT_ROOT="document/root.tex" |
105 USEDIR="\$(USEDIR) -b -P http://isabelle.in.tum.de/library" |
107 USEDIR="\$(USEDIR) -b -P http://isabelle.in.tum.de/library" |
106 else |
108 else |
107 IMAGES="" |
109 IMAGES="" |
108 TEST="$NAME" |
110 TEST="$NAME" |
109 TARGET="\$(LOG)/$LOGIC-$NAME.gz" |
111 TARGET="\$(LOG)/$LOGIC-$NAME.gz" |
110 ROOT_ML="$NAME/ROOT.ML" |
112 ROOT_ML="$NAME/ROOT.ML" |
111 SOURCES="$NAME/*.thy" |
113 SOURCES="$NAME/*.thy" |
112 [ -n "$DOCUMENT" ] && DOCUMENT_ROOT="$NAME/document/root.tex" |
114 DOCUMENT_ROOT="$NAME/document/root.tex" |
113 USEDIR="\$(USEDIR)" |
115 USEDIR="\$(USEDIR)" |
114 fi |
116 fi |
115 |
117 |
116 if [ "$ISAMAKEFILE" != - -a -f "$ISAMAKEFILE" ]; then |
118 if [ "$ISAMAKEFILE" != - -a -f "$ISAMAKEFILE" ]; then |
117 echo "keeping $PWD/$ISAMAKEFILE" >&2 |
119 echo "keeping $DIR/$ISAMAKEFILE" >&2 |
118 else |
120 else |
119 { echo |
121 { echo |
120 echo "## targets" |
122 echo "## targets" |
121 echo |
123 echo |
122 echo "default: $NAME" |
124 echo "default: $NAME" |
129 echo "## global settings" |
131 echo "## global settings" |
130 echo |
132 echo |
131 echo "SRC = \$(ISABELLE_HOME)/src" |
133 echo "SRC = \$(ISABELLE_HOME)/src" |
132 echo "OUT = \$(ISABELLE_OUTPUT)" |
134 echo "OUT = \$(ISABELLE_OUTPUT)" |
133 echo "LOG = \$(OUT)/log" |
135 echo "LOG = \$(OUT)/log" |
134 echo "USEDIR = \$(ISATOOL) usedir -i true -d dvi ## -D document" |
136 echo |
|
137 echo "USEDIR = \$(ISATOOL) usedir -v true -i true -d dvi ## -D document" |
135 echo |
138 echo |
136 echo |
139 echo |
137 echo "## $NAME" |
140 echo "## $NAME" |
138 echo "" |
141 echo "" |
139 if [ -n "$PARENT" ]; then |
142 if [ -n "$PARENT" ]; then |
145 echo "$TARGET: \$(OUT)/$LOGIC $ROOT_ML $DOCUMENT_ROOT ## $SOURCES" |
148 echo "$TARGET: \$(OUT)/$LOGIC $ROOT_ML $DOCUMENT_ROOT ## $SOURCES" |
146 echo -e "\t@$USEDIR \$(OUT)/$LOGIC $NAME" |
149 echo -e "\t@$USEDIR \$(OUT)/$LOGIC $NAME" |
147 else |
150 else |
148 echo "$NAME: $TARGET" |
151 echo "$NAME: $TARGET" |
149 echo |
152 echo |
150 echo "$TARGET: $ROOT_ML $DOCUMENT_ROOT ## $SOURCES" |
153 echo "$TARGET: ## $ROOT_ML $DOCUMENT_ROOT $SOURCES" |
151 echo -e "\t@$USEDIR $LOGIC $NAME" |
154 echo -e "\t@$USEDIR $LOGIC $NAME" |
152 fi |
155 fi |
153 echo |
156 echo |
154 echo |
157 echo |
155 echo "## clean" |
158 echo "## clean" |
168 |
171 |
169 |
172 |
170 # base directory |
173 # base directory |
171 |
174 |
172 if [ -z "$BUILD" ]; then |
175 if [ -z "$BUILD" ]; then |
173 mkdir -p "$NAME" || fail "Bad directory: $PWD/$NAME" |
176 mkdir -p "$NAME" || fail "Bad directory: $DIR/$NAME" |
174 cd "$NAME" |
177 cd "$NAME" |
|
178 PREFIX="$DIR/$NAME" |
|
179 else |
|
180 PREFIX="$DIR" |
175 fi |
181 fi |
176 |
182 |
177 if [ -f ROOT.ML ]; then |
183 if [ -f ROOT.ML ]; then |
178 echo "keeping $PWD/ROOT.ML" >&2 |
184 echo "keeping $PREFIX/ROOT.ML" >&2 |
179 else |
185 else |
180 echo -e "\n(* use_thy \"YourTheory\"; *)\n" >ROOT.ML |
186 cat >ROOT.ML <<EOF |
|
187 (* |
|
188 no_document use_thy "ThisTheory"; |
|
189 use_thy "ThatTheory"; |
|
190 *) |
|
191 EOF |
181 fi |
192 fi |
182 |
193 |
183 |
194 |
184 # document directory |
195 # document directory |
185 |
196 |
186 if [ -n "$DOCUMENT" ]; then |
197 #set by configure |
187 if [ -e document ]; then |
198 AUTO_PERL=perl |
188 echo "keeping $PWD/document" >&2 |
199 |
189 else |
200 if [ -e document ]; then |
190 mkdir document || fail "Bad directory: $PWD/document" |
201 echo "keeping $PREFIX/document" >&2 |
191 TITLE=$(echo "$NAME" | tr _ -) |
202 else |
192 cat >document/root.tex <<EOF |
203 mkdir document || fail "Bad directory: $PREFIX/document" |
|
204 TITLE=$(echo "$NAME" | tr _ -) |
|
205 AUTHOR=$("$AUTO_PERL" -e "@pw = getpwnam(\"$USER\"); print @pw[5]" | tr _ -) |
|
206 cat >document/root.tex <<EOF |
193 |
207 |
194 \documentclass[11pt,a4paper]{article} |
208 \documentclass[11pt,a4paper]{article} |
195 \usepackage{isabelle,isabellesym,pdfsetup} |
209 \usepackage{isabelle,isabellesym} |
196 |
210 |
197 %for best-style documents ... |
211 % further packages required for unusual symbols (see also isabellesym.sty) |
|
212 %\usepackage{latexsym} |
|
213 %\usepackage{amssymb} |
|
214 %\usepackage[english]{babel} |
|
215 %\usepackage[latin1]{inputenc} |
|
216 %\usepackage[only,bigsqcap]{stmaryrd} |
|
217 %\usepackage{wasysym} |
|
218 %\usepackage{eufrak} |
|
219 |
|
220 % this should be the last package used |
|
221 \usepackage{pdfsetup} |
|
222 |
|
223 % proper setup for best-style documents |
198 \urlstyle{rm} |
224 \urlstyle{rm} |
199 \isabellestyle{it} |
225 \isabellestyle{it} |
200 |
226 |
|
227 |
201 \begin{document} |
228 \begin{document} |
202 |
229 |
203 \title{$TITLE}\maketitle |
230 \title{$TITLE} |
|
231 \author{$AUTHOR} |
|
232 \maketitle |
|
233 |
204 \tableofcontents |
234 \tableofcontents |
205 |
235 |
206 \parindent 0pt\parskip 0.5ex |
236 \parindent 0pt\parskip 0.5ex |
|
237 |
|
238 % include generated text of all theories |
207 \input{session} |
239 \input{session} |
208 |
240 |
209 %\bibliographystyle{plain} |
241 %\bibliographystyle{plain} |
210 %\bibliography{root} |
242 %\bibliography{root} |
211 |
243 |
212 \end{document} |
244 \end{document} |
213 EOF |
245 EOF |
214 fi |
246 fi |
215 fi |
247 |
|
248 |
|
249 # notes |
|
250 |
|
251 if [ -z "$QUIET" ]; then |
|
252 |
|
253 cat >&2 <<EOF |
|
254 |
|
255 Notes: |
|
256 |
|
257 * 'isatool make' processes the session (including document preparation) |
|
258 |
|
259 * $PREFIX/ROOT.ML needs to contain ML code to load all theories |
|
260 |
|
261 * $PREFIX/document/root.tex contains the LaTeX master document setup |
|
262 |
|
263 * $DIR/IsaMakefile contains compilation options and file dependencies |
|
264 |
|
265 EOF |
|
266 |
|
267 fi |