1*da0073e9SAndroid Build Coastguard Worker# This file keeps a list of PyTorch source files that are used for templated selective build. 2*da0073e9SAndroid Build Coastguard Worker# NB: as this is PyTorch Edge selective build, we assume only CPU targets are 3*da0073e9SAndroid Build Coastguard Worker# being built 4*da0073e9SAndroid Build Coastguard Worker 5*da0073e9SAndroid Build Coastguard Workerload("@bazel_skylib//lib:paths.bzl", "paths") 6*da0073e9SAndroid Build Coastguard Workerload("//tools/build_defs:fbsource_utils.bzl", "is_arvr_mode") 7*da0073e9SAndroid Build Coastguard Workerload(":build_variables.bzl", "aten_native_source_list") 8*da0073e9SAndroid Build Coastguard Workerload( 9*da0073e9SAndroid Build Coastguard Worker ":ufunc_defs.bzl", 10*da0073e9SAndroid Build Coastguard Worker "aten_ufunc_generated_cpu_kernel_sources", 11*da0073e9SAndroid Build Coastguard Worker "aten_ufunc_generated_cpu_sources", 12*da0073e9SAndroid Build Coastguard Worker) 13*da0073e9SAndroid Build Coastguard Worker 14*da0073e9SAndroid Build Coastguard Worker# Files in this list are supposed to be built separately for each app, 15*da0073e9SAndroid Build Coastguard Worker# for different operator allow lists. 16*da0073e9SAndroid Build Coastguard WorkerTEMPLATE_SOURCE_LIST = [ 17*da0073e9SAndroid Build Coastguard Worker "torch/csrc/jit/runtime/register_prim_ops.cpp", 18*da0073e9SAndroid Build Coastguard Worker "torch/csrc/jit/runtime/register_special_ops.cpp", 19*da0073e9SAndroid Build Coastguard Worker] + aten_native_source_list 20*da0073e9SAndroid Build Coastguard Worker 21*da0073e9SAndroid Build Coastguard Worker# For selective build, we can lump the CPU and CPU kernel sources altogether 22*da0073e9SAndroid Build Coastguard Worker# because there is only ever one vectorization variant that is compiled 23*da0073e9SAndroid Build Coastguard Workerdef aten_ufunc_generated_all_cpu_sources(gencode_pattern = "{}"): 24*da0073e9SAndroid Build Coastguard Worker return ( 25*da0073e9SAndroid Build Coastguard Worker aten_ufunc_generated_cpu_sources(gencode_pattern) + 26*da0073e9SAndroid Build Coastguard Worker aten_ufunc_generated_cpu_kernel_sources(gencode_pattern) 27*da0073e9SAndroid Build Coastguard Worker ) 28*da0073e9SAndroid Build Coastguard Worker 29*da0073e9SAndroid Build Coastguard WorkerTEMPLATE_MASKRCNN_SOURCE_LIST = [ 30*da0073e9SAndroid Build Coastguard Worker "register_maskrcnn_ops.cpp", 31*da0073e9SAndroid Build Coastguard Worker] 32*da0073e9SAndroid Build Coastguard Worker 33*da0073e9SAndroid Build Coastguard WorkerTEMPLATE_BATCH_BOX_COX_SOURCE_LIST = [ 34*da0073e9SAndroid Build Coastguard Worker "register_batch_box_cox_ops.cpp", 35*da0073e9SAndroid Build Coastguard Worker] 36*da0073e9SAndroid Build Coastguard Worker 37*da0073e9SAndroid Build Coastguard WorkerMETAL_SOURCE_LIST = [ 38*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalAten.mm", 39*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalGuardImpl.cpp", 40*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalPrepackOpRegister.cpp", 41*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalCommandBuffer.mm", 42*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalContext.mm", 43*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalConvParams.mm", 44*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalTensorImplStorage.mm", 45*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/MetalTensorUtils.mm", 46*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSCNNClampOp.mm", 47*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSCNNConvOp.mm", 48*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSCNNFullyConnectedOp.mm", 49*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSCNNNeuronOp.mm", 50*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSCNNUtils.mm", 51*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSImage+Tensor.mm", 52*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSImageUtils.mm", 53*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/mpscnn/MPSImageWrapper.mm", 54*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalAddmm.mm", 55*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalBinaryElementwise.mm", 56*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalChunk.mm", 57*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalClamp.mm", 58*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalConcat.mm", 59*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalConvolution.mm", 60*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalCopy.mm", 61*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalHardswish.mm", 62*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalHardshrink.mm", 63*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalLeakyReLU.mm", 64*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalNeurons.mm", 65*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalPadding.mm", 66*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalPooling.mm", 67*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalReduce.mm", 68*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalReshape.mm", 69*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalSoftmax.mm", 70*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalTranspose.mm", 71*da0073e9SAndroid Build Coastguard Worker "aten/src/ATen/native/metal/ops/MetalUpsamplingNearest.mm", 72*da0073e9SAndroid Build Coastguard Worker] 73*da0073e9SAndroid Build Coastguard Worker 74*da0073e9SAndroid Build Coastguard WorkerUNET_METAL_PREPACK_SOURCE_LIST = [ 75*da0073e9SAndroid Build Coastguard Worker "unet_metal_prepack.cpp", 76*da0073e9SAndroid Build Coastguard Worker "unet_metal_prepack.mm", 77*da0073e9SAndroid Build Coastguard Worker] 78*da0073e9SAndroid Build Coastguard Worker 79*da0073e9SAndroid Build Coastguard WorkerMETAL_MASKRCNN_SOURCE_LIST = [ 80*da0073e9SAndroid Build Coastguard Worker "maskrcnn/srcs/GenerateProposals.mm", 81*da0073e9SAndroid Build Coastguard Worker "maskrcnn/srcs/RoIAlign.mm", 82*da0073e9SAndroid Build Coastguard Worker] 83*da0073e9SAndroid Build Coastguard Worker 84*da0073e9SAndroid Build Coastguard Worker# The get_template_source_dict() returns a dict containing a path prefix 85*da0073e9SAndroid Build Coastguard Worker# and a list of .cpp source files containing operator definitions and 86*da0073e9SAndroid Build Coastguard Worker# registrations that should get selected via templated selective build. 87*da0073e9SAndroid Build Coastguard Worker# The file selected_mobile_ops.h has the list of selected top level 88*da0073e9SAndroid Build Coastguard Worker# operators. 89*da0073e9SAndroid Build Coastguard Worker# NB: doesn't include generated files; copy_template_registration_files 90*da0073e9SAndroid Build Coastguard Worker# handles those specially 91*da0073e9SAndroid Build Coastguard Workerdef get_template_source_dict(): 92*da0073e9SAndroid Build Coastguard Worker ret = {} 93*da0073e9SAndroid Build Coastguard Worker for file_path in TEMPLATE_SOURCE_LIST: 94*da0073e9SAndroid Build Coastguard Worker path_prefix = paths.dirname(file_path) 95*da0073e9SAndroid Build Coastguard Worker if path_prefix not in ret: 96*da0073e9SAndroid Build Coastguard Worker ret[path_prefix] = [] 97*da0073e9SAndroid Build Coastguard Worker ret[path_prefix].append(file_path) 98*da0073e9SAndroid Build Coastguard Worker return ret 99*da0073e9SAndroid Build Coastguard Worker 100*da0073e9SAndroid Build Coastguard Workerdef get_gen_oplist_outs(): 101*da0073e9SAndroid Build Coastguard Worker return { 102*da0073e9SAndroid Build Coastguard Worker "SupportedMobileModelsRegistration.cpp": [ 103*da0073e9SAndroid Build Coastguard Worker "SupportedMobileModelsRegistration.cpp", 104*da0073e9SAndroid Build Coastguard Worker ], 105*da0073e9SAndroid Build Coastguard Worker "selected_mobile_ops.h": [ 106*da0073e9SAndroid Build Coastguard Worker "selected_mobile_ops.h", 107*da0073e9SAndroid Build Coastguard Worker ], 108*da0073e9SAndroid Build Coastguard Worker "selected_operators.yaml": [ 109*da0073e9SAndroid Build Coastguard Worker "selected_operators.yaml", 110*da0073e9SAndroid Build Coastguard Worker ], 111*da0073e9SAndroid Build Coastguard Worker } 112*da0073e9SAndroid Build Coastguard Worker 113*da0073e9SAndroid Build Coastguard Workerdef get_generate_code_bin_outs(): 114*da0073e9SAndroid Build Coastguard Worker outs = { 115*da0073e9SAndroid Build Coastguard Worker "autograd/generated/ADInplaceOrViewTypeEverything.cpp": ["autograd/generated/ADInplaceOrViewTypeEverything.cpp"], 116*da0073e9SAndroid Build Coastguard Worker "autograd/generated/ADInplaceOrViewType_0.cpp": ["autograd/generated/ADInplaceOrViewType_0.cpp"], 117*da0073e9SAndroid Build Coastguard Worker "autograd/generated/ADInplaceOrViewType_1.cpp": ["autograd/generated/ADInplaceOrViewType_1.cpp"], 118*da0073e9SAndroid Build Coastguard Worker "autograd/generated/Functions.cpp": ["autograd/generated/Functions.cpp"], 119*da0073e9SAndroid Build Coastguard Worker "autograd/generated/Functions.h": ["autograd/generated/Functions.h"], 120*da0073e9SAndroid Build Coastguard Worker "autograd/generated/TraceTypeEverything.cpp": ["autograd/generated/TraceTypeEverything.cpp"], 121*da0073e9SAndroid Build Coastguard Worker "autograd/generated/TraceType_0.cpp": ["autograd/generated/TraceType_0.cpp"], 122*da0073e9SAndroid Build Coastguard Worker "autograd/generated/TraceType_1.cpp": ["autograd/generated/TraceType_1.cpp"], 123*da0073e9SAndroid Build Coastguard Worker "autograd/generated/TraceType_2.cpp": ["autograd/generated/TraceType_2.cpp"], 124*da0073e9SAndroid Build Coastguard Worker "autograd/generated/TraceType_3.cpp": ["autograd/generated/TraceType_3.cpp"], 125*da0073e9SAndroid Build Coastguard Worker "autograd/generated/TraceType_4.cpp": ["autograd/generated/TraceType_4.cpp"], 126*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableType.h": ["autograd/generated/VariableType.h"], 127*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableTypeEverything.cpp": ["autograd/generated/VariableTypeEverything.cpp"], 128*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableType_0.cpp": ["autograd/generated/VariableType_0.cpp"], 129*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableType_1.cpp": ["autograd/generated/VariableType_1.cpp"], 130*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableType_2.cpp": ["autograd/generated/VariableType_2.cpp"], 131*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableType_3.cpp": ["autograd/generated/VariableType_3.cpp"], 132*da0073e9SAndroid Build Coastguard Worker "autograd/generated/VariableType_4.cpp": ["autograd/generated/VariableType_4.cpp"], 133*da0073e9SAndroid Build Coastguard Worker "autograd/generated/variable_factories.h": ["autograd/generated/variable_factories.h"], 134*da0073e9SAndroid Build Coastguard Worker "autograd/generated/ViewFuncs.cpp": ["autograd/generated/ViewFuncs.cpp"], 135*da0073e9SAndroid Build Coastguard Worker "autograd/generated/ViewFuncs.h": ["autograd/generated/ViewFuncs.h"], 136*da0073e9SAndroid Build Coastguard Worker } 137*da0073e9SAndroid Build Coastguard Worker 138*da0073e9SAndroid Build Coastguard Worker if is_arvr_mode(): 139*da0073e9SAndroid Build Coastguard Worker outs.update({ 140*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_enum_tag.cpp": ["autograd/generated/python_enum_tag.cpp"], 141*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_fft_functions.cpp": ["autograd/generated/python_fft_functions.cpp"], 142*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_functions.h": ["autograd/generated/python_functions.h"], 143*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_functions_0.cpp": ["autograd/generated/python_functions_0.cpp"], 144*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_functions_1.cpp": ["autograd/generated/python_functions_1.cpp"], 145*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_functions_2.cpp": ["autograd/generated/python_functions_2.cpp"], 146*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_functions_3.cpp": ["autograd/generated/python_functions_3.cpp"], 147*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_functions_4.cpp": ["autograd/generated/python_functions_4.cpp"], 148*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_linalg_functions.cpp": ["autograd/generated/python_linalg_functions.cpp"], 149*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_nested_functions.cpp": ["autograd/generated/python_nested_functions.cpp"], 150*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_nn_functions.cpp": ["autograd/generated/python_nn_functions.cpp"], 151*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_return_types.h": ["autograd/generated/python_return_types.h"], 152*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_return_types.cpp": ["autograd/generated/python_return_types.cpp"], 153*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_sparse_functions.cpp": ["autograd/generated/python_sparse_functions.cpp"], 154*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_special_functions.cpp": ["autograd/generated/python_special_functions.cpp"], 155*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_torch_functions_0.cpp": ["autograd/generated/python_torch_functions_0.cpp"], 156*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_torch_functions_1.cpp": ["autograd/generated/python_torch_functions_1.cpp"], 157*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_torch_functions_2.cpp": ["autograd/generated/python_torch_functions_2.cpp"], 158*da0073e9SAndroid Build Coastguard Worker "autograd/generated/python_variable_methods.cpp": ["autograd/generated/python_variable_methods.cpp"], 159*da0073e9SAndroid Build Coastguard Worker }) 160*da0073e9SAndroid Build Coastguard Worker return outs 161*da0073e9SAndroid Build Coastguard Worker 162*da0073e9SAndroid Build Coastguard Workerdef get_template_registration_files_outs(is_oss = False): 163*da0073e9SAndroid Build Coastguard Worker outs = {} 164*da0073e9SAndroid Build Coastguard Worker if not is_oss: 165*da0073e9SAndroid Build Coastguard Worker for file_path in TEMPLATE_MASKRCNN_SOURCE_LIST: 166*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 167*da0073e9SAndroid Build Coastguard Worker 168*da0073e9SAndroid Build Coastguard Worker for file_path in TEMPLATE_BATCH_BOX_COX_SOURCE_LIST: 169*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 170*da0073e9SAndroid Build Coastguard Worker 171*da0073e9SAndroid Build Coastguard Worker for file_path in TEMPLATE_SOURCE_LIST: 172*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 173*da0073e9SAndroid Build Coastguard Worker 174*da0073e9SAndroid Build Coastguard Worker for base_name in aten_ufunc_generated_all_cpu_sources(): 175*da0073e9SAndroid Build Coastguard Worker file_path = "aten/src/ATen/{}".format(base_name) 176*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 177*da0073e9SAndroid Build Coastguard Worker 178*da0073e9SAndroid Build Coastguard Worker return outs 179*da0073e9SAndroid Build Coastguard Worker 180*da0073e9SAndroid Build Coastguard Workerdef get_template_registration_file_rules(rule_name, is_oss = False): 181*da0073e9SAndroid Build Coastguard Worker rules = [] 182*da0073e9SAndroid Build Coastguard Worker for file_path in TEMPLATE_SOURCE_LIST if is_oss else (TEMPLATE_SOURCE_LIST + TEMPLATE_MASKRCNN_SOURCE_LIST + TEMPLATE_BATCH_BOX_COX_SOURCE_LIST): 183*da0073e9SAndroid Build Coastguard Worker rules.append(":{}[{}]".format(rule_name, file_path)) 184*da0073e9SAndroid Build Coastguard Worker for file_path in aten_ufunc_generated_all_cpu_sources(): 185*da0073e9SAndroid Build Coastguard Worker rules.append(":{}[aten/src/ATen/{}]".format(rule_name, file_path)) 186*da0073e9SAndroid Build Coastguard Worker 187*da0073e9SAndroid Build Coastguard Worker return rules 188*da0073e9SAndroid Build Coastguard Worker 189*da0073e9SAndroid Build Coastguard Worker# ---------------------METAL RULES--------------------- 190*da0073e9SAndroid Build Coastguard Workerdef get_metal_source_dict(): 191*da0073e9SAndroid Build Coastguard Worker ret = {} 192*da0073e9SAndroid Build Coastguard Worker for file_path in METAL_SOURCE_LIST: 193*da0073e9SAndroid Build Coastguard Worker path_prefix = paths.dirname(file_path) 194*da0073e9SAndroid Build Coastguard Worker if path_prefix not in ret: 195*da0073e9SAndroid Build Coastguard Worker ret[path_prefix] = [] 196*da0073e9SAndroid Build Coastguard Worker ret[path_prefix].append(file_path) 197*da0073e9SAndroid Build Coastguard Worker return ret 198*da0073e9SAndroid Build Coastguard Worker 199*da0073e9SAndroid Build Coastguard Workerdef get_metal_registration_files_outs(): 200*da0073e9SAndroid Build Coastguard Worker outs = {} 201*da0073e9SAndroid Build Coastguard Worker for file_path in METAL_SOURCE_LIST: 202*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 203*da0073e9SAndroid Build Coastguard Worker 204*da0073e9SAndroid Build Coastguard Worker for file_path in UNET_METAL_PREPACK_SOURCE_LIST: 205*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 206*da0073e9SAndroid Build Coastguard Worker 207*da0073e9SAndroid Build Coastguard Worker for file_path in METAL_MASKRCNN_SOURCE_LIST: 208*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 209*da0073e9SAndroid Build Coastguard Worker return outs 210*da0073e9SAndroid Build Coastguard Worker 211*da0073e9SAndroid Build Coastguard Worker# There is a really weird issue with the arvr windows builds where 212*da0073e9SAndroid Build Coastguard Worker# the custom op files are breaking them. See https://fburl.com/za87443c 213*da0073e9SAndroid Build Coastguard Worker# The hack is just to not build them for that platform and pray they arent needed. 214*da0073e9SAndroid Build Coastguard Workerdef get_metal_registration_files_outs_windows(): 215*da0073e9SAndroid Build Coastguard Worker outs = {} 216*da0073e9SAndroid Build Coastguard Worker for file_path in METAL_SOURCE_LIST: 217*da0073e9SAndroid Build Coastguard Worker outs[file_path] = [file_path] 218*da0073e9SAndroid Build Coastguard Worker return outs 219*da0073e9SAndroid Build Coastguard Worker 220*da0073e9SAndroid Build Coastguard Workerdef get_metal_registration_files_rules(rule_name): 221*da0073e9SAndroid Build Coastguard Worker ret = {} 222*da0073e9SAndroid Build Coastguard Worker objc_rules = [] 223*da0073e9SAndroid Build Coastguard Worker cxx_rules = [] 224*da0073e9SAndroid Build Coastguard Worker 225*da0073e9SAndroid Build Coastguard Worker for file_path in METAL_SOURCE_LIST + METAL_MASKRCNN_SOURCE_LIST + UNET_METAL_PREPACK_SOURCE_LIST: 226*da0073e9SAndroid Build Coastguard Worker if ".cpp" not in file_path: 227*da0073e9SAndroid Build Coastguard Worker objc_rules.append(":{}[{}]".format(rule_name, file_path)) 228*da0073e9SAndroid Build Coastguard Worker else: 229*da0073e9SAndroid Build Coastguard Worker cxx_rules.append(":{}[{}]".format(rule_name, file_path)) 230*da0073e9SAndroid Build Coastguard Worker ret["objc"] = objc_rules 231*da0073e9SAndroid Build Coastguard Worker ret["cxx"] = cxx_rules 232*da0073e9SAndroid Build Coastguard Worker return ret 233*da0073e9SAndroid Build Coastguard Worker 234*da0073e9SAndroid Build Coastguard Workerdef get_metal_registration_files_rules_windows(rule_name): 235*da0073e9SAndroid Build Coastguard Worker ret = {} 236*da0073e9SAndroid Build Coastguard Worker objc_rules = [] 237*da0073e9SAndroid Build Coastguard Worker cxx_rules = [] 238*da0073e9SAndroid Build Coastguard Worker 239*da0073e9SAndroid Build Coastguard Worker for file_path in METAL_SOURCE_LIST: 240*da0073e9SAndroid Build Coastguard Worker if ".cpp" not in file_path: 241*da0073e9SAndroid Build Coastguard Worker objc_rules.append(":{}[{}]".format(rule_name, file_path)) 242*da0073e9SAndroid Build Coastguard Worker else: 243*da0073e9SAndroid Build Coastguard Worker cxx_rules.append(":{}[{}]".format(rule_name, file_path)) 244*da0073e9SAndroid Build Coastguard Worker ret["objc"] = objc_rules 245*da0073e9SAndroid Build Coastguard Worker ret["cxx"] = cxx_rules 246*da0073e9SAndroid Build Coastguard Worker return ret 247