xref: /aosp_15_r20/external/executorch/shim/xplat/executorch/extension/pybindings/pybindings.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1load("@fbsource//xplat/executorch/backends:backends.bzl", "get_all_cpu_backend_targets")
2load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
3
4# Aten ops with portable kernel
5MODELS_ATEN_OPS_LEAN_MODE_GENERATED_LIB = [
6    "//executorch/kernels/portable:generated_lib",
7    "//executorch/kernels/quantized:generated_lib",
8]
9
10PORTABLE_MODULE_DEPS = [
11    "//executorch/runtime/kernel:operator_registry",
12    "//executorch/runtime/executor:program",
13    "//executorch/devtools/bundled_program/schema:bundled_program_schema_fbs",
14    "//executorch/extension/aten_util:aten_bridge",
15    "//executorch/devtools/bundled_program:runtime",
16    "//executorch/extension/data_loader:buffer_data_loader",
17    "//executorch/extension/data_loader:mmap_data_loader",
18    "//executorch/extension/memory_allocator:malloc_memory_allocator",
19    "//executorch/runtime/executor/test:test_backend_compiler_lib",
20    "//executorch/devtools/etdump:etdump_flatcc",
21] + get_all_cpu_backend_targets()
22
23ATEN_MODULE_DEPS = [
24    "//executorch/runtime/kernel:operator_registry",
25    "//executorch/runtime/executor:program_aten",
26    "//executorch/runtime/core/exec_aten:lib",
27    "//executorch/devtools/bundled_program/schema:bundled_program_schema_fbs",
28    "//executorch/extension/data_loader:buffer_data_loader",
29    "//executorch/extension/data_loader:mmap_data_loader",
30    "//executorch/extension/memory_allocator:malloc_memory_allocator",
31    "//executorch/devtools/bundled_program:runtime_aten",
32    "//executorch/runtime/executor/test:test_backend_compiler_lib_aten",
33    "//executorch/devtools/etdump:etdump_flatcc",
34]
35
36# Generated lib for all ATen ops with aten kernel used by models in model inventory
37MODELS_ATEN_OPS_ATEN_MODE_GENERATED_LIB = [
38    "//executorch/kernels/quantized:generated_lib_aten",
39    "//executorch/kernels/aten:generated_lib",
40]
41
42def executorch_pybindings(python_module_name, srcs = [], cppdeps = [], visibility = ["//executorch/..."], types = [], compiler_flags = []):
43    runtime.cxx_python_extension(
44        name = python_module_name,
45        srcs = [
46            "//executorch/extension/pybindings:pybindings.cpp",
47        ] + srcs,
48        types = types,
49        base_module = "executorch.extension.pybindings",
50        compiler_flags = compiler_flags,
51        preprocessor_flags = [
52            "-DEXECUTORCH_PYTHON_MODULE_NAME={}".format(python_module_name),
53        ],
54        deps = [
55            "//executorch/exir:_warnings",
56            "//executorch/runtime/core:core",
57        ] + cppdeps,
58        external_deps = [
59            "pybind11",
60            "libtorch_python",
61        ],
62        use_static_deps = True,
63        _is_external_target = bool(visibility != ["//executorch/..."]),
64        visibility = visibility,
65    )
66