10f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet#!/usr/bin/env bash
20f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
30f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet##############################################################################
40f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet##
50f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet##  Gradle start up script for UN*X
60f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet##
70f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet##############################################################################
80f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
90f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
100f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetDEFAULT_JVM_OPTS=""
110f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
120f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetAPP_NAME="Gradle"
130f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetAPP_BASE_NAME=`basename "$0"`
140f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
150f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Use the maximum available, or set MAX_FD != -1 to use that value.
160f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetMAX_FD="maximum"
170f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
180f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetwarn ( ) {
190f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    echo "$*"
200f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet}
210f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
220f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetdie ( ) {
230f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    echo
240f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    echo "$*"
250f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    echo
260f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    exit 1
270f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet}
280f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
290f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# OS specific support (must be 'true' or 'false').
300f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetcygwin=false
310f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetmsys=false
320f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetdarwin=false
330f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetcase "`uname`" in
340f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet  CYGWIN* )
350f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    cygwin=true
360f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    ;;
370f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet  Darwin* )
380f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    darwin=true
390f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    ;;
400f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet  MINGW* )
410f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    msys=true
420f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    ;;
430f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetesac
440f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
450f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# For Cygwin, ensure paths are in UNIX format before anything is touched.
460f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetif $cygwin ; then
470f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
480f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetfi
490f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
500f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Attempt to set APP_HOME
510f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Resolve links: $0 may be a link
520f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetPRG="$0"
530f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Need this for relative symlinks.
540f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetwhile [ -h "$PRG" ] ; do
550f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    ls=`ls -ld "$PRG"`
560f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    link=`expr "$ls" : '.*-> \(.*\)$'`
570f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    if expr "$link" : '/.*' > /dev/null; then
580f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        PRG="$link"
590f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    else
600f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        PRG=`dirname "$PRG"`"/$link"
610f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    fi
620f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetdone
630f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetSAVED="`pwd`"
640f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetcd "`dirname \"$PRG\"`/" >&-
650f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetAPP_HOME="`pwd -P`"
660f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetcd "$SAVED" >&-
670f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
680f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
690f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
700f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Determine the Java command to use to start the JVM.
710f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetif [ -n "$JAVA_HOME" ] ; then
720f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
730f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        # IBM's JDK on AIX uses strange locations for the executables
740f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        JAVACMD="$JAVA_HOME/jre/sh/java"
750f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    else
760f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        JAVACMD="$JAVA_HOME/bin/java"
770f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    fi
780f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    if [ ! -x "$JAVACMD" ] ; then
790f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
800f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
810f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetPlease set the JAVA_HOME variable in your environment to match the
820f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetlocation of your Java installation."
830f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    fi
840f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetelse
850f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    JAVACMD="java"
860f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
870f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
880f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetPlease set the JAVA_HOME variable in your environment to match the
890f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetlocation of your Java installation."
900f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetfi
910f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
920f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Increase the maximum file descriptors if we can.
930f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
940f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    MAX_FD_LIMIT=`ulimit -H -n`
950f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    if [ $? -eq 0 ] ; then
960f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
970f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet            MAX_FD="$MAX_FD_LIMIT"
980f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        fi
990f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        ulimit -n $MAX_FD
1000f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        if [ $? -ne 0 ] ; then
1010f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet            warn "Could not set maximum file descriptor limit: $MAX_FD"
1020f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        fi
1030f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    else
1040f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
1050f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    fi
1060f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetfi
1070f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
1080f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# For Darwin, add options to specify how the application appears in the dock
1090f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetif $darwin; then
1100f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
1110f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetfi
1120f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
1130f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# For Cygwin, switch paths to Windows format before running java
1140f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetif $cygwin ; then
1150f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
1160f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
1170f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
1180f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    # We build the pattern for arguments to be converted via cygpath
1190f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
1200f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    SEP=""
1210f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    for dir in $ROOTDIRSRAW ; do
1220f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        ROOTDIRS="$ROOTDIRS$SEP$dir"
1230f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        SEP="|"
1240f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    done
1250f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    OURCYGPATTERN="(^($ROOTDIRS))"
1260f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    # Add a user-defined pattern to the cygpath arguments
1270f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
1280f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
1290f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    fi
1300f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    # Now convert the arguments - kludge to limit ourselves to /bin/sh
1310f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    i=0
1320f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    for arg in "$@" ; do
1330f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
1340f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
1350f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
1360f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
1370f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
1380f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        else
1390f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet            eval `echo args$i`="\"$arg\""
1400f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        fi
1410f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        i=$((i+1))
1420f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    done
1430f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    case $i in
1440f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (0) set -- ;;
1450f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (1) set -- "$args0" ;;
1460f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (2) set -- "$args0" "$args1" ;;
1470f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (3) set -- "$args0" "$args1" "$args2" ;;
1480f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
1490f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
1500f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
1510f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
1520f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
1530f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
1540f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    esac
1550f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetfi
1560f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
1570f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
1580f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohetfunction splitJvmOpts() {
1590f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet    JVM_OPTS=("$@")
1600f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet}
1610f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducroheteval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
1620f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier DucrohetJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
1630f3d903942978b7a4f2f91d6bfc72d3876689cbeXavier Ducrohet
1640451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohet# Change the project's .gradle to the android out dir.
1650451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier DucrohetANDROID_GRADLE_ROOT="$APP_HOME/../../out/host/gradle/frameworks/support"
1660451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohetif [[ -z "$ANDROID_CACHE_DIR" ]]; then
1670451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohet  ANDROID_CACHE_DIR="$ANDROID_GRADLE_ROOT/.gradle"
1680451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohetfi
1690451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohet
1700451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohet# Change the local user directories to be under the android out dir
1710451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohetexport GRADLE_USER_HOME="$ANDROID_GRADLE_ROOT/.gradle"
1720451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohetexport M2_HOME="$ANDROID_GRADLE_ROOT/.m2"
1730451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohet
1740451867ab21b4fd8d11c37fd774a4cee1ffeb0ffXavier Ducrohetexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain --project-cache-dir=$ANDROID_CACHE_DIR "$@"
175