From 031e0fb30827e1b8050e18c5f8e4a335bd586f7b Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Tue, 25 Feb 2014 11:18:40 -0800 Subject: [PATCH] Generate .pb.cc/.pb.h to arch-neutral generated_sources_dir So a library can export the proto's include path that can be used with both archs in multilib build. Change-Id: Ia0f92f0b40e39dc3fa426c69c52139a0a8f04077 --- core/binary.mk | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index e22cd8419..d926c37c8 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -414,23 +414,30 @@ proto_generated_objects := proto_generated_headers := ifneq ($(proto_sources),) proto_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(proto_sources)) -proto_generated_cc_sources_dir := $(intermediates)/proto +proto_generated_cc_sources_dir := $(generated_sources_dir)/proto proto_generated_cc_sources := $(addprefix $(proto_generated_cc_sources_dir)/, \ $(patsubst %.proto,%.pb.cc,$(proto_sources_fullpath))) -proto_generated_objects := $(patsubst %.cc,%.o, $(proto_generated_cc_sources)) +proto_generated_headers := $(patsubst %.pb.cc,%.pb.h, $(proto_generated_cc_sources)) +proto_generated_obj_dir := $(intermediates)/proto +proto_generated_objects := $(addprefix $(proto_generated_obj_dir)/, \ + $(patsubst %.proto,%.pb.o,$(proto_sources_fullpath))) +# Ensure the transform-proto-to-cc rule is only defined once in multilib build. +ifndef $(my_prefix)_$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_proto_defined $(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) -proto_generated_headers := $(patsubst %.pb.cc,%.pb.h, $(proto_generated_cc_sources)) $(proto_generated_headers): $(proto_generated_cc_sources_dir)/%.pb.h: $(proto_generated_cc_sources_dir)/%.pb.cc +$(my_prefix)_$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_proto_defined := true +endif # transform-proto-to-cc rule included only once + $(proto_generated_objects): PRIVATE_ARM_MODE := $(normal_objects_mode) $(proto_generated_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags) -$(proto_generated_objects): $(proto_generated_cc_sources_dir)/%.o: $(proto_generated_cc_sources_dir)/%.cc $(proto_generated_headers) +$(proto_generated_objects): $(proto_generated_obj_dir)/%.o: $(proto_generated_cc_sources_dir)/%.cc $(proto_generated_headers) $(transform-$(PRIVATE_HOST)cpp-to-o) -include $(proto_generated_objects:%.o=%.P) @@ -441,7 +448,7 @@ my_static_libraries += libprotobuf-cpp-2.3.0-full else my_static_libraries += libprotobuf-cpp-2.3.0-lite endif -endif +endif # $(proto_sources) non-empty ########################################################### -- 2.11.0