| #!/bin/bash |
| # |
| # Copyright (C) 2011 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| function follow_links() { |
| if [ z"$BASH_SOURCE" != z ]; then |
| file="$BASH_SOURCE" |
| else |
| file="$0" |
| fi |
| while [ -h "$file" ]; do |
| # On Mac OS, readlink -f doesn't work. |
| file="$(readlink "$file")" |
| done |
| echo "$file" |
| } |
| |
| function find_libdir() { |
| if [ "$(readlink "$DALVIKVM_EXECUTABLE")" = "dalvikvm64" ]; then |
| echo "lib64" |
| else |
| echo "lib" |
| fi |
| } |
| |
| PROG_NAME="$(follow_links)" |
| PROG_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" |
| ANDROID_ROOT=$PROG_DIR/.. |
| ANDROID_DATA=$PWD/android-data$$ |
| DALVIKVM_EXECUTABLE=$ANDROID_ROOT/bin/dalvikvm |
| LIBDIR=$(find_libdir) |
| LD_LIBRARY_PATH=$ANDROID_ROOT/$LIBDIR |
| |
| lib=-XXlib:$ANDROID_ROOT/$LIBDIR/libart.so |
| invoke_with= |
| |
| while true; do |
| if [ "$1" = "--invoke-with" ]; then |
| shift |
| invoke_with="$1" |
| shift |
| elif [ "$1" = "-d" ]; then |
| lib="-XXlib:$LIBDIR/libartd.so" |
| shift |
| elif expr "$1" : "--" >/dev/null 2>&1; then |
| echo "unknown option: $1" 1>&2 |
| exit 1 |
| else |
| break |
| fi |
| done |
| |
| mkdir -p $ANDROID_DATA/dalvik-cache/{arm,arm64,x86,x86_64} |
| ANDROID_DATA=$ANDROID_DATA \ |
| ANDROID_ROOT=$ANDROID_ROOT \ |
| LD_LIBRARY_PATH=$LD_LIBRARY_PATH \ |
| $invoke_with $DALVIKVM_EXECUTABLE $lib \ |
| -Ximage:$ANDROID_ROOT/framework/core.art \ |
| "$@" |
| EXIT_STATUS=$? |
| rm -rf $ANDROID_DATA |
| exit $EXIT_STATUS |