xref: /aosp_15_r20/external/nanopb-c/tests/without_64bit/SConscript (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
1*c8d645caSAndroid Build Coastguard Worker# Run the alltypes test case, but compile with PB_WITHOUT_64BIT.
2*c8d645caSAndroid Build Coastguard Worker
3*c8d645caSAndroid Build Coastguard WorkerImport("env")
4*c8d645caSAndroid Build Coastguard Worker
5*c8d645caSAndroid Build Coastguard Workerenv.NanopbProto(["alltypes", "alltypes.options"])
6*c8d645caSAndroid Build Coastguard Worker
7*c8d645caSAndroid Build Coastguard Worker# Define the compilation options
8*c8d645caSAndroid Build Coastguard Workeropts = env.Clone()
9*c8d645caSAndroid Build Coastguard Workeropts.Append(CPPDEFINES = {'PB_WITHOUT_64BIT': 1, 'HAVE_STDINT_H': 0, 'PB_SYSTEM_HEADER': '\\"no_64bit_syshdr.h\\"'})
10*c8d645caSAndroid Build Coastguard Workeropts.Append(CPPPATH = "#without_64bit")
11*c8d645caSAndroid Build Coastguard Worker
12*c8d645caSAndroid Build Coastguard Workerif 'SYSHDR' in opts:
13*c8d645caSAndroid Build Coastguard Worker    opts.Append(CPPDEFINES = {'PB_OLD_SYSHDR': opts['SYSHDR']})
14*c8d645caSAndroid Build Coastguard Worker
15*c8d645caSAndroid Build Coastguard Worker# Build new version of core
16*c8d645caSAndroid Build Coastguard Workerstrict = opts.Clone()
17*c8d645caSAndroid Build Coastguard Workerstrict.Append(CFLAGS = strict['CORECFLAGS'])
18*c8d645caSAndroid Build Coastguard Workerstrict.Object("pb_decode_no64bit.o", "$NANOPB/pb_decode.c")
19*c8d645caSAndroid Build Coastguard Workerstrict.Object("pb_encode_no64bit.o", "$NANOPB/pb_encode.c")
20*c8d645caSAndroid Build Coastguard Workerstrict.Object("pb_common_no64bit.o", "$NANOPB/pb_common.c")
21*c8d645caSAndroid Build Coastguard Worker
22*c8d645caSAndroid Build Coastguard Worker# Now build and run the test normally.
23*c8d645caSAndroid Build Coastguard Workerenc = opts.Program(["encode_alltypes.c", "alltypes.pb.c", "pb_encode_no64bit.o", "pb_common_no64bit.o"])
24*c8d645caSAndroid Build Coastguard Workerdec = opts.Program(["decode_alltypes.c", "alltypes.pb.c", "pb_decode_no64bit.o", "pb_common_no64bit.o"])
25*c8d645caSAndroid Build Coastguard Worker
26*c8d645caSAndroid Build Coastguard Workerenv.RunTest(enc)
27*c8d645caSAndroid Build Coastguard Workerenv.RunTest([dec, "encode_alltypes.output"])
28*c8d645caSAndroid Build Coastguard Worker
29*c8d645caSAndroid Build Coastguard Worker# Re-encode the data using protoc, and check that the results from nanopb
30*c8d645caSAndroid Build Coastguard Worker# match byte-per-byte to the protoc output.
31*c8d645caSAndroid Build Coastguard Workerenv.Decode("encode_alltypes.output.decoded",
32*c8d645caSAndroid Build Coastguard Worker           ["encode_alltypes.output", "alltypes.proto"],
33*c8d645caSAndroid Build Coastguard Worker           MESSAGE='AllTypes')
34*c8d645caSAndroid Build Coastguard Workerenv.Encode("encode_alltypes.output.recoded",
35*c8d645caSAndroid Build Coastguard Worker           ["encode_alltypes.output.decoded", "alltypes.proto"],
36*c8d645caSAndroid Build Coastguard Worker           MESSAGE='AllTypes')
37*c8d645caSAndroid Build Coastguard Workerenv.Compare(["encode_alltypes.output", "encode_alltypes.output.recoded"])
38*c8d645caSAndroid Build Coastguard Worker
39*c8d645caSAndroid Build Coastguard Worker
40*c8d645caSAndroid Build Coastguard Worker# Do the same checks with the optional fields present.
41*c8d645caSAndroid Build Coastguard Workerenv.RunTest("optionals.output", enc, ARGS = ['1'])
42*c8d645caSAndroid Build Coastguard Workerenv.RunTest("optionals.decout", [dec, "optionals.output"], ARGS = ['1'])
43*c8d645caSAndroid Build Coastguard Workerenv.Decode("optionals.output.decoded",
44*c8d645caSAndroid Build Coastguard Worker           ["optionals.output", "alltypes.proto"],
45*c8d645caSAndroid Build Coastguard Worker           MESSAGE='AllTypes')
46*c8d645caSAndroid Build Coastguard Workerenv.Encode("optionals.output.recoded",
47*c8d645caSAndroid Build Coastguard Worker           ["optionals.output.decoded", "alltypes.proto"],
48*c8d645caSAndroid Build Coastguard Worker           MESSAGE='AllTypes')
49*c8d645caSAndroid Build Coastguard Workerenv.Compare(["optionals.output", "optionals.output.recoded"])
50