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