Reshuffle .proto files under /proto

This CL does the following:
1) Separates the proto files under three folders (config, trace, ipc).
   This allow to have distinct targets that the various clients can
   link in, without pulling in the rest.

2) Moves all the protos under a "perfetto" subdirectory. This is to
   reduce the ambiguity of the import statements within the .proto
   files themselves. Now all imports look like:
   import "perfetto/trace/trace.proto";

As a side effect this also means that both the perfetto public
headers (i.e. the code under include/) and the generated protobufs
are accessible as #include "perfetto/XXX".

Change-Id: I05d13a7b720fe50edb078fc99758b0f58b8feabc
diff --git a/Android.bp b/Android.bp
index 6bf44b0..e4aa102 100644
--- a/Android.bp
+++ b/Android.bp
@@ -18,12 +18,12 @@
 cc_library_shared {
   name: "libtraced_shared",
   srcs: [
-    ":perfetto_protos_ftrace_lite_gen",
-    ":perfetto_protos_ftrace_zero_gen",
-    ":perfetto_protos_lite_gen",
-    ":perfetto_protos_tracing_service_lite_gen",
-    ":perfetto_protos_tracing_service_tracing_service_gen",
-    ":perfetto_protos_zero_gen",
+    ":perfetto_protos_perfetto_config_config_gen",
+    ":perfetto_protos_perfetto_ipc_ipc_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_lite_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_zero_gen",
+    ":perfetto_protos_perfetto_trace_lite_gen",
+    ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ipc_wire_protocol_gen",
     "src/base/page_allocator.cc",
     "src/base/thread_checker.cc",
@@ -67,12 +67,12 @@
     "perfetto_src_tracing_ipc",
   ],
   generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_ftrace_zero_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-    "perfetto_protos_tracing_service_tracing_service_gen_headers",
-    "perfetto_protos_zero_gen_headers",
+    "perfetto_protos_perfetto_config_config_gen_headers",
+    "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+    "perfetto_protos_perfetto_trace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_zero_gen_headers",
     "perfetto_src_ipc_wire_protocol_gen_headers",
   ],
   defaults: [
@@ -84,12 +84,12 @@
 cc_binary {
   name: "perfetto",
   srcs: [
-    ":perfetto_protos_ftrace_lite_gen",
-    ":perfetto_protos_ftrace_zero_gen",
-    ":perfetto_protos_lite_gen",
-    ":perfetto_protos_tracing_service_lite_gen",
-    ":perfetto_protos_tracing_service_tracing_service_gen",
-    ":perfetto_protos_zero_gen",
+    ":perfetto_protos_perfetto_config_config_gen",
+    ":perfetto_protos_perfetto_ipc_ipc_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_lite_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_zero_gen",
+    ":perfetto_protos_perfetto_trace_lite_gen",
+    ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ipc_wire_protocol_gen",
     "src/base/android_task_runner.cc",
     "src/base/page_allocator.cc",
@@ -131,12 +131,12 @@
     "perfetto_src_tracing_ipc",
   ],
   generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_ftrace_zero_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-    "perfetto_protos_tracing_service_tracing_service_gen_headers",
-    "perfetto_protos_zero_gen_headers",
+    "perfetto_protos_perfetto_config_config_gen_headers",
+    "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+    "perfetto_protos_perfetto_trace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_zero_gen_headers",
     "perfetto_src_ipc_wire_protocol_gen_headers",
   ],
   defaults: [
@@ -162,301 +162,271 @@
   ],
 }
 
-// GN target: //protos/ftrace:lite_gen
+// GN target: //protos/perfetto/config:config_gen
 genrule {
-  name: "perfetto_protos_ftrace_lite_gen",
+  name: "perfetto_protos_perfetto_config_config_gen",
   srcs: [
-    "protos/ftrace/ftrace_event.proto",
-    "protos/ftrace/ftrace_event_bundle.proto",
-    "protos/ftrace/print.proto",
-    "protos/ftrace/sched_switch.proto",
-    "protos/ftrace/test_bundle_wrapper.proto",
+    "protos/perfetto/config/data_source_config.proto",
+    "protos/perfetto/config/data_source_descriptor.proto",
+    "protos/perfetto/config/trace_config.proto",
   ],
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
   out: [
-    "external/perfetto/protos/ftrace/ftrace_event.pb.cc",
-    "external/perfetto/protos/ftrace/ftrace_event_bundle.pb.cc",
-    "external/perfetto/protos/ftrace/print.pb.cc",
-    "external/perfetto/protos/ftrace/sched_switch.pb.cc",
-    "external/perfetto/protos/ftrace/test_bundle_wrapper.pb.cc",
+    "external/perfetto/protos/perfetto/config/data_source_config.pb.cc",
+    "external/perfetto/protos/perfetto/config/data_source_descriptor.pb.cc",
+    "external/perfetto/protos/perfetto/config/trace_config.pb.cc",
   ],
 }
 
-// GN target: //protos/ftrace:lite_gen
+// GN target: //protos/perfetto/config:config_gen
 genrule {
-  name: "perfetto_protos_ftrace_lite_gen_headers",
+  name: "perfetto_protos_perfetto_config_config_gen_headers",
   srcs: [
-    "protos/ftrace/ftrace_event.proto",
-    "protos/ftrace/ftrace_event_bundle.proto",
-    "protos/ftrace/print.proto",
-    "protos/ftrace/sched_switch.proto",
-    "protos/ftrace/test_bundle_wrapper.proto",
+    "protos/perfetto/config/data_source_config.proto",
+    "protos/perfetto/config/data_source_descriptor.proto",
+    "protos/perfetto/config/trace_config.proto",
   ],
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
   out: [
-    "external/perfetto/protos/ftrace/ftrace_event.pb.h",
-    "external/perfetto/protos/ftrace/ftrace_event_bundle.pb.h",
-    "external/perfetto/protos/ftrace/print.pb.h",
-    "external/perfetto/protos/ftrace/sched_switch.pb.h",
-    "external/perfetto/protos/ftrace/test_bundle_wrapper.pb.h",
+    "external/perfetto/protos/perfetto/config/data_source_config.pb.h",
+    "external/perfetto/protos/perfetto/config/data_source_descriptor.pb.h",
+    "external/perfetto/protos/perfetto/config/trace_config.pb.h",
   ],
   export_include_dirs: [
-    ".",
+    "protos",
   ],
 }
 
-// GN target: //protos/ftrace:zero_gen
+// GN target: //protos/perfetto/ipc:ipc_gen
 genrule {
-  name: "perfetto_protos_ftrace_zero_gen",
+  name: "perfetto_protos_perfetto_ipc_ipc_gen",
   srcs: [
-    "protos/ftrace/ftrace_event.proto",
-    "protos/ftrace/ftrace_event_bundle.proto",
-    "protos/ftrace/print.proto",
-    "protos/ftrace/sched_switch.proto",
-    "protos/ftrace/test_bundle_wrapper.proto",
-  ],
-  tools: [
-    "aprotoc",
-    "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
-  ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
-  out: [
-    "external/perfetto/protos/ftrace/ftrace_event.pbzero.cc",
-    "external/perfetto/protos/ftrace/ftrace_event_bundle.pbzero.cc",
-    "external/perfetto/protos/ftrace/print.pbzero.cc",
-    "external/perfetto/protos/ftrace/sched_switch.pbzero.cc",
-    "external/perfetto/protos/ftrace/test_bundle_wrapper.pbzero.cc",
-  ],
-}
-
-// GN target: //protos/ftrace:zero_gen
-genrule {
-  name: "perfetto_protos_ftrace_zero_gen_headers",
-  srcs: [
-    "protos/ftrace/ftrace_event.proto",
-    "protos/ftrace/ftrace_event_bundle.proto",
-    "protos/ftrace/print.proto",
-    "protos/ftrace/sched_switch.proto",
-    "protos/ftrace/test_bundle_wrapper.proto",
-  ],
-  tools: [
-    "aprotoc",
-    "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
-  ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
-  out: [
-    "external/perfetto/protos/ftrace/ftrace_event.pbzero.h",
-    "external/perfetto/protos/ftrace/ftrace_event_bundle.pbzero.h",
-    "external/perfetto/protos/ftrace/print.pbzero.h",
-    "external/perfetto/protos/ftrace/sched_switch.pbzero.h",
-    "external/perfetto/protos/ftrace/test_bundle_wrapper.pbzero.h",
-  ],
-  export_include_dirs: [
-    ".",
-  ],
-}
-
-// GN target: //:perfetto_protos_lite
-cc_library_static {
-  name: "perfetto_protos_lite",
-  srcs: [
-    ":perfetto_protos_ftrace_lite_gen",
-    ":perfetto_protos_lite_gen",
-    ":perfetto_protos_tracing_service_lite_gen",
-  ],
-  shared_libs: [
-    "liblog",
-    "libprotobuf-cpp-lite",
-  ],
-  export_include_dirs: [
-    "include",
-  ],
-  generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-  ],
-  export_generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-  ],
-  defaults: [
-    "perfetto_defaults",
-  ],
-}
-
-// GN target: //protos:lite_gen
-genrule {
-  name: "perfetto_protos_lite_gen",
-  srcs: [
-    "protos/test_event.proto",
-    "protos/trace.proto",
-    "protos/trace_packet.proto",
-  ],
-  tools: [
-    "aprotoc",
-  ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
-  out: [
-    "external/perfetto/protos/test_event.pb.cc",
-    "external/perfetto/protos/trace.pb.cc",
-    "external/perfetto/protos/trace_packet.pb.cc",
-  ],
-}
-
-// GN target: //protos:lite_gen
-genrule {
-  name: "perfetto_protos_lite_gen_headers",
-  srcs: [
-    "protos/test_event.proto",
-    "protos/trace.proto",
-    "protos/trace_packet.proto",
-  ],
-  tools: [
-    "aprotoc",
-  ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
-  out: [
-    "external/perfetto/protos/test_event.pb.h",
-    "external/perfetto/protos/trace.pb.h",
-    "external/perfetto/protos/trace_packet.pb.h",
-  ],
-  export_include_dirs: [
-    ".",
-  ],
-}
-
-// GN target: //protos/tracing_service:lite_gen
-genrule {
-  name: "perfetto_protos_tracing_service_lite_gen",
-  srcs: [
-    "protos/tracing_service/data_source_config.proto",
-    "protos/tracing_service/data_source_descriptor.proto",
-    "protos/tracing_service/trace_config.proto",
-  ],
-  tools: [
-    "aprotoc",
-  ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
-  out: [
-    "external/perfetto/protos/tracing_service/data_source_config.pb.cc",
-    "external/perfetto/protos/tracing_service/data_source_descriptor.pb.cc",
-    "external/perfetto/protos/tracing_service/trace_config.pb.cc",
-  ],
-}
-
-// GN target: //protos/tracing_service:lite_gen
-genrule {
-  name: "perfetto_protos_tracing_service_lite_gen_headers",
-  srcs: [
-    "protos/tracing_service/data_source_config.proto",
-    "protos/tracing_service/data_source_descriptor.proto",
-    "protos/tracing_service/trace_config.proto",
-  ],
-  tools: [
-    "aprotoc",
-  ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
-  out: [
-    "external/perfetto/protos/tracing_service/data_source_config.pb.h",
-    "external/perfetto/protos/tracing_service/data_source_descriptor.pb.h",
-    "external/perfetto/protos/tracing_service/trace_config.pb.h",
-  ],
-  export_include_dirs: [
-    ".",
-  ],
-}
-
-// GN target: //protos/tracing_service:tracing_service_gen
-genrule {
-  name: "perfetto_protos_tracing_service_tracing_service_gen",
-  srcs: [
-    "protos/tracing_service/consumer_port.proto",
-    "protos/tracing_service/producer_port.proto",
+    "protos/perfetto/ipc/consumer_port.proto",
+    "protos/perfetto/ipc/producer_port.proto",
   ],
   tools: [
     "aprotoc",
     "perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto/protos $(in)",
   out: [
-    "external/perfetto/protos/tracing_service/consumer_port.ipc.cc",
-    "external/perfetto/protos/tracing_service/consumer_port.pb.cc",
-    "external/perfetto/protos/tracing_service/producer_port.ipc.cc",
-    "external/perfetto/protos/tracing_service/producer_port.pb.cc",
+    "external/perfetto/protos/perfetto/ipc/consumer_port.ipc.cc",
+    "external/perfetto/protos/perfetto/ipc/consumer_port.pb.cc",
+    "external/perfetto/protos/perfetto/ipc/producer_port.ipc.cc",
+    "external/perfetto/protos/perfetto/ipc/producer_port.pb.cc",
   ],
 }
 
-// GN target: //protos/tracing_service:tracing_service_gen
+// GN target: //protos/perfetto/ipc:ipc_gen
 genrule {
-  name: "perfetto_protos_tracing_service_tracing_service_gen_headers",
+  name: "perfetto_protos_perfetto_ipc_ipc_gen_headers",
   srcs: [
-    "protos/tracing_service/consumer_port.proto",
-    "protos/tracing_service/producer_port.proto",
+    "protos/perfetto/ipc/consumer_port.proto",
+    "protos/perfetto/ipc/producer_port.proto",
   ],
   tools: [
     "aprotoc",
     "perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto/protos $(in)",
   out: [
-    "external/perfetto/protos/tracing_service/consumer_port.ipc.h",
-    "external/perfetto/protos/tracing_service/consumer_port.pb.h",
-    "external/perfetto/protos/tracing_service/producer_port.ipc.h",
-    "external/perfetto/protos/tracing_service/producer_port.pb.h",
+    "external/perfetto/protos/perfetto/ipc/consumer_port.ipc.h",
+    "external/perfetto/protos/perfetto/ipc/consumer_port.pb.h",
+    "external/perfetto/protos/perfetto/ipc/producer_port.ipc.h",
+    "external/perfetto/protos/perfetto/ipc/producer_port.pb.h",
   ],
   export_include_dirs: [
-    ".",
+    "protos",
   ],
 }
 
-// GN target: //protos:zero_gen
+// GN target: //protos/perfetto/trace/ftrace:lite_gen
 genrule {
-  name: "perfetto_protos_zero_gen",
+  name: "perfetto_protos_perfetto_trace_ftrace_lite_gen",
   srcs: [
-    "protos/test_event.proto",
-    "protos/trace.proto",
-    "protos/trace_packet.proto",
+    "protos/perfetto/trace/ftrace/ftrace_event.proto",
+    "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
+    "protos/perfetto/trace/ftrace/print.proto",
+    "protos/perfetto/trace/ftrace/sched_switch.proto",
+    "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
+  ],
+  tools: [
+    "aprotoc",
+  ],
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
+  out: [
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event_bundle.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/print.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pb.cc",
+  ],
+}
+
+// GN target: //protos/perfetto/trace/ftrace:lite_gen
+genrule {
+  name: "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
+  srcs: [
+    "protos/perfetto/trace/ftrace/ftrace_event.proto",
+    "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
+    "protos/perfetto/trace/ftrace/print.proto",
+    "protos/perfetto/trace/ftrace/sched_switch.proto",
+    "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
+  ],
+  tools: [
+    "aprotoc",
+  ],
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
+  out: [
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event_bundle.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/print.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pb.h",
+  ],
+  export_include_dirs: [
+    "protos",
+  ],
+}
+
+// GN target: //protos/perfetto/trace/ftrace:zero_gen
+genrule {
+  name: "perfetto_protos_perfetto_trace_ftrace_zero_gen",
+  srcs: [
+    "protos/perfetto/trace/ftrace/ftrace_event.proto",
+    "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
+    "protos/perfetto/trace/ftrace/print.proto",
+    "protos/perfetto/trace/ftrace/sched_switch.proto",
+    "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
   ],
   tools: [
     "aprotoc",
     "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/protos $(in)",
   out: [
-    "external/perfetto/protos/test_event.pbzero.cc",
-    "external/perfetto/protos/trace.pbzero.cc",
-    "external/perfetto/protos/trace_packet.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event_bundle.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/print.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pbzero.cc",
   ],
 }
 
-// GN target: //protos:zero_gen
+// GN target: //protos/perfetto/trace/ftrace:zero_gen
 genrule {
-  name: "perfetto_protos_zero_gen_headers",
+  name: "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
   srcs: [
-    "protos/test_event.proto",
-    "protos/trace.proto",
-    "protos/trace_packet.proto",
+    "protos/perfetto/trace/ftrace/ftrace_event.proto",
+    "protos/perfetto/trace/ftrace/ftrace_event_bundle.proto",
+    "protos/perfetto/trace/ftrace/print.proto",
+    "protos/perfetto/trace/ftrace/sched_switch.proto",
+    "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
   ],
   tools: [
     "aprotoc",
     "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/protos $(in)",
   out: [
-    "external/perfetto/protos/test_event.pbzero.h",
-    "external/perfetto/protos/trace.pbzero.h",
-    "external/perfetto/protos/trace_packet.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ftrace_event_bundle.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/print.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pbzero.h",
   ],
   export_include_dirs: [
-    ".",
+    "protos",
+  ],
+}
+
+// GN target: //protos/perfetto/trace:lite_gen
+genrule {
+  name: "perfetto_protos_perfetto_trace_lite_gen",
+  srcs: [
+    "protos/perfetto/trace/test_event.proto",
+    "protos/perfetto/trace/trace.proto",
+    "protos/perfetto/trace/trace_packet.proto",
+  ],
+  tools: [
+    "aprotoc",
+  ],
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
+  out: [
+    "external/perfetto/protos/perfetto/trace/test_event.pb.cc",
+    "external/perfetto/protos/perfetto/trace/trace.pb.cc",
+    "external/perfetto/protos/perfetto/trace/trace_packet.pb.cc",
+  ],
+}
+
+// GN target: //protos/perfetto/trace:lite_gen
+genrule {
+  name: "perfetto_protos_perfetto_trace_lite_gen_headers",
+  srcs: [
+    "protos/perfetto/trace/test_event.proto",
+    "protos/perfetto/trace/trace.proto",
+    "protos/perfetto/trace/trace_packet.proto",
+  ],
+  tools: [
+    "aprotoc",
+  ],
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
+  out: [
+    "external/perfetto/protos/perfetto/trace/test_event.pb.h",
+    "external/perfetto/protos/perfetto/trace/trace.pb.h",
+    "external/perfetto/protos/perfetto/trace/trace_packet.pb.h",
+  ],
+  export_include_dirs: [
+    "protos",
+  ],
+}
+
+// GN target: //protos/perfetto/trace:zero_gen
+genrule {
+  name: "perfetto_protos_perfetto_trace_zero_gen",
+  srcs: [
+    "protos/perfetto/trace/test_event.proto",
+    "protos/perfetto/trace/trace.proto",
+    "protos/perfetto/trace/trace_packet.proto",
+  ],
+  tools: [
+    "aprotoc",
+    "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
+  ],
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/protos $(in)",
+  out: [
+    "external/perfetto/protos/perfetto/trace/test_event.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/trace.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/trace_packet.pbzero.cc",
+  ],
+}
+
+// GN target: //protos/perfetto/trace:zero_gen
+genrule {
+  name: "perfetto_protos_perfetto_trace_zero_gen_headers",
+  srcs: [
+    "protos/perfetto/trace/test_event.proto",
+    "protos/perfetto/trace/trace.proto",
+    "protos/perfetto/trace/trace_packet.proto",
+  ],
+  tools: [
+    "aprotoc",
+    "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
+  ],
+  cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/protos $(in)",
+  out: [
+    "external/perfetto/protos/perfetto/trace/test_event.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/trace.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/trace_packet.pbzero.h",
+  ],
+  export_include_dirs: [
+    "protos",
   ],
 }
 
@@ -469,7 +439,7 @@
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ $(in)",
   out: [
     "external/perfetto/src/ftrace_reader/test/test_messages.pb.cc",
   ],
@@ -484,7 +454,7 @@
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ $(in)",
   out: [
     "external/perfetto/src/ftrace_reader/test/test_messages.pb.h",
   ],
@@ -503,7 +473,7 @@
     "aprotoc",
     "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
+  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
   out: [
     "external/perfetto/src/ftrace_reader/test/test_messages.pbzero.cc",
   ],
@@ -519,7 +489,7 @@
     "aprotoc",
     "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
+  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
   out: [
     "external/perfetto/src/ftrace_reader/test/test_messages.pbzero.h",
   ],
@@ -555,7 +525,7 @@
     "aprotoc",
     "perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto $(in)",
   out: [
     "external/perfetto/src/ipc/test/client_unittest_messages.ipc.cc",
     "external/perfetto/src/ipc/test/client_unittest_messages.pb.cc",
@@ -578,7 +548,7 @@
     "aprotoc",
     "perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ --plugin=protoc-gen-plugin=$(location perfetto_src_ipc_protoc_plugin_ipc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=:$(genDir)/external/perfetto $(in)",
   out: [
     "external/perfetto/src/ipc/test/client_unittest_messages.ipc.h",
     "external/perfetto/src/ipc/test/client_unittest_messages.pb.h",
@@ -601,7 +571,7 @@
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ $(in)",
   out: [
     "external/perfetto/src/ipc/wire_protocol.pb.cc",
   ],
@@ -616,7 +586,7 @@
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ $(in)",
   out: [
     "external/perfetto/src/ipc/wire_protocol.pb.h",
   ],
@@ -652,7 +622,7 @@
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ $(in)",
   out: [
     "external/perfetto/src/protozero/test/example_proto/library.pb.cc",
     "external/perfetto/src/protozero/test/example_proto/library_internals/galaxies.pb.cc",
@@ -673,7 +643,7 @@
   tools: [
     "aprotoc",
   ],
-  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto $(in)",
+  cmd: "mkdir -p $(genDir)/external/perfetto && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto --proto_path=external/perfetto/ $(in)",
   out: [
     "external/perfetto/src/protozero/test/example_proto/library.pb.h",
     "external/perfetto/src/protozero/test/example_proto/library_internals/galaxies.pb.h",
@@ -698,7 +668,7 @@
     "aprotoc",
     "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
+  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
   out: [
     "external/perfetto/src/protozero/test/example_proto/library.pbzero.cc",
     "external/perfetto/src/protozero/test/example_proto/library_internals/galaxies.pbzero.cc",
@@ -720,7 +690,7 @@
     "aprotoc",
     "perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_",
   ],
-  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
+  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_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto $(in)",
   out: [
     "external/perfetto/src/protozero/test/example_proto/library.pbzero.h",
     "external/perfetto/src/protozero/test/example_proto/library_internals/galaxies.pbzero.h",
@@ -736,12 +706,12 @@
 cc_library_static {
   name: "perfetto_src_tracing_ipc",
   srcs: [
-    ":perfetto_protos_ftrace_lite_gen",
-    ":perfetto_protos_ftrace_zero_gen",
-    ":perfetto_protos_lite_gen",
-    ":perfetto_protos_tracing_service_lite_gen",
-    ":perfetto_protos_tracing_service_tracing_service_gen",
-    ":perfetto_protos_zero_gen",
+    ":perfetto_protos_perfetto_config_config_gen",
+    ":perfetto_protos_perfetto_ipc_ipc_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_lite_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_zero_gen",
+    ":perfetto_protos_perfetto_trace_lite_gen",
+    ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ipc_wire_protocol_gen",
     "src/base/page_allocator.cc",
     "src/base/thread_checker.cc",
@@ -784,21 +754,21 @@
     "include",
   ],
   generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_ftrace_zero_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-    "perfetto_protos_tracing_service_tracing_service_gen_headers",
-    "perfetto_protos_zero_gen_headers",
+    "perfetto_protos_perfetto_config_config_gen_headers",
+    "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+    "perfetto_protos_perfetto_trace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_zero_gen_headers",
     "perfetto_src_ipc_wire_protocol_gen_headers",
   ],
   export_generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_ftrace_zero_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-    "perfetto_protos_tracing_service_tracing_service_gen_headers",
-    "perfetto_protos_zero_gen_headers",
+    "perfetto_protos_perfetto_config_config_gen_headers",
+    "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+    "perfetto_protos_perfetto_trace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_zero_gen_headers",
     "perfetto_src_ipc_wire_protocol_gen_headers",
   ],
   defaults: [
@@ -810,12 +780,12 @@
 cc_test {
   name: "perfetto_tests",
   srcs: [
-    ":perfetto_protos_ftrace_lite_gen",
-    ":perfetto_protos_ftrace_zero_gen",
-    ":perfetto_protos_lite_gen",
-    ":perfetto_protos_tracing_service_lite_gen",
-    ":perfetto_protos_tracing_service_tracing_service_gen",
-    ":perfetto_protos_zero_gen",
+    ":perfetto_protos_perfetto_config_config_gen",
+    ":perfetto_protos_perfetto_ipc_ipc_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_lite_gen",
+    ":perfetto_protos_perfetto_trace_ftrace_zero_gen",
+    ":perfetto_protos_perfetto_trace_lite_gen",
+    ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ftrace_reader_ftrace_reader_test_messages_lite_gen",
     ":perfetto_src_ftrace_reader_ftrace_reader_test_messages_zero_gen",
     ":perfetto_src_ipc_test_messages_gen",
@@ -904,12 +874,12 @@
     "perfetto_src_tracing_ipc",
   ],
   generated_headers: [
-    "perfetto_protos_ftrace_lite_gen_headers",
-    "perfetto_protos_ftrace_zero_gen_headers",
-    "perfetto_protos_lite_gen_headers",
-    "perfetto_protos_tracing_service_lite_gen_headers",
-    "perfetto_protos_tracing_service_tracing_service_gen_headers",
-    "perfetto_protos_zero_gen_headers",
+    "perfetto_protos_perfetto_config_config_gen_headers",
+    "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+    "perfetto_protos_perfetto_trace_lite_gen_headers",
+    "perfetto_protos_perfetto_trace_zero_gen_headers",
     "perfetto_src_ftrace_reader_ftrace_reader_test_messages_lite_gen_headers",
     "perfetto_src_ftrace_reader_ftrace_reader_test_messages_zero_gen_headers",
     "perfetto_src_ipc_test_messages_gen_headers",