summaryrefslogtreecommitdiffstats
path: root/extra/nanopb.mk
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>2013-11-17 20:04:29 +0200
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>2013-12-29 20:26:57 +0200
commit45c1a32e5046fe9323d4fd0213b474a554b2bbed (patch)
treec9280023b03aa52168e1a10757f96e3323a03116 /extra/nanopb.mk
parentef31774cd902a6f069b8f2b80b870167328f5acb (diff)
Rework the Makefiles to be compatible with binary packages.
Diffstat (limited to 'extra/nanopb.mk')
-rw-r--r--extra/nanopb.mk29
1 files changed, 29 insertions, 0 deletions
diff --git a/extra/nanopb.mk b/extra/nanopb.mk
new file mode 100644
index 00000000..b52c78c1
--- /dev/null
+++ b/extra/nanopb.mk
@@ -0,0 +1,29 @@
+# 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 := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))../)
+
+# Files for the nanopb core
+NANOPB_CORE = $(NANOPB_DIR)/pb_encode.c $(NANOPB_DIR)/pb_decode.c
+
+# 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 = protoc
+ ifdef windir
+ PROTOC_OPTS = --plugin=nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb.bat
+ else
+ PROTOC_OPTS = --plugin=nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb
+ endif
+endif
+
+# Rule for building .pb.c and .pb.h
+%.pb.c %.pb.h: %.proto $(wildcard %.options)
+ $(PROTOC) $(PROTOC_OPTS) --nanopb_out=. $<
+