From b6013af085bb70c8d49c8c87c83ff19581fafa5a Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 6 Mar 2018 18:18:06 -0800 Subject: [PATCH 1/6] Move aapt flags from java_common.mk to aapt_flags.mk The aapt flags were being set in java_common.mk, which is used by various entry points. host_dalvik_java_library.mk and host_java_library.mk, and java_library.mk don't support aapt, only package_internal.mk and static_java_library.mk do. Move the aapt flags into aapt_flags.mk, and include it from package_internal.mk and static_java_library.mk. Bug: 73885582 Test: no change to build-${TARGET_PRODUCT}.ninja Change-Id: I124393846d37b9bbc941272cce4274121ac235ef --- core/aapt_flags.mk | 20 ++++++++++++++++++++ core/java_common.mk | 21 --------------------- core/package_internal.mk | 2 ++ core/static_java_library.mk | 2 ++ 4 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 core/aapt_flags.mk diff --git a/core/aapt_flags.mk b/core/aapt_flags.mk new file mode 100644 index 000000000..4e3493aff --- /dev/null +++ b/core/aapt_flags.mk @@ -0,0 +1,20 @@ +## AAPT Flags +# aapt doesn't accept multiple --extra-packages flags. +# We have to collapse them into a single --extra-packages flag here. +LOCAL_AAPT_FLAGS := $(strip $(LOCAL_AAPT_FLAGS)) +ifdef LOCAL_AAPT_FLAGS + ifeq ($(filter 0 1,$(words $(filter --extra-packages,$(LOCAL_AAPT_FLAGS)))),) + aapt_flags := $(subst --extra-packages$(space),--extra-packages@,$(LOCAL_AAPT_FLAGS)) + aapt_flags_extra_packages := $(patsubst --extra-packages@%,%,$(filter --extra-packages@%,$(aapt_flags))) + aapt_flags_extra_packages := $(sort $(subst :,$(space),$(aapt_flags_extra_packages))) + LOCAL_AAPT_FLAGS := $(filter-out --extra-packages@%,$(aapt_flags)) \ + --extra-packages $(subst $(space),:,$(aapt_flags_extra_packages)) + aapt_flags_extra_packages := + aapt_flags := + endif +endif + +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_AAPT_CHARACTERISTICS := $(TARGET_AAPT_CHARACTERISTICS) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_PACKAGE_NAME := $(LOCAL_MANIFEST_PACKAGE_NAME) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $(LOCAL_MANIFEST_INSTRUMENTATION_FOR) diff --git a/core/java_common.mk b/core/java_common.mk index b94effaa9..cd239d00e 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -412,27 +412,6 @@ endif ########################################################## ifndef LOCAL_IS_HOST_MODULE -## AAPT Flags -# aapt doesn't accept multiple --extra-packages flags. -# We have to collapse them into a single --extra-packages flag here. -LOCAL_AAPT_FLAGS := $(strip $(LOCAL_AAPT_FLAGS)) -ifdef LOCAL_AAPT_FLAGS -ifeq ($(filter 0 1,$(words $(filter --extra-packages,$(LOCAL_AAPT_FLAGS)))),) -aapt_flags := $(subst --extra-packages$(space),--extra-packages@,$(LOCAL_AAPT_FLAGS)) -aapt_flags_extra_packages := $(patsubst --extra-packages@%,%,$(filter --extra-packages@%,$(aapt_flags))) -aapt_flags_extra_packages := $(sort $(subst :,$(space),$(aapt_flags_extra_packages))) -LOCAL_AAPT_FLAGS := $(filter-out --extra-packages@%,$(aapt_flags)) \ - --extra-packages $(subst $(space),:,$(aapt_flags_extra_packages)) -aapt_flags_extra_packages := -aapt_flags := -endif -endif - -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_AAPT_CHARACTERISTICS := $(TARGET_AAPT_CHARACTERISTICS) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_PACKAGE_NAME := $(LOCAL_MANIFEST_PACKAGE_NAME) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $(LOCAL_MANIFEST_INSTRUMENTATION_FOR) - ifdef aidl_sources ALL_MODULES.$(my_register_name).AIDL_FILES := $(aidl_sources) endif diff --git a/core/package_internal.mk b/core/package_internal.mk index b731bfaa3..c47b77d7e 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -367,6 +367,8 @@ endif # LOCAL_DATA_BINDING resource_export_package := +include $(BUILD_SYSTEM)/aapt_flags.mk + ifeq ($(need_compile_res),true) ############################### diff --git a/core/static_java_library.mk b/core/static_java_library.mk index d92d8c086..6812f6900 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -128,6 +128,8 @@ $(intermediates.COMMON)/export_proguard_flags: $(import_proguard_flag_files) $(a import_proguard_flag_files := endif +include $(BUILD_SYSTEM)/aapt_flags.mk + # add --non-constant-id to prevent inlining constants. # AAR needs text symbol file R.txt. ifdef LOCAL_USE_AAPT2 From 5ef6e79c21f33ce94c1f447e6551b167ac6b5c1e Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 7 Mar 2018 14:16:43 -0800 Subject: [PATCH 2/6] Remove sharding support from make Sharding is not used in make any more, the large java modules (libcore and framework) have moved to Soong. Keeping sharding support complicates java compiling, so remove it. Bug: 73885582 Test: m checkbuild Change-Id: I2932f9e96bfc8f2ebf82095b16d6c0b3c51613f0 --- core/clear_vars.mk | 1 - core/definitions.mk | 40 ---------------- core/java.mk | 91 +++++++++---------------------------- core/package_internal.mk | 2 - core/static_java_library.mk | 1 - 5 files changed, 21 insertions(+), 114 deletions(-) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 1022693cc..b1ec98df2 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -126,7 +126,6 @@ LOCAL_JAR_PACKAGES:= LOCAL_JAR_PROCESSOR:= LOCAL_JAR_PROCESSOR_ARGS:= LOCAL_JAVACFLAGS:= -LOCAL_JAVAC_SHARD_SIZE:= LOCAL_JAVA_LANGUAGE_VERSION:= LOCAL_JAVA_LAYERS_FILE:= LOCAL_JAVA_LIBRARIES:= diff --git a/core/definitions.mk b/core/definitions.mk index b0b92de75..80f9520d6 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2222,16 +2222,6 @@ $(call fetch-additional-java-source,$@.tmp) $(hide) tr ' ' '\n' < $@.tmp | $(NORMALIZE_PATH) | sort -u > $@ endef -# $(1): sharding number. -# $(2): Java source files paths. -define save-sharded-java-source-list -$(java_source_list_file).shard.$(1): $(2) $$(NORMALIZE_PATH) - @echo "shard java source list: $$@" - rm -f $$@ - $$(call dump-words-to-file,$(2),$$@.tmp) - $(hide) tr ' ' '\n' < $$@.tmp | $$(NORMALIZE_PATH) | sort -u > $$@ -endef - # Common definition to invoke javac on the host and target. # # $(1): javac @@ -2280,36 +2270,6 @@ $(hide) $(JAR) -cf $@ $(call jar-args-sorted-files-in-directory,$(PRIVATE_CLASS_ $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) endef -# $(1): Javac output jar name. -# $(2): Java source list file. -# $(3): Java header libs. -# $(4): Javac sharding number. -# $(5): Javac sources deps (the arg may neeed $$ in case of containing '#') -define create-classes-full-debug.jar -$(1): PRIVATE_JAVACFLAGS := $$(LOCAL_JAVACFLAGS) $$(annotation_processor_flags) -$(1): PRIVATE_JAR_EXCLUDE_FILES := $$(LOCAL_JAR_EXCLUDE_FILES) -$(1): PRIVATE_JAR_PACKAGES := $$(LOCAL_JAR_PACKAGES) -$(1): PRIVATE_JAR_EXCLUDE_PACKAGES := $$(LOCAL_JAR_EXCLUDE_PACKAGES) -$(1): PRIVATE_DONT_DELETE_JAR_META_INF := $$(LOCAL_DONT_DELETE_JAR_META_INF) -$(1): PRIVATE_JAVA_SOURCE_LIST := $(2) -$(1): PRIVATE_ALL_JAVA_HEADER_LIBRARIES := $(3) -$(1): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes$(4) -$(1): PRIVATE_ANNO_INTERMEDIATES_DIR := $(intermediates.COMMON)/anno$(4) -$(1): \ - $(2) \ - $(3) \ - $(5) \ - $$(full_java_bootclasspath_libs) \ - $$(full_java_system_modules_deps) \ - $$(layers_file) \ - $$(annotation_processor_deps) \ - $$(NORMALIZE_PATH) \ - $$(JAR_ARGS) \ - | $$(SOONG_JAVAC_WRAPPER) - @echo "Target Java: $$@ ($$(PRIVATE_CLASS_INTERMEDIATES_DIR))" - $$(call compile-java,$$(TARGET_JAVAC),$$(PRIVATE_ALL_JAVA_HEADER_LIBRARIES)) -endef - define transform-java-to-header.jar @echo "$($(PRIVATE_PREFIX)DISPLAY) Turbine: $(PRIVATE_MODULE)" @mkdir -p $(dir $@) diff --git a/core/java.mk b/core/java.mk index dc2044400..58416f84f 100644 --- a/core/java.mk +++ b/core/java.mk @@ -327,34 +327,6 @@ java_sources := $(addprefix $(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) java_intermediate_sources := $(addprefix $(TARGET_OUT_COMMON_INTERMEDIATES)/, $(filter %.java,$(LOCAL_INTERMEDIATE_SOURCES))) all_java_sources := $(java_sources) $(java_intermediate_sources) -enable_sharding := -ifneq ($(TURBINE_ENABLED),false) -ifneq ($(LOCAL_JAVAC_SHARD_SIZE),) -ifneq ($(LOCAL_JAR_PROCESSOR),) -$(call pretty-error,Cannot set both LOCAL_JAVAC_SHARD_SIZE and LOCAL_JAR_PROCESSOR!) -endif # LOCAL_JAR_PROCESSOR is not empty -enable_sharding := true - -num_shards := $(call int_divide,$(words $(java_sources)),$(LOCAL_JAVAC_SHARD_SIZE)) -ifneq ($(words $(java_sources)),$(call int_multiply,$(LOCAL_JAVAC_SHARD_SIZE),$(num_shards))) -# increment number of shards by 1. -num_shards := $(call int_plus,$(num_shards),1) -endif - -shard_idx_list := $(call int_range_list,1,$(num_shards)) -sharded_java_source_list_files += $(foreach x,$(shard_idx_list),$(java_source_list_file).shard.$(x)) -sharded_jar_list += $(foreach x,$(shard_idx_list),$(full_classes_compiled_jar).shard.$(x)) - -# always put dynamically-located .java files (generated by Proto/resource, etc) in a new final shard. -# increment number of shards by 1. -num_shards := $(call int_plus,$(num_shards),1) -sharded_java_source_list_files += $(java_source_list_file).shard.$(num_shards) -sharded_jar_list += $(full_classes_compiled_jar).shard.$(num_shards) -LOCAL_INTERMEDIATE_TARGETS += $(sharded_java_source_list_files) -LOCAL_INTERMEDIATE_TARGETS += $(sharded_jar_list) -endif # LOCAL_JAVAC_SHARD_SIZE is not empty -endif # TURBINE_ENABLED != false - include $(BUILD_SYSTEM)/java_common.mk include $(BUILD_SYSTEM)/sdk_check.mk @@ -435,48 +407,6 @@ java_sources_deps := \ $(java_source_list_file): $(java_sources_deps) $(write-java-source-list) -ifdef enable_sharding -$(foreach x,$(shard_idx_list),\ - $(eval $(call save-sharded-java-source-list,$(x),\ - $(wordlist $(call int_plus,1,$(call int_multiply,$(LOCAL_JAVAC_SHARD_SIZE),$(call int_subtract,$(x),1))),\ - $(call int_multiply,$(LOCAL_JAVAC_SHARD_SIZE),$(x)),$(sort $(java_sources)))))) - -# always put dynamically-located .java files (generated by Proto/resource, etc) in a new final shard. -$(java_source_list_file).shard.$(num_shards): PRIVATE_JAVA_INTERMEDIATE_SOURCES := $(java_intermediate_sources) -$(java_source_list_file).shard.$(num_shards): $(java_resource_sources) \ - $(RenderScript_file_stamp) \ - $(proto_java_sources_file_stamp) \ - $(LOCAL_ADDITIONAL_DEPENDENCIES) \ - $(NORMALIZE_PATH) - $(hide) rm -f $@ - $(call dump-words-to-file,$(PRIVATE_JAVA_INTERMEDIATE_SOURCES),$@.tmp) - $(call fetch-additional-java-source,$@.tmp) - $(hide) tr ' ' '\n' < $@.tmp | $(NORMALIZE_PATH) | sort -u > $@ - -# Javac sharding with header libs including its own header jar as one of dependency. -$(foreach x,$(shard_idx_list),\ - $(eval $(call create-classes-full-debug.jar,$(full_classes_compiled_jar).shard.$(x),\ - $(java_source_list_file).shard.$(x),\ - $(full_java_header_libs) $(full_classes_header_jar),$(x),\ - $(wordlist $(call int_plus,1,$(call int_multiply,$(LOCAL_JAVAC_SHARD_SIZE),$(call int_subtract,$(x),1))),\ - $(call int_multiply,$(LOCAL_JAVAC_SHARD_SIZE),$(x)),$(sort $(java_sources)))))) - -# Javac sharding for last shard with additional Java dependencies. -$(eval $(call create-classes-full-debug.jar,$(full_classes_compiled_jar).shard.$(num_shards),\ - $(java_source_list_file).shard.$(num_shards),$(full_java_header_libs) $(full_classes_header_jar),$(strip \ - $(num_shards)),$$(java_resource_sources) $$(RenderScript_file_stamp) \ - $$(proto_java_sources_file_stamp) $$(LOCAL_ADDITIONAL_DEPENDENCIES))) - -$(full_classes_compiled_jar): PRIVATE_SHARDED_JAR_LIST := $(sharded_jar_list) -$(full_classes_compiled_jar): $(sharded_jar_list) | $(MERGE_ZIPS) - $(MERGE_ZIPS) -j $@ $(PRIVATE_SHARDED_JAR_LIST) -else -# we can't use single $ for java_sources_deps since it may contain hash '#' sign. -$(eval $(call create-classes-full-debug.jar,$(full_classes_compiled_jar),\ - $(java_source_list_file),$(full_java_header_libs),,$$(java_sources_deps))) - -endif # ifdef enable_sharding - ifneq ($(TURBINE_ENABLED),false) $(full_classes_turbine_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags) @@ -510,6 +440,27 @@ $(eval $(call copy-one-file,$(full_classes_header_jarjar),$(full_classes_header_ endif # TURBINE_ENABLED != false +$(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags) +$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(LOCAL_JAR_EXCLUDE_FILES) +$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := $(LOCAL_JAR_PACKAGES) +$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES := $(LOCAL_JAR_EXCLUDE_PACKAGES) +$(full_classes_compiled_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF) +$(full_classes_compiled_jar): PRIVATE_JAVA_SOURCE_LIST := $(java_source_list_file) +$(full_classes_compiled_jar): PRIVATE_ALL_JAVA_HEADER_LIBRARIES := $(full_java_header_libs) +$(full_classes_compiled_jar): \ + $(java_source_list_file) \ + $(full_java_header_libs) \ + $(java_sources_deps) \ + $(full_java_bootclasspath_libs) \ + $(full_java_system_modules_deps) \ + $(layers_file) \ + $(annotation_processor_deps) \ + $(NORMALIZE_PATH) \ + $(JAR_ARGS) \ + | $(SOONG_JAVAC_WRAPPER) + @echo "Target Java: $@ + $(call compile-java,$(TARGET_JAVAC),$(PRIVATE_ALL_JAVA_HEADER_LIBRARIES)) + javac-check : $(full_classes_compiled_jar) javac-check-$(LOCAL_MODULE) : $(full_classes_compiled_jar) diff --git a/core/package_internal.mk b/core/package_internal.mk index c47b77d7e..c7392d358 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -361,7 +361,6 @@ $(data_binding_stamp) : $(all_res_assets) $(full_android_manifest) \ # Make sure the data-binding process happens before javac and generation of R.java. $(R_file_stamp): $(data_binding_stamp) $(java_source_list_file): $(data_binding_stamp) -$(foreach x,$(sharded_java_source_list_files),$(eval $(x): $(data_binding_stamp))) $(full_classes_compiled_jar): $(data_binding_stamp) endif # LOCAL_DATA_BINDING @@ -467,7 +466,6 @@ $(LOCAL_BUILT_MODULE): $(R_file_stamp) # The R.java file must exist by the time the java source # list is generated $(java_source_list_file): $(R_file_stamp) -$(foreach x,$(sharded_java_source_list_files),$(eval $(x): $(R_file_stamp))) endif # need_compile_res diff --git a/core/static_java_library.mk b/core/static_java_library.mk index 6812f6900..64e16c2c6 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -187,7 +187,6 @@ endif # LOCAL_USE_AAPT2 $(LOCAL_BUILT_MODULE): $(R_file_stamp) $(java_source_list_file): $(R_file_stamp) -$(foreach x,$(sharded_java_source_list_files),$(eval $(x): $(R_file_stamp))) $(full_classes_compiled_jar): $(R_file_stamp) $(full_classes_turbine_jar): $(R_file_stamp) From c3e7074df1b5c75b77fcec0fe45717a3b7a12ef3 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 12 Mar 2018 18:04:08 -0700 Subject: [PATCH 3/6] Remove unused file lists RS_FILES and AIDL_FILES were used for cleaning up the intermediate src dir, but are no longer used after If7529979de6fa62a651933a3a974f47b033851d6 and I01feff7cc399ac5b88b83333a1ac86928d0a81e6. Bug: 73885582 Test: m checkbuild Change-Id: If2653f846b568fd2587c8e055ef820e17760f133 --- core/java_common.mk | 8 -------- 1 file changed, 8 deletions(-) diff --git a/core/java_common.mk b/core/java_common.mk index cd239d00e..8ff05d662 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -411,14 +411,6 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAR_MANIFEST := endif ########################################################## -ifndef LOCAL_IS_HOST_MODULE -ifdef aidl_sources -ALL_MODULES.$(my_register_name).AIDL_FILES := $(aidl_sources) -endif -ifdef renderscript_sources -ALL_MODULES.$(my_register_name).RS_FILES := $(renderscript_sources_fullpath) -endif -endif # !LOCAL_IS_HOST_MODULE full_java_libs := $(full_shared_java_libs) $(full_static_java_libs) $(LOCAL_CLASSPATH) full_java_header_libs := $(full_shared_java_header_libs) $(full_static_java_header_libs) From 93d6550c5338a68dd6e3bb9cced58902faa9665d Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 12 Mar 2018 18:17:25 -0700 Subject: [PATCH 4/6] Remove unused .fs file suppport .fs files are obsolete. Bug: 73885582 Test: m checkbuild Change-Id: I74b618099333fe565c7b235994be64e6466d2da6 --- core/java.mk | 5 ++--- core/java_common.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/java.mk b/core/java.mk index 58416f84f..d15f4ebfc 100644 --- a/core/java.mk +++ b/core/java.mk @@ -104,9 +104,8 @@ LOCAL_INTERMEDIATE_SOURCE_DIR := $(intermediates.COMMON)/src ############################################################### ## .rs files: RenderScript sources to .java files and .bc files -## .fs files: Filterscript sources to .java files and .bc files ############################################################### -renderscript_sources := $(filter %.rs %.fs,$(LOCAL_SRC_FILES)) +renderscript_sources := $(filter %.rs,$(LOCAL_SRC_FILES)) # Because names of the java files from RenderScript are unknown until the # .rs file(s) are compiled, we have to depend on a timestamp file. RenderScript_file_stamp := @@ -167,7 +166,7 @@ ifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),) LOCAL_RENDERSCRIPT_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE) endif -bc_files := $(patsubst %.fs,%.bc, $(patsubst %.rs,%.bc, $(notdir $(renderscript_sources)))) +bc_files := $(patsubst %.rs,%.bc, $(notdir $(renderscript_sources))) bc_dep_files := $(addprefix $(renderscript_intermediate.COMMON)/,$(patsubst %.bc,%.d,$(bc_files))) $(RenderScript_file_stamp): PRIVATE_RS_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES) diff --git a/core/java_common.mk b/core/java_common.mk index 8ff05d662..f9ba059ef 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -177,7 +177,7 @@ endif # java_resource_file_groups ##################################### ## Warn if there is unrecognized file in LOCAL_SRC_FILES. my_unknown_src_files := $(filter-out \ - %.java %.aidl %.proto %.logtags %.fs %.rs, \ + %.java %.aidl %.proto %.logtags %.rs, \ $(LOCAL_SRC_FILES) $(LOCAL_INTERMEDIATE_SOURCES) $(LOCAL_GENERATED_SOURCES)) ifneq ($(my_unknown_src_files),) $(warning $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Unused source files: $(my_unknown_src_files)) From 11e2d55c0fc8a6c00820c3ae9fc0d2a4c5723c54 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 7 Mar 2018 15:44:54 -0800 Subject: [PATCH 5/6] Add LOCAL_SRCJARS support Allow java modules to take jars containing .java files as an input. For turbine, pass them directly to turbine. For javac, extract them to a directory and pass a list of the files to javac. Bug: 73885582 Test: m checkbuild Change-Id: Ib4351a5b4b165a55e5fb02ee2680466db368983a --- core/definitions.mk | 9 ++++++--- core/host_dalvik_java_library.mk | 6 ++++++ core/host_java_library.mk | 5 +++++ core/java.mk | 6 ++++++ core/java_common.mk | 2 +- core/package_internal.mk | 2 +- 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 80f9520d6..1300115e4 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2228,9 +2228,11 @@ endef # $(2): classpath_libs define compile-java $(hide) rm -f $@ -$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) $(PRIVATE_ANNO_INTERMEDIATES_DIR) +$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) $(PRIVATE_ANNO_INTERMEDIATES_DIR) $(if $(PRIVATE_SRCJARS),$(PRIVATE_SRCJAR_INTERMEDIATES_DIR)) $(hide) mkdir -p $(dir $@) -$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) $(PRIVATE_ANNO_INTERMEDIATES_DIR) +$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) $(PRIVATE_ANNO_INTERMEDIATES_DIR) $(if $(PRIVATE_SRCJARS),$(PRIVATE_SRCJAR_INTERMEDIATES_DIR)) +$(if $(PRIVATE_SRCJARS),\ + $(EXTRACT_SRCJARS) $(PRIVATE_SRCJAR_INTERMEDIATES_DIR) $(PRIVATE_SRCJAR_LIST_FILE) $(PRIVATE_SRCJARS)) $(hide) if [ -s $(PRIVATE_JAVA_SOURCE_LIST) ] ; then \ $(SOONG_JAVAC_WRAPPER) $(JAVAC_WRAPPER) $(1) -encoding UTF-8 \ $(if $(findstring true,$(PRIVATE_WARNINGS_ENABLE)),$(xlint_unchecked),) \ @@ -2250,6 +2252,7 @@ $(hide) if [ -s $(PRIVATE_JAVA_SOURCE_LIST) ] ; then \ -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) -s $(PRIVATE_ANNO_INTERMEDIATES_DIR) \ $(PRIVATE_JAVACFLAGS) \ \@$(PRIVATE_JAVA_SOURCE_LIST) \ + $(if $(PRIVATE_SRCJARS),\@$(PRIVATE_SRCJAR_LIST_FILE)) \ || ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 ) \ fi $(if $(PRIVATE_JAVA_LAYERS_FILE), $(hide) build/make/tools/java-layers.py \ @@ -2278,7 +2281,7 @@ define transform-java-to-header.jar $(hide) if [ -s $(PRIVATE_JAVA_SOURCE_LIST) ] ; then \ $(JAVA) -jar $(TURBINE) \ --output $@.premerged --temp_dir $(dir $@)/classes-turbine \ - --sources \@$(PRIVATE_JAVA_SOURCE_LIST) \ + --sources \@$(PRIVATE_JAVA_SOURCE_LIST) --source_jars $(PRIVATE_SRCJARS) \ --javacopts $(PRIVATE_JAVACFLAGS) $(COMMON_JDK_FLAGS) \ $(addprefix --bootclasspath ,$(strip \ $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH)) \ diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 20663d159..fc5b75c0c 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -76,6 +76,7 @@ java_sources_deps := \ $(java_sources) \ $(java_resource_sources) \ $(proto_java_sources_file_stamp) \ + $(LOCAL_SRCJARS) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) $(java_source_list_file): $(java_sources_deps) @@ -86,6 +87,9 @@ $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annota $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES := +$(full_classes_compiled_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS) +$(full_classes_compiled_jar): PRIVATE_SRCJAR_LIST_FILE := $(intermediates.COMMON)/srcjar-list +$(full_classes_compiled_jar): PRIVATE_SRCJAR_INTERMEDIATES_DIR := $(intermediates.COMMON)/srcjars $(full_classes_compiled_jar): \ $(java_source_list_file) \ $(java_sources_deps) \ @@ -95,6 +99,7 @@ $(full_classes_compiled_jar): \ $(annotation_processor_deps) \ $(NORMALIZE_PATH) \ $(JAR_ARGS) \ + $(EXTRACT_SRCJARS) \ | $(SOONG_JAVAC_WRAPPER) $(transform-host-java-to-dalvik-package) @@ -102,6 +107,7 @@ ifneq ($(TURBINE_ENABLED),false) $(full_classes_turbine_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags) $(full_classes_turbine_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF) +$(full_classes_turbine_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS) $(full_classes_turbine_jar): \ $(java_source_list_file) \ $(java_sources_deps) \ diff --git a/core/host_java_library.mk b/core/host_java_library.mk index 5176f37d6..47a8b02df 100644 --- a/core/host_java_library.mk +++ b/core/host_java_library.mk @@ -63,6 +63,7 @@ java_sources_deps := \ $(java_sources) \ $(java_resource_sources) \ $(proto_java_sources_file_stamp) \ + $(LOCAL_SRCJARS) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) $(java_source_list_file): $(java_sources_deps) @@ -73,6 +74,9 @@ $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annota $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES := +$(full_classes_compiled_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS) +$(full_classes_compiled_jar): PRIVATE_SRCJAR_LIST_FILE := $(intermediates.COMMON)/srcjar-list +$(full_classes_compiled_jar): PRIVATE_SRCJAR_INTERMEDIATES_DIR := $(intermediates.COMMON)/srcjars $(full_classes_compiled_jar): \ $(java_source_list_file) \ $(java_sources_deps) \ @@ -82,6 +86,7 @@ $(full_classes_compiled_jar): \ $(NORMALIZE_PATH) \ $(ZIPTIME) \ $(JAR_ARGS) \ + $(EXTRACT_SRCJARS) \ | $(SOONG_JAVAC_WRAPPER) $(transform-host-java-to-package) $(remove-timestamps-from-package) diff --git a/core/java.mk b/core/java.mk index d15f4ebfc..0ac7a871d 100644 --- a/core/java.mk +++ b/core/java.mk @@ -401,6 +401,7 @@ java_sources_deps := \ $(java_resource_sources) \ $(RenderScript_file_stamp) \ $(proto_java_sources_file_stamp) \ + $(LOCAL_SRCJARS) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) $(java_source_list_file): $(java_sources_deps) @@ -409,6 +410,7 @@ $(java_source_list_file): $(java_sources_deps) ifneq ($(TURBINE_ENABLED),false) $(full_classes_turbine_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags) +$(full_classes_turbine_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS) $(full_classes_turbine_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF) $(full_classes_turbine_jar): \ $(java_source_list_file) \ @@ -446,6 +448,9 @@ $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES := $(LOCAL_JAR_EXCLUD $(full_classes_compiled_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF) $(full_classes_compiled_jar): PRIVATE_JAVA_SOURCE_LIST := $(java_source_list_file) $(full_classes_compiled_jar): PRIVATE_ALL_JAVA_HEADER_LIBRARIES := $(full_java_header_libs) +$(full_classes_compiled_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS) +$(full_classes_compiled_jar): PRIVATE_SRCJAR_LIST_FILE := $(intermediates.COMMON)/srcjar-list +$(full_classes_compiled_jar): PRIVATE_SRCJAR_INTERMEDIATES_DIR := $(intermediates.COMMON)/srcjars $(full_classes_compiled_jar): \ $(java_source_list_file) \ $(full_java_header_libs) \ @@ -456,6 +461,7 @@ $(full_classes_compiled_jar): \ $(annotation_processor_deps) \ $(NORMALIZE_PATH) \ $(JAR_ARGS) \ + $(EXTRACT_SRCJARS) \ | $(SOONG_JAVAC_WRAPPER) @echo "Target Java: $@ $(call compile-java,$(TARGET_JAVAC),$(PRIVATE_ALL_JAVA_HEADER_LIBRARIES)) diff --git a/core/java_common.mk b/core/java_common.mk index f9ba059ef..dea0435dc 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -188,7 +188,7 @@ endif # LOCAL_SOURCE_FILES_ALL_GENERATED is set only if the module does not have static source files, # but generated source files in its LOCAL_INTERMEDIATE_SOURCE_DIR. # You have to set up the dependency in some other way. -need_compile_java := $(strip $(all_java_sources)$(all_res_assets)$(java_resource_sources))$(LOCAL_STATIC_JAVA_LIBRARIES)$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED)) +need_compile_java := $(strip $(all_java_sources)$(LOCAL_SRCJARS)$(all_res_assets)$(java_resource_sources))$(LOCAL_STATIC_JAVA_LIBRARIES)$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED)) ifdef need_compile_java annotation_processor_flags := diff --git a/core/package_internal.mk b/core/package_internal.mk index c7392d358..858a1bfb7 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -274,7 +274,7 @@ endif # EMMA_INSTRUMENT is true ifeq (true,$(LOCAL_EMMA_INSTRUMENT)) ifeq (true,$(EMMA_INSTRUMENT_STATIC)) -ifneq ($(LOCAL_SRC_FILES)$(LOCAL_STATIC_JAVA_LIBRARIES)$(LOCAL_SOURCE_FILES_ALL_GENERATED),) +ifneq ($(LOCAL_SRC_FILES)$(LOCAL_SRCJARS)$(LOCAL_STATIC_JAVA_LIBRARIES)$(LOCAL_SOURCE_FILES_ALL_GENERATED),) # Only add jacocoagent if the package contains some java code LOCAL_STATIC_JAVA_LIBRARIES += jacocoagent # Exclude jacoco classes from proguard From bc0c494d3af1bce637289e4aceaba90cbdadacba Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 12 Mar 2018 23:33:15 -0700 Subject: [PATCH 6/6] Allow aapt2 rules to take zipped resource files Allow aapt2 rules to take zipped resource files similar to the way the javac rules take srcjars. For now, unzip the files using extract_srcjars.sh, and then use aapt2 compile --dir. Eventually it could be done with aapt2 compile --zip. Bug: 73885582 Bug: 74574557 Test: m checkbuild Change-Id: I97ea3ff305e7a9ef2a908b4cf0bca903af62c6b1 --- core/aapt2.mk | 23 ++++++++++++++++++----- core/definitions.mk | 9 +++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/core/aapt2.mk b/core/aapt2.mk index c582e30df..895bd371f 100644 --- a/core/aapt2.mk +++ b/core/aapt2.mk @@ -12,6 +12,7 @@ # - proguard_options_file # - my_generated_res_dirs: Resources generated during the build process and we have to compile them in a single run of aapt2. # - my_generated_res_dirs_deps: the dependency to use for my_generated_res_dirs. +# - my_generated_res_zips: Zip files containing resources # - my_apk_split_configs: The configurations for which to generate splits. # - built_apk_splits: The paths where AAPT should generate the splits. # @@ -35,7 +36,7 @@ my_overlay_resources_flat := \ $(eval $(call aapt2-compile-one-resource-file-rule,$(r),$(o)))\ $(o)) -my_generated_resources_flata := +my_resources_flata := # Compile generated resources ifneq ($(my_generated_res_dirs),) my_generated_resources_flata := $(my_compiled_res_base_dir)/gen_res.flata @@ -44,12 +45,23 @@ $(my_generated_resources_flata) : $(my_generated_res_dirs_deps) $(AAPT2) @echo "AAPT2 compile $@ <- $(PRIVATE_SOURCE_RES_DIRS)" $(call aapt2-compile-resource-dirs) -my_generated_resources_flata += $(my_generated_resources_flata) +my_resources_flata += $(my_generated_resources_flata) +endif + +# Compile zipped resources +ifneq ($(my_generated_res_zips),) +my_zipped_resources_flata := $(my_compiled_res_base_dir)/zip_res.flata +$(my_zipped_resources_flata): PRIVATE_SOURCE_RES_ZIPS := $(my_generated_res_zips) +$(my_zipped_resources_flata) : $(my_generated_res_deps) $(AAPT2) $(EXTRACT_SRCJARS) + @echo "AAPT2 compile $@ <- $(PRIVATE_SOURCE_RES_ZIPS)" + $(call aapt2-compile-resource-zips) + +my_resources_flata += $(my_zipped_resources_flata) endif # Always set --pseudo-localize, it will be stripped out later for release # builds that don't want it. -$(my_res_resources_flat) $(my_overlay_resources_flat) $(my_generated_resources_flata): \ +$(my_res_resources_flat) $(my_overlay_resources_flat) $(my_resources_flata): \ PRIVATE_AAPT2_CFLAGS := --pseudo-localize my_static_library_resources := $(foreach l, $(call reverse-list,$(LOCAL_STATIC_ANDROID_LIBRARIES)),\ @@ -67,7 +79,7 @@ $(my_res_package): PRIVATE_AAPT_FLAGS += $(addprefix --split ,$(join $(built_apk endif $(my_res_package): PRIVATE_RES_FLAT := $(my_res_resources_flat) -$(my_res_package): PRIVATE_OVERLAY_FLAT := $(my_static_library_resources) $(my_generated_resources_flata) $(my_overlay_resources_flat) +$(my_res_package): PRIVATE_OVERLAY_FLAT := $(my_static_library_resources) $(my_resources_flata) $(my_overlay_resources_flat) $(my_res_package): PRIVATE_SHARED_ANDROID_LIBRARIES := $(my_shared_library_resources) $(my_res_package): PRIVATE_PROGUARD_OPTIONS_FILE := $(proguard_options_file) $(my_res_package): PRIVATE_ASSET_DIRS := $(my_asset_dirs) @@ -95,7 +107,7 @@ endif $(my_res_package): $(full_android_manifest) $(my_static_library_resources) $(my_shared_library_resources) $(my_res_package): $(my_full_asset_paths) $(my_res_package): $(my_res_resources_flat) $(my_overlay_resources_flat) \ - $(my_generated_resources_flata) $(my_static_library_resources) \ + $(my_resources_flata) $(my_static_library_resources) \ $(AAPT2) @echo "AAPT2 link $@" $(call aapt2-link) @@ -118,3 +130,4 @@ my_full_asset_paths := my_apk_split_configs := my_generated_res_dirs := my_generated_res_dirs_deps := +my_generated_res_zips := diff --git a/core/definitions.mk b/core/definitions.mk index 1300115e4..b0dcb0145 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2079,6 +2079,15 @@ $(hide) $(AAPT2) compile -o $@ $(addprefix --dir ,$(PRIVATE_SOURCE_RES_DIRS)) \ $(PRIVATE_AAPT2_CFLAGS) --legacy endef +# TODO(b/74574557): use aapt2 compile --zip if it gets implemented +define aapt2-compile-resource-zips +@mkdir -p $(dir $@) +rm -rf $@.contents +mkdir -p $@.contents +$(EXTRACT_SRCJARS) $@.contents $@.list $(PRIVATE_SOURCE_RES_ZIPS) +$(hide) $(AAPT2) compile -o $@ --dir $@.tmp $(PRIVATE_AAPT2_CFLAGS) --legacy +endef + # Set up rule to compile one resource file with aapt2. # Must be called with $(eval). # $(1): the source file