From 53b7fbbe78b6218962cc439c568533dd2c4e31c2 Mon Sep 17 00:00:00 2001 From: Yohann Roussel Date: Fri, 5 Aug 2016 17:45:10 +0200 Subject: [PATCH 1/2] Add support for Jack plugin And ensure compatibility with coverage plugin. (cherry picked from commit 862bb84d37e3e6ca61080de58f206e512e09d4e0) Bug: 28876950 Test: Manually tested by some manual activations of the coverage plugin. Change-Id: I804558a501825357bf0812de626d2957eedbdc13 --- core/clear_vars.mk | 2 ++ core/definitions.mk | 16 ++++++++++++++++ core/host_dalvik_java_library.mk | 8 ++++++-- core/java.mk | 14 +++++++++++--- core/prebuilt_internal.mk | 4 +++- 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 5f7a705f9..4f0c83928 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -76,6 +76,8 @@ LOCAL_JAVA_LAYERS_FILE:= LOCAL_NO_STANDARD_LIBRARIES:= LOCAL_CLASSPATH:= LOCAL_JACK_CLASSPATH:= +LOCAL_JACK_PLUGIN_PATH:= +LOCAL_JACK_PLUGIN:= LOCAL_DROIDDOC_USE_STANDARD_DOCLET:= LOCAL_DROIDDOC_SOURCE_PATH:= LOCAL_DROIDDOC_TEMPLATE_DIR:= diff --git a/core/definitions.mk b/core/definitions.mk index 29b6539d6..b8e57bea5 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -748,6 +748,13 @@ define normalize-path-list $(subst $(space),:,$(strip $(1))) endef +########################################################### +## Convert "a b c" into "a,b,c" +########################################################### +define normalize-comma-list +$(subst $(space),$(comma),$(strip $(1))) +endef + ########################################################### ## Read the word out of a colon-separated list of words. ## This has the same behavior as the built-in function @@ -2325,6 +2332,9 @@ $(call call-jack) \ $(addprefix --classpath ,$(strip \ $(call normalize-path-list,$(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ + $(addprefix --pluginpath ,$(strip \ + $(call normalize-path-list,$(PRIVATE_JACK_PLUGIN_PATH)))) \ + $(if $(PRIVATE_JACK_PLUGIN),--plugin $(call normalize-comma-list,$(PRIVATE_JACK_PLUGIN))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ -D jack.import.resource.policy=keep-first \ @@ -2384,6 +2394,9 @@ define transform-jar-to-jack $(hide) find $@.tmpjill.res -iname "*.class" -delete $(hide) $(call call-jack) \ $(PRIVATE_JACK_FLAGS) \ + $(addprefix --pluginpath ,$(strip \ + $(call normalize-path-list,$(PRIVATE_JACK_PLUGIN_PATH)))) \ + $(if $(PRIVATE_JACK_PLUGIN),--plugin $(call normalize-comma-list,$(PRIVATE_JACK_PLUGIN))) \ -D jack.import.resource.policy=keep-first \ -D jack.import.type.policy=keep-first \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ @@ -2491,6 +2504,9 @@ $(call call-jack) \ $(addprefix --classpath ,$(strip \ $(call normalize-path-list,$(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ + $(addprefix --pluginpath ,$(strip \ + $(call normalize-path-list,$(PRIVATE_JACK_PLUGIN_PATH)))) \ + $(if $(PRIVATE_JACK_PLUGIN),--plugin $(call normalize-comma-list,$(PRIVATE_JACK_PLUGIN))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.import.resource.policy=keep-first \ -D jack.import.type.policy=keep-first \ diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index cee3cc49e..a3dff8531 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -85,7 +85,9 @@ jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_deps) \ ifneq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) $(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack) -$(built_dex): $(jack_all_deps) | setup-jack-server +$(built_dex): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) +$(built_dex): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(built_dex): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(jack-java-to-dex) @@ -103,7 +105,9 @@ $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) $(add-carried-jack-resources) else # LOCAL_IS_STATIC_JAVA_LIBRARY -$(full_classes_jack): $(jack_all_deps) | setup-jack-server +$(full_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) +$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(full_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(java-to-jack) diff --git a/core/java.mk b/core/java.mk index 606b474c1..b74c37dc4 100644 --- a/core/java.mk +++ b/core/java.mk @@ -635,7 +635,9 @@ $(jack_check_timestamp): $(jack_all_deps) | setup-jack-server $(jack-check-java) ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) -$(full_classes_jack): $(jack_all_deps) | setup-jack-server +$(full_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) +$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(full_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(java-to-jack) @@ -648,6 +650,8 @@ else #LOCAL_IS_STATIC_JAVA_LIBRARY $(built_dex_intermediate): PRIVATE_CLASSES_JACK := $(full_classes_jack) ifeq ($(LOCAL_EMMA_INSTRUMENT),true) +LOCAL_JACK_PLUGIN_PATH += $(HOST_OUT_JAVA_LIBRARIES)/jack-coverage-plugin.jar +LOCAL_JACK_PLUGIN += com.android.jack.coverage.CodeCoverage $(built_dex_intermediate): PRIVATE_JACK_COVERAGE_OPTIONS := \ -D jack.coverage=true \ -D jack.coverage.metadata.file=$(intermediates.COMMON)/coverage.em \ @@ -658,7 +662,9 @@ else $(built_dex_intermediate): PRIVATE_JACK_COVERAGE_OPTIONS := endif -$(built_dex_intermediate): $(jack_all_deps) | setup-jack-server +$(built_dex_intermediate): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) +$(built_dex_intermediate): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN) +$(built_dex_intermediate): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(jack-java-to-dex) @@ -672,9 +678,11 @@ $(call define-dex-to-toc-rule, $(intermediates.COMMON)) endif #LOCAL_IS_STATIC_JAVA_LIBRARY +$(noshrob_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) +$(noshrob_classes_jack): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) $(noshrob_classes_jack): PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-noshrob-rsc $(noshrob_classes_jack): PRIVATE_JACK_PROGUARD_FLAGS := -$(noshrob_classes_jack): $(jack_all_deps) | setup-jack-server +$(noshrob_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(java-to-jack) endif # full_classes_jar is defined diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk index c3cc8074e..4095ab7c2 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -480,7 +480,9 @@ ifneq ($(prebuilt_module_is_dex_javalib),true) # We may be building classes.jack from a host jar for host dalvik Java library. $(intermediates.COMMON)/classes.jack : PRIVATE_JACK_FLAGS:=$(LOCAL_JACK_FLAGS) $(intermediates.COMMON)/classes.jack : PRIVATE_JACK_MIN_SDK_VERSION := $(if $(strip $(LOCAL_MIN_SDK_VERSION)),$(LOCAL_MIN_SDK_VERSION),1) -$(intermediates.COMMON)/classes.jack : $(my_src_jar) \ +$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) +$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(intermediates.COMMON)/classes.jack : $(LOCAL_JACK_PLUGIN_PATH) $(my_src_jar) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) $(JACK_DEFAULT_ARGS) $(JACK) \ | setup-jack-server $(transform-jar-to-jack) From 16243bdbec94c03c38db92cffe2e2d69f84cf79b Mon Sep 17 00:00:00 2001 From: Yohann Roussel Date: Mon, 19 Sep 2016 17:49:03 +0200 Subject: [PATCH 2/2] Fix bad JACK_PLUGIN variable Changed to LOCAL_JACK_PLUGIN. (cherry picked from commit 17924b136cb5bfc60d138e8c7e5c18a90b5965c3) Test: Manually tested by some manual activations of the coverage plugin. Change-Id: I1be4aaa502103fc308d35a5672dc4fe5900c4ebe --- core/host_dalvik_java_library.mk | 4 ++-- core/java.mk | 4 ++-- core/prebuilt_internal.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index a3dff8531..64b610e6a 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -86,7 +86,7 @@ jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_deps) \ ifneq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) $(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack) $(built_dex): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) -$(built_dex): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(built_dex): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN) $(built_dex): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(jack-java-to-dex) @@ -106,7 +106,7 @@ $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) else # LOCAL_IS_STATIC_JAVA_LIBRARY $(full_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) -$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN) $(full_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(java-to-jack) diff --git a/core/java.mk b/core/java.mk index b74c37dc4..9199f7cd8 100644 --- a/core/java.mk +++ b/core/java.mk @@ -636,7 +636,7 @@ $(jack_check_timestamp): $(jack_all_deps) | setup-jack-server ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) $(full_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) -$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN) $(full_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server @echo Building with Jack: $@ $(java-to-jack) @@ -679,7 +679,7 @@ $(call define-dex-to-toc-rule, $(intermediates.COMMON)) endif #LOCAL_IS_STATIC_JAVA_LIBRARY $(noshrob_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) -$(noshrob_classes_jack): PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(noshrob_classes_jack): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN) $(noshrob_classes_jack): PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-noshrob-rsc $(noshrob_classes_jack): PRIVATE_JACK_PROGUARD_FLAGS := $(noshrob_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk index 4095ab7c2..c31a07ec5 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -481,7 +481,7 @@ ifneq ($(prebuilt_module_is_dex_javalib),true) $(intermediates.COMMON)/classes.jack : PRIVATE_JACK_FLAGS:=$(LOCAL_JACK_FLAGS) $(intermediates.COMMON)/classes.jack : PRIVATE_JACK_MIN_SDK_VERSION := $(if $(strip $(LOCAL_MIN_SDK_VERSION)),$(LOCAL_MIN_SDK_VERSION),1) $(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH) -$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN := $(JACK_PLUGIN) +$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN) $(intermediates.COMMON)/classes.jack : $(LOCAL_JACK_PLUGIN_PATH) $(my_src_jar) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) $(JACK_DEFAULT_ARGS) $(JACK) \ | setup-jack-server