processor: Make sql/sqlite layer optional at compile time

Makes it possible to disable TraceProcessor's SQL support at compile
time, to reduce the binary size for proto2json use in chromium.

We do this by splitting off a TraceProcessorStorage interface and
TraceProcessorStorageImpl base class from TraceProcessor/Impl, which
provides trace parsing and storage.

Similarly, this patch adds a separate the trace_processor:storage
target, on top of which the :lib target adds SQL support and its
dependencies.

Bug: 141459049
Change-Id: Ic651c8b1106402425a707dae850afbd962d2f9ee
diff --git a/BUILD.gn b/BUILD.gn
index 7557952..965d68e 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -225,16 +225,30 @@
       "protos/perfetto/trace/track_event:zero",
     ]
   }
-  component("libtrace_processor") {
+  if (enable_perfetto_trace_processor_sqlite) {
+    component("libtrace_processor") {
+      public_configs = [ "gn:public_config" ]
+      deps = [
+        "src/trace_processor:lib",
+      ]
+      configs -= [ "//build/config/compiler:chromium_code" ]
+      configs += [ "//build/config/compiler:no_chromium_code" ]
+      public_deps = [
+        "include/perfetto/trace_processor",
+      ]
+    }
+  }
+  component("libproto_to_json") {
     public_configs = [ "gn:public_config" ]
     deps = [
-      "src/trace_processor:lib",
+      "src/trace_processor:export_json",
+      "src/trace_processor:storage",
     ]
     configs -= [ "//build/config/compiler:chromium_code" ]
     configs += [ "//build/config/compiler:no_chromium_code" ]
     public_deps = [
       "include/perfetto/ext/trace_processor:export_json",
-      "include/perfetto/trace_processor",
+      "include/perfetto/trace_processor:storage",
     ]
   }
 }