babashka/script/compile
2020-04-28 17:39:47 +02:00

86 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -eou pipefail
if [ -z "$BABASHKA_XMX" ]; then
export BABASHKA_XMX="-J-Xmx4500m"
fi
if [ -z "$GRAALVM_HOME" ]; then
echo "Please set GRAALVM_HOME"
exit 1
fi
BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION)
BABASHKA_JAR=${BABASHKA_JAR:-"target/babashka-$BABASHKA_VERSION-standalone.jar"}
if [[ ! -f "$BABASHKA_JAR" ]]
then
echo "Please run script/uberjar first."
exit 1
fi
$GRAALVM_HOME/bin/gu install native-image
export JAVA_HOME=$GRAALVM_HOME
SVM_JAR=$(find "$GRAALVM_HOME" | grep svm.jar)
$GRAALVM_HOME/bin/javac -cp "$SVM_JAR" resources/CutOffCoreServicesDependencies.java
BABASHKA_LEIN_PROFILES=""
BABASHKA_FEATURE_HSQLDB=${BABASHKA_FEATURE_HSQLDB:-}
if [ "$BABASHKA_FEATURE_HSQLDB" = "true" ]
then
BABASHKA_LEIN_PROFILES+="+feature/hsqldb"
else
BABASHKA_LEIN_PROFILES+="-feature/hsqldb"
fi
BABASHKA_FEATURE_XML=${BABASHKA_FEATURE_XML:-}
if [ "$BABASHKA_FEATURE_XML" != "false" ]
then
BABASHKA_LEIN_PROFILES+=",+feature/xml"
else
BABASHKA_LEIN_PROFILES+=",-feature/xml"
fi
BABASHKA_BINARY=${BABASHKA_BINARY:-"bb"}
args=( -jar $BABASHKA_JAR \
-H:Name=$BABASHKA_BINARY \
-H:+ReportExceptionStackTraces \
-J-Dclojure.spec.skip-macros=true \
-J-Dclojure.compiler.direct-linking=true \
"-H:IncludeResources=BABASHKA_VERSION" \
"-H:IncludeResources=SCI_VERSION" \
-H:ReflectionConfigurationFiles=reflection.json \
--initialize-at-run-time=java.lang.Math\$RandomNumberGeneratorHolder \
--initialize-at-build-time \
-H:Log=registerResource: \
-H:EnableURLProtocols=http,https \
--enable-all-security-services \
-H:+JNI \
--verbose \
--no-fallback \
--no-server \
--report-unsupported-elements-at-runtime \
"--initialize-at-run-time=org.postgresql.sspi.SSPIClient" \
"$BABASHKA_XMX" )
BABASHKA_STATIC=${BABASHKA_STATIC:-}
if [ "$BABASHKA_STATIC" = "true" ]; then
args+=("--static")
fi
if [ "$BABASHKA_FEATURE_HSQLDB" = "true" ]; then
args+=("-H:IncludeResources=org/hsqldb/.*\.properties", "-H:IncludeResources=org/hsqldb/.*\.sql")
fi
$GRAALVM_HOME/bin/native-image "${args[@]}"