xref: /aosp_15_r20/external/executorch/backends/xnnpack/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/backends/xnnpack/third-party:third_party_libs.bzl", "third_party_dep")
2*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
3*523fa7a6SAndroid Build Coastguard Worker
4*523fa7a6SAndroid Build Coastguard Workerdef _get_preprocessor_flags():
5*523fa7a6SAndroid Build Coastguard Worker    """
6*523fa7a6SAndroid Build Coastguard Worker    Disable if someone explictly specified a config option,
7*523fa7a6SAndroid Build Coastguard Worker    else Enable otherwise
8*523fa7a6SAndroid Build Coastguard Worker    """
9*523fa7a6SAndroid Build Coastguard Worker    if native.read_config("executorch", "xnnpack_workspace_sharing", "0") == "0":
10*523fa7a6SAndroid Build Coastguard Worker        return []
11*523fa7a6SAndroid Build Coastguard Worker
12*523fa7a6SAndroid Build Coastguard Worker    # Enable if not disabled through config
13*523fa7a6SAndroid Build Coastguard Worker    return ["-DENABLE_XNNPACK_SHARED_WORKSPACE"]
14*523fa7a6SAndroid Build Coastguard Worker
15*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets():
16*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
17*523fa7a6SAndroid Build Coastguard Worker        name = "dynamic_quant_utils",
18*523fa7a6SAndroid Build Coastguard Worker        srcs = [
19*523fa7a6SAndroid Build Coastguard Worker            "runtime/utils/utils.cpp",
20*523fa7a6SAndroid Build Coastguard Worker        ],
21*523fa7a6SAndroid Build Coastguard Worker        exported_headers = ["runtime/utils/utils.h"],
22*523fa7a6SAndroid Build Coastguard Worker        deps = [
23*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/core/exec_aten:lib",
24*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/backend:interface",
25*523fa7a6SAndroid Build Coastguard Worker        ],
26*523fa7a6SAndroid Build Coastguard Worker        visibility = [
27*523fa7a6SAndroid Build Coastguard Worker            "//executorch/backends/xnnpack/...",
28*523fa7a6SAndroid Build Coastguard Worker            "@EXECUTORCH_CLIENTS",
29*523fa7a6SAndroid Build Coastguard Worker        ],
30*523fa7a6SAndroid Build Coastguard Worker    )
31*523fa7a6SAndroid Build Coastguard Worker
32*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
33*523fa7a6SAndroid Build Coastguard Worker        name = "xnnpack_backend",
34*523fa7a6SAndroid Build Coastguard Worker        srcs = native.glob([
35*523fa7a6SAndroid Build Coastguard Worker            "runtime/*.cpp",
36*523fa7a6SAndroid Build Coastguard Worker            "runtime/profiling/*.cpp",
37*523fa7a6SAndroid Build Coastguard Worker        ]),
38*523fa7a6SAndroid Build Coastguard Worker        headers = native.glob([
39*523fa7a6SAndroid Build Coastguard Worker            "runtime/*.h",
40*523fa7a6SAndroid Build Coastguard Worker            "runtime/profiling/*.h",
41*523fa7a6SAndroid Build Coastguard Worker        ]),
42*523fa7a6SAndroid Build Coastguard Worker        visibility = [
43*523fa7a6SAndroid Build Coastguard Worker            "//executorch/exir/backend:backend_lib",
44*523fa7a6SAndroid Build Coastguard Worker            "//executorch/exir/backend/test/...",
45*523fa7a6SAndroid Build Coastguard Worker            "//executorch/backends/xnnpack/test/...",
46*523fa7a6SAndroid Build Coastguard Worker            "//executorch/extension/pybindings/...",
47*523fa7a6SAndroid Build Coastguard Worker            "@EXECUTORCH_CLIENTS",
48*523fa7a6SAndroid Build Coastguard Worker        ],
49*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
50*523fa7a6SAndroid Build Coastguard Worker            # Uncomment to enable per operator timings
51*523fa7a6SAndroid Build Coastguard Worker            # "-DENABLE_XNNPACK_PROFILING",
52*523fa7a6SAndroid Build Coastguard Worker            # Uncomment to enable using KleidiAI Kernels
53*523fa7a6SAndroid Build Coastguard Worker            # "-DENABLE_XNNPACK_KLEIDI"
54*523fa7a6SAndroid Build Coastguard Worker        ] + _get_preprocessor_flags(),
55*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
56*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/backend:interface",
57*523fa7a6SAndroid Build Coastguard Worker        ],
58*523fa7a6SAndroid Build Coastguard Worker        deps = [
59*523fa7a6SAndroid Build Coastguard Worker            third_party_dep("XNNPACK"),
60*523fa7a6SAndroid Build Coastguard Worker            "//executorch/backends/xnnpack/serialization:xnnpack_flatbuffer_header",
61*523fa7a6SAndroid Build Coastguard Worker            "//executorch/extension/threadpool:threadpool",
62*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/core/exec_aten/util:tensor_util",
63*523fa7a6SAndroid Build Coastguard Worker        ],
64*523fa7a6SAndroid Build Coastguard Worker        # XnnpackBackend.cpp needs to compile with executor as whole
65*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: Avoid `link_whole=True` (https://fburl.com/avoid-link-whole)
66*523fa7a6SAndroid Build Coastguard Worker        link_whole = True,
67*523fa7a6SAndroid Build Coastguard Worker    )
68