host-run-test-jar revision bb1e8f0a07c12a8b0a2dd3cab6a1a7e825a54c6f
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#
6# Options:
7#   --quiet       -- don't chatter
8#   --debug       -- wait for debugger to attach
9#   --valgrind    -- use valgrind
10#   --no-verify   -- turn off verification (on by default)
11#   --no-optimize -- turn off optimization (on by default)
12
13msg() {
14    if [ "$QUIET" = "n" ]; then
15        echo "$@"
16    fi
17}
18
19DEBUG="n"
20GDB="n"
21VERIFY="y"
22OPTIMIZE="y"
23VALGRIND="n"
24DEV_MODE="n"
25QUIET="n"
26
27while true; do
28    if [ "x$1" = "x--quiet" ]; then
29        QUIET="y"
30        shift
31    elif [ "x$1" = "x--debug" ]; then
32        DEBUG="y"
33        shift
34    elif [ "x$1" = "x--gdb" ]; then
35        GDB="y"
36        shift
37    elif [ "x$1" = "x--valgrind" ]; then
38        VALGRIND="y"
39        shift
40    elif [ "x$1" = "x--dev" ]; then
41        DEV_MODE="y"
42        shift
43    elif [ "x$1" = "x--no-verify" ]; then
44        VERIFY="n"
45        shift
46    elif [ "x$1" = "x--no-optimize" ]; then
47        OPTIMIZE="n"
48        shift
49    elif [ "x$1" = "x--" ]; then
50        shift
51        break
52    elif expr "x$1" : "x--" >/dev/null 2>&1; then
53        echo "unknown option: $1" 1>&2
54        exit 1
55    else
56        break
57    fi
58done
59
60if [ "$OPTIMIZE" = "y" ]; then
61    if [ "$VERIFY" = "y" ]; then
62        DEX_OPTIMIZE="-Xdexopt:verified"
63    else
64        DEX_OPTIMIZE="-Xdexopt:all"
65    fi
66    msg "Performing optimizations"
67else
68    DEX_OPTIMIZE="-Xdexopt:none"
69    msg "Skipping optimizations"
70fi
71
72if [ "$VERIFY" = "y" ]; then
73    DEX_VERIFY=""
74    msg "Performing verification"
75else
76    DEX_VERIFY="-Xverify:none"
77    msg "Skipping verification"
78fi
79
80if [ "$VALGRIND" = "y" ]; then
81    msg "Running with valgrind"
82    valgrind_cmd="valgrind"
83    #valgrind_cmd="valgrind --leak-check=full"
84else
85    valgrind_cmd=""
86fi
87
88msg "------------------------------"
89
90HOSTBASE="${ANDROID_BUILD_TOP}/out/host"
91BASE="$OUT" # from build environment
92DATA_DIR=/tmp
93DEBUG_OPTS="-Xcheck:jni -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
94
95if [ ! -d $DATA_DIR/dalvik-cache ]; then
96    mkdir -p $DATA_DIR/dalvik-cache
97    [[ $? -ne 0 ]] && exit
98fi
99
100export ANDROID_PRINTF_LOG=brief
101if [ "$DEV_MODE" = "y" ]; then
102    export ANDROID_LOG_TAGS='*:d'
103else
104    export ANDROID_LOG_TAGS='*:s'
105fi
106export ANDROID_DATA="$DATA_DIR"
107export ANDROID_ROOT="${HOSTBASE}/linux-x86"
108export LD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
109export DYLD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
110
111exe="${ANDROID_ROOT}/bin/dalvikvm"
112framework="${BASE}/system/framework"
113bpath="${framework}/core.jar:${framework}/ext.jar:${framework}/framework.jar"
114
115if [ "$DEBUG" = "y" ]; then
116    PORT=8000
117    msg "Waiting for debugger to connect on localhost:$PORT"
118    DEX_DEBUG="-agentlib:jdwp=transport=dt_socket,addres=$PORT,server=y,suspend=y"
119fi
120
121if [ "$GDB" = "y" ]; then
122    gdb=gdb
123    gdbargs="--args $exe"
124fi
125
126$valgrind_cmd $gdb $exe $gdbargs "-Xbootclasspath:${bpath}" \
127    $DEX_VERIFY $DEX_OPTIMIZE $DEX_DEBUG -ea \
128    -cp test.jar Main "$@"
129