lib/Tools/mkdir
changeset 11578 43c6735080b8
parent 10576 92d3cbea80b2
child 11650 e4314c06a2a3
equal deleted inserted replaced
11577:68323aa9575d 11578:43c6735080b8
    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 
    40 # options
    40 # options
    41 
    41 
    42 ISAMAKEFILE="IsaMakefile"
    42 ISAMAKEFILE="IsaMakefile"
    43 PARENT=""
    43 PARENT=""
    44 BUILD=""
    44 BUILD=""
    45 DOCUMENT=""
    45 QUIET=""
    46 
    46 
    47 while getopts "I:Pbd" OPT
    47 while getopts "I:Pbq" OPT
    48 do
    48 do
    49   case "$OPT" in
    49   case "$OPT" in
    50     I)
    50     I)
    51       ISAMAKEFILE="$OPTARG"
    51       ISAMAKEFILE="$OPTARG"
    52       ;;
    52       ;;
    54       PARENT=true
    54       PARENT=true
    55       ;;
    55       ;;
    56     b)
    56     b)
    57       BUILD=true
    57       BUILD=true
    58       ;;
    58       ;;
    59     d)
    59     q)
    60       DOCUMENT=true
    60       QUIET=true
    61       ;;
    61       ;;
    62     \?)
    62     \?)
    63       usage
    63       usage
    64       ;;
    64       ;;
    65   esac
    65   esac
    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