Use new flag for emma instrumented build and limit to apps only

Based on existing setup, when EMMA_INSTRUMENT is used on a full
build, all Java modules will be processed with emma instrument
unless otherwise marked in their own Makefiles.

For the purpose of collecting code coverage, emma-instrument
all Java modules aren't that useful, instead, instrumenting all
the app packages is more useful. This change adds a new flag
EMMA_FULL_APP_INSTRUMENT, which can be used with a full build
to instrument all app packages.

Change-Id: Ie143fed49c23402b21f6cccac2ef25741726be45
diff --git a/core/java.mk b/core/java.mk
index 9a4f3a2..4d85601 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -76,6 +76,21 @@
 intermediates.COMMON := $(call local-intermediates-dir,COMMON)
 
 # Emma source code coverage
+ifeq ($(EMMA_FULL_APP_INSTRUMENT),true)
+  # doing a full emma instrument here, i.e. all app packages instrumented
+  EMMA_INSTRUMENT := true
+  # do not instrument modules that are not app packages
+  ifneq ($(LOCAL_MODULE_CLASS),APPS)
+    LOCAL_NO_EMMA_INSTRUMENT := true
+    LOCAL_NO_EMMA_COMPILE := true
+  endif
+  # do not instrument modules that are marked tests
+  ifeq ($(LOCAL_MODULE_TAGS),tests)
+    LOCAL_NO_EMMA_INSTRUMENT := true
+    LOCAL_NO_EMMA_COMPILE := true
+  endif
+endif
+
 ifneq ($(EMMA_INSTRUMENT),true)
 LOCAL_NO_EMMA_INSTRUMENT := true
 LOCAL_NO_EMMA_COMPILE := true