host-run-test-jar revision 4c1bf1a86cc0ca1323c317597583c01b3f7f8cf0
1#!/bin/sh
2#
3# Run the code in test.jar using the host-mode virtual machine. The jar should
4# contain a top-level class named Main to run.
5
6msg() {
7    if [ "$QUIET" = "n" ]; then
8        echo "$@"
9    fi
10}
11
12DEBUG="n"
13GDB="n"
14INTERPRETER="n"
15VERIFY="y"
16OPTIMIZE="y"
17INVOKE_WITH=""
18DEV_MODE="n"
19QUIET="n"
20OATEXEC="oatexecd"
21
22while true; do
23    if [ "x$1" = "x--quiet" ]; then
24        QUIET="y"
25        shift
26    elif [ "x$1" = "x-O" ]; then
27        OATEXEC="oatexec"
28        shift
29    elif [ "x$1" = "x--debug" ]; then
30        DEBUG="y"
31        shift
32    elif [ "x$1" = "x--gdb" ]; then
33        GDB="y"
34        shift
35    elif [ "x$1" = "x--invoke-with" ]; then
36        shift
37        INVOKE_WITH="$1"
38        shift
39    elif [ "x$1" = "x--dev" ]; then
40        DEV_MODE="y"
41        shift
42    elif [ "x$1" = "x--interpreter" ]; then
43        INTERPRETER="y"
44        shift
45    elif [ "x$1" = "x--no-verify" ]; then
46        VERIFY="n"
47        shift
48    elif [ "x$1" = "x--no-optimize" ]; then
49        OPTIMIZE="n"
50        shift
51    elif [ "x$1" = "x--" ]; then
52        shift
53        break
54    elif expr "x$1" : "x--" >/dev/null 2>&1; then
55        echo "unknown $0 option: $1" 1>&2
56        exit 1
57    else
58        break
59    fi
60done
61
62msg "------------------------------"
63
64mkdir $DEX_LOCATION/art-cache
65[[ $? -ne 0 ]] && exit
66
67export ANDROID_PRINTF_LOG=brief
68if [ "$DEV_MODE" = "y" ]; then
69    export ANDROID_LOG_TAGS='*:d'
70else
71    export ANDROID_LOG_TAGS='*:s'
72fi
73export ANDROID_DATA="$DEX_LOCATION"
74export ANDROID_ROOT="${ANDROID_HOST_OUT}"
75export LD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
76export DYLD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
77unset ANDROID_PRODUCT_OUT # avoid defaulting dex2oat --host-prefix to target output
78
79exe="${ANDROID_ROOT}/bin/${OATEXEC}"
80
81if [ "$DEBUG" = "y" ]; then
82    PORT=8000
83    msg "Waiting for jdb to connect:"
84    msg "    jdb -attach localhost:$PORT"
85    DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,address=$PORT,server=y,suspend=y"
86fi
87
88if [ "$GDB" = "y" ]; then
89    gdb=gdb
90    gdbargs="--args $exe"
91fi
92
93if [ "$INTERPRETER" = "y" ]; then
94    INT_OPTS="-Xint"
95fi
96
97JNI_OPTS="-Xjnigreflimit:512 -Xcheck:jni"
98
99cd $ANDROID_BUILD_TOP
100$INVOKE_WITH $gdb $exe $gdbargs -Ximage:$ANDROID_ROOT/framework/core.art \
101    $JNI_OPTS $INT_OPTS $DEBUG_OPTS \
102    -cp $DEX_LOCATION/$TEST_NAME.jar Main "$@"
103