123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #
- # Nanoapp NanoPB Makefile
- #
- # Include this file in your nanoapp Makefile to produce pb.c and pb.h (or
- # $NANOPB_EXTENSION.c and $NANOPB_EXTENSION.h if $NANOPB_EXTENSION is defined)
- # for .proto files specified in the NANOPB_SRCS variable. The produced pb.c or
- # $NANOPB_EXTENSION.c files are automatically added to the COMMON_SRCS variable
- # for the nanoapp build.
- #
- # NANOPB_FLAGS can be used to supply additional command line arguments to the
- # nanopb compiler. Note that this is global and applies to all protobuf
- # generated source.
- # Environment Checks ###########################################################
- ifneq ($(NANOPB_SRCS),)
- ifeq ($(NANOPB_PREFIX),)
- $(error "NANOPB_SRCS is non-empty. You must supply a NANOPB_PREFIX environment \
- variable containing a path to the nanopb project. Example: \
- export NANOPB_PREFIX=$$HOME/path/to/nanopb/nanopb-c")
- endif
- endif
- ifeq ($(PROTOC),)
- PROTOC=protoc
- endif
- # Generated Source Files #######################################################
- NANOPB_GEN_PATH = $(OUT)/nanopb_gen
- ifeq ($(NANOPB_EXTENSION),)
- NANOPB_EXTENSION = pb
- else
- NANOPB_GENERATOR_FLAGS = --extension=.$(NANOPB_EXTENSION)
- endif
- NANOPB_GEN_SRCS += $(patsubst %.proto, \
- $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).c, \
- $(NANOPB_SRCS))
- ifneq ($(NANOPB_GEN_SRCS),)
- COMMON_CFLAGS += -I$(NANOPB_PREFIX)
- COMMON_CFLAGS += -I$(NANOPB_GEN_PATH)
- COMMON_CFLAGS += $(addprefix -I$(NANOPB_GEN_PATH)/, $(NANOPB_INCLUDES))
- ifneq ($(NANOPB_INCLUDE_LIBRARY),false)
- COMMON_SRCS += $(NANOPB_PREFIX)/pb_common.c
- COMMON_SRCS += $(NANOPB_PREFIX)/pb_decode.c
- COMMON_SRCS += $(NANOPB_PREFIX)/pb_encode.c
- endif
- endif
- # NanoPB Compiler Flags ########################################################
- ifneq ($(NANOPB_GEN_SRCS),)
- ifneq ($(NANOPB_INCLUDE_LIBRARY),false)
- COMMON_CFLAGS += -DPB_NO_PACKED_STRUCTS=1
- endif
- endif
- # NanoPB Generator Setup #######################################################
- NANOPB_GENERATOR_SRCS = $(NANOPB_PREFIX)/generator/proto/nanopb_pb2.py
- NANOPB_GENERATOR_SRCS += $(NANOPB_PREFIX)/generator/proto/plugin_pb2.py
- $(NANOPB_GENERATOR_SRCS):
- cd $(NANOPB_PREFIX)/generator/proto && make
- # Generate NanoPB Sources ######################################################
- COMMON_SRCS += $(NANOPB_GEN_SRCS)
- NANOPB_PROTOC = $(NANOPB_PREFIX)/generator/protoc-gen-nanopb
- $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).c \
- $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).h: %.proto \
- %.options \
- $(NANOPB_GENERATOR_SRCS)
- mkdir -p $(dir $@)
- $(PROTOC) --plugin=protoc-gen-nanopb=$(NANOPB_PROTOC) $(NANOPB_FLAGS) \
- --nanopb_out="$(NANOPB_GENERATOR_FLAGS) --options-file=$(basename $<).options:$(NANOPB_GEN_PATH)/$(NANOPB_PROTO_PATH)" \
- $<
- $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).c \
- $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).h: %.proto \
- $(NANOPB_OPTIONS) \
- $(NANOPB_GENERATOR_SRCS)
- mkdir -p $(dir $@)
- $(PROTOC) --plugin=protoc-gen-nanopb=$(NANOPB_PROTOC) $(NANOPB_FLAGS) \
- --nanopb_out="$(NANOPB_GENERATOR_FLAGS) --options-file=$(NANOPB_OPTIONS):$(NANOPB_GEN_PATH)/$(NANOPB_PROTO_PATH)" \
- $<
|