author | wenzelm |
Wed, 07 Jul 2021 14:32:43 +0200 | |
changeset 73930 | 17c09d1b3588 |
parent 73914 | 4be1047576e6 |
child 73944 | 3cee9d20308e |
permissions | -rwxr-xr-x |
73906 | 1 |
#!/usr/bin/env bash |
2 |
# |
|
3 |
# Author: Makarius |
|
4 |
# |
|
5 |
# DESCRIPTION: build component for Isabelle/Java setup tool |
|
6 |
||
7 |
## sources |
|
8 |
||
9 |
declare -a SOURCES=( |
|
73914 | 10 |
"Build_Scala.java" |
73906 | 11 |
"Environment.java" |
12 |
"Setup.java" |
|
13 |
) |
|
14 |
||
15 |
||
16 |
## usage |
|
17 |
||
18 |
PRG=$(basename "$0") |
|
19 |
||
20 |
function usage() |
|
21 |
{ |
|
22 |
echo |
|
23 |
echo "Usage: isabelle $PRG [OPTIONS] COMPONENT_DIR" |
|
24 |
echo |
|
25 |
echo " Build component for Isabelle/Java setup tool." |
|
26 |
echo |
|
27 |
exit 1 |
|
28 |
} |
|
29 |
||
30 |
function fail() |
|
31 |
{ |
|
32 |
echo "$1" >&2 |
|
33 |
exit 2 |
|
34 |
} |
|
35 |
||
36 |
||
37 |
## process command line |
|
38 |
||
39 |
[ "$#" -ge 1 ] && { COMPONENT_DIR="$1"; shift; } |
|
40 |
[ "$#" -ne 0 -o -z "$COMPONENT_DIR" ] && usage |
|
41 |
||
42 |
||
43 |
||
44 |
## main |
|
45 |
||
46 |
[ -d "$COMPONENT_DIR" ] && fail "Directory already exists: \"$COMPONENT_DIR\"" |
|
47 |
||
48 |
||
49 |
# build jar |
|
50 |
||
51 |
TARGET_DIR="$COMPONENT_DIR/lib" |
|
52 |
mkdir -p "$TARGET_DIR/isabelle/setup" |
|
53 |
||
54 |
declare -a ARGS=("-Xlint:unchecked") |
|
55 |
for SRC in "${SOURCES[@]}" |
|
56 |
do |
|
73912 | 57 |
ARGS["${#ARGS[@]}"]="$(platform_path "$ISABELLE_HOME/src/Tools/Setup/isabelle/setup/$SRC")" |
73906 | 58 |
done |
59 |
||
73930
17c09d1b3588
invoke Scala compiler from Java, without external process;
wenzelm
parents:
73914
diff
changeset
|
60 |
isabelle_jdk javac -d "$TARGET_DIR" -classpath "$(platform_path "$ISABELLE_CLASSPATH")" "${ARGS[@]}" || \ |
73906 | 61 |
fail "Failed to compile sources" |
62 |
||
63 |
isabelle_jdk jar -c -f "$(platform_path "$TARGET_DIR/isabelle_setup.jar")" \ |
|
64 |
-e "isabelle.setup.Setup" -C "$TARGET_DIR" isabelle || fail "Failed to produce jar" |
|
65 |
||
66 |
rm -rf "$TARGET_DIR/isabelle" |
|
67 |
||
68 |
||
69 |
# etc/settings |
|
70 |
||
71 |
mkdir -p "$COMPONENT_DIR/etc" |
|
72 |
cat > "$COMPONENT_DIR/etc/settings" <<EOF |
|
73 |
# -*- shell-script -*- :mode=shellscript: |
|
74 |
||
75 |
ISABELLE_SETUP_JAR="\$COMPONENT/lib/isabelle_setup.jar" |
|
76 |
classpath "\$ISABELLE_SETUP_JAR" |
|
77 |
EOF |
|
78 |
||
79 |
||
80 |
# README |
|
81 |
||
82 |
cat > "$COMPONENT_DIR/README" <<EOF |
|
83 |
Isabelle setup in pure Java, see also \$ISABELLE_HOME/src/Tools/Setup/. |
|
84 |
EOF |