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