Make tests and examples use the bundled protoc
diff --git a/extra/nanopb.mk b/extra/nanopb.mk
index 5c2cff5..16bc376 100644
--- a/extra/nanopb.mk
+++ b/extra/nanopb.mk
@@ -23,10 +23,11 @@
PROTOC_OPTS =
else
# Source only or git checkout
- PROTOC = protoc
ifdef WINDOWS
- PROTOC_OPTS = --plugin=protoc-gen-nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb.bat
+ PROTOC = "python $(NANOPB_DIR)/generator/protoc"
+ PROTOC_OPTS = --plugin=protoc-gen-nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb.bat
else
+ PROTOC = $(NANOPB_DIR)/generator/protoc
PROTOC_OPTS = --plugin=protoc-gen-nanopb=$(NANOPB_DIR)/generator/protoc-gen-nanopb
endif
endif
diff --git a/tests/SConstruct b/tests/SConstruct
index 18c1b04..8335bdf 100644
--- a/tests/SConstruct
+++ b/tests/SConstruct
@@ -9,6 +9,8 @@
CCFLAGS Flags to pass to the C compiler
CXXFLAGS Flags to pass to the C++ compiler
LINKFLAGS Flags to pass to linker
+PROTOC Path to protoc binary
+PROTOCFLAGS Arguments to pass protoc
For example, for a clang build, use:
scons CC=clang CXX=clang++
@@ -36,6 +38,8 @@
if 'CCFLAGS' in ARGUMENTS: env.Append(CCFLAGS = ARGUMENTS['CCFLAGS'])
if 'CXXFLAGS' in ARGUMENTS: env.Append(CXXFLAGS = ARGUMENTS['CXXFLAGS'])
if 'LINKFLAGS' in ARGUMENTS: env.Append(LINKFLAGS = ARGUMENTS['LINKFLAGS'])
+if 'PROTOC' in ARGUMENTS: env.Replace(PROTOC = ARGUMENTS['PROTOC'])
+if 'PROTOCFLAGS' in ARGUMENTS: env.Replace(PROTOCFLAGS = ARGUMENTS['PROTOCFLAGS'])
# Add the builders defined in site_init.py
add_nanopb_builders(env)
diff --git a/tests/site_scons/site_tools/nanopb.py b/tests/site_scons/site_tools/nanopb.py
index 409d86c..f0626c6 100644
--- a/tests/site_scons/site_tools/nanopb.py
+++ b/tests/site_scons/site_tools/nanopb.py
@@ -64,6 +64,11 @@
# Use protoc bundled with binary package
return env['ESCAPE'](p1)
+ p = os.path.join(n, 'generator', 'protoc')
+ if os.path.exists(p):
+ # Use the grcpio-tools protoc wrapper
+ return env['ESCAPE'](p)
+
p = env.WhereIs('protoc')
if p:
# Use protoc from path