Admin/lib/Tools/build_setup
author wenzelm
Sat, 17 Jul 2021 21:31:15 +0200
changeset 74030 39e05601faeb
parent 73963 59b6f0462086
child 74031 09821ca262d3
permissions -rwxr-xr-x
more accurate scala_project, based on build.props of components;
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"
73963
59b6f0462086 clarified modules;
wenzelm
parents: 73953
diff changeset
    12
  "Exn.java"
59b6f0462086 clarified modules;
wenzelm
parents: 73953
diff changeset
    13
  "Library.java"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    14
  "Setup.java"
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
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
## usage
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
PRG=$(basename "$0")
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
function usage()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    23
{
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 "Usage: isabelle $PRG [OPTIONS] COMPONENT_DIR"
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
  echo "  Build component for Isabelle/Java setup tool."
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    28
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    29
  exit 1
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
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    32
function fail()
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
  echo "$1" >&2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    35
  exit 2
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
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
## process command line
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
[ "$#" -ge 1 ] && { COMPONENT_DIR="$1"; shift; }
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    42
[ "$#" -ne 0 -o -z "$COMPONENT_DIR" ] && usage
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
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
## main
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
[ -d "$COMPONENT_DIR" ] && fail "Directory already exists: \"$COMPONENT_DIR\""
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
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    51
# etc/settings
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    52
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    53
mkdir -p "$COMPONENT_DIR/etc"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    54
cat > "$COMPONENT_DIR/etc/settings" <<EOF
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    55
# -*- shell-script -*- :mode=shellscript:
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    56
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    57
ISABELLE_SETUP_JAR="\$COMPONENT/lib/isabelle_setup.jar"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    58
classpath "\$ISABELLE_SETUP_JAR"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    59
EOF
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    60
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    61
BUILD_PROPS="$COMPONENT_DIR/etc/build.props"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    62
echo >> "$BUILD_PROPS" "no_module = lib/isabelle_setup.jar"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    63
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    64
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    65
# build jar
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    66
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    67
SOURCE_DIR="$COMPONENT_DIR/src"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    68
TARGET_DIR="$COMPONENT_DIR/lib"
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    69
mkdir -p "$SOURCE_DIR" "$TARGET_DIR/isabelle/setup"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    70
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    71
declare -a ARGS=("-Xlint:unchecked")
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    72
echo -n >> "$BUILD_PROPS" "sources ="
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    73
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    74
for SRC in "${SOURCES[@]}"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    75
do
73912
ac1639349ecf clarified directories;
wenzelm
parents: 73906
diff changeset
    76
  ARGS["${#ARGS[@]}"]="$(platform_path "$ISABELLE_HOME/src/Tools/Setup/isabelle/setup/$SRC")"
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    77
  cp "$ISABELLE_HOME/src/Tools/Setup/isabelle/setup/$SRC" "$SOURCE_DIR"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    78
  echo >> "$BUILD_PROPS" " \\"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    79
  echo -n >> "$BUILD_PROPS" "  src/$SRC"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    80
done
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    81
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    82
echo >> "$BUILD_PROPS"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    83
73953
0b5e6851c722 clarified javac options;
wenzelm
parents: 73944
diff changeset
    84
isabelle_jdk javac $ISABELLE_JAVAC_OPTIONS -d "$TARGET_DIR" \
0b5e6851c722 clarified javac options;
wenzelm
parents: 73944
diff changeset
    85
  -classpath "$(platform_path "$ISABELLE_CLASSPATH")" "${ARGS[@]}" || \
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    86
  fail "Failed to compile sources"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    87
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    88
isabelle_jdk jar -c -f "$(platform_path "$TARGET_DIR/isabelle_setup.jar")" \
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    89
  -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
    90
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    91
rm -rf "$TARGET_DIR/isabelle"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    92
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    93
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    94
# README
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    95
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    96
cat > "$COMPONENT_DIR/README" <<EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    97
Isabelle setup in pure Java, see also \$ISABELLE_HOME/src/Tools/Setup/.
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    98
EOF