blob: 07709ea66994290c05e6a22a16ac2c308cc6e756 [file] [log] [blame]
# Regression test for #494:
# Using sizeof on anonymous union not allowed in C++, in message_size oneof sizing fallback
Import('env')
import os, sys
# The build rules here are a bit tricky to make the normal dependency
# resolution intentionally fail. This causes the generator to use the fallback
# define which had the problem with C++.
generator_cmd = os.path.join(env['NANOPB'], 'generator-bin', 'nanopb_generator' + env['PROGSUFFIX'])
if os.path.exists(generator_cmd):
generator_cmd = env['ESCAPE'](generator_cmd)
else:
generator_cmd = env['ESCAPE'](sys.executable) + " " + env['ESCAPE'](os.path.join(env['NANOPB'], 'generator', 'nanopb_generator.py'))
env.Command("oneof.pb", "oneof.proto", "$PROTOC $PROTOCFLAGS -Ibuild/regression/issue_494 -o$TARGETS $SOURCES")
env.Command(["oneof.pb.c", "oneof.pb.h"], "oneof.pb", generator_cmd + " -Dbuild/regression/issue_494 $SOURCES")
env.NanopbProto("submessage.proto")
env.Depends("oneof.pb", "submessage.proto")
test = env.Program(["oneof_size.cc"])
env.Depends(test, "oneof.pb.h")
env.RunTest(test)