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