Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 042d4dc4 authored by Wink Saville's avatar Wink Saville Committed by Amit Mahajan
Browse files

nanopb-c

Change-Id: I584d0a1e228338ea4ec3e5e2875d1ed329bc37f2
parent 3c242c5d
Loading
Loading
Loading
Loading
+51 −2
Original line number Diff line number Diff line
@@ -466,10 +466,17 @@ my_generated_sources := $(patsubst $(generated_sources_dir)/%,$(intermediates)/%

ALL_GENERATED_SOURCES += $(my_generated_sources)

###########################################################
# PROTOC transforms
###########################################################

proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES))

ifneq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nanopb-c)

###########################################################
## Compile the .proto files to .cc and then to .o
###########################################################
proto_sources := $(filter %.proto,$(my_src_files))
proto_generated_objects :=
proto_generated_headers :=
ifneq ($(proto_sources),)
@@ -484,6 +491,7 @@ proto_generated_objects := $(addprefix $(proto_generated_obj_dir)/, \

# Auto-export the generated proto source dir.
LOCAL_EXPORT_C_INCLUDE_DIRS += $(proto_generated_cc_sources_dir)
$(warning wink protobuf LECID=$(LOCAL_EXPORT_C_INCLUDE_DIRS))

# Ensure the transform-proto-to-cc rule is only defined once in multilib build.
ifndef $(my_prefix)_$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_proto_defined
@@ -516,6 +524,46 @@ endif
endif  # $(proto_sources) non-empty


else

###########################################################
## Compile the .proto files to nanopb-c and then to .o
###########################################################
nanopb_c_generated_objects :=
nanopb_c_generated_headers :=
ifneq ($(proto_sources),)
nanopb_c_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(proto_sources))
nanopb_c_generated_sources_dir := $(intermediates)/proto
nanopb_c_generated_sources := $(addprefix $(nanopb_c_generated_sources_dir)/, \
    $(patsubst %.proto,%.pb.c,$(nanopb_c_sources_fullpath)))
nanopb_c_generated_objects := $(patsubst %.c,%.o, $(nanopb_c_generated_sources))

# Auto-export the generated proto source dir.
LOCAL_EXPORT_C_INCLUDE_DIRS += $(nanopb_c_generated_sources_dir)
$(warning wink nanopb LECID=$(LOCAL_EXPORT_C_INCLUDE_DIRS))

$(nanopb_c_generated_sources): PRIVATE_NANOPB_C_INCLUDES := $(TOP)
$(nanopb_c_generated_sources): PRIVATE_NANOPB_C_OUTPUT_DIR := $(nanopb_c_generated_sources_dir)
$(nanopb_c_generated_sources): PRIVATE_NANOPB_C_FLAGS := $(LOCAL_PROTOC_FLAGS)

$(nanopb_c_generated_sources): $(nanopb_c_generated_sources_dir)/%.pb.c: %.proto $(PROTOC)
	$(transform-nanopb_c-to-c)

nanopb_c_generated_headers := $(patsubst %.pb.c,%.pb.h, $(nanopb_c_generated_sources))
$(nanopb_c_generated_headers): $(nanopb_c_generated_sources_dir)/%.pb.h: $(nanopb_c_generated_sources_dir)/%.pb.c

$(nanopb_c_generated_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
$(nanopb_c_generated_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
$(nanopb_c_generated_objects): $(nanopb_c_generated_sources_dir)/%.pb.o: $(nanopb_c_generated_sources_dir)/%.pb.c $(nanopb_c_generated_headers)
	$(transform-$(PRIVATE_HOST)cpp-to-o)
-include $(nanopb_c_generated_objects:%.o=%.P)

LOCAL_C_INCLUDES += external/nanopb-c $(dir $(nanopb_c_generated_headers))
LOCAL_STATIC_LIBRARIES += libnanopb-c-2.8.0
endif

endif

###########################################################
## YACC: Compile .y and .yy files to .cpp and the to .o.
###########################################################
@@ -813,6 +861,7 @@ normal_objects := \
    $(objc_objects) \
    $(yacc_objects) \
    $(lex_objects) \
    $(nanopb_c_generated_objects) \
    $(proto_generated_objects) \
    $(addprefix $(TOPDIR)$(LOCAL_PATH)/,$(LOCAL_PREBUILT_OBJ_FILES))

@@ -981,7 +1030,7 @@ $(LOCAL_INSTALLED_MODULE): | $(installed_static_library_notice_file_targets)
export_includes := $(intermediates)/export_includes
$(export_includes): PRIVATE_EXPORT_C_INCLUDE_DIRS := $(LOCAL_EXPORT_C_INCLUDE_DIRS)
# Make sure .pb.h are already generated before any dependent source files get compiled.
$(export_includes) : $(LOCAL_MODULE_MAKEFILE) $(proto_generated_headers)
$(export_includes) : $(LOCAL_MODULE_MAKEFILE) $(proto_generated_headers) $(nanopb_c_generated_headers)
	@echo Export includes file: $< -- $@
	$(hide) mkdir -p $(dir $@) && rm -f $@
ifdef LOCAL_EXPORT_C_INCLUDE_DIRS
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ LOCAL_RENDERSCRIPT_TARGET_API:=
LOCAL_DEX_PREOPT:= # '',true,false,nostripping
LOCAL_DEX_PREOPT_IMAGE_LOCATION:=
LOCAL_DEX_PREOPT_FLAGS:=
LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,nano,full
LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,nano,full,nanopb-c
LOCAL_PROTOC_FLAGS:=
LOCAL_PROTO_JAVA_OUTPUT_PARAMS:=
LOCAL_NO_CRT:=
+11 −0
Original line number Diff line number Diff line
@@ -964,6 +964,17 @@ $(hide) $(PROTOC) \
	--cpp_out=$(PRIVATE_PROTO_CC_OUTPUT_DIR) $<
endef

######################################################################
## Commands for running protoc to compile .proto into nano protobuf .pb.c and .pb.h
######################################################################
define transform-nanopb_c-to-c
@mkdir -p $(dir $@)
@echo "Protoc: $@ <= $<"
$(hide) $(PROTOC) \
	$(addprefix --proto_path=, $(PRIVATE_NANOPB_C_INCLUDES)) \
	$(PRIVATE_NANOPB_C_FLAGS) \
	--nanopb_out=$(PRIVATE_NANOPB_C_OUTPUT_DIR) --plugin=external/nanopb-c/generator/protoc-gen-nanopb $<
endef

###########################################################
## Commands for running gcc to compile a C++ file