mirror of
https://github.com/processing/processing4.git
synced 2026-01-27 18:31:07 +01:00
112 lines
2.9 KiB
Bash
Executable File
112 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This script runs Processing, using the JRE in the Processing
|
|
# installation directory.
|
|
|
|
# If your system needs a different version of Java than what's included
|
|
# in the download, replace the 'java' folder with the contents of a new
|
|
# OpenJDK (Java 11 only), or create a symlink named "java" in the
|
|
# Processing installation directory that points to the JRE home directory.
|
|
|
|
# Thanks to Ferdinand Kasper for this build script. [fry]
|
|
|
|
|
|
# JARs required from JDK (anywhere in/below the JDK home directory)
|
|
JDKLIBS="rt.jar"
|
|
|
|
# Set this to non-zero for logging
|
|
LOGGING=0
|
|
|
|
# Logs name and value of a variable to stdout if LOGGING is non-zero.
|
|
# Expects the variable name as parameter $1.
|
|
log() {
|
|
if [ $LOGGING -ne 0 ]; then
|
|
eval echo $1=\$$1
|
|
fi
|
|
}
|
|
|
|
|
|
# Locates JDKLIBS in a directory and its subdirectories and saves their
|
|
# absolute paths as list to JDKCP. Expects the directory as parameter $1.
|
|
# Sets SUCCESS to 1 if all libraries were found, to 0 otherwise.
|
|
make_jdkcp() {
|
|
# Back out of JRE directory if apparently located inside a JDK
|
|
if [ -f "$1/../bin/java" ]; then
|
|
DIR="$1/.."
|
|
else
|
|
DIR="$1"
|
|
fi
|
|
log DIR
|
|
|
|
JDKCP=
|
|
SUCCESS=1
|
|
|
|
# Locate JDKLIBS
|
|
for L in $JDKLIBS; do
|
|
# Locate only the first library with a matching name
|
|
LIB=`find "$DIR" -name $L 2>/dev/null | head -n 1`
|
|
log L
|
|
log LIB
|
|
|
|
# Library found?
|
|
if [ -n "$LIB" ]; then
|
|
JDKCP="$JDKCP"${JDKCP:+:}"$LIB"
|
|
else
|
|
SUCCESS=0
|
|
fi
|
|
done
|
|
|
|
log JDKCP
|
|
}
|
|
|
|
|
|
# Get absolute path of directory where this script is located
|
|
APPDIR=`readlink -f "$0"`
|
|
APPDIR=`dirname "$APPDIR"`
|
|
log APPDIR
|
|
|
|
# Try using a local JDK from the same directory as this script
|
|
JDKDIR=`readlink -f "$APPDIR/java"`
|
|
make_jdkcp "$JDKDIR"
|
|
log SUCCESS
|
|
|
|
# Don't use the installed JDK, because it's not supported.
|
|
# Local JDK found?
|
|
#if [ $SUCCESS -ne 1 ]; then
|
|
# # No, try using the preferred system JRE/JDK (if any)
|
|
# JDKDIR=`which java` && JDKDIR=`readlink -e "$JDKDIR"` && JDKDIR=`dirname "$JDKDIR"`/..
|
|
# make_jdkcp "$JDKDIR"
|
|
# log SUCCESS
|
|
#fi
|
|
|
|
# Add all required JARs to CLASSPATH
|
|
CLASSPATH="$CLASSPATH"${CLASSPATH:+:}"$JDKCP"
|
|
for LIB in "$APPDIR"/lib/*.jar; do
|
|
CLASSPATH="$CLASSPATH"${CLASSPATH:+:}"$LIB"
|
|
done
|
|
for LIB in "$APPDIR"/core/library/*.jar; do
|
|
CLASSPATH="$CLASSPATH"${CLASSPATH:+:}"$LIB"
|
|
done
|
|
for LIB in "$APPDIR"/modes/java/mode/*.jar; do
|
|
CLASSPATH="$CLASSPATH"${CLASSPATH:+:}"$LIB"
|
|
done
|
|
export CLASSPATH
|
|
log CLASSPATH
|
|
|
|
# Make all JDK binaries available in PATH
|
|
export PATH="$JDKDIR/bin":"$PATH"
|
|
log PATH
|
|
|
|
current_name=`basename $0`
|
|
cmd_name='processing-java'
|
|
|
|
if [ $current_name = $cmd_name ]
|
|
then
|
|
java -Djna.nosys=true -Xmx512m processing.mode.java.Commander "$@"
|
|
exit $?
|
|
else
|
|
# Start Processing in the same directory as this script
|
|
cd "$APPDIR"
|
|
java -Djna.nosys=true -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dpython.console.encoding=UTF-8 -Xmx512m --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED processing.app.ui.Splash "$@" &
|
|
fi
|