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