1*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") 2*523fa7a6SAndroid Build Coastguard Worker 3*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets(is_fbcode = False): 4*523fa7a6SAndroid Build Coastguard Worker """Defines targets that should be shared between fbcode and xplat. 5*523fa7a6SAndroid Build Coastguard Worker 6*523fa7a6SAndroid Build Coastguard Worker The directory containing this targets.bzl file should also contain both 7*523fa7a6SAndroid Build Coastguard Worker TARGETS and BUCK files that call this function. 8*523fa7a6SAndroid Build Coastguard Worker 9*523fa7a6SAndroid Build Coastguard Worker See README.md for instructions on selective build. 10*523fa7a6SAndroid Build Coastguard Worker """ 11*523fa7a6SAndroid Build Coastguard Worker runtime.python_library( 12*523fa7a6SAndroid Build Coastguard Worker name = "gen_oplist_lib", 13*523fa7a6SAndroid Build Coastguard Worker srcs = ["gen_oplist.py"], 14*523fa7a6SAndroid Build Coastguard Worker base_module = "executorch.codegen.tools", 15*523fa7a6SAndroid Build Coastguard Worker visibility = [ 16*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 17*523fa7a6SAndroid Build Coastguard Worker ], 18*523fa7a6SAndroid Build Coastguard Worker external_deps = ["torchgen"], 19*523fa7a6SAndroid Build Coastguard Worker deps = select({ 20*523fa7a6SAndroid Build Coastguard Worker "DEFAULT": [], 21*523fa7a6SAndroid Build Coastguard Worker "ovr_config//os:linux": [] if runtime.is_oss else ["//executorch/codegen/tools/fb:selective_build"], # TODO(larryliu0820) :selective_build doesn't build in OSS yet 22*523fa7a6SAndroid Build Coastguard Worker }), 23*523fa7a6SAndroid Build Coastguard Worker ) 24*523fa7a6SAndroid Build Coastguard Worker 25*523fa7a6SAndroid Build Coastguard Worker runtime.python_binary( 26*523fa7a6SAndroid Build Coastguard Worker name = "gen_oplist", 27*523fa7a6SAndroid Build Coastguard Worker main_module = "executorch.codegen.tools.gen_oplist", 28*523fa7a6SAndroid Build Coastguard Worker deps = [ 29*523fa7a6SAndroid Build Coastguard Worker ":gen_oplist_lib", 30*523fa7a6SAndroid Build Coastguard Worker ], 31*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 32*523fa7a6SAndroid Build Coastguard Worker visibility = [ 33*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 34*523fa7a6SAndroid Build Coastguard Worker "@EXECUTORCH_CLIENTS", 35*523fa7a6SAndroid Build Coastguard Worker ], 36*523fa7a6SAndroid Build Coastguard Worker ) 37*523fa7a6SAndroid Build Coastguard Worker 38*523fa7a6SAndroid Build Coastguard Worker runtime.python_library( 39*523fa7a6SAndroid Build Coastguard Worker name = "yaml_util", 40*523fa7a6SAndroid Build Coastguard Worker base_module = "executorch.codegen.tools", 41*523fa7a6SAndroid Build Coastguard Worker srcs = ["yaml_util.py"], 42*523fa7a6SAndroid Build Coastguard Worker ) 43*523fa7a6SAndroid Build Coastguard Worker 44*523fa7a6SAndroid Build Coastguard Worker runtime.python_library( 45*523fa7a6SAndroid Build Coastguard Worker name = "merge_yaml_lib", 46*523fa7a6SAndroid Build Coastguard Worker srcs = ["merge_yaml.py"], 47*523fa7a6SAndroid Build Coastguard Worker base_module = "executorch.codegen.tools", 48*523fa7a6SAndroid Build Coastguard Worker deps = [ 49*523fa7a6SAndroid Build Coastguard Worker ":yaml_util", 50*523fa7a6SAndroid Build Coastguard Worker ], 51*523fa7a6SAndroid Build Coastguard Worker external_deps = ["torchgen"], 52*523fa7a6SAndroid Build Coastguard Worker ) 53*523fa7a6SAndroid Build Coastguard Worker 54*523fa7a6SAndroid Build Coastguard Worker runtime.python_binary( 55*523fa7a6SAndroid Build Coastguard Worker name = "merge_yaml", 56*523fa7a6SAndroid Build Coastguard Worker main_module = "executorch.codegen.tools.merge_yaml", 57*523fa7a6SAndroid Build Coastguard Worker deps = [ 58*523fa7a6SAndroid Build Coastguard Worker ":merge_yaml_lib", 59*523fa7a6SAndroid Build Coastguard Worker ], 60*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 61*523fa7a6SAndroid Build Coastguard Worker _is_external_target = True, 62*523fa7a6SAndroid Build Coastguard Worker visibility = ["PUBLIC"], 63*523fa7a6SAndroid Build Coastguard Worker ) 64*523fa7a6SAndroid Build Coastguard Worker 65*523fa7a6SAndroid Build Coastguard Worker runtime.python_test( 66*523fa7a6SAndroid Build Coastguard Worker name = "test_gen_oplist", 67*523fa7a6SAndroid Build Coastguard Worker base_module = "", 68*523fa7a6SAndroid Build Coastguard Worker srcs = [ 69*523fa7a6SAndroid Build Coastguard Worker "test/test_gen_oplist.py", 70*523fa7a6SAndroid Build Coastguard Worker ], 71*523fa7a6SAndroid Build Coastguard Worker deps = [ 72*523fa7a6SAndroid Build Coastguard Worker ":gen_oplist_lib", 73*523fa7a6SAndroid Build Coastguard Worker ], 74*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 75*523fa7a6SAndroid Build Coastguard Worker visibility = [ 76*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 77*523fa7a6SAndroid Build Coastguard Worker "@EXECUTORCH_CLIENTS", 78*523fa7a6SAndroid Build Coastguard Worker ], 79*523fa7a6SAndroid Build Coastguard Worker ) 80*523fa7a6SAndroid Build Coastguard Worker 81*523fa7a6SAndroid Build Coastguard Worker runtime.python_library( 82*523fa7a6SAndroid Build Coastguard Worker name = "gen_oplist_copy_from_core", 83*523fa7a6SAndroid Build Coastguard Worker srcs = [ 84*523fa7a6SAndroid Build Coastguard Worker "gen_oplist_copy_from_core.py", 85*523fa7a6SAndroid Build Coastguard Worker ], 86*523fa7a6SAndroid Build Coastguard Worker base_module = "tools_copy.code_analyzer", 87*523fa7a6SAndroid Build Coastguard Worker external_deps = ["torchgen"], 88*523fa7a6SAndroid Build Coastguard Worker ) 89*523fa7a6SAndroid Build Coastguard Worker 90*523fa7a6SAndroid Build Coastguard Worker runtime.python_library( 91*523fa7a6SAndroid Build Coastguard Worker name = "gen_all_oplist_lib", 92*523fa7a6SAndroid Build Coastguard Worker srcs = ["gen_all_oplist.py"], 93*523fa7a6SAndroid Build Coastguard Worker base_module = "executorch.codegen.tools", 94*523fa7a6SAndroid Build Coastguard Worker visibility = [ 95*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 96*523fa7a6SAndroid Build Coastguard Worker ], 97*523fa7a6SAndroid Build Coastguard Worker deps = [":gen_oplist_copy_from_core"], 98*523fa7a6SAndroid Build Coastguard Worker ) 99*523fa7a6SAndroid Build Coastguard Worker 100*523fa7a6SAndroid Build Coastguard Worker runtime.python_binary( 101*523fa7a6SAndroid Build Coastguard Worker name = "gen_all_oplist", 102*523fa7a6SAndroid Build Coastguard Worker main_module = "executorch.codegen.tools.gen_all_oplist", 103*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 104*523fa7a6SAndroid Build Coastguard Worker visibility = [ 105*523fa7a6SAndroid Build Coastguard Worker "PUBLIC", 106*523fa7a6SAndroid Build Coastguard Worker ], 107*523fa7a6SAndroid Build Coastguard Worker deps = [ 108*523fa7a6SAndroid Build Coastguard Worker ":gen_all_oplist_lib", 109*523fa7a6SAndroid Build Coastguard Worker ], 110*523fa7a6SAndroid Build Coastguard Worker _is_external_target = True, 111*523fa7a6SAndroid Build Coastguard Worker ) 112*523fa7a6SAndroid Build Coastguard Worker 113*523fa7a6SAndroid Build Coastguard Worker runtime.python_test( 114*523fa7a6SAndroid Build Coastguard Worker name = "test_gen_all_oplist", 115*523fa7a6SAndroid Build Coastguard Worker srcs = [ 116*523fa7a6SAndroid Build Coastguard Worker "test/test_gen_all_oplist.py", 117*523fa7a6SAndroid Build Coastguard Worker ], 118*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 119*523fa7a6SAndroid Build Coastguard Worker visibility = [ 120*523fa7a6SAndroid Build Coastguard Worker "PUBLIC", 121*523fa7a6SAndroid Build Coastguard Worker ], 122*523fa7a6SAndroid Build Coastguard Worker deps = [ 123*523fa7a6SAndroid Build Coastguard Worker ":gen_all_oplist_lib", 124*523fa7a6SAndroid Build Coastguard Worker ], 125*523fa7a6SAndroid Build Coastguard Worker _is_external_target = True, 126*523fa7a6SAndroid Build Coastguard Worker ) 127*523fa7a6SAndroid Build Coastguard Worker 128*523fa7a6SAndroid Build Coastguard Worker runtime.python_library( 129*523fa7a6SAndroid Build Coastguard Worker name = "gen_selected_op_variants_lib", 130*523fa7a6SAndroid Build Coastguard Worker srcs = ["gen_selected_op_variants.py"], 131*523fa7a6SAndroid Build Coastguard Worker base_module = "executorch.codegen.tools", 132*523fa7a6SAndroid Build Coastguard Worker visibility = ["//executorch/..."], 133*523fa7a6SAndroid Build Coastguard Worker deps = [":gen_oplist_copy_from_core"], 134*523fa7a6SAndroid Build Coastguard Worker ) 135*523fa7a6SAndroid Build Coastguard Worker 136*523fa7a6SAndroid Build Coastguard Worker runtime.python_binary( 137*523fa7a6SAndroid Build Coastguard Worker name = "gen_selected_op_variants", 138*523fa7a6SAndroid Build Coastguard Worker main_module = "executorch.codegen.tools.gen_selected_op_variants", 139*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 140*523fa7a6SAndroid Build Coastguard Worker visibility = [ 141*523fa7a6SAndroid Build Coastguard Worker "PUBLIC", 142*523fa7a6SAndroid Build Coastguard Worker ], 143*523fa7a6SAndroid Build Coastguard Worker deps = [ 144*523fa7a6SAndroid Build Coastguard Worker ":gen_selected_op_variants_lib", 145*523fa7a6SAndroid Build Coastguard Worker ], 146*523fa7a6SAndroid Build Coastguard Worker _is_external_target = True, 147*523fa7a6SAndroid Build Coastguard Worker ) 148*523fa7a6SAndroid Build Coastguard Worker 149*523fa7a6SAndroid Build Coastguard Worker runtime.python_test( 150*523fa7a6SAndroid Build Coastguard Worker name = "test_gen_selected_op_variants", 151*523fa7a6SAndroid Build Coastguard Worker srcs = [ 152*523fa7a6SAndroid Build Coastguard Worker "test/test_gen_selected_op_variants.py", 153*523fa7a6SAndroid Build Coastguard Worker ], 154*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 155*523fa7a6SAndroid Build Coastguard Worker visibility = [ 156*523fa7a6SAndroid Build Coastguard Worker "PUBLIC", 157*523fa7a6SAndroid Build Coastguard Worker ], 158*523fa7a6SAndroid Build Coastguard Worker deps = [ 159*523fa7a6SAndroid Build Coastguard Worker ":gen_selected_op_variants_lib", 160*523fa7a6SAndroid Build Coastguard Worker "fbsource//third-party/pypi/expecttest:expecttest", 161*523fa7a6SAndroid Build Coastguard Worker ], 162*523fa7a6SAndroid Build Coastguard Worker _is_external_target = True, 163*523fa7a6SAndroid Build Coastguard Worker ) 164*523fa7a6SAndroid Build Coastguard Worker 165*523fa7a6SAndroid Build Coastguard Worker # TODO(larryliu0820): This is a hack to only run these two on fbcode. These targets depends on exir which is only available in fbcode. 166*523fa7a6SAndroid Build Coastguard Worker if not runtime.is_oss and is_fbcode: 167*523fa7a6SAndroid Build Coastguard Worker runtime.python_binary( 168*523fa7a6SAndroid Build Coastguard Worker name = "gen_functions_yaml", 169*523fa7a6SAndroid Build Coastguard Worker srcs = ["gen_ops_def.py"], 170*523fa7a6SAndroid Build Coastguard Worker main_module = "executorch.codegen.tools.gen_ops_def", 171*523fa7a6SAndroid Build Coastguard Worker package_style = "inplace", 172*523fa7a6SAndroid Build Coastguard Worker visibility = [ 173*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 174*523fa7a6SAndroid Build Coastguard Worker "@EXECUTORCH_CLIENTS", 175*523fa7a6SAndroid Build Coastguard Worker ], 176*523fa7a6SAndroid Build Coastguard Worker deps = [ 177*523fa7a6SAndroid Build Coastguard Worker "fbsource//third-party/pypi/pyyaml:pyyaml", 178*523fa7a6SAndroid Build Coastguard Worker ":yaml_util", 179*523fa7a6SAndroid Build Coastguard Worker "//caffe2:torch", 180*523fa7a6SAndroid Build Coastguard Worker "//executorch/exir:schema", 181*523fa7a6SAndroid Build Coastguard Worker "//executorch/exir/_serialize:lib", 182*523fa7a6SAndroid Build Coastguard Worker ], 183*523fa7a6SAndroid Build Coastguard Worker ) 184*523fa7a6SAndroid Build Coastguard Worker 185*523fa7a6SAndroid Build Coastguard Worker runtime.python_test( 186*523fa7a6SAndroid Build Coastguard Worker name = "test_gen_oplist_real_model", 187*523fa7a6SAndroid Build Coastguard Worker srcs = ["test/test_gen_oplist_real_model.py"], 188*523fa7a6SAndroid Build Coastguard Worker base_module = "", 189*523fa7a6SAndroid Build Coastguard Worker resources = { 190*523fa7a6SAndroid Build Coastguard Worker "//executorch/test/models:exported_programs[ModuleLinear.pte]": "test/ModuleLinear.pte", 191*523fa7a6SAndroid Build Coastguard Worker }, 192*523fa7a6SAndroid Build Coastguard Worker visibility = [ 193*523fa7a6SAndroid Build Coastguard Worker "//executorch/...", 194*523fa7a6SAndroid Build Coastguard Worker ], 195*523fa7a6SAndroid Build Coastguard Worker deps = [ 196*523fa7a6SAndroid Build Coastguard Worker ":gen_oplist_lib", 197*523fa7a6SAndroid Build Coastguard Worker "//libfb/py:parutil", 198*523fa7a6SAndroid Build Coastguard Worker ], 199*523fa7a6SAndroid Build Coastguard Worker ) 200