# Test cxx descriptor functionality

Import('env')

base_env = env.Clone()
base_env.Replace(NANOPBFLAGS = '--cpp-descriptor')
base_env.NanopbProto('message')

for std in ["c++03", "c++11", "c++14", "c++17", "c++20"]:
    e = base_env.Clone()
    e.Append(CXXFLAGS = '-std={}'.format(std))

    # Make sure compiler supports this version of C++ before we actually run the
    # test.
    conf = Configure(e)
    compiler_valid = conf.CheckCXX()
    e = conf.Finish()
    if not compiler_valid:
        print("Skipping {} test - compiler doesn't support it".format(std))
        continue

    o1 = e.Object('message_descriptor_{}'.format(std), 'message_descriptor.cc')
    o2 = e.Object('message.pb_{}'.format(std), 'message.pb.c')
    p = e.Program([o1, o2])
    e.RunTest(p)
