Admin/lib/Tools/build_setup
author wenzelm
Thu, 01 Jul 2021 14:06:20 +0200
changeset 73912 ac1639349ecf
parent 73906 f627ffab387b
child 73914 4be1047576e6
permissions -rwxr-xr-x
clarified directories;
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=(
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    10
  "Environment.java"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    11
  "Setup.java"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    12
)
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
## usage
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    16
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    17
PRG=$(basename "$0")
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    18
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    19
function usage()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    20
{
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    21
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    22
  echo "Usage: isabelle $PRG [OPTIONS] COMPONENT_DIR"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    23
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    24
  echo "  Build component for Isabelle/Java setup tool."
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    25
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    26
  exit 1
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    27
}
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
function fail()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    30
{
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    31
  echo "$1" >&2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    32
  exit 2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    33
}
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
## process command line
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    37
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    38
[ "$#" -ge 1 ] && { COMPONENT_DIR="$1"; shift; }
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    39
[ "$#" -ne 0 -o -z "$COMPONENT_DIR" ] && usage
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    40
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
## main
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    44
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    45
[ -d "$COMPONENT_DIR" ] && fail "Directory already exists: \"$COMPONENT_DIR\""
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    46
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
# build jar
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    49
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    50
TARGET_DIR="$COMPONENT_DIR/lib"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    51
mkdir -p "$TARGET_DIR/isabelle/setup"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    52
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    53
declare -a ARGS=("-Xlint:unchecked")
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    54
for SRC in "${SOURCES[@]}"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    55
do
73912
ac1639349ecf clarified directories;
wenzelm
parents: 73906
diff changeset
    56
  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
    57
done
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    58
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    59
isabelle_jdk javac -d "$TARGET_DIR" "${ARGS[@]}" || \
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    60
  fail "Failed to compile sources"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    61
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    62
isabelle_jdk jar -c -f "$(platform_path "$TARGET_DIR/isabelle_setup.jar")" \
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    63
  -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
    64
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    65
rm -rf "$TARGET_DIR/isabelle"
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
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    68
# etc/settings
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
mkdir -p "$COMPONENT_DIR/etc"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    71
cat > "$COMPONENT_DIR/etc/settings" <<EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    72
# -*- shell-script -*- :mode=shellscript:
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    73
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    74
ISABELLE_SETUP_JAR="\$COMPONENT/lib/isabelle_setup.jar"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    75
classpath "\$ISABELLE_SETUP_JAR"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    76
EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    77
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    78
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    79
# README
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
cat > "$COMPONENT_DIR/README" <<EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    82
Isabelle setup in pure Java, see also \$ISABELLE_HOME/src/Tools/Setup/.
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    83
EOF