echo "Couldn't locate the top of the tree. Try setting TOP." >&2
return
fi
- CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \
- make --no-print-directory -C "$T" -f build/core/config.mk dumpvar-abs-$1
+ (cd $T; CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \
+ make --no-print-directory -C "$T" -f build/core/config.mk dumpvar-abs-$1)
}
# Get the exact value of a build variable.
return
fi
CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \
- TARGET_PRODUCT=$1 TARGET_BUILD_VARIANT= \
- TARGET_SIMULATOR= TARGET_BUILD_TYPE= \
+ TARGET_PRODUCT=$1 \
+ TARGET_BUILD_VARIANT= \
+ TARGET_BUILD_TYPE= \
TARGET_BUILD_APPS= \
get_build_var TARGET_DEVICE > /dev/null
# hide successful answers, but allow the errors to show
fi
if [ -n "$ANDROID_PRE_BUILD_PATHS" ] ; then
export PATH=${PATH/$ANDROID_PRE_BUILD_PATHS/}
+ # strip trailing ':', if any
+ export PATH=${PATH/%:/}
fi
# and in with the new
CODE_REVIEWS=
prebuiltdir=$(getprebuilt)
- toolchaindir=toolchain/arm-eabi-4.4.3/bin
+
# The gcc toolchain does not exists for windows/cygwin. In this case, do not reference it.
+ export ANDROID_EABI_TOOLCHAIN=
+ toolchaindir=toolchain/arm-linux-androideabi-4.4.x/bin
if [ -d "$prebuiltdir/$toolchaindir" ]; then
export ANDROID_EABI_TOOLCHAIN=$prebuiltdir/$toolchaindir
- else
- export ANDROID_EABI_TOOLCHAIN=
fi
+
+ export ARM_EABI_TOOLCHAIN=
+ toolchaindir=toolchain/arm-eabi-4.4.3/bin
+ if [ -d "$prebuiltdir/$toolchaindir" ]; then
+ export ARM_EABI_TOOLCHAIN=$prebuiltdir/$toolchaindir
+ fi
+
export ANDROID_TOOLCHAIN=$ANDROID_EABI_TOOLCHAIN
export ANDROID_QTOOLS=$T/development/emulator/qtools
- export ANDROID_BUILD_PATHS=:$(get_build_var ANDROID_BUILD_PATHS):$ANDROID_QTOOLS:$ANDROID_TOOLCHAIN:$ANDROID_EABI_TOOLCHAIN$CODE_REVIEWS
+ export ANDROID_BUILD_PATHS=:$(get_build_var ANDROID_BUILD_PATHS):$ANDROID_QTOOLS:$ANDROID_TOOLCHAIN:$ARM_EABI_TOOLCHAIN$CODE_REVIEWS
export PATH=$PATH$ANDROID_BUILD_PATHS
unset ANDROID_JAVA_TOOLCHAIN
+ unset ANDROID_PRE_BUILD_PATHS
if [ -n "$JAVA_HOME" ]; then
export ANDROID_JAVA_TOOLCHAIN=$JAVA_HOME/bin
- fi
- export ANDROID_PRE_BUILD_PATHS=$ANDROID_JAVA_TOOLCHAIN
- if [ -n "$ANDROID_PRE_BUILD_PATHS" ]; then
- export PATH=$ANDROID_PRE_BUILD_PATHS:$PATH
+ export ANDROID_PRE_BUILD_PATHS=$ANDROID_JAVA_TOOLCHAIN:
+ export PATH=$ANDROID_PRE_BUILD_PATHS$PATH
fi
unset ANDROID_PRODUCT_OUT
# needed for building linux on MacOS
# TODO: fix the path
#export HOST_EXTRACFLAGS="-I "$T/system/kernel_headers/host_include
-
- # needed for OProfile to post-process collected samples
- export OPROFILE_EVENTS_DIR=$prebuiltdir/oprofile
}
function printconfig()
fi
}
-case `uname -s` in
- Linux)
- function choosesim()
- {
- echo "Build for the simulator or the device?"
- echo " 1. Device"
- echo " 2. Simulator"
- echo
+function addcompletions()
+{
+ local T dir f
- export TARGET_SIMULATOR=
- local ANSWER
- while [ -z $TARGET_SIMULATOR ]
- do
- echo -n "Which would you like? [1] "
- if [ -z "$1" ] ; then
- read ANSWER
- else
- echo $1
- ANSWER=$1
- fi
- case $ANSWER in
- "")
- export TARGET_SIMULATOR=false
- ;;
- 1)
- export TARGET_SIMULATOR=false
- ;;
- Device)
- export TARGET_SIMULATOR=false
- ;;
- 2)
- export TARGET_SIMULATOR=true
- ;;
- Simulator)
- export TARGET_SIMULATOR=true
- ;;
- *)
- echo
- echo "I didn't understand your response. Please try again."
- echo
- ;;
- esac
- if [ -n "$1" ] ; then
- break
- fi
- done
+ # Keep us from trying to run in something that isn't bash.
+ if [ -z "${BASH_VERSION}" ]; then
+ return
+ fi
- set_stuff_for_environment
- }
- ;;
- *)
- function choosesim()
- {
- echo "Only device builds are supported for" `uname -s`
- echo " Forcing TARGET_SIMULATOR=false"
- echo
- if [ -z "$1" ]
- then
- echo -n "Press enter: "
- read
- fi
+ # Keep us from trying to run in bash that's too old.
+ if [ ${BASH_VERSINFO[0]} -lt 3 ]; then
+ return
+ fi
- export TARGET_SIMULATOR=false
- set_stuff_for_environment
- }
- ;;
-esac
+ dir="sdk/bash_completion"
+ if [ -d ${dir} ]; then
+ for f in `/bin/ls ${dir}/[a-z]*.bash 2> /dev/null`; do
+ echo "including $f"
+ . $f
+ done
+ fi
+}
function choosetype()
{
echo
local DEFAULT_NUM DEFAULT_VALUE
- if [ $TARGET_SIMULATOR = "false" ] ; then
- DEFAULT_NUM=1
- DEFAULT_VALUE=release
- else
- DEFAULT_NUM=2
- DEFAULT_VALUE=debug
- fi
+ DEFAULT_NUM=1
+ DEFAULT_VALUE=release
export TARGET_BUILD_TYPE=
local ANSWER
if [ "x$TARGET_PRODUCT" != x ] ; then
default_value=$TARGET_PRODUCT
else
- if [ "$TARGET_SIMULATOR" = true ] ; then
- default_value=sim
- else
- default_value=full
- fi
+ default_value=full
fi
export TARGET_PRODUCT=
function choosecombo()
{
- choosesim $1
+ choosetype $1
echo
echo
- choosetype $2
+ chooseproduct $2
echo
echo
- chooseproduct $3
-
- echo
- echo
- choosevariant $4
+ choosevariant $3
echo
set_stuff_for_environment
if [ -z "$answer" ]
then
selection=full-eng
- elif [ "$answer" = "simulator" ]
- then
- selection=simulator
elif (echo -n $answer | grep -q -e "^[0-9][0-9]*$")
then
if [ $answer -le ${#LUNCH_MENU_CHOICES[@]} ]
export TARGET_BUILD_APPS=
- # special case the simulator
- if [ "$selection" = "simulator" ]
+ local product=$(echo -n $selection | sed -e "s/-.*$//")
+ check_product $product
+ if [ $? -ne 0 ]
then
- export TARGET_PRODUCT=sim
- export TARGET_BUILD_VARIANT=eng
- export TARGET_SIMULATOR=true
- export TARGET_BUILD_TYPE=debug
- else
- local product=$(echo -n $selection | sed -e "s/-.*$//")
- check_product $product
- if [ $? -ne 0 ]
- then
- echo
- echo "** Don't have a product spec for: '$product'"
- echo "** Do you have the right repo manifest?"
- product=
- fi
+ echo
+ echo "** Don't have a product spec for: '$product'"
+ echo "** Do you have the right repo manifest?"
+ product=
+ fi
- local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")
- check_variant $variant
- if [ $? -ne 0 ]
- then
- echo
- echo "** Invalid variant: '$variant'"
- echo "** Must be one of ${VARIANT_CHOICES[@]}"
- variant=
- fi
+ local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")
+ check_variant $variant
+ if [ $? -ne 0 ]
+ then
+ echo
+ echo "** Invalid variant: '$variant'"
+ echo "** Must be one of ${VARIANT_CHOICES[@]}"
+ variant=
+ fi
- if [ -z "$product" -o -z "$variant" ]
- then
- echo
- return 1
- fi
+ if [ -z "$product" -o -z "$variant" ]
+ then
+ echo
+ return 1
+ fi
- export TARGET_PRODUCT=$product
- export TARGET_BUILD_VARIANT=$variant
- export TARGET_SIMULATOR=false
- export TARGET_BUILD_TYPE=release
- fi # !simulator
+ export TARGET_PRODUCT=$product
+ export TARGET_BUILD_VARIANT=$variant
+ export TARGET_BUILD_TYPE=release
echo
printconfig
}
+# Tab completion for lunch.
+function _lunch()
+{
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ COMPREPLY=( $(compgen -W "${LUNCH_MENU_CHOICES[*]}" -- ${cur}) )
+ return 0
+}
+complete -F _lunch lunch
+
# Configures the build to build unbundled apps.
# Run tapas with one ore more app names (from LOCAL_PACKAGE_NAME)
function tapas()
export TARGET_PRODUCT=full
export TARGET_BUILD_VARIANT=$variant
- export TARGET_SIMULATOR=false
export TARGET_BUILD_TYPE=release
export TARGET_BUILD_APPS=$apps
ARGS="$ARGS showcommands"
elif [ "$DIR" = dist ]; then
ARGS="$ARGS dist"
+ elif [ "$DIR" = incrementaljavac ]; then
+ ARGS="$ARGS incrementaljavac"
else
echo "No Android.mk in $DIR."
return 1
local PID
local PROG="$3"
if [ "$PROG" ] ; then
- PID=`pid $3`
+ if [[ "$PROG" =~ ^[0-9]+$ ]] ; then
+ PID="$3"
+ else
+ PID=`pid $3`
+ fi
adb forward "tcp$PORT" "tcp$PORT"
adb shell gdbserver $PORT --attach $PID &
sleep 2
echo >>"$OUT_ROOT/gdbclient.cmds" "target remote $PORT"
echo >>"$OUT_ROOT/gdbclient.cmds" ""
- arm-eabi-gdb -x "$OUT_ROOT/gdbclient.cmds" "$OUT_EXE_SYMBOLS/$EXE"
+ arm-linux-androideabi-gdb -x "$OUT_ROOT/gdbclient.cmds" "$OUT_EXE_SYMBOLS/$EXE"
else
echo "Unable to determine build system output dir."
fi
Darwin)
function sgrep()
{
- find -E . -type f -iregex '.*\.(c|h|cpp|S|java|xml|sh|mk)' -print0 | xargs -0 grep --color -n "$@"
+ find -E . -name .repo -prune -o -name .git -prune -o -type f -iregex '.*\.(c|h|cpp|S|java|xml|sh|mk)' -print0 | xargs -0 grep --color -n "$@"
}
;;
*)
function sgrep()
{
- find . -type f -iregex '.*\.\(c\|h\|cpp\|S\|java\|xml\|sh\|mk\)' -print0 | xargs -0 grep --color -n "$@"
+ find . -name .repo -prune -o -name .git -prune -o -type f -iregex '.*\.\(c\|h\|cpp\|S\|java\|xml\|sh\|mk\)' -print0 | xargs -0 grep --color -n "$@"
}
;;
esac
function jgrep()
{
- find . -type f -name "*\.java" -print0 | xargs -0 grep --color -n "$@"
+ find . -name .repo -prune -o -name .git -prune -o -type f -name "*\.java" -print0 | xargs -0 grep --color -n "$@"
}
function cgrep()
{
- find . -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' -o -name '*.h' \) -print0 | xargs -0 grep --color -n "$@"
+ find . -name .repo -prune -o -name .git -prune -o -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' -o -name '*.h' \) -print0 | xargs -0 grep --color -n "$@"
}
function resgrep()
{
- for dir in `find . -name res -type d`; do find $dir -type f -name '*\.xml' -print0 | xargs -0 grep --color -n "$@"; done;
+ for dir in `find . -name .repo -prune -o -name .git -prune -o -name res -type d`; do find $dir -type f -name '*\.xml' -print0 | xargs -0 grep --color -n "$@"; done;
}
case `uname -s` in
Darwin)
function mgrep()
{
- find -E . -type f -iregex '.*/(Makefile|Makefile\..*|.*\.make|.*\.mak|.*\.mk)' -print0 | xargs -0 grep --color -n "$@"
+ find -E . -name .repo -prune -o -name .git -prune -o -type f -iregex '.*/(Makefile|Makefile\..*|.*\.make|.*\.mak|.*\.mk)' -print0 | xargs -0 grep --color -n "$@"
}
function treegrep()
{
- find -E . -type f -iregex '.*\.(c|h|cpp|S|java|xml)' -print0 | xargs -0 grep --color -n -i "$@"
+ find -E . -name .repo -prune -o -name .git -prune -o -type f -iregex '.*\.(c|h|cpp|S|java|xml)' -print0 | xargs -0 grep --color -n -i "$@"
}
;;
*)
function mgrep()
{
- find . -regextype posix-egrep -iregex '(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk)' -type f -print0 | xargs -0 grep --color -n "$@"
+ find . -name .repo -prune -o -name .git -prune -o -regextype posix-egrep -iregex '(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk)' -type f -print0 | xargs -0 grep --color -n "$@"
}
function treegrep()
{
- find . -regextype posix-egrep -iregex '.*\.(c|h|cpp|S|java|xml)' -type f -print0 | xargs -0 grep --color -n -i "$@"
+ find . -name .repo -prune -o -name .git -prune -o -regextype posix-egrep -iregex '.*\.(c|h|cpp|S|java|xml)' -type f -print0 | xargs -0 grep --color -n -i "$@"
}
;;
# runhat options
local targetPid=$1
- local outputFile=$2
if [ "$targetPid" = "" ]; then
- echo "Usage: runhat [ -d | -e | -s serial ] target-pid [output-file]"
+ echo "Usage: runhat [ -d | -e | -s serial ] target-pid"
return
fi
return
fi
- adb ${adbOptions} shell >/dev/null mkdir /data/misc
- adb ${adbOptions} shell chmod 777 /data/misc
-
- # send a SIGUSR1 to cause the hprof dump
+ # issue "am" command to cause the hprof dump
+ local devFile=/sdcard/hprof-$targetPid
echo "Poking $targetPid and waiting for data..."
- adb ${adbOptions} shell kill -10 $targetPid
+ adb ${adbOptions} shell am dumpheap $targetPid $devFile
echo "Press enter when logcat shows \"hprof: heap dump completed\""
echo -n "> "
read
- local availFiles=( $(adb ${adbOptions} shell ls /data/misc | grep '^heap-dump' | sed -e 's/.*heap-dump-/heap-dump-/' | sort -r | tr '[:space:][:cntrl:]' ' ') )
- local devFile=/data/misc/${availFiles[0]}
local localFile=/tmp/$$-hprof
echo "Retrieving file $devFile..."
adb shell service call window 3
}
+function key_home()
+{
+ adb shell input keyevent 3
+}
+
+function key_back()
+{
+ adb shell input keyevent 4
+}
+
+function key_menu()
+{
+ adb shell input keyevent 82
+}
+
function smoketest()
{
if [ ! "$ANDROID_PRODUCT_OUT" ]; then
echo ""
fi
local lines
- lines=($(grep "$1" $T/filelist | sed -e 's/\/[^/]*$//' | sort | uniq))
+ lines=($(grep "$1" $T/filelist | sed -e 's/\/[^/]*$//' | sort | uniq))
if [[ ${#lines[@]} = 0 ]]; then
echo "Not found"
return
local line
for line in ${lines[@]}; do
printf "%6s %s\n" "[$index]" $line
- index=$(($index + 1))
+ index=$(($index + 1))
done
echo
echo -n "Select one: "
. $f
done
unset f
+
+addcompletions