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