1#!/bin/bash
2#
3# Copyright (C) 2011 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#     http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17lib=-XXlib:libart.so
18invoke_with=
19
20while true; do
21  if [ "$1" = "--invoke-with" ]; then
22    shift
23    invoke_with="$1"
24    shift
25  elif [ "$1" = "-d" ]; then
26    lib="-XXlib:libartd.so"
27    shift
28  elif expr "$1" : "--" >/dev/null 2>&1; then
29    echo "unknown option: $1" 1>&2
30    exit 1
31  else
32    break
33  fi
34done
35
36function follow_links() {
37  file="$1"
38  while [ -h "$file" ]; do
39    # On Mac OS, readlink -f doesn't work.
40    file="$(readlink "$file")"
41  done
42  echo "$file"
43}
44
45PROG_NAME="$(follow_links "$BASH_SOURCE")"
46PROG_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
47ANDROID_BUILD_TOP="$(cd "${PROG_DIR}/../../../../" ; pwd -P)/"
48ANDROID_HOST_OUT=$PROG_DIR/..
49ANDROID_DATA=$PWD/android-data$$
50DALVIKVM_EXECUTABLE=$ANDROID_HOST_OUT/bin/dalvikvm
51
52function find_libdir() {
53  if [ "$(readlink "$DALVIKVM_EXECUTABLE")" = "dalvikvm64" ]; then
54    echo "lib64"
55  else
56    echo "lib"
57  fi
58}
59
60LD_LIBRARY_PATH=$ANDROID_HOST_OUT/"$(find_libdir)"
61
62mkdir -p $ANDROID_DATA/dalvik-cache/{x86,x86_64}
63ANDROID_DATA=$ANDROID_DATA \
64  ANDROID_ROOT=$ANDROID_HOST_OUT \
65  LD_LIBRARY_PATH=$LD_LIBRARY_PATH \
66  $invoke_with $DALVIKVM_EXECUTABLE $lib \
67    -Ximage:$ANDROID_HOST_OUT/framework/core.art \
68     "$@"
69EXIT_STATUS=$?
70rm -rf $ANDROID_DATA
71exit $EXIT_STATUS
72