mma and mmma

augmented mm/mmm:
Their usages are the same as mm/mmm.
They build not only all modules in given path(s), but also their
dependencies.
With them, to run mm/mmm you don't need to run a full build first now:
Just run mma/mmma first.
Note that mma/mmma need to load all the makefiles in the source tree
so they are much slower than mm/mmm.
You should run mma/mmma the first time, and then mm/mmm for
incremental build.

Bug: 8163814
Change-Id: I554a97c0a23343b65c50870406225eb0064e0651
This commit is contained in:
Ying Wang 2013-02-08 18:01:04 -08:00
parent 6c506a8716
commit b607f7bd4c
2 changed files with 67 additions and 7 deletions

View File

@ -725,6 +725,20 @@ cacheimage: $(INSTALLED_CACHEIMAGE_TARGET)
.PHONY: bootimage
bootimage: $(INSTALLED_BOOTIMAGE_TARGET)
# phony target that include any targets in $(ALL_MODULES)
.PHONY: all_modules
ifndef BUILD_MODULES_IN_PATHS
all_modules: $(ALL_MODULES)
else
# BUILD_MODULES_IN_PATHS is a list of paths relative to the top of the tree
module_path_patterns := $(foreach p, $(BUILD_MODULES_IN_PATHS),\
$(if $(filter %/,$(p)),$(p)%,$(p)/%))
my_all_modules := $(sort $(foreach m, $(ALL_MODULES),$(if $(filter\
$(module_path_patterns), $(addsuffix /,$(ALL_MODULES.$(m).PATH))),$(m))))
all_modules: $(my_all_modules)
endif
# Build files and then package it into the rom formats
.PHONY: droidcore
droidcore: files \
@ -801,13 +815,8 @@ droid: droidcore dist_files
endif # TARGET_BUILD_APPS
endif # droid in $(MAKECMDGOALS)
.PHONY: droid
# phony target that include any targets in $(ALL_MODULES)
.PHONY: all_modules
all_modules: $(ALL_MODULES)
.PHONY: docs
docs: $(ALL_DOCS)

View File

@ -5,8 +5,10 @@ Invoke ". build/envsetup.sh" from your shell to add the following functions to y
- tapas: tapas [<App1> <App2> ...] [arm|x86|mips|armv5] [eng|userdebug|user]
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- mm: Builds all of the modules in the current directory, but not their dependencies.
- mmm: Builds all of the modules in the supplied directories, but not their dependencies.
- mma: Builds all of the modules in the current directory, and their dependencies.
- mmma: Builds all of the modules in the supplied directories, and their dependencies.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
@ -696,6 +698,55 @@ function mmm()
fi
}
function mma()
{
if [ -f build/core/envsetup.mk -a -f Makefile ]; then
make $@
else
T=$(gettop)
if [ ! "$T" ]; then
echo "Couldn't locate the top of the tree. Try setting TOP."
fi
local MY_PWD=`PWD= /bin/pwd|sed 's:'$T'/::'`
make -C $T -f build/core/main.mk $@ all_modules BUILD_MODULES_IN_PATHS="$MY_PWD"
fi
}
function mmma()
{
T=$(gettop)
if [ "$T" ]; then
local DASH_ARGS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/')
local DIRS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/')
local MY_PWD=`PWD= /bin/pwd`
if [ "$MY_PWD" = "$T" ]; then
MY_PWD=
else
MY_PWD=`echo $MY_PWD|sed 's:'$T'/::'`
fi
local DIR=
local MODULE_PATHS=
local ARGS=
for DIR in $DIRS ; do
if [ -d $DIR ]; then
if [ "$MY_PWD" = "" ]; then
MODULE_PATHS="$MODULE_PATHS $DIR"
else
MODULE_PATHS="$MODULE_PATHS $MY_PWD/$DIR"
fi
else
case $DIR in
showcommands | snod | dist | incrementaljavac) ARGS="$ARGS $DIR";;
*) echo "Couldn't find directory $DIR"; return 1;;
esac
fi
done
make -C $T -f build/core/main.mk $DASH_ARGS $ARGS all_modules BUILD_MODULES_IN_PATHS="$MODULE_PATHS"
else
echo "Couldn't locate the top of the tree. Try setting TOP."
fi
}
function croot()
{
T=$(gettop)