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