From 84c6c1cfe48d237181133e66e7c476a7e3d17702 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Mon, 10 Jun 2019 16:31:07 -0700 Subject: [PATCH] Convert java proto generation to use srcjars So that we actually represent all files in the build graph. Test: treehugger Change-Id: I48e32437fcfd8c0de8cbc87d07934393db557aa4 --- core/definitions.mk | 4 +--- core/host_dalvik_java_library.mk | 1 - core/host_java_library.mk | 1 - core/java.mk | 1 - core/java_common.mk | 33 +++++++++++++++----------------- 5 files changed, 16 insertions(+), 24 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 5d3227a0a8..dfb1b7d3f2 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1082,7 +1082,7 @@ $(hide) for f in $(PRIVATE_PROTO_SRC_FILES); do \ $(PRIVATE_PROTOC_FLAGS) \ $$f || exit 33; \ done -$(hide) touch $@ +$(SOONG_ZIP) -o $@ -C $(PRIVATE_PROTO_JAVA_OUTPUT_DIR) -D $(PRIVATE_PROTO_JAVA_OUTPUT_DIR) endef ###################################################################### @@ -2013,8 +2013,6 @@ define fetch-additional-java-source $(hide) if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' -and -not -name '.*' >> $(1); \ fi -$(if $(PRIVATE_HAS_PROTO_SOURCES), \ - $(hide) find $(PRIVATE_PROTO_SOURCE_INTERMEDIATES_DIR) -name '*.java' -and -not -name '.*' >> $(1)) endef # Some historical notes: diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 423575cb10..8e655ff3cb 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -73,7 +73,6 @@ $(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON) java_sources_deps := \ $(java_sources) \ $(java_resource_sources) \ - $(proto_java_sources_file_stamp) \ $(LOCAL_SRCJARS) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) diff --git a/core/host_java_library.mk b/core/host_java_library.mk index a29a1b8e29..6c237894c4 100644 --- a/core/host_java_library.mk +++ b/core/host_java_library.mk @@ -64,7 +64,6 @@ layers_file := $(addprefix $(LOCAL_PATH)/, $(LOCAL_JAVA_LAYERS_FILE)) java_sources_deps := \ $(java_sources) \ $(java_resource_sources) \ - $(proto_java_sources_file_stamp) \ $(LOCAL_SRCJARS) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) diff --git a/core/java.mk b/core/java.mk index 41a168661e..dc3cd08040 100644 --- a/core/java.mk +++ b/core/java.mk @@ -233,7 +233,6 @@ endif java_sources_deps := \ $(java_sources) \ $(java_resource_sources) \ - $(proto_java_sources_file_stamp) \ $(LOCAL_SRCJARS) \ $(LOCAL_ADDITIONAL_DEPENDENCIES) diff --git a/core/java_common.mk b/core/java_common.mk index db5b6c3828..9909885168 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -67,37 +67,36 @@ ifeq ($(strip $(LOCAL_PROTOC_OPTIMIZE_TYPE)),) LOCAL_PROTOC_OPTIMIZE_TYPE := lite endif proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES)) -# Because names of the .java files compiled from .proto files are unknown until the -# .proto files are compiled, we use a timestamp file as depedency. -proto_java_sources_file_stamp := ifneq ($(proto_sources),) proto_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(proto_sources)) proto_java_intemediate_dir := $(intermediates.COMMON)/proto -proto_java_sources_file_stamp := $(proto_java_intemediate_dir)/Proto.stamp proto_java_sources_dir := $(proto_java_intemediate_dir)/src +proto_java_srcjar := $(intermediates.COMMON)/proto.srcjar -$(proto_java_sources_file_stamp): PRIVATE_PROTO_INCLUDES := $(TOP) -$(proto_java_sources_file_stamp): PRIVATE_PROTO_SRC_FILES := $(proto_sources_fullpath) -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_DIR := $(proto_java_sources_dir) -$(proto_java_sources_file_stamp): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) +LOCAL_SRCJARS += $(proto_java_srcjar) + +$(proto_java_srcjar): PRIVATE_PROTO_INCLUDES := $(TOP) +$(proto_java_srcjar): PRIVATE_PROTO_SRC_FILES := $(proto_sources_fullpath) +$(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_DIR := $(proto_java_sources_dir) +$(proto_java_srcjar): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro) -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javamicro_out +$(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javamicro_out else ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano) -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javanano_out +$(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javanano_out else ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),stream) -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javastream_out -$(proto_java_sources_file_stamp): PRIVATE_PROTOC_FLAGS += --plugin=$(HOST_OUT_EXECUTABLES)/protoc-gen-javastream -$(proto_java_sources_file_stamp): $(HOST_OUT_EXECUTABLES)/protoc-gen-javastream +$(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javastream_out +$(proto_java_srcjar): PRIVATE_PROTOC_FLAGS += --plugin=$(HOST_OUT_EXECUTABLES)/protoc-gen-javastream +$(proto_java_srcjar): $(HOST_OUT_EXECUTABLES)/protoc-gen-javastream else -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --java_out +$(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --java_out endif endif endif -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_PARAMS := $(if $(filter lite,$(LOCAL_PROTOC_OPTIMIZE_TYPE)),lite$(if $(LOCAL_PROTO_JAVA_OUTPUT_PARAMS),:,),)$(LOCAL_PROTO_JAVA_OUTPUT_PARAMS) -$(proto_java_sources_file_stamp) : $(proto_sources_fullpath) $(PROTOC) +$(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_PARAMS := $(if $(filter lite,$(LOCAL_PROTOC_OPTIMIZE_TYPE)),lite$(if $(LOCAL_PROTO_JAVA_OUTPUT_PARAMS),:,),)$(LOCAL_PROTO_JAVA_OUTPUT_PARAMS) +$(proto_java_srcjar) : $(proto_sources_fullpath) $(PROTOC) $(SOONG_ZIP) $(call transform-proto-to-java) #TODO: protoc should output the dependencies introduced by imports. @@ -231,8 +230,6 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ANNO_INTERMEDIATES_DIR := $(intermediates.COMMON)/anno $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_PROTO_SOURCES := $(if $(proto_sources),true) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_PROTO_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/proto $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_RS_SOURCES := $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAVA_SOURCES := $(all_java_sources) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAVA_SOURCE_LIST := $(java_source_list_file)