xref: /aosp_15_r20/external/executorch/devtools/etdump/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2
3SCALAR_TYPE_STEM = "scalar_type"
4SCALAR_TYPE = SCALAR_TYPE_STEM + ".fbs"
5
6# flatcc
7ETDUMP_STEM_FLATCC = "etdump_schema_flatcc"
8ETDUMP_SCHEMA_FLATCC = ETDUMP_STEM_FLATCC + ".fbs"
9ETDUMP_GEN_RULE_NAME_FLATCC = "generate_etdump" + "_flatcc"
10
11ETDUMP_SCHEMA_FLATCC_BUILDER = ETDUMP_STEM_FLATCC + "_builder.h"
12ETDUMP_SCHEMA_FLATCC_READER = ETDUMP_STEM_FLATCC + "_reader.h"
13ETDUMP_SCHEMA_FLATCC_VERIFIER = ETDUMP_STEM_FLATCC + "_verifier.h"
14
15SCALAR_TYPE_BUILDER = SCALAR_TYPE_STEM + "_builder.h"
16SCALAR_TYPE_READER = SCALAR_TYPE_STEM + "_reader.h"
17SCALAR_TYPE_VERIFIER = SCALAR_TYPE_STEM + "_verifier.h"
18
19FLATBUFFERS_COMMON_STEM = "flatbuffers_common"
20FLATBUFFERS_COMMON_BUILDER = FLATBUFFERS_COMMON_STEM + "_builder.h"
21FLATBUFFERS_COMMON_READER = FLATBUFFERS_COMMON_STEM + "_reader.h"
22
23def generate_schema_header_flatcc(rule_name, srcs, headers, default_headers):
24    """
25    Generate header files for ETDump schema
26    """
27    runtime.genrule(
28        name = rule_name,
29        srcs = srcs,
30        outs = {header: [header] for header in headers},
31        default_outs = default_headers,
32        cmd = " ".join([
33            "$(exe {})".format(runtime.external_dep_location("flatcc-cli")),
34            "-cwr",
35            "-o ${OUT}",
36            "${SRCS}",
37            # Let our infra know that the file was generated.
38            " ".join(["&& echo // @" + "generated >> ${OUT}/" + header for header in headers]),
39        ]),
40    )
41
42def define_common_targets():
43    """Defines targets that should be shared between fbcode and xplat.
44
45    The directory containing this targets.bzl file should also contain both
46    TARGETS and BUCK files that call this function.
47    """
48    runtime.export_file(
49        name = ETDUMP_SCHEMA_FLATCC,
50        visibility = ["@EXECUTORCH_CLIENTS"],
51    )
52
53    generate_schema_header_flatcc(
54        ETDUMP_GEN_RULE_NAME_FLATCC,
55        [ETDUMP_SCHEMA_FLATCC, SCALAR_TYPE],
56        [
57            ETDUMP_SCHEMA_FLATCC_BUILDER,
58            ETDUMP_SCHEMA_FLATCC_READER,
59            ETDUMP_SCHEMA_FLATCC_VERIFIER,
60            SCALAR_TYPE_BUILDER,
61            SCALAR_TYPE_READER,
62            SCALAR_TYPE_VERIFIER,
63            FLATBUFFERS_COMMON_BUILDER,
64            FLATBUFFERS_COMMON_READER,
65        ],
66        [
67            ETDUMP_SCHEMA_FLATCC_BUILDER,
68            ETDUMP_SCHEMA_FLATCC_READER,
69            ETDUMP_SCHEMA_FLATCC_VERIFIER,
70        ],
71    )
72
73    runtime.cxx_library(
74        name = ETDUMP_STEM_FLATCC,
75        srcs = [],
76        visibility = ["//executorch/...", "@EXECUTORCH_CLIENTS"],
77        exported_headers = {
78            ETDUMP_SCHEMA_FLATCC_BUILDER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, ETDUMP_SCHEMA_FLATCC_BUILDER),
79            ETDUMP_SCHEMA_FLATCC_READER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, ETDUMP_SCHEMA_FLATCC_READER),
80            ETDUMP_SCHEMA_FLATCC_VERIFIER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, ETDUMP_SCHEMA_FLATCC_VERIFIER),
81            SCALAR_TYPE_BUILDER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, SCALAR_TYPE_BUILDER),
82            SCALAR_TYPE_READER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, SCALAR_TYPE_READER),
83            SCALAR_TYPE_VERIFIER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, SCALAR_TYPE_VERIFIER),
84            FLATBUFFERS_COMMON_BUILDER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, FLATBUFFERS_COMMON_BUILDER),
85            FLATBUFFERS_COMMON_READER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, FLATBUFFERS_COMMON_READER),
86        },
87        exported_external_deps = ["flatccrt"],
88    )
89
90    for aten_mode in (True, False):
91        aten_suffix = "_aten" if aten_mode else ""
92        runtime.cxx_library(
93            name = "etdump_flatcc" + aten_suffix,
94            srcs = [
95                "etdump_flatcc.cpp",
96                "emitter.cpp",
97            ],
98            headers = [
99                "emitter.h",
100            ],
101            exported_headers = [
102                "etdump_flatcc.h",
103            ],
104            deps = [
105                "//executorch/runtime/platform:platform",
106            ],
107            exported_deps = [
108                ":etdump_schema_flatcc",
109                "//executorch/runtime/core:event_tracer" + aten_suffix,
110                "//executorch/runtime/core/exec_aten/util:scalar_type_util" + aten_suffix,
111            ],
112            visibility = [
113                "//executorch/...",
114                "@EXECUTORCH_CLIENTS",
115            ],
116        )
117