diff options
author | Yohann Roussel <yroussel@google.com> | 2015-01-09 10:36:40 +0100 |
---|---|---|
committer | Yohann Roussel <yroussel@google.com> | 2015-02-04 11:22:26 +0100 |
commit | 37822c443d3d2ba88dd009c994f088906a0f5568 (patch) | |
tree | 67e0a1da8fb38a1cf909399dc9b55d3be1b066c9 | |
parent | 2809666941aceea4af65ec6f9cea8cce1c1392ed (diff) | |
download | build-37822c443d3d2ba88dd009c994f088906a0f5568.zip build-37822c443d3d2ba88dd009c994f088906a0f5568.tar.gz build-37822c443d3d2ba88dd009c994f088906a0f5568.tar.bz2 |
Engage Jack incremental on demand
Each module may engage Jack incremental with
LOCAL_JACK_ENABLED := incremental
Include renaming of LOCAL_USE_JACK to LOCAL_JACK_ENABLED that is
now accepting 3 values "disabled", "full" and "incremental".
Change-Id: Icbff275b397bee36b29312e821f3e8d45f83fbcc
-rw-r--r-- | core/base_rules.mk | 11 | ||||
-rw-r--r-- | core/cleanbuild.mk | 7 | ||||
-rw-r--r-- | core/clear_vars.mk | 2 | ||||
-rw-r--r-- | core/config.mk | 5 | ||||
-rw-r--r-- | core/definitions.mk | 4 | ||||
-rw-r--r-- | core/host_dalvik_java_library.mk | 16 | ||||
-rw-r--r-- | core/host_dalvik_static_java_library.mk | 9 | ||||
-rw-r--r-- | core/java.mk | 26 | ||||
-rw-r--r-- | core/java_library.mk | 4 | ||||
-rw-r--r-- | core/package_internal.mk | 19 | ||||
-rw-r--r-- | core/static_java_library.mk | 8 |
11 files changed, 83 insertions, 28 deletions
diff --git a/core/base_rules.mk b/core/base_rules.mk index d0d0e11..6dcb7e7 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -43,6 +43,13 @@ endif my_module_tags := $(LOCAL_MODULE_TAGS) +LOCAL_JACK_ENABLED := $(strip $(LOCAL_JACK_ENABLED)) +ifneq ($(LOCAL_JACK_ENABLED),full) +ifneq ($(LOCAL_JACK_ENABLED),incremental) +LOCAL_JACK_ENABLED := +endif +endif + ########################################################### ## Validate and define fallbacks for input LOCAL_* variables. ########################################################### @@ -682,7 +689,7 @@ endif ########################################################### # JACK ########################################################### -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED ifdef need_compile_java full_static_jack_libs := \ @@ -757,7 +764,7 @@ endif # need_compile_java $(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_ALL_JACK_LIBRARIES:= $(full_jack_libs) $(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED ########################################################### ## NOTICE files diff --git a/core/cleanbuild.mk b/core/cleanbuild.mk index 58b1ee4..159d66d 100644 --- a/core/cleanbuild.mk +++ b/core/cleanbuild.mk @@ -256,8 +256,13 @@ clean-jack-files: clean-dex-files .PHONY: clean-dex-files clean-dex-files: - $(hide) find $(OUT_DIR) -name "*.dex" | xargs rm -f + $(hide) find $(OUT_DIR) -name "*.dex" ! -path "*/jack-incremental/*" | xargs rm -f $(hide) for i in `find $(OUT_DIR) -name "*.jar" -o -name "*.apk"` ; do ((unzip -l $$i 2> /dev/null | \ grep -q "\.dex$$" && rm -f $$i) || continue ) ; done @echo "All dex files and archives containing dex files have been removed." +.PHONY: clean-jack-incremental +clean-jack-incremental: + $(hide) find $(OUT_DIR) -name "jack-incremental" -type d | xargs rm -rf + @echo "All jack incremental dirs have been removed." + diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 085b5fc..d6441bb 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -107,7 +107,7 @@ LOCAL_JARJAR_RULES:= LOCAL_ADDITIONAL_JAVA_DIR:= LOCAL_ALLOW_UNDEFINED_SYMBOLS:= LOCAL_DX_FLAGS:= -LOCAL_USE_JACK:= $(ANDROID_COMPILE_WITH_JACK) +LOCAL_JACK_ENABLED:=$(DEFAULT_JACK_ENABLED) # '' (ie disabled), disabled, full, incremental LOCAL_JACK_VM_ARGS := $(DEFAULT_JACK_VM_ARGS) LOCAL_JACK_EXTRA_ARGS := $(DEFAULT_JACK_EXTRA_ARGS) LOCAL_JACK_FLAGS:= diff --git a/core/config.mk b/core/config.mk index 83ef074..a79eb62 100644 --- a/core/config.mk +++ b/core/config.mk @@ -406,6 +406,11 @@ TUNE2FS := $(HOST_OUT_EXECUTABLES)/tune2fs$(HOST_EXECUTABLE_SUFFIX) E2FSCK := $(HOST_OUT_EXECUTABLES)/e2fsck$(HOST_EXECUTABLE_SUFFIX) JARJAR := $(HOST_OUT_JAVA_LIBRARIES)/jarjar.jar +ifeq ($(ANDROID_COMPILE_WITH_JACK),true) +DEFAULT_JACK_ENABLED:=full +else +DEFAULT_JACK_ENABLED:= +endif ifneq ($(strip $(ANDROID_JACK_VM)),) JACK_VM := $(ANDROID_JACK_VM) else diff --git a/core/definitions.mk b/core/definitions.mk index 6ff62ed..a0af072 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1731,6 +1731,7 @@ $(hide) rm -rf $(PRIVATE_JACK_INTERMEDIATES_DIR) $(hide) mkdir -p $(dir $@) $(hide) mkdir -p $(dir $(PRIVATE_CLASSES_JACK)) $(hide) mkdir -p $(PRIVATE_JACK_INTERMEDIATES_DIR) +$(if $(PRIVATE_JACK_INCREMENTAL_DIR),$(hide) mkdir -p $(PRIVATE_JACK_INCREMENTAL_DIR)) $(call dump-words-to-file,$(PRIVATE_JAVA_SOURCES),$(PRIVATE_JACK_INTERMEDIATES_DIR)/java-source-list) $(hide) if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' >> $(PRIVATE_JACK_INTERMEDIATES_DIR)/java-source-list; \ @@ -1765,6 +1766,7 @@ $(call call-jack,$(PRIVATE_JACK_VM_ARGS),$(PRIVATE_JACK_EXTRA_ARGS)) \ -D jack.import.type.policy=keep-first \ --output-jack $(PRIVATE_CLASSES_JACK) \ -D jack.java.source.version=1.7 \ + $(if $(PRIVATE_JACK_INCREMENTAL_DIR),--incremental-folder $(PRIVATE_JACK_INCREMENTAL_DIR)) \ --output-dex $(PRIVATE_JACK_INTERMEDIATES_DIR) \ $(addprefix --config-jarjar ,$(strip $(PRIVATE_JARJAR_RULES))) \ $(if $(PRIVATE_JACK_PROGUARD_FLAGS),--config-proguard $@.flags) \ @@ -1807,6 +1809,7 @@ $(hide) rm -f $@ $(hide) rm -rf $(PRIVATE_JACK_INTERMEDIATES_DIR) $(hide) mkdir -p $(dir $@) $(hide) mkdir -p $(PRIVATE_JACK_INTERMEDIATES_DIR) +$(if $(PRIVATE_JACK_INCREMENTAL_DIR),$(hide) mkdir -p $(PRIVATE_JACK_INCREMENTAL_DIR)) $(call dump-words-to-file,$(PRIVATE_JAVA_SOURCES),$(PRIVATE_JACK_INTERMEDIATES_DIR)/java-source-list) $(hide) if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' >> $(PRIVATE_JACK_INTERMEDIATES_DIR)/java-source-list; \ @@ -1840,6 +1843,7 @@ $(call call-jack,$(PRIVATE_JACK_VM_ARGS),$(PRIVATE_JACK_EXTRA_ARGS)) \ -D jack.import.resource.policy=keep-first \ -D jack.import.type.policy=keep-first \ -D jack.java.source.version=1.7 \ + $(if $(PRIVATE_JACK_INCREMENTAL_DIR),--incremental-folder $(PRIVATE_JACK_INCREMENTAL_DIR)) \ --output-jack $@ \ $(addprefix --config-jarjar ,$(strip $(PRIVATE_JARJAR_RULES))) \ $(if $(PRIVATE_JACK_PROGUARD_FLAGS),--config-proguard $@.flags) \ diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 9b92df6..f5da638 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -98,7 +98,7 @@ $(full_classes_jar): $(full_classes_jarjar_jar) | $(ACP) @echo Copying: $@ $(hide) $(ACP) -fp $< $@ -ifneq ($(LOCAL_USE_JACK),true) +ifndef LOCAL_JACK_ENABLED $(built_dex): PRIVATE_INTERMEDIATES_DIR := $(intermediates.COMMON) $(built_dex): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS) $(built_dex): $(full_classes_jar) $(DX) @@ -112,9 +112,17 @@ $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) $(add-dex-to-package) -else # LOCAL_USE_JACK +else # LOCAL_JACK_ENABLED $(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jayces + PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-rsc + +ifeq ($(LOCAL_JACK_ENABLED),incremental) +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_JACK_INCREMENTAL_DIR := $(intermediates.COMMON)/jack-incremental +else +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_JACK_INCREMENTAL_DIR := +endif $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_DEBUG_FLAGS := -g $(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack) @@ -134,7 +142,7 @@ $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) $(add-dex-to-package) $(add-carried-jack-resources) -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED USE_CORE_LIB_BOOTCLASSPATH := diff --git a/core/host_dalvik_static_java_library.mk b/core/host_dalvik_static_java_library.mk index 6fe460e..bdce583 100644 --- a/core/host_dalvik_static_java_library.mk +++ b/core/host_dalvik_static_java_library.mk @@ -35,7 +35,14 @@ include $(BUILD_SYSTEM)/host_java_library.mk $(full_classes_jack): PRIVATE_JACK_FLAGS := $(LOCAL_JACK_FLAGS) $(full_classes_jack): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) $(full_classes_jack): \ - PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack + PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-rsc +ifeq ($(LOCAL_JACK_ENABLED),incremental) +$(full_classes_jack): \ + PRIVATE_JACK_INCREMENTAL_DIR := $(intermediates.COMMON)/jack-incremental +else +$(full_classes_jack): \ + PRIVATE_JACK_INCREMENTAL_DIR := +endif $(full_classes_jack): $(java_sources) $(java_resource_sources) $(full_jack_lib_deps) \ $(jar_manifest_file) $(layers_file) $(LOCAL_MODULE_MAKEFILE) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) $(LOCAL_JARJAR_RULES) \ diff --git a/core/java.mk b/core/java.mk index b80e8b8..d4f0039 100644 --- a/core/java.mk +++ b/core/java.mk @@ -471,7 +471,7 @@ legacy_proguard_flags := -injars $(link_instr_classes_jar) \ -verbose \ $(legacy_proguard_flags) # not supported with jack -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(error $(LOCAL_MODULE): Build with jack of instrumentation when obfuscating is not yet supported) endif @@ -506,7 +506,7 @@ $(full_classes_proguard_jar) : $(full_classes_jar) endif # LOCAL_PROGUARD_ENABLED defined -ifneq ($(strip $(LOCAL_USE_JACK)),true) +ifndef LOCAL_JACK_ENABLED # Override PRIVATE_INTERMEDIATES_DIR so that install-dex-debug # will work even when intermediates != intermediates.COMMON. $(built_dex_intermediate): PRIVATE_INTERMEDIATES_DIR := $(intermediates.COMMON) @@ -522,7 +522,7 @@ $(built_dex_intermediate): PRIVATE_DX_FLAGS += --no-locals endif $(built_dex_intermediate): $(full_classes_proguard_jar) $(DX) $(transform-classes.jar-to-dex) -endif # !LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED is disabled $(built_dex): $(built_dex_intermediate) | $(ACP) @echo Copying: $@ @@ -562,9 +562,16 @@ $(LOCAL_MODULE)-findbugs : $(findbugs_html) endif # full_classes_jar is defined -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack + PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-rsc +ifeq ($(LOCAL_JACK_ENABLED),incremental) +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_JACK_INCREMENTAL_DIR := $(intermediates.COMMON)/jack-incremental +else +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_JACK_INCREMENTAL_DIR := +endif ifdef full_classes_jar $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_DEBUG_FLAGS := -g @@ -607,10 +614,15 @@ $(full_classes_jack): $(built_dex_intermediate) # nothing to do it's built as a side effect of $(built_dex_intermediate) endif #LOCAL_IS_STATIC_JAVA_LIBRARY -$(noshrob_classes_jack): PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/noshrob +$(noshrob_classes_jack): PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-noshrob-rsc +ifeq ($(LOCAL_JACK_ENABLED),incremental) +$(noshrob_classes_jack): PRIVATE_JACK_INCREMENTAL_DIR := $(intermediates.COMMON)/jack-noshrob-incremental +else +$(noshrob_classes_jack): PRIVATE_JACK_INCREMENTAL_DIR := +endif $(noshrob_classes_jack): PRIVATE_JACK_PROGUARD_FLAGS := $(noshrob_classes_jack): $(jack_all_deps) @echo Building with Jack: $@ $(java-to-jack) endif # full_classes_jar is defined -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED diff --git a/core/java_library.mk b/core/java_library.mk index 8641aad..5ba8267 100644 --- a/core/java_library.mk +++ b/core/java_library.mk @@ -69,13 +69,13 @@ $(common_javalib.jar): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar) $(common_javalib.jar): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) $(common_javalib.jar) : $(built_dex) $(java_resource_sources) @echo "target Jar: $(PRIVATE_MODULE) ($@)" -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(create-empty-package) else $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) endif $(add-dex-to-package) -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(add-carried-jack-resources) endif diff --git a/core/package_internal.mk b/core/package_internal.mk index 06f0216..3c488f6 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -57,6 +57,13 @@ $(error $(LOCAL_PATH): Package modules may not set LOCAL_MODULE_CLASS) endif LOCAL_MODULE_CLASS := APPS +LOCAL_JACK_ENABLED := $(strip $(LOCAL_JACK_ENABLED)) +ifneq ($(LOCAL_JACK_ENABLED),full) +ifneq ($(LOCAL_JACK_ENABLED),incremental) +LOCAL_JACK_ENABLED := +endif +endif + # Package LOCAL_MODULE_TAGS default to optional LOCAL_MODULE_TAGS := $(strip $(LOCAL_MODULE_TAGS)) ifeq ($(LOCAL_MODULE_TAGS),) @@ -162,12 +169,12 @@ endif # need_compile_res endif # !custom LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_PROGUARD_FLAGS) -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED ifndef LOCAL_JACK_PROGUARD_FLAGS LOCAL_JACK_PROGUARD_FLAGS := $(LOCAL_PROGUARD_FLAGS) endif LOCAL_JACK_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_JACK_PROGUARD_FLAGS) -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED ifeq (true,$(EMMA_INSTRUMENT)) ifndef LOCAL_EMMA_INSTRUMENT @@ -278,7 +285,7 @@ endif # they want to use this module's R.java file. $(LOCAL_BUILT_MODULE): $(R_file_stamp) -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED ifneq ($(built_dex_intermediate),) $(built_dex_intermediate): $(R_file_stamp) endif @@ -288,7 +295,7 @@ endif ifneq ($(full_classes_jack),) $(full_classes_jack): $(R_file_stamp) endif -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED ifneq ($(full_classes_jar),) # If full_classes_jar is non-empty, we're building sources. @@ -406,7 +413,7 @@ endif $(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) $(LOCAL_BUILT_MODULE): $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) @echo "target Package: $(PRIVATE_MODULE) ($@)" -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(create-empty-package) else $(if $(PRIVATE_SOURCE_ARCHIVE),\ @@ -420,7 +427,7 @@ endif ifneq ($(full_classes_jar),) $(add-dex-to-package) endif -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(add-carried-jack-resources) endif $(sign-package) diff --git a/core/static_java_library.mk b/core/static_java_library.mk index c692f9f..c5d1b46 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -59,12 +59,12 @@ endif LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_PROGUARD_FLAGS) -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED ifndef LOCAL_JACK_PROGUARD_FLAGS LOCAL_JACK_PROGUARD_FLAGS := $(LOCAL_PROGUARD_FLAGS) endif LOCAL_JACK_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_JACK_PROGUARD_FLAGS) -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED endif # LOCAL_RESOURCE_DIR @@ -123,10 +123,10 @@ $(R_file_stamp) : $(all_resources) $(full_android_manifest) $(AAPT) $(framework_ $(hide) find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name R.java | xargs cat > $@ $(LOCAL_BUILT_MODULE): $(R_file_stamp) -ifeq ($(LOCAL_USE_JACK),true) +ifdef LOCAL_JACK_ENABLED $(noshrob_classes_jack): $(R_file_stamp) $(full_classes_jack): $(R_file_stamp) -endif # LOCAL_USE_JACK +endif # LOCAL_JACK_ENABLED $(full_classes_compiled_jar): $(R_file_stamp) # Rule to build AAR, archive including classes.jar, resource, etc. |