1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project#!/bin/bash 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# Copyright (C) 2007 The Android Open Source Project 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# Licensed under the Apache License, Version 2.0 (the "License"); 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# you may not use this file except in compliance with the License. 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# Set up prog to be the path of this script, including following symlinks, 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project# and set up progdir to be the fully-qualified pathname of its directory. 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectprog="$0" 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectwhile [ -h "${prog}" ]; do 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project newProg=`/bin/ls -ld "${prog}"` 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project newProg=`expr "${newProg}" : ".* -> \(.*\)$"` 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if expr "x${newProg}" : 'x/' >/dev/null; then 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project prog="${newProg}" 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project progdir=`dirname "${prog}"` 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project prog="${progdir}/${newProg}" 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fi 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectdone 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectoldwd=`pwd` 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectprogdir=`dirname "${prog}"` 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectcd "${progdir}" 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectprogdir=`pwd` 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectprog="${progdir}"/`basename "${prog}"` 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectcd "${oldwd}" 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectjarfile=dx.jar 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectlibdir="$progdir" 39ac830feace28957c9e84ce2cb0ed2a565bc24c99Xavier Ducrohet 4096b2060a21b65459831b3beb38d6626e014d95d6Dan Bornsteinif [ ! -r "$libdir/$jarfile" ]; then 41ac830feace28957c9e84ce2cb0ed2a565bc24c99Xavier Ducrohet # set dx.jar location for the SDK case 42cb9dfa123c6fcc43be629666837c4e6f86b476eaXavier Ducrohet libdir="$libdir/lib" 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectfi 4496b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein 45ac830feace28957c9e84ce2cb0ed2a565bc24c99Xavier Ducrohet 4696b2060a21b65459831b3beb38d6626e014d95d6Dan Bornsteinif [ ! -r "$libdir/$jarfile" ]; then 47ac830feace28957c9e84ce2cb0ed2a565bc24c99Xavier Ducrohet # set dx.jar location for the Android tree case 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project libdir=`dirname "$progdir"`/framework 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectfi 5096b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein 5196b2060a21b65459831b3beb38d6626e014d95d6Dan Bornsteinif [ ! -r "$libdir/$jarfile" ]; then 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project echo `basename "$prog"`": can't find $jarfile" 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project exit 1 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectfi 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 5696b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# By default, give dx a max heap size of 1 gig. This can be overridden 5796b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# by using a "-J" option (see below). 5896b2060a21b65459831b3beb38d6626e014d95d6Dan BornsteindefaultMx="-Xmx1024M" 5996b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein 6096b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# The following will extract any initial parameters of the form 6196b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# "-J<stuff>" from the command line and pass them to the Java 6296b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# invocation (instead of to dx). This makes it possible for you to add 6396b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# a command-line parameter such as "-JXmx256M" in your scripts, for 6496b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# example. "java" (with no args) and "java -X" give a summary of 6596b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein# available options. 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 6796b2060a21b65459831b3beb38d6626e014d95d6Dan BornsteinjavaOpts="" 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectwhile expr "x$1" : 'x-J' >/dev/null; do 70530e0a50c365bd8451209a014fef4cf293e573c1Dan Bornstein opt=`expr "x$1" : 'x-J\(.*\)'` 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project javaOpts="${javaOpts} -${opt}" 7296b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein if expr "x${opt}" : "xXmx[0-9]" >/dev/null; then 7396b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein defaultMx="no" 7496b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein fi 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project shift 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectdone 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 7896b2060a21b65459831b3beb38d6626e014d95d6Dan Bornsteinif [ "${defaultMx}" != "no" ]; then 7996b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein javaOpts="${javaOpts} ${defaultMx}" 8096b2060a21b65459831b3beb38d6626e014d95d6Dan Bornsteinfi 8196b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein 8296b2060a21b65459831b3beb38d6626e014d95d6Dan Bornsteinif [ "$OSTYPE" = "cygwin" ]; then 8396b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein # For Cygwin, convert the jarfile path into native Windows style. 8496b2060a21b65459831b3beb38d6626e014d95d6Dan Bornstein jarpath=`cygpath -w "$libdir/$jarfile"` 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectelse 86ab0f0a0581860a575cb869f6d3cdbba88fed9d04Andy McFadden jarpath="$libdir/$jarfile" 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectfi 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectexec java $javaOpts -jar "$jarpath" "$@" 90