From 3de3a74659348db57cd9cbde80fbb985caef4a83 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Sat, 7 Oct 2017 23:44:05 -0400 Subject: [PATCH] When compiling with the lite protobuf option, pass the option to aprotoc to force the lite runtime. With LOCAL_PROTO_OPTIMIZE_TYPE set to one of the lite variants, the build system thinks the proto should be compiled with lite, and will link in the line runtime libs. But if the .proto files don't contain the directive to compile the source as lite (option optimize_for = LITE_RUNTIME;), then the generated code will be full and the libraries will be full, and it won't link. Test: make Merged-In: Ib8a135218d62fa42fa6448c49c97f7aeb2755c42 Change-Id: Ib8a135218d62fa42fa6448c49c97f7aeb2755c42 --- core/binary.mk | 5 ++++- core/java_common.mk | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index 2f306b2c3..7fb69248d 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -870,6 +870,9 @@ endif ########################################################### ## Compile the .proto files to .cc (or .c) and then to .o ########################################################### +ifeq ($(strip $(LOCAL_PROTOC_OPTIMIZE_TYPE)),) + LOCAL_PROTOC_OPTIMIZE_TYPE := lite +endif proto_sources := $(filter %.proto,$(my_src_files)) ifneq ($(proto_sources),) proto_gen_dir := $(generated_sources_dir)/proto @@ -891,7 +894,7 @@ my_rename_cpp_ext := true endif my_proto_c_includes := external/protobuf/src my_cflags += -DGOOGLE_PROTOBUF_NO_RTTI -my_protoc_flags := --cpp_out=$(proto_gen_dir) +my_protoc_flags := --cpp_out=$(if $(filter lite lite-static,$(LOCAL_PROTOC_OPTIMIZE_TYPE)),lite:,)$(proto_gen_dir) my_protoc_deps := endif my_proto_c_includes += $(proto_gen_dir) diff --git a/core/java_common.mk b/core/java_common.mk index a8163248c..aac5982a9 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -38,6 +38,9 @@ LOCAL_JAVACFLAGS += -source $(LOCAL_JAVA_LANGUAGE_VERSION) -target $(LOCAL_JAVA_ ########################################################### ## .proto files: Compile proto files to .java ########################################################### +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. @@ -67,7 +70,7 @@ $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --java_out endif endif $(proto_java_sources_file_stamp): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) -$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_PARAMS := $(LOCAL_PROTO_JAVA_OUTPUT_PARAMS) +$(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) $(call transform-proto-to-java)