|
| 1 | +#!/bin/sh |
| 2 | +#/*-------------------------------------------------------------------------- |
| 3 | +# * Copyright 2012 Taro L. Saito |
| 4 | +# * |
| 5 | +# * Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | +# * you may not use this file except in compliance with the License. |
| 7 | +# * You may obtain a copy of the License at |
| 8 | +# * |
| 9 | +# * http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | +# * |
| 11 | +# * Unless required by applicable law or agreed to in writing, software |
| 12 | +# * distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | +# * See the License for the specific language governing permissions and |
| 15 | +# * limitations under the License. |
| 16 | +# *--------------------------------------------------------------------------*/ |
| 17 | + |
| 18 | +if [ -z "$PROG_HOME" ] ; then |
| 19 | + ## resolve links - $0 may be a link to PROG_HOME |
| 20 | + PRG="$0" |
| 21 | + |
| 22 | + # need this for relative symlinks |
| 23 | + while [ -h "$PRG" ] ; do |
| 24 | + ls=`ls -ld "$PRG"` |
| 25 | + link=`expr "$ls" : '.*-> \(.*\)$'` |
| 26 | + if expr "$link" : '/.*' > /dev/null; then |
| 27 | + PRG="$link" |
| 28 | + else |
| 29 | + PRG="`dirname "$PRG"`/$link" |
| 30 | + fi |
| 31 | + done |
| 32 | + |
| 33 | + saveddir=`pwd` |
| 34 | + |
| 35 | + PROG_HOME=`dirname "$PRG"`/.. |
| 36 | + |
| 37 | + # make it fully qualified |
| 38 | + PROG_HOME=`cd "$PROG_HOME" && pwd` |
| 39 | + |
| 40 | + cd "$saveddir" |
| 41 | +fi |
| 42 | + |
| 43 | + |
| 44 | +cygwin=false |
| 45 | +mingw=false |
| 46 | +darwin=false |
| 47 | +case "`uname`" in |
| 48 | + CYGWIN*) cygwin=true |
| 49 | + ;; |
| 50 | + MINGW*) mingw=true |
| 51 | + ;; |
| 52 | + Darwin*) darwin=true |
| 53 | + if [ -z "$JAVA_VERSION" ] ; then |
| 54 | + JAVA_VERSION="CurrentJDK" |
| 55 | + else |
| 56 | + echo "Using Java version: $JAVA_VERSION" 1>&2 |
| 57 | + fi |
| 58 | + if [ -z "$JAVA_HOME" ] ; then |
| 59 | + JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home |
| 60 | + fi |
| 61 | + JAVACMD="`which java`" |
| 62 | + ;; |
| 63 | +esac |
| 64 | + |
| 65 | +# Resolve JAVA_HOME from javac command path |
| 66 | +if [ -z "$JAVA_HOME" ]; then |
| 67 | + javaExecutable="`which javac`" |
| 68 | + if [ -n "$javaExecutable" -a -f "$javaExecutable" -a ! "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then |
| 69 | + # readlink(1) is not available as standard on Solaris 10. |
| 70 | + readLink=`which readlink` |
| 71 | + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then |
| 72 | + javaExecutable="`readlink -f \"$javaExecutable\"`" |
| 73 | + javaHome="`dirname \"$javaExecutable\"`" |
| 74 | + javaHome=`expr "$javaHome" : '\(.*\)/bin'` |
| 75 | + JAVA_HOME="$javaHome" |
| 76 | + export JAVA_HOME |
| 77 | + fi |
| 78 | + fi |
| 79 | +fi |
| 80 | + |
| 81 | + |
| 82 | +if [ -z "$JAVACMD" ] ; then |
| 83 | + if [ -n "$JAVA_HOME" ] ; then |
| 84 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |
| 85 | + # IBM's JDK on AIX uses strange locations for the executables |
| 86 | + JAVACMD="$JAVA_HOME/jre/sh/java" |
| 87 | + else |
| 88 | + JAVACMD="$JAVA_HOME/bin/java" |
| 89 | + fi |
| 90 | + else |
| 91 | + JAVACMD="`which java`" |
| 92 | + fi |
| 93 | +fi |
| 94 | + |
| 95 | +if [ ! -x "$JAVACMD" ] ; then |
| 96 | + echo "Error: JAVA_HOME is not defined correctly." |
| 97 | + echo " We cannot execute $JAVACMD" |
| 98 | + exit 1 |
| 99 | +fi |
| 100 | + |
| 101 | +if [ -z "$JAVA_HOME" ] ; then |
| 102 | + echo "Warning: JAVA_HOME environment variable is not set." |
| 103 | +fi |
| 104 | + |
| 105 | +CLASSPATH_SUFFIX="" |
| 106 | +# Path separator used in EXTRA_CLASSPATH |
| 107 | +PSEP=":" |
| 108 | + |
| 109 | +# For Cygwin, switch paths to Windows-mixed format before running java |
| 110 | +if $cygwin; then |
| 111 | + [ -n "$PROG_HOME" ] && |
| 112 | + PROG_HOME=`cygpath -am "$PROG_HOME"` |
| 113 | + [ -n "$JAVA_HOME" ] && |
| 114 | + JAVA_HOME=`cygpath -am "$JAVA_HOME"` |
| 115 | + CLASSPATH_SUFFIX=";" |
| 116 | + PSEP=";" |
| 117 | +fi |
| 118 | + |
| 119 | +# For Migwn, ensure paths are in UNIX format before anything is touched |
| 120 | +if $mingw ; then |
| 121 | + [ -n "$PROG_HOME" ] && |
| 122 | + PROG_HOME="`(cd "$PROG_HOME"; pwd -W | sed 's|/|\\\\|g')`" |
| 123 | + [ -n "$JAVA_HOME" ] && |
| 124 | + JAVA_HOME="`(cd "$JAVA_HOME"; pwd -W | sed 's|/|\\\\|g')`" |
| 125 | + CLASSPATH_SUFFIX=";" |
| 126 | + PSEP=";" |
| 127 | +fi |
| 128 | + |
| 129 | + |
| 130 | +PROG_NAME={{{PROG_NAME}}} |
| 131 | +PROG_VERSION={{{PROG_VERSION}}} |
| 132 | +PROG_REVISION={{{PROG_REVISION}}} |
| 133 | + |
| 134 | +# add default libraries for compilation |
| 135 | +export BOOTSTRAP_APPEND="{{{EXPANDED_CLASSPATH}}}${CLASSPATH_SUFFIX}" |
| 136 | + |
| 137 | +eval exec "\"$JAVACMD\"" \ |
| 138 | + {{{JVM_OPTS}}} \ |
| 139 | + ${JAVA_OPTS} \ |
| 140 | + {{^EXPANDED_CLASSPATH}} |
| 141 | + -cp "'{{{EXTRA_CLASSPATH}}}${PROG_HOME}/lib/*${CLASSPATH_SUFFIX}'" \ |
| 142 | + {{/EXPANDED_CLASSPATH}} |
| 143 | + {{#EXPANDED_CLASSPATH}} |
| 144 | + -cp "'{{{EXTRA_CLASSPATH}}}{{{EXPANDED_CLASSPATH}}}${CLASSPATH_SUFFIX}'" \ |
| 145 | + {{/EXPANDED_CLASSPATH}} |
| 146 | + {{{MAIN_CLASS}}} \"\$@\" |
| 147 | +exit $? |
0 commit comments