1*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") 2*523fa7a6SAndroid Build Coastguard Worker 3*523fa7a6SAndroid Build Coastguard Workerdef _program_preprocessor_flags(): 4*523fa7a6SAndroid Build Coastguard Worker """Returns the preprocessor_flags to use when building Program.cpp""" 5*523fa7a6SAndroid Build Coastguard Worker 6*523fa7a6SAndroid Build Coastguard Worker # The code for flatbuffer verification can add ~30k of .text to the binary. 7*523fa7a6SAndroid Build Coastguard Worker # It's a valuable feature, but make it optional for space-constrained 8*523fa7a6SAndroid Build Coastguard Worker # systems. 9*523fa7a6SAndroid Build Coastguard Worker enable_verification = native.read_config( 10*523fa7a6SAndroid Build Coastguard Worker "executorch", 11*523fa7a6SAndroid Build Coastguard Worker "enable_program_verification", 12*523fa7a6SAndroid Build Coastguard Worker # Default value 13*523fa7a6SAndroid Build Coastguard Worker "true", 14*523fa7a6SAndroid Build Coastguard Worker ) 15*523fa7a6SAndroid Build Coastguard Worker if enable_verification == "false": 16*523fa7a6SAndroid Build Coastguard Worker return ["-DET_ENABLE_PROGRAM_VERIFICATION=0"] 17*523fa7a6SAndroid Build Coastguard Worker elif enable_verification == "true": 18*523fa7a6SAndroid Build Coastguard Worker # Enabled by default. 19*523fa7a6SAndroid Build Coastguard Worker return [] 20*523fa7a6SAndroid Build Coastguard Worker else: 21*523fa7a6SAndroid Build Coastguard Worker fail("executorch.enable_program_verification must be one of 'true' or 'false'; saw '" + 22*523fa7a6SAndroid Build Coastguard Worker enable_verification + "'") 23*523fa7a6SAndroid Build Coastguard Worker 24*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets(): 25*523fa7a6SAndroid Build Coastguard Worker """Defines targets that should be shared between fbcode and xplat. 26*523fa7a6SAndroid Build Coastguard Worker 27*523fa7a6SAndroid Build Coastguard Worker The directory containing this targets.bzl file should also contain both 28*523fa7a6SAndroid Build Coastguard Worker TARGETS and BUCK files that call this function. 29*523fa7a6SAndroid Build Coastguard Worker """ 30*523fa7a6SAndroid Build Coastguard Worker 31*523fa7a6SAndroid Build Coastguard Worker runtime.cxx_library( 32*523fa7a6SAndroid Build Coastguard Worker name = "memory_manager", 33*523fa7a6SAndroid Build Coastguard Worker exported_headers = [ 34*523fa7a6SAndroid Build Coastguard Worker "memory_manager.h", 35*523fa7a6SAndroid Build Coastguard Worker ], 36*523fa7a6SAndroid Build Coastguard Worker exported_deps = [ 37*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core:memory_allocator", 38*523fa7a6SAndroid Build Coastguard Worker ], 39*523fa7a6SAndroid Build Coastguard Worker visibility = [ 40*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 41*523fa7a6SAndroid Build Coastguard Worker "@EXECUTORCH_CLIENTS", 42*523fa7a6SAndroid Build Coastguard Worker ], 43*523fa7a6SAndroid Build Coastguard Worker ) 44*523fa7a6SAndroid Build Coastguard Worker 45*523fa7a6SAndroid Build Coastguard Worker for aten_mode in (True, False): 46*523fa7a6SAndroid Build Coastguard Worker aten_suffix = "_aten" if aten_mode else "" 47*523fa7a6SAndroid Build Coastguard Worker runtime.cxx_library( 48*523fa7a6SAndroid Build Coastguard Worker name = "program" + aten_suffix, 49*523fa7a6SAndroid Build Coastguard Worker exported_deps = [ 50*523fa7a6SAndroid Build Coastguard Worker ":program_no_prim_ops" + aten_suffix, 51*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/prim_ops:prim_ops_registry" + aten_suffix, 52*523fa7a6SAndroid Build Coastguard Worker ], 53*523fa7a6SAndroid Build Coastguard Worker visibility = [ 54*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/executor/...", 55*523fa7a6SAndroid Build Coastguard Worker "@EXECUTORCH_CLIENTS", 56*523fa7a6SAndroid Build Coastguard Worker ], 57*523fa7a6SAndroid Build Coastguard Worker ) 58*523fa7a6SAndroid Build Coastguard Worker 59*523fa7a6SAndroid Build Coastguard Worker runtime.cxx_library( 60*523fa7a6SAndroid Build Coastguard Worker name = "program_no_prim_ops" + aten_suffix, 61*523fa7a6SAndroid Build Coastguard Worker srcs = [ 62*523fa7a6SAndroid Build Coastguard Worker "method.cpp", 63*523fa7a6SAndroid Build Coastguard Worker "method_meta.cpp", 64*523fa7a6SAndroid Build Coastguard Worker "program.cpp", 65*523fa7a6SAndroid Build Coastguard Worker "tensor_parser_exec_aten.cpp", 66*523fa7a6SAndroid Build Coastguard Worker "tensor_parser{}.cpp".format(aten_suffix if aten_mode else "_portable"), 67*523fa7a6SAndroid Build Coastguard Worker ], 68*523fa7a6SAndroid Build Coastguard Worker headers = [ 69*523fa7a6SAndroid Build Coastguard Worker "platform_memory_allocator.h", 70*523fa7a6SAndroid Build Coastguard Worker ], 71*523fa7a6SAndroid Build Coastguard Worker exported_headers = [ 72*523fa7a6SAndroid Build Coastguard Worker "method.h", 73*523fa7a6SAndroid Build Coastguard Worker "method_meta.h", 74*523fa7a6SAndroid Build Coastguard Worker "program.h", 75*523fa7a6SAndroid Build Coastguard Worker "tensor_parser.h", 76*523fa7a6SAndroid Build Coastguard Worker ], 77*523fa7a6SAndroid Build Coastguard Worker preprocessor_flags = _program_preprocessor_flags(), 78*523fa7a6SAndroid Build Coastguard Worker exported_deps = [ 79*523fa7a6SAndroid Build Coastguard Worker ":memory_manager", 80*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/backend:interface", 81*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core:core", 82*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core:evalue" + aten_suffix, 83*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core:event_tracer" + aten_suffix, 84*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core/exec_aten:lib" + aten_suffix, 85*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core/exec_aten/util:tensor_util" + aten_suffix, 86*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/kernel:kernel_runtime_context" + aten_suffix, 87*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/kernel:operator_registry", 88*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/platform:platform", 89*523fa7a6SAndroid Build Coastguard Worker "//executorch/schema:extended_header", 90*523fa7a6SAndroid Build Coastguard Worker ], 91*523fa7a6SAndroid Build Coastguard Worker deps = [ 92*523fa7a6SAndroid Build Coastguard Worker "//executorch/schema:program", 93*523fa7a6SAndroid Build Coastguard Worker ], 94*523fa7a6SAndroid Build Coastguard Worker visibility = [ 95*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/executor/...", 96*523fa7a6SAndroid Build Coastguard Worker "@EXECUTORCH_CLIENTS", 97*523fa7a6SAndroid Build Coastguard Worker ], 98*523fa7a6SAndroid Build Coastguard Worker ) 99