src/Pure/mk
author nipkow
Tue, 17 Oct 2000 08:00:46 +0200
changeset 10228 e653cb933293
parent 10102 3c21a2e616e7
child 10900 7268a5f425f8
permissions -rwxr-xr-x
added intermediate value thms
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3056
200565f7592a removed -c option;
wenzelm
parents: 2768
diff changeset
     1
#!/bin/bash
2339
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
     2
#
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
     3
# $Id$
9789
wenzelm
parents: 8361
diff changeset
     4
# Author: Markus Wenzel, TU Muenchen
wenzelm
parents: 8361
diff changeset
     5
# License: GPL (GNU GENERAL PUBLIC LICENSE)
2339
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
     6
#
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
     7
# mk - build Pure Isabelle.
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
     8
#
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
     9
# Requires proper Isabelle settings environment (cf. IsaMakefile).
2339
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    10
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    11
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    12
## diagnostics
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    13
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    14
function usage()
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    15
{
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    16
  echo
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    17
  echo "Usage: $PRG [OPTIONS]"
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    18
  echo
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    19
  echo "  Make Pure Isabelle."
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    20
  echo
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    21
  echo "    -C           tell ML system to copy output image"
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    22
  echo "    -r           prepare RAW image only"
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    23
  echo
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    24
  exit 1
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    25
}
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    26
2339
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    27
function fail()
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    28
{
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    29
  echo "$1" >&2
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    30
  exit 2
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    31
}
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    32
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    33
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    34
## process command line
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    35
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    36
# options
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    37
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    38
COPY=""
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    39
RAW=""
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    40
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    41
while getopts "Cr" OPT
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    42
do
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    43
  case "$OPT" in
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    44
    C)
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    45
      COPY="-C"
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    46
      ;;
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    47
    r)
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    48
      RAW=true
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    49
      ;;
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    50
    \?)
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    51
      usage
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    52
      ;;
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    53
  esac
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    54
done
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    55
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    56
shift $(($OPTIND - 1))
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    57
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    58
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    59
# args
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    60
9789
wenzelm
parents: 8361
diff changeset
    61
[ "$#" -ne 0 ] && usage
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    62
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    63
2339
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    64
## main
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    65
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    66
# get compatibility file
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    67
9789
wenzelm
parents: 8361
diff changeset
    68
ML_SYSTEM_BASE=$(echo "$ML_SYSTEM" | cut -f1 -d-)
3056
200565f7592a removed -c option;
wenzelm
parents: 2768
diff changeset
    69
[ -z "$ML_SYSTEM" ] && \
6186
72abe86d9418 tuned msg;
wenzelm
parents: 4495
diff changeset
    70
  fail "Missing ML system settings! Probably not run via 'isatool make'."
2339
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    71
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    72
COMPAT=""
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    73
[ -f "ML-Systems/$ML_SYSTEM_BASE.ML" ] && COMPAT="ML-Systems/$ML_SYSTEM_BASE.ML"
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    74
[ -f "ML-Systems/$ML_SYSTEM.ML" ] && COMPAT="ML-Systems/$ML_SYSTEM.ML"
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    75
[ -z "$COMPAT" ] && fail "Missing compatibility file for ML system \"$ML_SYSTEM\"!"
2d5551c8dec0 mk - build Pure Isabelle.
wenzelm
parents:
diff changeset
    76
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    77
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    78
# prepare log dir
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    79
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    80
LOGDIR="$ISABELLE_OUTPUT/log"
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    81
mkdir -p "$LOGDIR"
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    82
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    83
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    84
# run isabelle
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    85
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    86
SECONDS=0
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    87
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    88
if [ -z "$RAW" ]; then
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    89
  ITEM="Pure"
7277
bb9502f9154a improved messages;
wenzelm
parents: 7263
diff changeset
    90
  echo "Building $ITEM ..."
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    91
  LOG="$LOGDIR/$ITEM"
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    92
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
    93
  "$ISABELLE" $COPY \
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    94
    -e "val ml_system = \"$ML_SYSTEM\";" \
4495
8648ba842d14 improved error handling;
wenzelm
parents: 4492
diff changeset
    95
    -e "(use\"$COMPAT\"; use\"ROOT.ML\") handle _ => exit 1;" \
9789
wenzelm
parents: 8361
diff changeset
    96
    -c -q -w RAW_ML_SYSTEM Pure > "$LOG" 2>&1
wenzelm
parents: 8361
diff changeset
    97
  RC="$?"
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
    98
else
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
    99
  ITEM="RAW"
7277
bb9502f9154a improved messages;
wenzelm
parents: 7263
diff changeset
   100
  echo "Building $ITEM ..."
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   101
  LOG="$LOGDIR/$ITEM"
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   102
10102
3c21a2e616e7 support copy option;
wenzelm
parents: 9789
diff changeset
   103
  "$ISABELLE" $COPY \
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
   104
    -e "val ml_system = \"$ML_SYSTEM\";" \
4495
8648ba842d14 improved error handling;
wenzelm
parents: 4492
diff changeset
   105
    -e "use\"$COMPAT\" handle _ => exit 1;;" \
9789
wenzelm
parents: 8361
diff changeset
   106
    -q -w RAW_ML_SYSTEM RAW > "$LOG" 2>&1
wenzelm
parents: 8361
diff changeset
   107
  RC="$?"
3774
b1bfd394b60a RAW target;
wenzelm
parents: 3505
diff changeset
   108
fi
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   109
9789
wenzelm
parents: 8361
diff changeset
   110
ELAPSED=$("$ISABELLE_HOME/lib/scripts/showtime" "$SECONDS")
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   111
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   112
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   113
# exit status
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   114
9789
wenzelm
parents: 8361
diff changeset
   115
if [ "$RC" -eq 0 ]; then
7277
bb9502f9154a improved messages;
wenzelm
parents: 7263
diff changeset
   116
  echo "Finished $ITEM ($ELAPSED elapsed time)"
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   117
  gzip --force "$LOG"
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   118
else
7263
2d09363ada6c tuned messages;
wenzelm
parents: 6239
diff changeset
   119
  echo "$ITEM FAILED"
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   120
  echo "(see also $LOG)"
9789
wenzelm
parents: 8361
diff changeset
   121
  echo; tail "$LOG"; echo
4442
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   122
fi
8ed9e689a15e log file;
wenzelm
parents: 3774
diff changeset
   123
9789
wenzelm
parents: 8361
diff changeset
   124
exit "$RC"