xref: /aosp_15_r20/external/pytorch/tools/BUCK.bzl (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker# @lint-ignore-every FBCODEBZLADDLOADS
2*da0073e9SAndroid Build Coastguard Workerload("//tools/build_defs:glob_defs.bzl", "subdir_glob")
3*da0073e9SAndroid Build Coastguard Worker
4*da0073e9SAndroid Build Coastguard Worker# shared by internal and OSS BUCK
5*da0073e9SAndroid Build Coastguard Workerdef define_tools_targets(
6*da0073e9SAndroid Build Coastguard Worker        python_binary,
7*da0073e9SAndroid Build Coastguard Worker        python_library,
8*da0073e9SAndroid Build Coastguard Worker        python_test,
9*da0073e9SAndroid Build Coastguard Worker        third_party,
10*da0073e9SAndroid Build Coastguard Worker        torchgen_deps,
11*da0073e9SAndroid Build Coastguard Worker        contacts = []):
12*da0073e9SAndroid Build Coastguard Worker    python_library(
13*da0073e9SAndroid Build Coastguard Worker        name = "substitutelib",
14*da0073e9SAndroid Build Coastguard Worker        srcs = ["substitute.py"],
15*da0073e9SAndroid Build Coastguard Worker        base_module = "",
16*da0073e9SAndroid Build Coastguard Worker    )
17*da0073e9SAndroid Build Coastguard Worker
18*da0073e9SAndroid Build Coastguard Worker    python_binary(
19*da0073e9SAndroid Build Coastguard Worker        name = "substitute",
20*da0073e9SAndroid Build Coastguard Worker        main_module = "substitute",
21*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
22*da0073e9SAndroid Build Coastguard Worker        deps = [
23*da0073e9SAndroid Build Coastguard Worker            ":substitutelib",
24*da0073e9SAndroid Build Coastguard Worker        ],
25*da0073e9SAndroid Build Coastguard Worker    )
26*da0073e9SAndroid Build Coastguard Worker
27*da0073e9SAndroid Build Coastguard Worker    python_library(
28*da0073e9SAndroid Build Coastguard Worker        name = "jit",
29*da0073e9SAndroid Build Coastguard Worker        srcs = glob([
30*da0073e9SAndroid Build Coastguard Worker            "jit/*.py",
31*da0073e9SAndroid Build Coastguard Worker            "jit/templates/*",
32*da0073e9SAndroid Build Coastguard Worker        ]),
33*da0073e9SAndroid Build Coastguard Worker        base_module = "tools",
34*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
35*da0073e9SAndroid Build Coastguard Worker        deps = [
36*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
37*da0073e9SAndroid Build Coastguard Worker        ],
38*da0073e9SAndroid Build Coastguard Worker    )
39*da0073e9SAndroid Build Coastguard Worker
40*da0073e9SAndroid Build Coastguard Worker    python_binary(
41*da0073e9SAndroid Build Coastguard Worker        name = "gen_unboxing_bin",
42*da0073e9SAndroid Build Coastguard Worker        main_module = "tools.jit.gen_unboxing",
43*da0073e9SAndroid Build Coastguard Worker        visibility = [
44*da0073e9SAndroid Build Coastguard Worker            "PUBLIC",
45*da0073e9SAndroid Build Coastguard Worker        ],
46*da0073e9SAndroid Build Coastguard Worker        deps = [
47*da0073e9SAndroid Build Coastguard Worker            ":jit",
48*da0073e9SAndroid Build Coastguard Worker        ],
49*da0073e9SAndroid Build Coastguard Worker    )
50*da0073e9SAndroid Build Coastguard Worker
51*da0073e9SAndroid Build Coastguard Worker    python_library(
52*da0073e9SAndroid Build Coastguard Worker        name = "gen_selected_mobile_ops_header",
53*da0073e9SAndroid Build Coastguard Worker        srcs = ["lite_interpreter/gen_selected_mobile_ops_header.py"],
54*da0073e9SAndroid Build Coastguard Worker        base_module = "tools",
55*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
56*da0073e9SAndroid Build Coastguard Worker    )
57*da0073e9SAndroid Build Coastguard Worker
58*da0073e9SAndroid Build Coastguard Worker    python_library(
59*da0073e9SAndroid Build Coastguard Worker        name = "gen_oplist_lib",
60*da0073e9SAndroid Build Coastguard Worker        srcs = subdir_glob([
61*da0073e9SAndroid Build Coastguard Worker            ("code_analyzer", "gen_oplist.py"),
62*da0073e9SAndroid Build Coastguard Worker            ("code_analyzer", "gen_op_registration_allowlist.py"),
63*da0073e9SAndroid Build Coastguard Worker        ]),
64*da0073e9SAndroid Build Coastguard Worker        base_module = "tools.code_analyzer",
65*da0073e9SAndroid Build Coastguard Worker        tests = [
66*da0073e9SAndroid Build Coastguard Worker            ":gen_oplist_test",
67*da0073e9SAndroid Build Coastguard Worker        ],
68*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
69*da0073e9SAndroid Build Coastguard Worker        deps = [
70*da0073e9SAndroid Build Coastguard Worker            ":gen_selected_mobile_ops_header",
71*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
72*da0073e9SAndroid Build Coastguard Worker            third_party("pyyaml"),
73*da0073e9SAndroid Build Coastguard Worker        ],
74*da0073e9SAndroid Build Coastguard Worker    )
75*da0073e9SAndroid Build Coastguard Worker
76*da0073e9SAndroid Build Coastguard Worker    python_binary(
77*da0073e9SAndroid Build Coastguard Worker        name = "gen_oplist",
78*da0073e9SAndroid Build Coastguard Worker        main_module = "tools.code_analyzer.gen_oplist",
79*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
80*da0073e9SAndroid Build Coastguard Worker        deps = [
81*da0073e9SAndroid Build Coastguard Worker            ":gen_oplist_lib",
82*da0073e9SAndroid Build Coastguard Worker        ],
83*da0073e9SAndroid Build Coastguard Worker    )
84*da0073e9SAndroid Build Coastguard Worker
85*da0073e9SAndroid Build Coastguard Worker    python_library(
86*da0073e9SAndroid Build Coastguard Worker        name = "gen_operators_yaml_lib",
87*da0073e9SAndroid Build Coastguard Worker        srcs = subdir_glob([
88*da0073e9SAndroid Build Coastguard Worker            ("code_analyzer", "gen_operators_yaml.py"),
89*da0073e9SAndroid Build Coastguard Worker            ("code_analyzer", "gen_op_registration_allowlist.py"),
90*da0073e9SAndroid Build Coastguard Worker        ]),
91*da0073e9SAndroid Build Coastguard Worker        base_module = "",
92*da0073e9SAndroid Build Coastguard Worker        tests = [
93*da0073e9SAndroid Build Coastguard Worker            ":gen_operators_yaml_test",
94*da0073e9SAndroid Build Coastguard Worker        ],
95*da0073e9SAndroid Build Coastguard Worker        deps = [
96*da0073e9SAndroid Build Coastguard Worker            third_party("pyyaml"),
97*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
98*da0073e9SAndroid Build Coastguard Worker        ],
99*da0073e9SAndroid Build Coastguard Worker    )
100*da0073e9SAndroid Build Coastguard Worker
101*da0073e9SAndroid Build Coastguard Worker    python_binary(
102*da0073e9SAndroid Build Coastguard Worker        name = "gen_operators_yaml",
103*da0073e9SAndroid Build Coastguard Worker        main_module = "gen_operators_yaml",
104*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
105*da0073e9SAndroid Build Coastguard Worker        deps = [
106*da0073e9SAndroid Build Coastguard Worker            ":gen_operators_yaml_lib",
107*da0073e9SAndroid Build Coastguard Worker        ],
108*da0073e9SAndroid Build Coastguard Worker    )
109*da0073e9SAndroid Build Coastguard Worker
110*da0073e9SAndroid Build Coastguard Worker    python_library(
111*da0073e9SAndroid Build Coastguard Worker        name = "autograd",
112*da0073e9SAndroid Build Coastguard Worker        srcs = glob(["autograd/*.py"]),
113*da0073e9SAndroid Build Coastguard Worker        base_module = "tools",
114*da0073e9SAndroid Build Coastguard Worker        resources = [
115*da0073e9SAndroid Build Coastguard Worker            "autograd/deprecated.yaml",
116*da0073e9SAndroid Build Coastguard Worker            "autograd/derivatives.yaml",
117*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/ADInplaceOrViewType.cpp",
118*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/Functions.cpp",
119*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/Functions.h",
120*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/TraceType.cpp",
121*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/VariableType.cpp",
122*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/VariableType.h",
123*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/ViewFuncs.cpp",
124*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/ViewFuncs.h",
125*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/annotated_fn_args.py.in",
126*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_enum_tag.cpp",
127*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_fft_functions.cpp",
128*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_functions.cpp",
129*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_functions.h",
130*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_linalg_functions.cpp",
131*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_nested_functions.cpp",
132*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_nn_functions.cpp",
133*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_return_types.h",
134*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_return_types.cpp",
135*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_sparse_functions.cpp",
136*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_special_functions.cpp",
137*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_torch_functions.cpp",
138*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/python_variable_methods.cpp",
139*da0073e9SAndroid Build Coastguard Worker            "autograd/templates/variable_factories.h",
140*da0073e9SAndroid Build Coastguard Worker        ],
141*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
142*da0073e9SAndroid Build Coastguard Worker        deps = [
143*da0073e9SAndroid Build Coastguard Worker            third_party("pyyaml"),
144*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
145*da0073e9SAndroid Build Coastguard Worker        ],
146*da0073e9SAndroid Build Coastguard Worker    )
147*da0073e9SAndroid Build Coastguard Worker
148*da0073e9SAndroid Build Coastguard Worker    python_library(
149*da0073e9SAndroid Build Coastguard Worker        name = "generate_code",
150*da0073e9SAndroid Build Coastguard Worker        srcs = [
151*da0073e9SAndroid Build Coastguard Worker            "setup_helpers/generate_code.py",
152*da0073e9SAndroid Build Coastguard Worker        ],
153*da0073e9SAndroid Build Coastguard Worker        base_module = "tools",
154*da0073e9SAndroid Build Coastguard Worker        deps = [
155*da0073e9SAndroid Build Coastguard Worker            ":autograd",
156*da0073e9SAndroid Build Coastguard Worker            ":jit",
157*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
158*da0073e9SAndroid Build Coastguard Worker        ],
159*da0073e9SAndroid Build Coastguard Worker    )
160*da0073e9SAndroid Build Coastguard Worker
161*da0073e9SAndroid Build Coastguard Worker    python_binary(
162*da0073e9SAndroid Build Coastguard Worker        name = "generate_code_bin",
163*da0073e9SAndroid Build Coastguard Worker        main_module = "tools.setup_helpers.generate_code",
164*da0073e9SAndroid Build Coastguard Worker        # Windows does not support inplace:
165*da0073e9SAndroid Build Coastguard Worker        # https://github.com/facebook/buck/issues/2161.
166*da0073e9SAndroid Build Coastguard Worker        #
167*da0073e9SAndroid Build Coastguard Worker        # Note that //arvr/mode/embedded/win/clang-aarch64-release sets
168*da0073e9SAndroid Build Coastguard Worker        # its target platform to
169*da0073e9SAndroid Build Coastguard Worker        # ovr_config//platform/embedded:clang-aarch64-linux-release, hence
170*da0073e9SAndroid Build Coastguard Worker        # that is why we are selecting that OS to trigger this behavior.
171*da0073e9SAndroid Build Coastguard Worker        package_style = select({
172*da0073e9SAndroid Build Coastguard Worker            "DEFAULT": "inplace",
173*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:linux-arm64": "standalone",
174*da0073e9SAndroid Build Coastguard Worker        }),
175*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
176*da0073e9SAndroid Build Coastguard Worker        # Because Windows does not support inplace packaging, we need to
177*da0073e9SAndroid Build Coastguard Worker        # ensure it is unzipped before executing it, otherwise it will not
178*da0073e9SAndroid Build Coastguard Worker        # be able to find any resources using path manipulation.
179*da0073e9SAndroid Build Coastguard Worker        #
180*da0073e9SAndroid Build Coastguard Worker        # See note above about why the OS is Linux here and not Windows.
181*da0073e9SAndroid Build Coastguard Worker        zip_safe = select({
182*da0073e9SAndroid Build Coastguard Worker            "DEFAULT": True,
183*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:linux-arm64": False,
184*da0073e9SAndroid Build Coastguard Worker        }),
185*da0073e9SAndroid Build Coastguard Worker        deps = [
186*da0073e9SAndroid Build Coastguard Worker            ":generate_code",
187*da0073e9SAndroid Build Coastguard Worker        ],
188*da0073e9SAndroid Build Coastguard Worker    )
189*da0073e9SAndroid Build Coastguard Worker
190*da0073e9SAndroid Build Coastguard Worker    python_library(
191*da0073e9SAndroid Build Coastguard Worker        name = "gen-version-header-lib",
192*da0073e9SAndroid Build Coastguard Worker        srcs = [
193*da0073e9SAndroid Build Coastguard Worker            "setup_helpers/gen_version_header.py",
194*da0073e9SAndroid Build Coastguard Worker        ],
195*da0073e9SAndroid Build Coastguard Worker        base_module = "",
196*da0073e9SAndroid Build Coastguard Worker        deps = [],
197*da0073e9SAndroid Build Coastguard Worker    )
198*da0073e9SAndroid Build Coastguard Worker
199*da0073e9SAndroid Build Coastguard Worker    python_binary(
200*da0073e9SAndroid Build Coastguard Worker        name = "gen-version-header",
201*da0073e9SAndroid Build Coastguard Worker        main_module = "setup_helpers.gen_version_header",
202*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
203*da0073e9SAndroid Build Coastguard Worker        deps = [
204*da0073e9SAndroid Build Coastguard Worker            ":gen-version-header-lib",
205*da0073e9SAndroid Build Coastguard Worker        ],
206*da0073e9SAndroid Build Coastguard Worker    )
207*da0073e9SAndroid Build Coastguard Worker
208*da0073e9SAndroid Build Coastguard Worker    python_library(
209*da0073e9SAndroid Build Coastguard Worker        name = "gen_aten_vulkan_spv_lib",
210*da0073e9SAndroid Build Coastguard Worker        srcs = [
211*da0073e9SAndroid Build Coastguard Worker            "gen_vulkan_spv.py",
212*da0073e9SAndroid Build Coastguard Worker        ],
213*da0073e9SAndroid Build Coastguard Worker        base_module = "tools",
214*da0073e9SAndroid Build Coastguard Worker        deps = [
215*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
216*da0073e9SAndroid Build Coastguard Worker        ],
217*da0073e9SAndroid Build Coastguard Worker    )
218*da0073e9SAndroid Build Coastguard Worker
219*da0073e9SAndroid Build Coastguard Worker    python_binary(
220*da0073e9SAndroid Build Coastguard Worker        name = "gen_aten_vulkan_spv_bin",
221*da0073e9SAndroid Build Coastguard Worker        main_module = "tools.gen_vulkan_spv",
222*da0073e9SAndroid Build Coastguard Worker        visibility = [
223*da0073e9SAndroid Build Coastguard Worker            "PUBLIC",
224*da0073e9SAndroid Build Coastguard Worker        ],
225*da0073e9SAndroid Build Coastguard Worker        deps = [
226*da0073e9SAndroid Build Coastguard Worker            ":gen_aten_vulkan_spv_lib",
227*da0073e9SAndroid Build Coastguard Worker        ],
228*da0073e9SAndroid Build Coastguard Worker    )
229*da0073e9SAndroid Build Coastguard Worker
230*da0073e9SAndroid Build Coastguard Worker    python_test(
231*da0073e9SAndroid Build Coastguard Worker        name = "vulkan_codegen_test",
232*da0073e9SAndroid Build Coastguard Worker        srcs = [
233*da0073e9SAndroid Build Coastguard Worker            "test/test_vulkan_codegen.py",
234*da0073e9SAndroid Build Coastguard Worker        ],
235*da0073e9SAndroid Build Coastguard Worker        contacts = contacts,
236*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
237*da0073e9SAndroid Build Coastguard Worker        deps = [
238*da0073e9SAndroid Build Coastguard Worker            ":gen_aten_vulkan_spv_lib",
239*da0073e9SAndroid Build Coastguard Worker        ],
240*da0073e9SAndroid Build Coastguard Worker    )
241*da0073e9SAndroid Build Coastguard Worker
242*da0073e9SAndroid Build Coastguard Worker    python_test(
243*da0073e9SAndroid Build Coastguard Worker        name = "selective_build_test",
244*da0073e9SAndroid Build Coastguard Worker        srcs = [
245*da0073e9SAndroid Build Coastguard Worker            "test/test_selective_build.py",
246*da0073e9SAndroid Build Coastguard Worker        ],
247*da0073e9SAndroid Build Coastguard Worker        contacts = contacts,
248*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
249*da0073e9SAndroid Build Coastguard Worker        deps = [
250*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
251*da0073e9SAndroid Build Coastguard Worker        ],
252*da0073e9SAndroid Build Coastguard Worker    )
253*da0073e9SAndroid Build Coastguard Worker
254*da0073e9SAndroid Build Coastguard Worker    python_test(
255*da0073e9SAndroid Build Coastguard Worker        name = "gen_oplist_test",
256*da0073e9SAndroid Build Coastguard Worker        srcs = [
257*da0073e9SAndroid Build Coastguard Worker            "test/gen_oplist_test.py",
258*da0073e9SAndroid Build Coastguard Worker        ],
259*da0073e9SAndroid Build Coastguard Worker        contacts = contacts,
260*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
261*da0073e9SAndroid Build Coastguard Worker        deps = [
262*da0073e9SAndroid Build Coastguard Worker            ":gen_oplist_lib",
263*da0073e9SAndroid Build Coastguard Worker        ],
264*da0073e9SAndroid Build Coastguard Worker    )
265*da0073e9SAndroid Build Coastguard Worker
266*da0073e9SAndroid Build Coastguard Worker    python_test(
267*da0073e9SAndroid Build Coastguard Worker        name = "gen_operators_yaml_test",
268*da0073e9SAndroid Build Coastguard Worker        srcs = [
269*da0073e9SAndroid Build Coastguard Worker            "test/gen_operators_yaml_test.py",
270*da0073e9SAndroid Build Coastguard Worker        ],
271*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
272*da0073e9SAndroid Build Coastguard Worker        contacts = contacts,
273*da0073e9SAndroid Build Coastguard Worker        deps = [
274*da0073e9SAndroid Build Coastguard Worker            ":gen_operators_yaml_lib",
275*da0073e9SAndroid Build Coastguard Worker        ],
276*da0073e9SAndroid Build Coastguard Worker    )
277*da0073e9SAndroid Build Coastguard Worker
278*da0073e9SAndroid Build Coastguard Worker    python_test(
279*da0073e9SAndroid Build Coastguard Worker        name = "test_codegen",
280*da0073e9SAndroid Build Coastguard Worker        srcs = [
281*da0073e9SAndroid Build Coastguard Worker            "test/test_codegen.py",
282*da0073e9SAndroid Build Coastguard Worker        ],
283*da0073e9SAndroid Build Coastguard Worker        contacts = contacts,
284*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
285*da0073e9SAndroid Build Coastguard Worker        deps = [
286*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
287*da0073e9SAndroid Build Coastguard Worker            ":autograd",
288*da0073e9SAndroid Build Coastguard Worker        ],
289*da0073e9SAndroid Build Coastguard Worker    )
290*da0073e9SAndroid Build Coastguard Worker
291*da0073e9SAndroid Build Coastguard Worker    python_test(
292*da0073e9SAndroid Build Coastguard Worker        name = "test_torchgen_executorch",
293*da0073e9SAndroid Build Coastguard Worker        srcs = [
294*da0073e9SAndroid Build Coastguard Worker            "test/test_executorch_gen.py",
295*da0073e9SAndroid Build Coastguard Worker            "test/test_executorch_signatures.py",
296*da0073e9SAndroid Build Coastguard Worker            "test/test_executorch_types.py",
297*da0073e9SAndroid Build Coastguard Worker            "test/test_executorch_unboxing.py",
298*da0073e9SAndroid Build Coastguard Worker        ],
299*da0073e9SAndroid Build Coastguard Worker        contacts = contacts,
300*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
301*da0073e9SAndroid Build Coastguard Worker        deps = [
302*da0073e9SAndroid Build Coastguard Worker            torchgen_deps,
303*da0073e9SAndroid Build Coastguard Worker        ],
304*da0073e9SAndroid Build Coastguard Worker    )
305