17ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# This is an include file for Makefiles. It provides rules for building
27ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# .pb.c and .pb.h files out of .proto, as well the path to nanopb core.
37ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
47ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Path to the nanopb root directory
57ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenNANOPB_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))../)
67ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
77ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Files for the nanopb core
87ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenNANOPB_CORE = $(NANOPB_DIR)/pb_encode.c $(NANOPB_DIR)/pb_decode.c
97ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
107ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Check if we are running on Windows
117ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenifdef windir
127ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenWINDOWS = 1
137ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenendif
147ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenifdef WINDIR
157ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenWINDOWS = 1
167ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenendif
177ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
187ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Check whether to use binary version of nanopb_generator or the
197ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# system-supplied python interpreter.
207ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenifneq "$(wildcard $(NANOPB_DIR)/generator-bin)" ""
217ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	# Binary package
227ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	PROTOC = $(NANOPB_DIR)/generator-bin/protoc
237ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	PROTOC_OPTS = 
247ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenelse
257ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	# Source only or git checkout
267ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	PROTOC = protoc
277ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	ifdef WINDOWS
287ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen		PROTOC_OPTS = --plugin=protoc-gen-nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb.bat
297ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	else
307ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen		PROTOC_OPTS = --plugin=protoc-gen-nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb
317ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	endif
327ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenendif
337ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
347ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Rule for building .pb.c and .pb.h
357ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen%.pb.c %.pb.h: %.proto $(wildcard %.options)
367ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen	$(PROTOC) $(PROTOC_OPTS) --nanopb_out=. $<
377ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
38