host-run-test-jar revision 265091e581c9f643b37e7966890911f09e223269
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        DEV_MODE="y"
35        shift
36    elif [ "x$1" = "x--invoke-with" ]; then
37        shift
38        INVOKE_WITH="$1"
39        shift
40    elif [ "x$1" = "x--dev" ]; then
41        DEV_MODE="y"
42        shift
43    elif [ "x$1" = "x--interpreter" ]; then
44        INTERPRETER="y"
45        shift
46    elif [ "x$1" = "x--no-verify" ]; then
47        VERIFY="n"
48        shift
49    elif [ "x$1" = "x--no-optimize" ]; then
50        OPTIMIZE="n"
51        shift
52    elif [ "x$1" = "x--" ]; then
53        shift
54        break
55    elif expr "x$1" : "x--" >/dev/null 2>&1; then
56        echo "unknown $0 option: $1" 1>&2
57        exit 1
58    else
59        break
60    fi
61done
62
63msg "------------------------------"
64
65mkdir $DEX_LOCATION/art-cache
66[[ $? -ne 0 ]] && exit
67
68export ANDROID_PRINTF_LOG=brief
69if [ "$DEV_MODE" = "y" ]; then
70    export ANDROID_LOG_TAGS='*:d'
71else
72    export ANDROID_LOG_TAGS='*:s'
73fi
74export ANDROID_DATA="$DEX_LOCATION"
75export ANDROID_ROOT="${ANDROID_HOST_OUT}"
76export LD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
77export DYLD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
78unset ANDROID_PRODUCT_OUT # avoid defaulting dex2oat --host-prefix to target output
79
80exe="${ANDROID_ROOT}/bin/${OATEXEC}"
81
82if [ "$DEBUG" = "y" ]; then
83    PORT=8000
84    msg "Waiting for jdb to connect:"
85    msg "    jdb -attach localhost:$PORT"
86    DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,address=$PORT,server=y,suspend=y"
87fi
88
89if [ "$GDB" = "y" ]; then
90    gdb=gdb
91    gdbargs="--annotate=3 --args $exe"
92fi
93
94if [ "$INTERPRETER" = "y" ]; then
95    INT_OPTS="-Xint"
96fi
97
98JNI_OPTS="-Xjnigreflimit:512 -Xcheck:jni"
99
100cd $ANDROID_BUILD_TOP
101$INVOKE_WITH $gdb $exe $gdbargs -Ximage:$ANDROID_ROOT/framework/core.art \
102    $JNI_OPTS $INT_OPTS $DEBUG_OPTS \
103    -cp $DEX_LOCATION/$TEST_NAME.jar Main "$@"
104