xref: /aosp_15_r20/external/executorch/runtime/executor/test/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2
3def define_common_targets(is_fbcode = False):
4    """Defines targets that should be shared between fbcode and xplat.
5
6    The directory containing this targets.bzl file should also contain both
7    TARGETS and BUCK files that call this function.
8    """
9
10    for aten_mode in (True, False):
11        aten_suffix = ("_aten" if aten_mode else "")
12
13        runtime.cxx_library(
14            name = "test_backend_compiler_lib" + aten_suffix,
15            srcs = [
16                "test_backend_compiler_lib.cpp",
17            ],
18            visibility = [
19                "//executorch/exir/backend/test/...",
20                "//executorch/runtime/backend/...",
21                "//executorch/extension/pybindings/...",
22                "//executorch/devtools/fb/runners/...",
23                "//executorch/test/...",
24                "//executorch/examples/...",
25            ],
26            # registration of backends is done through a static global
27            compiler_flags = ["-Wno-global-constructors"],
28            preprocessor_flags = ["-DUSE_ATEN_LIB"] if aten_mode else [],
29            exported_deps = [
30                "//executorch/runtime/backend:interface" + aten_suffix,
31            ],
32            # TestBackendCompilerLib.cpp needs to compile with executor as whole
33            # @lint-ignore BUCKLINT: Avoid `link_whole=True` (https://fburl.com/avoid-link-whole)
34            link_whole = True,
35        )
36
37        runtime.cxx_library(
38            name = "test_backend_with_delegate_mapping" + aten_suffix,
39            srcs = [
40                "test_backend_with_delegate_mapping.cpp",
41            ],
42            visibility = [
43                "//executorch/exir/backend/test/...",
44                "//executorch/runtime/backend/...",
45                "//executorch/extension/pybindings/...",
46                "//executorch/devtools/fb/runners/...",
47                "//executorch/test/...",
48                "//executorch/examples/...",
49            ],
50            # registration of backends is done through a static global
51            compiler_flags = ["-Wno-global-constructors"],
52            preprocessor_flags = ["-DUSE_ATEN_LIB"] if aten_mode else [],
53            exported_deps = [
54                "//executorch/runtime/backend:interface" + aten_suffix,
55            ],
56            # TestBackendCompilerLib.cpp needs to compile with executor as whole
57            # @lint-ignore BUCKLINT: Avoid `link_whole=True` (https://fburl.com/avoid-link-whole)
58            link_whole = True,
59        )
60
61        runtime.cxx_test(
62            name = "executor_test" + aten_suffix,
63            srcs = [
64                "executor_test.cpp",
65            ],
66            deps = [
67                "//executorch/extension/pytree:pytree",
68                "//executorch/kernels/portable:generated_lib" + aten_suffix,
69                "//executorch/runtime/core/exec_aten/testing_util:tensor_util" + aten_suffix,
70                "//executorch/runtime/core/exec_aten:lib" + aten_suffix,
71                "//executorch/runtime/core:evalue" + aten_suffix,
72                "//executorch/runtime/kernel:kernel_runtime_context" + aten_suffix,
73                "//executorch/runtime/kernel:operator_registry",
74                "//executorch/runtime/platform:platform",
75            ],
76        )
77
78    runtime.cxx_library(
79        name = "managed_memory_manager",
80        srcs = [],
81        exported_headers = [
82            "managed_memory_manager.h",
83        ],
84        visibility = [
85            "//executorch/runtime/executor/test/...",
86            "//executorch/test/...",
87            "@EXECUTORCH_CLIENTS",
88        ],
89        deps = [
90            "//executorch/runtime/core:memory_allocator",
91            "//executorch/runtime/executor:memory_manager",
92        ],
93    )
94
95    # TODO(dbort): Find a way to make these run for ANDROID/APPLE in xplat. The
96    # android and ios test determinators don't like the reference to the model
97    # file in fbcode. See https://fburl.com/9esapdmd
98    if not runtime.is_oss and is_fbcode:
99        modules_env = {
100            # Deprecated model that still works with ExecuTorch runtime.
101            "DEPRECATED_ET_MODULE_LINEAR_CONSTANT_BUFFER_PATH": "$(location fbcode//executorch/test/models/deprecated:ModuleLinear-no-constant-segment.pte)",
102            # The tests use this var to find the program file to load. This uses
103            # an fbcode target path because the authoring/export tools
104            # intentionally don't work in xplat (since they're host-only tools).
105            "ET_MODULE_ADD_HALF_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleAddHalf.pte])",
106            "ET_MODULE_ADD_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleAdd.pte])",
107            "ET_MODULE_DYNAMIC_CAT_UNALLOCATED_IO_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleDynamicCatUnallocatedIO.pte])",
108            "ET_MODULE_INDEX_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleIndex.pte])",
109            "ET_MODULE_LINEAR_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleLinear.pte])",
110            "ET_MODULE_MULTI_ENTRY_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleMultipleEntry.pte])",
111            "ET_MODULE_SIMPLE_TRAIN_PATH": "$(location fbcode//executorch/test/models:exported_programs[ModuleSimpleTrain.pte])",
112        }
113
114        runtime.cxx_test(
115            name = "allocation_failure_stress_test",
116            srcs = [
117                "allocation_failure_stress_test.cpp",
118            ],
119            deps = [
120                ":managed_memory_manager",
121                "//executorch/runtime/executor:program",
122                "//executorch/kernels/portable:generated_lib",
123                "//executorch/extension/data_loader:file_data_loader",
124                "//executorch/extension/runner_util:inputs",
125            ],
126            env = modules_env,
127        )
128
129        runtime.cxx_test(
130            name = "method_test",
131            srcs = [
132                "method_test.cpp",
133            ],
134            deps = [
135                ":managed_memory_manager",
136                "//executorch/runtime/executor:program",
137                "//executorch/extension/data_loader:file_data_loader",
138                "//executorch/extension/runner_util:inputs",
139                "//executorch/kernels/portable:generated_lib",
140            ],
141            env = modules_env,
142        )
143
144        runtime.cxx_test(
145            name = "method_meta_test",
146            srcs = [
147                "method_meta_test.cpp",
148            ],
149            deps = [
150                "//executorch/runtime/executor:program",
151                "//executorch/extension/data_loader:file_data_loader",
152            ],
153            env = modules_env,
154        )
155
156        runtime.cxx_test(
157            name = "program_test",
158            srcs = [
159                "program_test.cpp",
160            ],
161            deps = [
162                "//executorch/runtime/executor:program",
163                "//executorch/extension/data_loader:buffer_data_loader",
164                "//executorch/extension/data_loader:file_data_loader",
165                "//executorch/schema:program",
166            ],
167            env = modules_env,
168        )
169
170        runtime.cxx_test(
171            name = "kernel_resolution_test",
172            srcs = [
173                "kernel_resolution_test.cpp",
174            ],
175            deps = [
176                ":managed_memory_manager",
177                "//executorch/runtime/executor:program",
178                "//executorch/runtime/kernel:operator_registry",
179                "//executorch/extension/data_loader:file_data_loader",
180            ],
181            env = modules_env,
182        )
183
184        runtime.cxx_test(
185            name = "kernel_integration_test",
186            srcs = [
187                "kernel_integration_test.cpp",
188            ],
189            deps = [
190                ":managed_memory_manager",
191                "//executorch/extension/data_loader:file_data_loader",
192                "//executorch/extension/runner_util:inputs",
193                "//executorch/runtime/core:core",
194                "//executorch/runtime/executor:program",
195                "//executorch/runtime/kernel:kernel_runtime_context",
196                "//executorch/runtime/kernel:operator_registry",
197                "//executorch/runtime/platform:platform",
198            ],
199            env = modules_env,
200        )
201
202        runtime.cxx_test(
203            name = "backend_integration_test",
204            srcs = [
205                "backend_integration_test.cpp",
206            ],
207            deps = [
208                ":managed_memory_manager",
209                "//executorch/runtime/backend:interface",
210                "//executorch/runtime/executor:program",
211                "//executorch/extension/data_loader:buffer_data_loader",
212                "//executorch/extension/data_loader:file_data_loader",
213                "//executorch/extension/runner_util:inputs",
214            ],
215            env = {
216                # The tests use these vars to find the program files to load.
217                # Uses an fbcode target path because the authoring/export tools
218                # intentionally don't work in xplat (since they're host-only
219                # tools).
220                "ET_MODULE_ADD_MUL_NOSEGMENTS_DA1024_PATH": "$(location fbcode//executorch/test/models:exported_delegated_programs[ModuleAddMul-nosegments-da1024.pte])",
221                "ET_MODULE_ADD_MUL_NOSEGMENTS_PATH": "$(location fbcode//executorch/test/models:exported_delegated_programs[ModuleAddMul-nosegments.pte])",
222                "ET_MODULE_ADD_MUL_PATH": "$(location fbcode//executorch/test/models:exported_delegated_programs[ModuleAddMul.pte])",
223            },
224        )
225
226        runtime.cxx_test(
227            name = "memory_manager_test",
228            srcs = [
229                "memory_manager_test.cpp",
230            ],
231            deps = [
232                "//executorch/runtime/core:memory_allocator",
233                "//executorch/runtime/executor:memory_manager",
234            ],
235        )
236
237        runtime.cxx_test(
238            name = "tensor_parser_test",
239            srcs = [
240                "tensor_parser_test.cpp",
241            ],
242            deps = [
243                ":managed_memory_manager",
244                "//executorch/runtime/executor:program",
245                "//executorch/extension/data_loader:file_data_loader",
246                "//executorch/kernels/portable:generated_lib",
247                "//executorch/schema:program",
248            ],
249            env = modules_env,
250        )
251