diff options
author | Ying Wang <wangying@google.com> | 2013-12-27 15:55:08 -0800 |
---|---|---|
committer | Ying Wang <wangying@google.com> | 2013-12-30 09:17:06 -0800 |
commit | 1ff0836ce0c3be96e629d2f33941b14bf855d674 (patch) | |
tree | ebae565e8ac64efdc0bb2fd8c971b59f2cbc8645 /core | |
parent | 854588d99c0536fae9522cd3bd1f62210b3f72db (diff) | |
download | build-1ff0836ce0c3be96e629d2f33941b14bf855d674.zip build-1ff0836ce0c3be96e629d2f33941b14bf855d674.tar.gz build-1ff0836ce0c3be96e629d2f33941b14bf855d674.tar.bz2 |
Emma support for host Java libraries.
To run emma on a host Java library, in the module definition use:
LOCAL_EMMA_INSTRUMENT := true
then run make with "EMMA_INSTRUMENT=true".
Bug: 12178695
Change-Id: Ie31582b94f5c45381f534912e810f88d21dde9b2
Diffstat (limited to 'core')
-rw-r--r-- | core/Makefile | 2 | ||||
-rw-r--r-- | core/host_java_library.mk | 58 |
2 files changed, 51 insertions, 9 deletions
diff --git a/core/Makefile b/core/Makefile index 40293ef..59432be 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1430,7 +1430,7 @@ EMMA_META_ZIP := $(PRODUCT_OUT)/emma_meta.zip # the dependency will be set up later in build/core/main.mk. $(EMMA_META_ZIP) : @echo "Collecting Emma coverage meta files." - $(hide) find $(TARGET_COMMON_OUT_ROOT) -name "coverage.em" | \ + $(hide) find $(TARGET_COMMON_OUT_ROOT) $(HOST_COMMON_OUT_ROOT) -name "coverage.em" | \ zip -@ -q $@ endif # EMMA_INSTRUMENT=true diff --git a/core/host_java_library.mk b/core/host_java_library.mk index 3287b57..2a8f18f 100644 --- a/core/host_java_library.mk +++ b/core/host_java_library.mk @@ -20,22 +20,64 @@ ####################################### include $(BUILD_SYSTEM)/host_java_library_common.mk +####################################### + +# Enable emma instrumentation only if the module asks so. +ifeq (true,$(LOCAL_EMMA_INSTRUMENT)) +ifneq (true,$(EMMA_INSTRUMENT)) +LOCAL_EMMA_INSTRUMENT := +endif +endif + +full_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar +emma_intermediates_dir := $(intermediates.COMMON)/emma_out +# emma is hardcoded to use the leaf name of its input for the output file -- +# only the output directory can be changed +full_classes_emma_jar := $(emma_intermediates_dir)/lib/$(notdir $(full_classes_compiled_jar)) + +LOCAL_INTERMEDIATE_TARGETS += \ + $(full_classes_compiled_jar) \ + $(full_classes_emma_jar) + +####################################### include $(BUILD_SYSTEM)/base_rules.mk ####################################### -$(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g +ifeq (true,$(LOCAL_EMMA_INSTRUMENT)) +$(full_classes_emma_jar): PRIVATE_EMMA_COVERAGE_FILE := $(intermediates.COMMON)/coverage.em +$(full_classes_emma_jar): PRIVATE_EMMA_INTERMEDIATES_DIR := $(emma_intermediates_dir) +ifdef LOCAL_EMMA_COVERAGE_FILTER +$(full_classes_emma_jar): PRIVATE_EMMA_COVERAGE_FILTER := $(LOCAL_EMMA_COVERAGE_FILTER) +else +# by default, avoid applying emma instrumentation onto emma classes itself, +# otherwise there will be exceptions thrown +$(full_classes_emma_jar): PRIVATE_EMMA_COVERAGE_FILTER := *,-emma,-emmarun,-com.vladium.* +endif +# this rule will generate both $(PRIVATE_EMMA_COVERAGE_FILE) and +# $(full_classes_emma_jar) +$(full_classes_emma_jar) : $(full_classes_compiled_jar) | $(EMMA_JAR) + $(transform-classes.jar-to-emma) + +$(LOCAL_BUILT_MODULE) : $(full_classes_emma_jar) + @echo Copying: $@ + $(hide) $(ACP) -fp $< $@ -java_alternative_checked_module := +else # LOCAL_EMMA_INSTRUMENT +# Directly build into LOCAL_BUILT_MODULE. +full_classes_compiled_jar := $(LOCAL_BUILT_MODULE) +endif # LOCAL_EMMA_INSTRUMENT + +$(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g # The layers file allows you to enforce a layering between java packages. # Run build/tools/java-layers.py for more details. layers_file := $(addprefix $(LOCAL_PATH)/, $(LOCAL_JAVA_LAYERS_FILE)) -$(LOCAL_BUILT_MODULE): PRIVATE_JAVA_LAYERS_FILE := $(layers_file) -$(LOCAL_BUILT_MODULE): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) -$(LOCAL_BUILT_MODULE): PRIVATE_JAR_EXCLUDE_FILES := -$(LOCAL_BUILT_MODULE): PRIVATE_JAR_PACKAGES := -$(LOCAL_BUILT_MODULE): PRIVATE_RMTYPEDEFS := -$(LOCAL_BUILT_MODULE): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \ +$(full_classes_compiled_jar): PRIVATE_JAVA_LAYERS_FILE := $(layers_file) +$(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) +$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := +$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := +$(full_classes_compiled_jar): PRIVATE_RMTYPEDEFS := +$(full_classes_compiled_jar): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \ $(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES) $(transform-host-java-to-package) |