diff --git a/core/base_rules.mk b/core/base_rules.mk index 42bb641282..a7456e854a 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -273,7 +273,12 @@ ifneq ($(proto_sources),) proto_sources_fullpath := $(addprefix $(TOP_DIR)$(LOCAL_PATH)/, $(proto_sources)) # By putting the generated java files into $(LOCAL_INTERMEDIATE_SOURCE_DIR), they will be # automatically found by the java compiling function transform-java-to-classes.jar. +ifneq ($(LOCAL_INTERMEDIATE_SOURCE_DIR),) proto_java_intemediate_dir := $(LOCAL_INTERMEDIATE_SOURCE_DIR)/proto +else +# LOCAL_INTERMEDIATE_SOURCE_DIR may be not defined in non-java modules. +proto_java_intemediate_dir := $(intermediates)/proto +endif proto_java_sources_file_stamp := $(proto_java_intemediate_dir)/Proto.stamp proto_java_sources_dir := $(proto_java_intemediate_dir)/src @@ -285,6 +290,7 @@ $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javamicr else $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --java_out endif +$(proto_java_sources_file_stamp): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) $(proto_java_sources_file_stamp) : $(proto_sources_fullpath) $(PROTOC) $(call transform-proto-to-java) diff --git a/core/binary.mk b/core/binary.mk index 9ebf8c60f2..88c356a391 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -160,6 +160,7 @@ proto_generated_objects := $(patsubst %.cc,%.o, $(proto_generated_cc_sources)) $(proto_generated_cc_sources): PRIVATE_PROTO_INCLUDES := $(TOP) $(proto_generated_cc_sources): PRIVATE_PROTO_CC_OUTPUT_DIR := $(proto_generated_cc_sources_dir) +$(proto_generated_cc_sources): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) $(proto_generated_cc_sources): $(proto_generated_cc_sources_dir)/%.pb.cc: %.proto $(PROTOC) $(transform-proto-to-cc) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 8ed3789983..9badc55958 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -101,6 +101,7 @@ LOCAL_MANIFEST_FILE:= LOCAL_BUILD_HOST_DEX:= LOCAL_DEX_PREOPT:= LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,full +LOCAL_PROTOC_FLAGS:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time. diff --git a/core/definitions.mk b/core/definitions.mk index ac431df6ae..36285b8886 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -770,6 +770,7 @@ define transform-proto-to-java $(hide) $(PROTOC) \ $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \ $(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)=$(PRIVATE_PROTO_JAVA_OUTPUT_DIR) \ + $(PRIVATE_PROTOC_FLAGS) \ $(PRIVATE_PROTO_SRC_FILES) $(hide) touch $@ endef @@ -782,6 +783,7 @@ define transform-proto-to-cc @echo "Protoc: $@ <= $<" $(hide) $(PROTOC) \ $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \ + $(PRIVATE_PROTOC_FLAGS) \ --cpp_out=$(PRIVATE_PROTO_CC_OUTPUT_DIR) $< endef