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