1#!/usr/bin/env bash
2#
3# Author: Makarius
4#
5# mk - build graph browser
6#
7# Requires proper Isabelle settings environment.
8
9
10## diagnostics
11
12function fail()
13{
14  echo "$1" >&2
15  exit 2
16}
17
18[ -n "$ISABELLE_HOME" ] || fail "Missing Isabelle settings environment"
19
20
21## dependencies
22
23declare -a SOURCES=(
24  GraphBrowser/AWTFontMetrics.java
25  GraphBrowser/AbstractFontMetrics.java
26  GraphBrowser/Box.java
27  GraphBrowser/Console.java
28  GraphBrowser/DefaultFontMetrics.java
29  GraphBrowser/Directory.java
30  GraphBrowser/DummyVertex.java
31  GraphBrowser/Graph.java
32  GraphBrowser/GraphBrowser.java
33  GraphBrowser/GraphBrowserFrame.java
34  GraphBrowser/GraphView.java
35  GraphBrowser/NormalVertex.java
36  GraphBrowser/ParseError.java
37  GraphBrowser/Region.java
38  GraphBrowser/Spline.java
39  GraphBrowser/TreeBrowser.java
40  GraphBrowser/TreeNode.java
41  GraphBrowser/Vertex.java
42  awtUtilities/Border.java
43  awtUtilities/MessageDialog.java
44  awtUtilities/TextFrame.java
45)
46
47TARGET="$ISABELLE_HOME/lib/browser/GraphBrowser.jar"
48
49
50## main
51
52OUTDATED=false
53
54for SOURCE in "${SOURCES[@]}"
55do
56  [ ! -e "$SOURCE" ] && fail "Missing source file: $SOURCE"
57  [ ! -e "$TARGET" -o "$SOURCE" -nt "$TARGET" ] && OUTDATED=true
58done
59
60if [ "$OUTDATED" = true ]
61then
62  echo >&2 "### Building graph browser ..."
63
64  rm -rf classes && mkdir classes
65
66  isabelle_jdk javac -d classes -source 1.6 "${SOURCES[@]}" || \
67    fail "Failed to compile sources"
68  isabelle_jdk jar cf "$(platform_path "$TARGET")" -C classes . ||
69    fail "Failed to produce $TARGET"
70
71  rm -rf classes
72fi
73