xref: /aosp_15_r20/external/executorch/codegen/tools/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
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