Use protozero in .gen.cc proto->C++ classes
This CL is the major step towards geting rid of the
libprotobuf runtime dep (see go/perfetto-libprotobuf).
It switches the .gen.cc files to uses protozero for the
proto<>c++ conversions.
As-is it still support the legacy conversion from
libprotobuf-lite classes, but that is done going via
raw binary. So FromProto() now goes
pblite -> raw bytes -> pbzero decoder and ToProto() goes
pbzero -> raw_bytes -> pblite.
Effectively this doubles the round-trip for these two methods.
The next CLs will get rid of the FromProto/ToProto methods
and will switch the IPC layer to just use the .gen.cc classes
instead of the pblite ones.
Bug: 132880619
Change-Id: I721876c95dfa987b9aaa5a1009eeb64baa7e37dc
diff --git a/Android.bp b/Android.bp
index 44db57c..0ac9f19 100644
--- a/Android.bp
+++ b/Android.bp
@@ -4398,6 +4398,7 @@
filegroup {
name: "perfetto_src_protozero_protozero",
srcs: [
+ "src/protozero/field.cc",
"src/protozero/message.cc",
"src/protozero/message_handle.cc",
"src/protozero/packed_repeated_fields.cc",
@@ -4408,6 +4409,54 @@
],
}
+// GN: //src/protozero:testing_messages_cpp
+genrule {
+ name: "perfetto_src_protozero_testing_messages_cpp_gen",
+ srcs: [
+ "src/protozero/test/example_proto/library.proto",
+ "src/protozero/test/example_proto/library_internals/galaxies.proto",
+ "src/protozero/test/example_proto/test_messages.proto",
+ "src/protozero/test/example_proto/upper_import.proto",
+ ],
+ tools: [
+ "aprotoc",
+ "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
+ ],
+ cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/ --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=:$(genDir)/external/perfetto/ $(in)",
+ out: [
+ "external/perfetto/src/protozero/test/example_proto/library.gen.cc",
+ "external/perfetto/src/protozero/test/example_proto/library_internals/galaxies.gen.cc",
+ "external/perfetto/src/protozero/test/example_proto/test_messages.gen.cc",
+ "external/perfetto/src/protozero/test/example_proto/upper_import.gen.cc",
+ ],
+}
+
+// GN: //src/protozero:testing_messages_cpp
+genrule {
+ name: "perfetto_src_protozero_testing_messages_cpp_gen_headers",
+ srcs: [
+ "src/protozero/test/example_proto/library.proto",
+ "src/protozero/test/example_proto/library_internals/galaxies.proto",
+ "src/protozero/test/example_proto/test_messages.proto",
+ "src/protozero/test/example_proto/upper_import.proto",
+ ],
+ tools: [
+ "aprotoc",
+ "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
+ ],
+ cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/ --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=:$(genDir)/external/perfetto/ $(in)",
+ out: [
+ "external/perfetto/src/protozero/test/example_proto/library.gen.h",
+ "external/perfetto/src/protozero/test/example_proto/library_internals/galaxies.gen.h",
+ "external/perfetto/src/protozero/test/example_proto/test_messages.gen.h",
+ "external/perfetto/src/protozero/test/example_proto/upper_import.gen.h",
+ ],
+ export_include_dirs: [
+ ".",
+ "protos",
+ ],
+}
+
// GN: //src/protozero:testing_messages_lite
genrule {
name: "perfetto_src_protozero_testing_messages_lite_gen",
@@ -4512,6 +4561,7 @@
"src/protozero/proto_decoder_unittest.cc",
"src/protozero/proto_utils_unittest.cc",
"src/protozero/scattered_stream_writer_unittest.cc",
+ "src/protozero/test/cppgen_conformance_unittest.cc",
"src/protozero/test/fake_scattered_buffer.cc",
"src/protozero/test/protozero_conformance_unittest.cc",
],
@@ -5422,6 +5472,7 @@
":perfetto_src_profiling_memory_unittests",
":perfetto_src_profiling_memory_wire_protocol",
":perfetto_src_protozero_protozero",
+ ":perfetto_src_protozero_testing_messages_cpp_gen",
":perfetto_src_protozero_testing_messages_lite_gen",
":perfetto_src_protozero_testing_messages_zero_gen",
":perfetto_src_protozero_unittests",
@@ -5547,6 +5598,7 @@
"perfetto_protos_perfetto_trace_trusted_lite_gen_headers",
"perfetto_src_ipc_test_messages_gen_headers",
"perfetto_src_perfetto_cmd_protos_gen_headers",
+ "perfetto_src_protozero_testing_messages_cpp_gen_headers",
"perfetto_src_protozero_testing_messages_lite_gen_headers",
"perfetto_src_protozero_testing_messages_zero_gen_headers",
"perfetto_src_traced_probes_ftrace_test_messages_lite_gen_headers",