blob: d60b37d04b9066b37acf4a6af55d4ddd6b52cbb2 [file] [log] [blame]
# This is an include file for Makefiles. It provides rules for building
# .pb.c and .pb.h files out of .proto, as well the path to nanopb core.
# Path to the nanopb root directory
NANOPB_DIR := $(patsubst %/,%,$(dir $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))))
# Files for the nanopb core
NANOPB_CORE = $(NANOPB_DIR)/pb_encode.c $(NANOPB_DIR)/pb_decode.c $(NANOPB_DIR)/pb_common.c
# Check if we are running on Windows
ifdef windir
WINDOWS = 1
endif
ifdef WINDIR
WINDOWS = 1
endif
# Check whether to use binary version of nanopb_generator or the
# system-supplied python interpreter.
ifneq "$(wildcard $(NANOPB_DIR)/generator-bin)" ""
# Binary package
PROTOC = $(NANOPB_DIR)/generator-bin/protoc
PROTOC_OPTS =
else
# Source only or git checkout
PROTOC_OPTS =
ifdef WINDOWS
PROTOC = python $(NANOPB_DIR)/generator/protoc
else
PROTOC = $(NANOPB_DIR)/generator/protoc
endif
endif
# Rule for building .pb.c and .pb.h
%.pb.c %.pb.h: %.proto %.options
$(PROTOC) $(PROTOC_OPTS) --nanopb_out=. $<
%.pb.c %.pb.h: %.proto
$(PROTOC) $(PROTOC_OPTS) --nanopb_out=. $<