xref: /aosp_15_r20/external/executorch/runtime/executor/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2*523fa7a6SAndroid Build Coastguard Worker
3*523fa7a6SAndroid Build Coastguard Workerdef _program_preprocessor_flags():
4*523fa7a6SAndroid Build Coastguard Worker    """Returns the preprocessor_flags to use when building Program.cpp"""
5*523fa7a6SAndroid Build Coastguard Worker
6*523fa7a6SAndroid Build Coastguard Worker    # The code for flatbuffer verification can add ~30k of .text to the binary.
7*523fa7a6SAndroid Build Coastguard Worker    # It's a valuable feature, but make it optional for space-constrained
8*523fa7a6SAndroid Build Coastguard Worker    # systems.
9*523fa7a6SAndroid Build Coastguard Worker    enable_verification = native.read_config(
10*523fa7a6SAndroid Build Coastguard Worker        "executorch",
11*523fa7a6SAndroid Build Coastguard Worker        "enable_program_verification",
12*523fa7a6SAndroid Build Coastguard Worker        # Default value
13*523fa7a6SAndroid Build Coastguard Worker        "true",
14*523fa7a6SAndroid Build Coastguard Worker    )
15*523fa7a6SAndroid Build Coastguard Worker    if enable_verification == "false":
16*523fa7a6SAndroid Build Coastguard Worker        return ["-DET_ENABLE_PROGRAM_VERIFICATION=0"]
17*523fa7a6SAndroid Build Coastguard Worker    elif enable_verification == "true":
18*523fa7a6SAndroid Build Coastguard Worker        # Enabled by default.
19*523fa7a6SAndroid Build Coastguard Worker        return []
20*523fa7a6SAndroid Build Coastguard Worker    else:
21*523fa7a6SAndroid Build Coastguard Worker        fail("executorch.enable_program_verification must be one of 'true' or 'false'; saw '" +
22*523fa7a6SAndroid Build Coastguard Worker             enable_verification + "'")
23*523fa7a6SAndroid Build Coastguard Worker
24*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets():
25*523fa7a6SAndroid Build Coastguard Worker    """Defines targets that should be shared between fbcode and xplat.
26*523fa7a6SAndroid Build Coastguard Worker
27*523fa7a6SAndroid Build Coastguard Worker    The directory containing this targets.bzl file should also contain both
28*523fa7a6SAndroid Build Coastguard Worker    TARGETS and BUCK files that call this function.
29*523fa7a6SAndroid Build Coastguard Worker    """
30*523fa7a6SAndroid Build Coastguard Worker
31*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
32*523fa7a6SAndroid Build Coastguard Worker        name = "memory_manager",
33*523fa7a6SAndroid Build Coastguard Worker        exported_headers = [
34*523fa7a6SAndroid Build Coastguard Worker            "memory_manager.h",
35*523fa7a6SAndroid Build Coastguard Worker        ],
36*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
37*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/core:memory_allocator",
38*523fa7a6SAndroid Build Coastguard Worker        ],
39*523fa7a6SAndroid Build Coastguard Worker        visibility = [
40*523fa7a6SAndroid Build Coastguard Worker            "//executorch/...",
41*523fa7a6SAndroid Build Coastguard Worker            "@EXECUTORCH_CLIENTS",
42*523fa7a6SAndroid Build Coastguard Worker        ],
43*523fa7a6SAndroid Build Coastguard Worker    )
44*523fa7a6SAndroid Build Coastguard Worker
45*523fa7a6SAndroid Build Coastguard Worker    for aten_mode in (True, False):
46*523fa7a6SAndroid Build Coastguard Worker        aten_suffix = "_aten" if aten_mode else ""
47*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(
48*523fa7a6SAndroid Build Coastguard Worker            name = "program" + aten_suffix,
49*523fa7a6SAndroid Build Coastguard Worker            exported_deps = [
50*523fa7a6SAndroid Build Coastguard Worker                ":program_no_prim_ops" + aten_suffix,
51*523fa7a6SAndroid Build Coastguard Worker                "//executorch/kernels/prim_ops:prim_ops_registry" + aten_suffix,
52*523fa7a6SAndroid Build Coastguard Worker            ],
53*523fa7a6SAndroid Build Coastguard Worker            visibility = [
54*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/executor/...",
55*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
56*523fa7a6SAndroid Build Coastguard Worker            ],
57*523fa7a6SAndroid Build Coastguard Worker        )
58*523fa7a6SAndroid Build Coastguard Worker
59*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(
60*523fa7a6SAndroid Build Coastguard Worker            name = "program_no_prim_ops" + aten_suffix,
61*523fa7a6SAndroid Build Coastguard Worker            srcs = [
62*523fa7a6SAndroid Build Coastguard Worker                "method.cpp",
63*523fa7a6SAndroid Build Coastguard Worker                "method_meta.cpp",
64*523fa7a6SAndroid Build Coastguard Worker                "program.cpp",
65*523fa7a6SAndroid Build Coastguard Worker                "tensor_parser_exec_aten.cpp",
66*523fa7a6SAndroid Build Coastguard Worker                "tensor_parser{}.cpp".format(aten_suffix if aten_mode else "_portable"),
67*523fa7a6SAndroid Build Coastguard Worker            ],
68*523fa7a6SAndroid Build Coastguard Worker            headers = [
69*523fa7a6SAndroid Build Coastguard Worker                "platform_memory_allocator.h",
70*523fa7a6SAndroid Build Coastguard Worker            ],
71*523fa7a6SAndroid Build Coastguard Worker            exported_headers = [
72*523fa7a6SAndroid Build Coastguard Worker                "method.h",
73*523fa7a6SAndroid Build Coastguard Worker                "method_meta.h",
74*523fa7a6SAndroid Build Coastguard Worker                "program.h",
75*523fa7a6SAndroid Build Coastguard Worker                "tensor_parser.h",
76*523fa7a6SAndroid Build Coastguard Worker            ],
77*523fa7a6SAndroid Build Coastguard Worker            preprocessor_flags = _program_preprocessor_flags(),
78*523fa7a6SAndroid Build Coastguard Worker            exported_deps = [
79*523fa7a6SAndroid Build Coastguard Worker                ":memory_manager",
80*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/backend:interface",
81*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core:core",
82*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core:evalue" + aten_suffix,
83*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core:event_tracer" + aten_suffix,
84*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core/exec_aten:lib" + aten_suffix,
85*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/core/exec_aten/util:tensor_util" + aten_suffix,
86*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/kernel:kernel_runtime_context" + aten_suffix,
87*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/kernel:operator_registry",
88*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/platform:platform",
89*523fa7a6SAndroid Build Coastguard Worker                "//executorch/schema:extended_header",
90*523fa7a6SAndroid Build Coastguard Worker            ],
91*523fa7a6SAndroid Build Coastguard Worker            deps = [
92*523fa7a6SAndroid Build Coastguard Worker                "//executorch/schema:program",
93*523fa7a6SAndroid Build Coastguard Worker            ],
94*523fa7a6SAndroid Build Coastguard Worker            visibility = [
95*523fa7a6SAndroid Build Coastguard Worker                "//executorch/runtime/executor/...",
96*523fa7a6SAndroid Build Coastguard Worker                "@EXECUTORCH_CLIENTS",
97*523fa7a6SAndroid Build Coastguard Worker            ],
98*523fa7a6SAndroid Build Coastguard Worker        )
99