1 #!/usr/bin/env bash |
|
2 # |
|
3 # Author: Makarius |
|
4 # |
|
5 # mk-jars - build Isabelle/Scala |
|
6 # |
|
7 # Requires proper Isabelle settings environment. |
|
8 |
|
9 |
|
10 ## diagnostics |
|
11 |
|
12 function fail() |
|
13 { |
|
14 echo "$1" >&2 |
|
15 exit 2 |
|
16 } |
|
17 |
|
18 [ -n "$ISABELLE_HOME" ] || fail "Missing Isabelle settings environment" |
|
19 [ -z "$SCALA_HOME" ] && fail "Scala unavailable: unknown SCALA_HOME" |
|
20 |
|
21 |
|
22 ## dependencies |
|
23 |
|
24 declare -a SOURCES=( |
|
25 Concurrent/future.scala |
|
26 General/download.scala |
|
27 General/event_bus.scala |
|
28 General/exn.scala |
|
29 General/linear_set.scala |
|
30 General/markup.scala |
|
31 General/position.scala |
|
32 General/scan.scala |
|
33 General/swing_thread.scala |
|
34 General/symbol.scala |
|
35 General/xml.scala |
|
36 General/yxml.scala |
|
37 Isar/isar_document.scala |
|
38 Isar/outer_keyword.scala |
|
39 Isar/outer_lex.scala |
|
40 Isar/outer_parse.scala |
|
41 Isar/outer_syntax.scala |
|
42 System/cygwin.scala |
|
43 System/gui_setup.scala |
|
44 System/isabelle_process.scala |
|
45 System/isabelle_syntax.scala |
|
46 System/isabelle_system.scala |
|
47 System/platform.scala |
|
48 System/session_manager.scala |
|
49 System/standard_system.scala |
|
50 Thy/completion.scala |
|
51 Thy/html.scala |
|
52 Thy/text_edit.scala |
|
53 Thy/thy_header.scala |
|
54 Thy/thy_syntax.scala |
|
55 library.scala |
|
56 ) |
|
57 |
|
58 JAR_DIR="$ISABELLE_HOME/lib/classes" |
|
59 PURE_JAR="$JAR_DIR/Pure.jar" |
|
60 FULL_JAR="$JAR_DIR/isabelle-scala.jar" |
|
61 |
|
62 |
|
63 ## main |
|
64 |
|
65 OUTDATED=false |
|
66 |
|
67 for SOURCE in "${SOURCES[@]}" |
|
68 do |
|
69 [ ! -e "$SOURCE" ] && fail "Missing source file: $SOURCE" |
|
70 for TARGET in "$PURE_JAR" "$FULL_JAR" |
|
71 do |
|
72 [ ! -e "$TARGET" -o "$SOURCE" -nt "$TARGET" ] && OUTDATED=true |
|
73 done |
|
74 done |
|
75 |
|
76 if [ "$OUTDATED" = true ]; then |
|
77 echo "###" |
|
78 echo "### Building Isabelle/Scala components ..." |
|
79 echo "###" |
|
80 |
|
81 rm -rf classes && mkdir classes |
|
82 "$SCALA_HOME/bin/scalac" -unchecked -deprecation -d classes -target jvm-1.5 "${SOURCES[@]}" || \ |
|
83 fail "Failed to compile sources" |
|
84 mkdir -p "$JAR_DIR" || fail "Failed to create directory $JAR_DIR" |
|
85 ( |
|
86 cd classes |
|
87 jar cfe "$(jvmpath "$PURE_JAR")" isabelle.GUI_Setup isabelle || \ |
|
88 fail "Failed to produce $PURE_JAR" |
|
89 |
|
90 cp "$SCALA_HOME/lib/scala-swing.jar" . |
|
91 jar xf scala-swing.jar |
|
92 |
|
93 cp "$SCALA_HOME/lib/scala-library.jar" "$FULL_JAR" |
|
94 jar ufe "$(jvmpath "$FULL_JAR")" isabelle.GUI_Setup isabelle scala || \ |
|
95 fail "Failed to produce $FULL_JAR" |
|
96 ) |
|
97 rm -rf classes |
|
98 fi |
|