tp: tidy up amalgamated SQL header generation
This CL changes the SQL amalgamation system to generate a header
directly which can be depended upon instead of requiring manual
rule.
We do this in an almost identical r way to cc_proto_descriptor
generation where we have a Bazel macro which does both the genrule and
defines the cc_library.
Bug: 255535171
Change-Id: I103ce8953a685c20f9b5a1c6d226d8f42f94c425
diff --git a/BUILD b/BUILD
index c835ea7..8b80788 100644
--- a/BUILD
+++ b/BUILD
@@ -18,6 +18,7 @@
load(
"@perfetto//bazel:rules.bzl",
"perfetto_build_config_cc_library",
+ "perfetto_cc_amalgamated_sql",
"perfetto_cc_binary",
"perfetto_filegroup",
"perfetto_genrule",
@@ -1405,9 +1406,9 @@
],
)
-perfetto_genrule(
+perfetto_cc_amalgamated_sql(
name = "src_trace_processor_metrics_sql_gen_amalgamated_sql_metrics",
- srcs = [
+ deps = [
":src_trace_processor_metrics_sql_android_android",
":src_trace_processor_metrics_sql_chrome_chrome",
":src_trace_processor_metrics_sql_common_common",
@@ -1418,10 +1419,8 @@
outs = [
"src/trace_processor/metrics/sql/amalgamated_sql_metrics.h",
],
- cmd = "$(location gen_amalgamated_sql_py) --namespace=sql_metrics --root-dir=src/trace_processor/metrics/sql --cpp-out=$@ $(SRCS)",
- exec_tools = [
- ":gen_amalgamated_sql_py",
- ],
+ root_dir = "src/trace_processor/metrics/sql",
+ namespace = "sql_metrics",
)
# GN target: //src/trace_processor/metrics/sql:misc_sql
@@ -1556,19 +1555,17 @@
],
)
-perfetto_genrule(
+perfetto_cc_amalgamated_sql(
name = "src_trace_processor_stdlib_gen_amalgamated_stdlib",
- srcs = [
+ deps = [
":src_trace_processor_stdlib_android_android",
":src_trace_processor_stdlib_experimental_experimental",
],
outs = [
"src/trace_processor/stdlib/amalgamated_stdlib.h",
],
- cmd = "$(location gen_amalgamated_sql_py) --namespace=stdlib --root-dir=src/trace_processor/stdlib --cpp-out=$@ $(SRCS)",
- exec_tools = [
- ":gen_amalgamated_sql_py",
- ],
+ root_dir = "src/trace_processor/stdlib",
+ namespace = "stdlib",
)
# GN target: //src/trace_processor/stdlib:stdlib
@@ -4424,14 +4421,12 @@
":src_trace_processor_importers_gen_cc_track_event_descriptor",
":src_trace_processor_metrics_gen_cc_all_chrome_metrics_descriptor",
":src_trace_processor_metrics_gen_cc_metrics_descriptor",
+ ":src_trace_processor_metrics_sql_gen_amalgamated_sql_metrics",
+ ":src_trace_processor_stdlib_gen_amalgamated_stdlib",
] + PERFETTO_CONFIG.deps.jsoncpp +
PERFETTO_CONFIG.deps.sqlite +
PERFETTO_CONFIG.deps.sqlite_ext_percentile +
- PERFETTO_CONFIG.deps.zlib + [
- ":cc_amalgamated_sql_metrics",
- ] + [
- ":cc_amalgamated_stdlib",
- ] +
+ PERFETTO_CONFIG.deps.zlib +
PERFETTO_CONFIG.deps.demangle_wrapper,
linkstatic = True,
)
@@ -4547,16 +4542,14 @@
":src_trace_processor_importers_gen_cc_track_event_descriptor",
":src_trace_processor_metrics_gen_cc_all_chrome_metrics_descriptor",
":src_trace_processor_metrics_gen_cc_metrics_descriptor",
+ ":src_trace_processor_metrics_sql_gen_amalgamated_sql_metrics",
+ ":src_trace_processor_stdlib_gen_amalgamated_stdlib",
] + PERFETTO_CONFIG.deps.jsoncpp +
PERFETTO_CONFIG.deps.linenoise +
PERFETTO_CONFIG.deps.protobuf_full +
PERFETTO_CONFIG.deps.sqlite +
PERFETTO_CONFIG.deps.sqlite_ext_percentile +
- PERFETTO_CONFIG.deps.zlib + [
- ":cc_amalgamated_sql_metrics",
- ] + [
- ":cc_amalgamated_stdlib",
- ] +
+ PERFETTO_CONFIG.deps.zlib +
PERFETTO_CONFIG.deps.demangle_wrapper,
)
@@ -4734,15 +4727,13 @@
":src_trace_processor_importers_gen_cc_track_event_descriptor",
":src_trace_processor_metrics_gen_cc_all_chrome_metrics_descriptor",
":src_trace_processor_metrics_gen_cc_metrics_descriptor",
+ ":src_trace_processor_metrics_sql_gen_amalgamated_sql_metrics",
+ ":src_trace_processor_stdlib_gen_amalgamated_stdlib",
":src_traceconv_gen_cc_trace_descriptor",
] + PERFETTO_CONFIG.deps.jsoncpp +
PERFETTO_CONFIG.deps.sqlite +
PERFETTO_CONFIG.deps.sqlite_ext_percentile +
- PERFETTO_CONFIG.deps.zlib + [
- ":cc_amalgamated_sql_metrics",
- ] + [
- ":cc_amalgamated_stdlib",
- ] +
+ PERFETTO_CONFIG.deps.zlib +
PERFETTO_CONFIG.deps.demangle_wrapper,
)
@@ -4788,16 +4779,6 @@
includes = [build_config_dir_],
)
-perfetto_cc_library(
- name = "cc_amalgamated_sql_metrics",
- hdrs = ["src/trace_processor/metrics/sql/amalgamated_sql_metrics.h"],
-)
-
-perfetto_cc_library(
- name = "cc_amalgamated_stdlib",
- hdrs = ["src/trace_processor/stdlib/amalgamated_stdlib.h"],
-)
-
perfetto_py_binary(
name = "gen_amalgamated_sql_py",
srcs = [
diff --git a/BUILD.extras b/BUILD.extras
index 5a11740..251568e 100644
--- a/BUILD.extras
+++ b/BUILD.extras
@@ -8,16 +8,6 @@
includes = [build_config_dir_],
)
-perfetto_cc_library(
- name = "cc_amalgamated_sql_metrics",
- hdrs = ["src/trace_processor/metrics/sql/amalgamated_sql_metrics.h"],
-)
-
-perfetto_cc_library(
- name = "cc_amalgamated_stdlib",
- hdrs = ["src/trace_processor/stdlib/amalgamated_stdlib.h"],
-)
-
perfetto_py_binary(
name = "gen_amalgamated_sql_py",
srcs = [
diff --git a/bazel/rules.bzl b/bazel/rules.bzl
index b699471..85cfed6 100644
--- a/bazel/rules.bzl
+++ b/bazel/rules.bzl
@@ -280,6 +280,34 @@
**kwargs
)
+def perfetto_cc_amalgamated_sql(name, deps, outs, root_dir, namespace,
+ **kwargs):
+ cmd = [
+ "$(location gen_amalgamated_sql_py)",
+ "--namespace",
+ namespace,
+ "--root-dir",
+ root_dir,
+ "--cpp-out=$@",
+ "$(SRCS)",
+ ]
+
+ perfetto_genrule(
+ name = name + "_gen",
+ cmd = " ".join(cmd),
+ exec_tools = [
+ ":gen_amalgamated_sql_py",
+ ],
+ srcs = deps,
+ outs = outs,
+ )
+
+ perfetto_cc_library(
+ name = name,
+ hdrs = [":" + name + "_gen"],
+ **kwargs,
+ )
+
# +----------------------------------------------------------------------------+
# | Misc utility functions |
# +----------------------------------------------------------------------------+
diff --git a/tools/gen_bazel b/tools/gen_bazel
index 719ad07..4f3655b 100755
--- a/tools/gen_bazel
+++ b/tools/gen_bazel
@@ -111,44 +111,26 @@
'//gn:zlib': ['PERFETTO_CONFIG.deps.zlib'],
'//gn:llvm_demangle': ['PERFETTO_CONFIG.deps.llvm_demangle'],
'//src/trace_processor:demangle': ['PERFETTO_CONFIG.deps.demangle_wrapper'],
- '//src/trace_processor/metrics/sql:gen_amalgamated_sql_metrics': [[
- ':cc_amalgamated_sql_metrics'
- ]],
- '//src/trace_processor/stdlib:gen_amalgamated_stdlib': [[
- ':cc_amalgamated_stdlib'
- ]],
gn_utils.GEN_VERSION_TARGET: ['PERFETTO_CONFIG.deps.version_header'],
}
-def gen_amalgamated_sql(target):
- label = BazelLabel(get_bazel_label_name(target.name), 'perfetto_genrule')
+def gen_cc_amalgamated_sql(target):
+ label = BazelLabel(
+ get_bazel_label_name(target.name), 'perfetto_cc_amalgamated_sql')
def find_arg(name):
for i, arg in enumerate(target.args):
if arg.startswith(f'--{name}'):
return target.args[i + 1]
- namespace = find_arg('namespace')
- root_dir = gn_utils.label_to_path(find_arg('root-dir'))
+ label.namespace = find_arg('namespace')
+ label.root_dir = gn_utils.label_to_path(find_arg('root-dir'))
- label.srcs += sorted(
+ label.deps += sorted(
':' + get_bazel_label_name(x) for x in target.source_set_deps)
label.outs += target.outputs
- label.cmd = (r'$(location gen_amalgamated_sql_py) '
- f'--namespace={namespace} --root-dir={root_dir} '
- r'--cpp-out=$@ $(SRCS)')
- label.exec_tools += [':gen_amalgamated_sql_py']
- return [label]
-
-def gen_version_header(target):
- label = BazelLabel(get_bazel_label_name(target.name), 'perfetto_genrule')
- label.srcs += [gn_utils.label_to_path(x) for x in sorted(target.inputs)]
- label.outs += target.outputs
- label.cmd = r'$(location gen_version_header_py)'
- label.cmd += r' --cpp_out=$@ --changelog=$(location CHANGELOG)'
- label.exec_tools += [':gen_version_header_py']
return [label]
@@ -166,6 +148,16 @@
return [label]
+def gen_version_header(target):
+ label = BazelLabel(get_bazel_label_name(target.name), 'perfetto_genrule')
+ label.srcs += [gn_utils.label_to_path(x) for x in sorted(target.inputs)]
+ label.outs += target.outputs
+ label.cmd = r'$(location gen_version_header_py)'
+ label.cmd += r' --cpp_out=$@ --changelog=$(location CHANGELOG)'
+ label.exec_tools += [':gen_version_header_py']
+ return [label]
+
+
custom_actions = {
gn_utils.GEN_VERSION_TARGET: gen_version_header,
}
@@ -412,7 +404,7 @@
if gn_target.name in custom_actions:
return custom_actions[gn_target.name](gn_target)
if gn_target.custom_action_type == 'sql_amalgamation':
- return gen_amalgamated_sql(gn_target)
+ return gen_cc_amalgamated_sql(gn_target)
if gn_target.custom_action_type == 'cc_proto_descriptor':
return gen_cc_metrics_descriptor(gn_target)
return []
@@ -521,6 +513,7 @@
load(
"@perfetto//bazel:rules.bzl",
"perfetto_build_config_cc_library",
+ "perfetto_cc_amalgamated_sql",
"perfetto_cc_binary",
"perfetto_filegroup",
"perfetto_genrule",