# Run the alltypes test case, but compile with PB_VALIDATE_UTF8=1

Import("env")

# Take copy of the files for custom build.
c = Copy("$TARGET", "$SOURCE")
env.Command("alltypes.pb.h", "$BUILD/alltypes/alltypes.pb.h", c)
env.Command("alltypes.pb.c", "$BUILD/alltypes/alltypes.pb.c", c)
env.Command("encode_alltypes.c", "$BUILD/alltypes/encode_alltypes.c", c)
env.Command("decode_alltypes.c", "$BUILD/alltypes/decode_alltypes.c", c)

# Define the compilation options
opts = env.Clone()
opts.Append(CPPDEFINES = {'PB_VALIDATE_UTF8': 1})

# Build new version of core
strict = opts.Clone()
strict.Append(CFLAGS = strict['CORECFLAGS'])
strict.Object("pb_decode_validateutf8.o", "$NANOPB/pb_decode.c")
strict.Object("pb_encode_validateutf8.o", "$NANOPB/pb_encode.c")
strict.Object("pb_common_validateutf8.o", "$NANOPB/pb_common.c")

# Now build and run the test normally.
enc = opts.Program(["encode_alltypes.c", "alltypes.pb.c", "pb_encode_validateutf8.o", "pb_common_validateutf8.o"])
dec = opts.Program(["decode_alltypes.c", "alltypes.pb.c", "pb_decode_validateutf8.o", "pb_common_validateutf8.o"])

env.RunTest(enc)
env.RunTest([dec, "encode_alltypes.output"])
