Extra protobuf-related support
Change-Id: I375d32f0bcb695ccb0603743133034941d584163
diff --git a/core/base_rules.mk b/core/base_rules.mk
index 42bb641..a7456e8 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -273,7 +273,12 @@
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 @@
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 9ebf8c6..88c356a 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -160,6 +160,7 @@
$(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 8ed3789..9badc55 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -101,6 +101,7 @@
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 ac431df..36285b8 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -770,6 +770,7 @@
$(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 @@
@echo "Protoc: $@ <= $<"
$(hide) $(PROTOC) \
$(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \
+ $(PRIVATE_PROTOC_FLAGS) \
--cpp_out=$(PRIVATE_PROTO_CC_OUTPUT_DIR) $<
endef