diff options
-rwxr-xr-x | generator/nanopb_generator.py | 5 | ||||
-rw-r--r-- | tests/multiple_files/SConscript | 5 | ||||
-rw-r--r-- | tests/multiple_files/subdir/multifile2.proto | 25 | ||||
-rw-r--r-- | tests/multiple_files/test_multiple_files.c | 8 |
4 files changed, 41 insertions, 2 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 64514577..9cf2de5f 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -1045,7 +1045,10 @@ class ProtoFile: else: yield '/* Generated by %s at %s. */\n\n' % (nanopb_version, time.asctime()) - symbol = make_identifier(headername) + if self.fdesc.package: + symbol = make_identifier(self.fdesc.package + '_' + headername) + else: + symbol = make_identifier(headername) yield '#ifndef PB_%s_INCLUDED\n' % symbol yield '#define PB_%s_INCLUDED\n' % symbol try: diff --git a/tests/multiple_files/SConscript b/tests/multiple_files/SConscript index 1689f482..b1281e17 100644 --- a/tests/multiple_files/SConscript +++ b/tests/multiple_files/SConscript @@ -4,10 +4,13 @@ Import("env") incpath = env.Clone() incpath.Append(PROTOCPATH = '#multiple_files') +incpath.Append(CPPPATH = '$BUILD/multiple_files') incpath.NanopbProto(["multifile1", "multifile1.options"]) incpath.NanopbProto("multifile2") -test = incpath.Program(["test_multiple_files.c", "multifile1.pb.c", "multifile2.pb.c"]) +incpath.NanopbProto("subdir/multifile2") +test = incpath.Program(["test_multiple_files.c", "multifile1.pb.c", + "multifile2.pb.c", "subdir/multifile2.pb.c"]) env.RunTest(test) diff --git a/tests/multiple_files/subdir/multifile2.proto b/tests/multiple_files/subdir/multifile2.proto new file mode 100644 index 00000000..847a9290 --- /dev/null +++ b/tests/multiple_files/subdir/multifile2.proto @@ -0,0 +1,25 @@ +syntax = "proto2"; + +package subdir; + +import "multifile1.proto"; + +message Callback2Message { + required TestMessage tstmsg = 1; + required SubMessage submsg = 2; +} + +message OneofMessage { + oneof msgs { + StaticMessage tstmsg = 1; + } +} + +message Enums { + required SignedEnum senum = 1; + required UnsignedEnum uenum = 2; +} + +message SubdirMessage { + required int32 foo = 1 [default = 15]; +} diff --git a/tests/multiple_files/test_multiple_files.c b/tests/multiple_files/test_multiple_files.c index 292b8d7c..70a3e596 100644 --- a/tests/multiple_files/test_multiple_files.c +++ b/tests/multiple_files/test_multiple_files.c @@ -6,6 +6,7 @@ #include <pb_encode.h> #include "unittests.h" #include "multifile2.pb.h" +#include "subdir/multifile2.pb.h" int main() { @@ -18,5 +19,12 @@ int main() TEST(PB_LTYPE(Enums_fields[0].type) == PB_LTYPE_VARINT); TEST(PB_LTYPE(Enums_fields[1].type) == PB_LTYPE_UVARINT); + /* Test that subdir file is correctly included */ + { + subdir_SubdirMessage foo = subdir_SubdirMessage_init_default; + TEST(foo.foo == 15); + /* TEST(subdir_OneofMessage_size == 27); */ /* TODO: Issue #172 */ + } + return status; } |