xref: /aosp_15_r20/external/pytorch/pt_template_srcs.bzl (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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