Generate proto descriptor for trace protos.

This will be used to parse existing protos for field numbers when
generating protos from ftrace format files.

Bug: 77844626
Change-Id: Idb182753e0a53b6d3a63f7dd855842735663c8aa
diff --git a/gn/standalone/proto_library.gni b/gn/standalone/proto_library.gni
index 1401cc9..3005f78 100644
--- a/gn/standalone/proto_library.gni
+++ b/gn/standalone/proto_library.gni
@@ -38,6 +38,11 @@
     generate_cc = invoker.generate_cc
   }
 
+  generate_descriptor = ""
+  if (defined(invoker.generate_descriptor)) {
+    generate_descriptor = invoker.generate_descriptor
+  }
+
   if (defined(invoker.generator_plugin_label)) {
     plugin_host_label = invoker.generator_plugin_label + "($host_toolchain)"
     plugin_path = get_label_info(plugin_host_label, "root_out_dir") + "/" +
@@ -67,6 +72,10 @@
   protos = rebase_path(proto_sources, proto_in_dir)
   protogens = []
 
+  if (generate_descriptor != "") {
+    protogens += [ "$root_gen_dir/" + generate_descriptor ]
+  }
+
   foreach(proto, protos) {
     proto_dir = get_path_info(proto, "dir")
     proto_name = get_path_info(proto, "name")
@@ -115,6 +124,12 @@
         rel_cc_out_dir,
       ]
     }
+    if (generate_descriptor != "") {
+      args += [
+        "--descriptor_set_out",
+        rebase_path("$root_gen_dir/" + generate_descriptor, root_build_dir),
+      ]
+    }
 
     if (generate_with_plugin) {
       plugin_path_rebased = rebase_path(plugin_path, root_build_dir)