112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden#!/bin/bash
212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden#
312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# Copyright (C) 2009 The Android Open Source Project
412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden#
512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# Licensed under the Apache License, Version 2.0 (the "License");
612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# you may not use this file except in compliance with the License.
712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# You may obtain a copy of the License at
812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden#
912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden#     http://www.apache.org/licenses/LICENSE-2.0
1012d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden#
1112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# Unless required by applicable law or agreed to in writing, software
1212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# distributed under the License is distributed on an "AS IS" BASIS,
1312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# See the License for the specific language governing permissions and
1512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# limitations under the License.
1612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden
1712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# Set up prog to be the path of this script, including following symlinks,
1812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# and set up progdir to be the fully-qualified pathname of its directory.
1912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenprog="$0"
2012d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenwhile [ -h "${prog}" ]; do
2112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    newProg=`/bin/ls -ld "${prog}"`
2212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
2312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    if expr "x${newProg}" : 'x/' >/dev/null; then
2412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden        prog="${newProg}"
2512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    else
2612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden        progdir=`dirname "${prog}"`
2712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden        prog="${progdir}/${newProg}"
2812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    fi
2912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddendone
3012d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenoldwd=`pwd`
3112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenprogdir=`dirname "${prog}"`
3212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddencd "${progdir}"
3312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenprogdir=`pwd`
3412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenprog="${progdir}"/`basename "${prog}"`
3512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddencd "${oldwd}"
3612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden
3712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenjarfile=dexdeps.jar
3812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenlibdir="$progdir"
3912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenif [ ! -r "$libdir/$jarfile" ]
4012d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenthen
4112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    libdir=`dirname "$progdir"`/tools/lib
4212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenfi
4312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenif [ ! -r "$libdir/$jarfile" ]
4412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenthen
4512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    libdir=`dirname "$progdir"`/framework
4612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenfi
4712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenif [ ! -r "$libdir/$jarfile" ]
4812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenthen
4912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    echo `basename "$prog"`": can't find $jarfile"
5012d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    exit 1
5112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenfi
5212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden
5312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenjavaOpts=""
5412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden
5512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# Alternatively, this will extract any parameter "-Jxxx" from the command line
5612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden# and pass them to Java (instead of to dexdeps).
5712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenwhile expr "x$1" : 'x-J' >/dev/null; do
5812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    opt=`expr "$1" : '-J\(.*\)'`
5912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    javaOpts="${javaOpts} -${opt}"
6012d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    shift
6112d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddendone
6212d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden
6312d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenif [ "$OSTYPE" = "cygwin" ] ; then
6412d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    jarpath=`cygpath -w  "$libdir/$jarfile"`
6512d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenelse
6612d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden    jarpath="$libdir/$jarfile"
6712d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenfi
6812d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFadden
6912d6d4c0ea192b6a924df0df1e3b14ce1ed5793bAndy McFaddenexec java $javaOpts -jar "$jarpath" "$@"
70