1# Test proto3 "optional" field types. 2# This is supported in protoc 3.12 and newer. 3 4Import('env') 5import re 6 7version = None 8if 'PROTOC_VERSION' in env: 9 match = re.search('(?:([0-9]+).)?([0-9]+).([0-9]+)', env['PROTOC_VERSION']) 10 version = (int(match.group(1) or 3), int(match.group(2)), int(match.group(3))) 11 12# Oneof is supported by protoc >= 3.12.0 13if env.GetOption('clean') or (version and (version[0] > 3 or (version[0] == 3 and version[1] >= 12))): 14 15 env2 = env.Clone() 16 env2.Append(PROTOCFLAGS = "--experimental_allow_proto3_optional") 17 18 env2.NanopbProto("optional.proto") 19 opt = env2.Program(["optional.c", "optional.pb.c", 20 "$COMMON/pb_decode.o", "$COMMON/pb_encode.o", 21 "$COMMON/pb_common.o"]) 22 env2.RunTest(opt) 23 24 25