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
diff --git a/envsetup.sh b/envsetup.sh
index 1ab2c5a..3ec8e1a 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -5,8 +5,10 @@
- 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 @@
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)