CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \
TARGET_PRODUCT=$1 TARGET_BUILD_VARIANT= \
TARGET_SIMULATOR= TARGET_BUILD_TYPE= \
+ TARGET_BUILD_APPS= \
get_build_var TARGET_DEVICE > /dev/null
# hide successful answers, but allow the errors to show
}
# #
##################################################################
+ # Note: on windows/cygwin, ANDROID_BUILD_PATHS will contain spaces
+ # due to "C:\Program Files" being in the path.
+
# out with the old
- if [ -n $ANDROID_BUILD_PATHS ] ; then
+ if [ -n "$ANDROID_BUILD_PATHS" ] ; then
export PATH=${PATH/$ANDROID_BUILD_PATHS/}
fi
+ if [ -n "$ANDROID_PRE_BUILD_PATHS" ] ; then
+ export PATH=${PATH/$ANDROID_PRE_BUILD_PATHS/}
+ fi
# and in with the new
CODE_REVIEWS=
prebuiltdir=$(getprebuilt)
- export ANDROID_EABI_TOOLCHAIN=$prebuiltdir/toolchain/arm-eabi-4.4.0/bin
+ toolchaindir=toolchain/arm-eabi-4.4.3/bin
+ # The gcc toolchain does not exists for windows/cygwin. In this case, do not reference it.
+ if [ -d "$prebuiltdir/$toolchaindir" ]; then
+ export ANDROID_EABI_TOOLCHAIN=$prebuiltdir/$toolchaindir
+ else
+ export ANDROID_EABI_TOOLCHAIN=
+ 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 PATH=$PATH$ANDROID_BUILD_PATHS
+ unset ANDROID_JAVA_TOOLCHAIN
+ 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
+ fi
+
unset ANDROID_PRODUCT_OUT
export ANDROID_PRODUCT_OUT=$(get_abs_build_var PRODUCT_OUT)
export OUT=$ANDROID_PRODUCT_OUT
+ unset ANDROID_HOST_OUT
+ export ANDROID_HOST_OUT=$(get_abs_build_var HOST_OUT)
+
# needed for building linux on MacOS
# TODO: fix the path
#export HOST_EXTRACFLAGS="-I "$T/system/kernel_headers/host_include
function set_stuff_for_environment()
{
settitle
+ set_java_home
setpaths
set_sequence_number
- # Don't try to do preoptimization until it works better on OSX.
- export DISABLE_DEXPREOPT=true
-
export ANDROID_BUILD_TOP=$(gettop)
}
function set_sequence_number()
{
- export BUILD_ENV_SEQUENCE_NUMBER=9
+ export BUILD_ENV_SEQUENCE_NUMBER=10
}
function settitle()
{
if [ "$STAY_OFF_MY_LAWN" = "" ]; then
- local product=$(get_build_var TARGET_PRODUCT)
- local variant=$(get_build_var TARGET_BUILD_VARIANT)
- export PROMPT_COMMAND="echo -ne \"\033]0;[${product}-${variant}] ${USER}@${HOSTNAME}: ${PWD}\007\""
+ local product=$TARGET_PRODUCT
+ local variant=$TARGET_BUILD_VARIANT
+ local apps=$TARGET_BUILD_APPS
+ if [ -z "$apps" ]; then
+ export PROMPT_COMMAND="echo -ne \"\033]0;[${product}-${variant}] ${USER}@${HOSTNAME}: ${PWD}\007\""
+ else
+ export PROMPT_COMMAND="echo -ne \"\033]0;[$apps $variant] ${USER}@${HOSTNAME}: ${PWD}\007\""
+ fi
+ fi
+}
+
+function addcompletions()
+{
+ local T dir f
+
+ # Keep us from trying to run in something that isn't bash.
+ if [ -z "${BASH_VERSION}" ]; then
+ return
+ fi
+
+ # Keep us from trying to run in bash that's too old.
+ if [ ${BASH_VERSINFO[0]} -lt 3 ]; then
+ return
+ fi
+
+ 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
}
export TARGET_BUILD_VARIANT=$default_value
elif (echo -n $ANSWER | grep -q -e "^[0-9][0-9]*$") ; then
if [ "$ANSWER" -le "${#VARIANT_CHOICES[@]}" ] ; then
- export TARGET_BUILD_VARIANT=${VARIANT_CHOICES[$(($ANSWER-$_arrayoffset))]}
+ export TARGET_BUILD_VARIANT=${VARIANT_CHOICES[$(($ANSWER-1))]}
fi
else
if check_variant $ANSWER
done
}
-function tapas()
-{
- choosecombo
-}
-
function choosecombo()
{
choosesim $1
# add the default one here
add_lunch_combo generic-eng
-
-# if we're on linux, add the simulator. There is a special case
-# in lunch to deal with the simulator
-if [ "$(uname)" = "Linux" ] ; then
- add_lunch_combo simulator
-fi
+add_lunch_combo generic_x86-eng
function print_lunch_menu()
{
echo
echo "You're building on" $uname
echo
- echo ${LUNCH_MENU_CHOICES[@]}
echo "Lunch menu... pick a combo:"
local i=1
then
if [ $answer -le ${#LUNCH_MENU_CHOICES[@]} ]
then
- selection=${LUNCH_MENU_CHOICES[$(($answer-$_arrayoffset))]}
+ selection=${LUNCH_MENU_CHOICES[$(($answer-1))]}
fi
elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$")
then
return 1
fi
+ export TARGET_BUILD_APPS=
+
# special case the simulator
if [ "$selection" = "simulator" ]
then
printconfig
}
+# Configures the build to build unbundled apps.
+# Run tapas with one ore more app names (from LOCAL_PACKAGE_NAME)
+function tapas()
+{
+ local variant=$(echo -n $(echo $* | xargs -n 1 echo | grep -E '^(user|userdebug|eng)$'))
+ local apps=$(echo -n $(echo $* | xargs -n 1 echo | grep -E -v '^(user|userdebug|eng)$'))
+
+ if [ $(echo $variant | wc -w) -gt 1 ]; then
+ echo "tapas: Error: Multiple build variants supplied: $variant"
+ return
+ fi
+ if [ -z "$variant" ]; then
+ variant=eng
+ fi
+ if [ -z "$apps" ]; then
+ apps=all
+ fi
+
+ export TARGET_PRODUCT=generic
+ export TARGET_BUILD_VARIANT=$variant
+ export TARGET_SIMULATOR=false
+ export TARGET_BUILD_TYPE=release
+ export TARGET_BUILD_APPS=$apps
+
+ set_stuff_for_environment
+ printconfig
+}
+
function gettop
{
local TOPFILE=build/core/envsetup.mk
elif [ ! "$M" ]; then
echo "Couldn't locate a makefile from the current directory."
else
- ONE_SHOT_MAKEFILE=$M make -C $T files $@
+ ONE_SHOT_MAKEFILE=$M make -C $T all_modules $@
fi
fi
}
for DIR in $DIRS ; do
DIR=`echo $DIR | sed -e 's:/$::'`
if [ -f $DIR/Android.mk ]; then
- TO_CHOP=`echo $T | wc -c | tr -d ' '`
+ TO_CHOP=`(cd -P -- $T && pwd -P) | wc -c | tr -d ' '`
TO_CHOP=`expr $TO_CHOP + 1`
START=`PWD= /bin/pwd`
MFILE=`echo $START | cut -c${TO_CHOP}-`
ARGS="$ARGS snod"
elif [ "$DIR" = showcommands ]; then
ARGS="$ARGS showcommands"
+ elif [ "$DIR" = dist ]; then
+ ARGS="$ARGS dist"
else
echo "No Android.mk in $DIR."
return 1
fi
fi
done
- ONE_SHOT_MAKEFILE="$MAKEFILE" make -C $T $DASH_ARGS files $ARGS
+ ONE_SHOT_MAKEFILE="$MAKEFILE" make -C $T $DASH_ARGS all_modules $ARGS
else
echo "Couldn't locate the top of the tree. Try setting TOP."
fi
{
# process standard adb options
local adbTarget=""
- if [ $1 = "-d" -o $1 = "-e" ]; then
+ if [ "$1" = "-d" -o "$1" = "-e" ]; then
adbTarget=$1
shift 1
- elif [ $1 = "-s" ]; then
+ elif [ "$1" = "-s" ]; then
adbTarget="$1 $2"
shift 2
fi
echo "Invalid choice"
continue
fi
- pathname=${lines[$(($choice-$_arrayoffset))]}
+ pathname=${lines[$(($choice-1))]}
done
else
- # even though zsh arrays are 1-based, $foo[0] is an alias for $foo[1]
pathname=${lines[0]}
fi
cd $T/$pathname
}
-# Force JAVA_HOME to point to java 1.5 if it isn't already set
-if [ "$STAY_OFF_MY_LAWN" = "" ]; then
+# Force JAVA_HOME to point to java 1.6 if it isn't already set
+function set_java_home() {
if [ ! "$JAVA_HOME" ]; then
case `uname -s` in
Darwin)
- export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
+ export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
;;
*)
- export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
+ export JAVA_HOME=/usr/lib/jvm/java-6-sun
;;
esac
fi
-fi
+}
-# determine whether arrays are zero-based (bash) or one-based (zsh)
-_xarray=(a b c)
-if [ -z "${_xarray[${#_xarray[@]}]}" ]
-then
- _arrayoffset=1
-else
- _arrayoffset=0
+if [ "x$SHELL" != "x/bin/bash" ]; then
+ case `ps -o command -p $$` in
+ *bash*)
+ ;;
+ *)
+ echo "WARNING: Only bash is supported, use of other shell would lead to erroneous results"
+ ;;
+ esac
fi
-unset _xarray
# Execute the contents of any vendorsetup.sh files we can find.
-for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/build/vendorsetup.sh device/*/*/vendorsetup.sh 2> /dev/null`
+for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/*/vendorsetup.sh device/*/*/vendorsetup.sh 2> /dev/null`
do
echo "including $f"
. $f
done
unset f
+
+addcompletions