blob: 582882271cad5e58d6c4466abea6319fa6a01ad1 [file] [log] [blame]
#!/bin/sh
#
# Run the code in test.jar using the host-mode virtual machine. The jar should
# contain a top-level class named Main to run.
#
# Options:
# --quiet -- don't chatter
# --debug -- wait for debugger to attach
# --no-verify -- turn off verification (on by default)
# --no-optimize -- turn off optimization (on by default)
msg() {
if [ "$QUIET" = "n" ]; then
echo "$@"
fi
}
DEBUG="n"
GDB="n"
VERIFY="y"
OPTIMIZE="y"
INVOKE_WITH=""
DEV_MODE="n"
QUIET="n"
while true; do
if [ "x$1" = "x--quiet" ]; then
QUIET="y"
shift
elif [ "x$1" = "x--debug" ]; then
DEBUG="y"
shift
elif [ "x$1" = "x--gdb" ]; then
GDB="y"
shift
elif [ "x$1" = "x--invoke-with" ]; then
shift
INVOKE_WITH="$1"
shift
elif [ "x$1" = "x--dev" ]; then
DEV_MODE="y"
shift
elif [ "x$1" = "x--no-verify" ]; then
VERIFY="n"
shift
elif [ "x$1" = "x--no-optimize" ]; then
OPTIMIZE="n"
shift
elif [ "x$1" = "x--" ]; then
shift
break
elif expr "x$1" : "x--" >/dev/null 2>&1; then
echo "unknown $0 option: $1" 1>&2
exit 1
else
break
fi
done
msg "------------------------------"
mkdir $DEX_LOCATION/art-cache
[[ $? -ne 0 ]] && exit
export ANDROID_PRINTF_LOG=brief
if [ "$DEV_MODE" = "y" ]; then
export ANDROID_LOG_TAGS='*:d'
else
export ANDROID_LOG_TAGS='*:s'
fi
export ANDROID_DATA="$DEX_LOCATION"
export ANDROID_ROOT="${ANDROID_HOST_OUT}"
export LD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
export DYLD_LIBRARY_PATH="${ANDROID_ROOT}/lib"
unset ANDROID_PRODUCT_OUT # avoid defaulting dex2oat --host-prefix to target output
exe="${ANDROID_ROOT}/bin/oatexecd"
if [ "$DEBUG" = "y" ]; then
PORT=8000
msg "Waiting for jdb to connect:"
msg " jdb -attach localhost:$PORT"
DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,address=$PORT,server=y,suspend=y"
fi
if [ "$GDB" = "y" ]; then
gdb=gdb
gdbargs="--args $exe"
fi
JNI_OPTS="-Xjnigreflimit:256 -Xcheck:jni"
cd $ANDROID_BUILD_TOP
$INVOKE_WITH $gdb $exe $gdbargs -Ximage:$ANDROID_ROOT/framework/core.art \
$JNI_OPTS $DEBUG_OPTS \
-cp $DEX_LOCATION/$TEST_NAME.jar Main "$@"