1# This is an include file for Makefiles. It provides rules for building 2# .pb.c and .pb.h files out of .proto, as well the path to nanopb core. 3 4# Path to the nanopb root directory 5NANOPB_DIR := $(patsubst %/,%,$(dir $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))))) 6 7# Files for the nanopb core 8NANOPB_CORE = $(NANOPB_DIR)/pb_encode.c $(NANOPB_DIR)/pb_decode.c $(NANOPB_DIR)/pb_common.c 9 10# Check if we are running on Windows 11ifdef windir 12WINDOWS = 1 13endif 14ifdef WINDIR 15WINDOWS = 1 16endif 17 18# Check whether to use binary version of nanopb_generator or the 19# system-supplied python interpreter. 20ifneq "$(wildcard $(NANOPB_DIR)/generator-bin)" "" 21 # Binary package 22 PROTOC = $(NANOPB_DIR)/generator-bin/protoc 23 PROTOC_OPTS = 24else 25 # Source only or git checkout 26 PROTOC_OPTS = 27 ifdef WINDOWS 28 PROTOC = python $(NANOPB_DIR)/generator/protoc 29 else 30 PROTOC = $(NANOPB_DIR)/generator/protoc 31 endif 32endif 33 34# Rule for building .pb.c and .pb.h 35%.pb.c %.pb.h: %.proto %.options 36 $(PROTOC) $(PROTOC_OPTS) --nanopb_out=. $< 37 38%.pb.c %.pb.h: %.proto 39 $(PROTOC) $(PROTOC_OPTS) --nanopb_out=. $< 40 41