trace_processor: add RUN_METRIC to execute dependency files from SQL

This allows for SQL files to rely on other SQL files to be generated
before being executed.

Context: go/perfetto-metrics
Bug: 129747127
Change-Id: I14fe27dcbec1e56e95a8123bd51a539ae428633b
diff --git a/tools/gen_merged_sql_metrics b/tools/gen_merged_sql_metrics
index 6149100..75745f8 100755
--- a/tools/gen_merged_sql_metrics
+++ b/tools/gen_merged_sql_metrics
@@ -57,6 +57,17 @@
 };
 '''
 
+FIND_SQL_FN = '''
+inline const char* GetBundledMetric(const char* filename) {
+  for (const auto& filename_to_sql : sql_metrics::kFileToSql) {
+    if (strcmp(filename_to_sql.filename, filename) == 0) {
+      return filename_to_sql.sql;
+    }
+  }
+  return nullptr;
+}
+'''
+
 NAMESPACE_END = '''
 }  // namespace sql_metrics
 }  // namespace metrics
@@ -70,7 +81,7 @@
 def main():
   parser = argparse.ArgumentParser()
   parser.add_argument('--cpp_out', required=True)
-  parser.add_argument('sql_files', action='append')
+  parser.add_argument('sql_files', nargs='*')
   args = parser.parse_args()
 
   # Extract the SQL output from each file.
@@ -101,6 +112,7 @@
       output.write('\n  {{"{}", {}}},\n'.format(name, variable))
     output.write("};\n")
 
+    output.write(FIND_SQL_FN)
     output.write(NAMESPACE_END)
 
   return 0