xref: /aosp_15_r20/external/executorch/kernels/portable/cpu/util/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2
3def define_common_targets():
4    """Defines targets that should be shared between fbcode and xplat.
5
6    The directory containing this targets.bzl file should also contain both
7    TARGETS and BUCK files that call this function.
8    """
9
10    # Note: add all portable_op dependencies to all_deps. This is used for dtype selective
11    # build, where the portable ops are built from source and linked with :all_deps
12    runtime.cxx_library(
13        name = "all_deps",
14        deps = [
15            "//executorch/kernels/portable/cpu/util:functional_util",
16            "//executorch/kernels/portable/cpu/util:broadcast_util",
17            "//executorch/kernels/portable/cpu/util:kernel_ops_util",
18            "//executorch/kernels/portable/cpu:vec_ops",
19            "//executorch/kernels/portable/cpu/util:matmul_ops_util",
20            "//executorch/kernels/portable/cpu/util:copy_ops_util",
21            "//executorch/kernels/portable/cpu/util:transpose_util",
22            "//executorch/kernels/portable/cpu/util:index_util",
23            "//executorch/kernels/portable/cpu/util:math_util",
24            "//executorch/kernels/portable/cpu/util:padding_util",
25            "//executorch/kernels/portable/cpu/util:repeat_util",
26            "//executorch/kernels/portable/cpu/util:activation_ops_util",
27            "//executorch/kernels/portable/cpu/util:reduce_util",
28            "//executorch/kernels/portable/cpu/util:normalization_ops_util",
29            "//executorch/kernels/portable/cpu/util:distance_util",
30            "//executorch/kernels/portable/cpu/util:select_copy_util",
31            "//executorch/kernels/portable/cpu/util:advanced_index_util",
32            "//executorch/kernels/portable/cpu/util:slice_util",
33            "//executorch/kernels/portable/cpu/util:elementwise_util",
34        ],
35        visibility = ["//executorch/...", "@EXECUTORCH_CLIENTS"],
36    )
37
38    runtime.cxx_library(
39        name = "activation_ops_util",
40        srcs = ["activation_ops_util.cpp"],
41        exported_headers = [
42            "activation_ops_util.h",
43        ],
44        compiler_flags = ["-Wno-missing-prototypes"],
45        deps = [
46            "//executorch/runtime/kernel:kernel_includes",
47        ],
48        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
49    )
50
51    runtime.cxx_library(
52        name = "repeat_util",
53        srcs = [
54            "repeat_util.cpp",
55        ],
56        exported_headers = ["repeat_util.h"],
57        deps = [
58            "//executorch/runtime/kernel:kernel_includes",
59            "//executorch/runtime/core/exec_aten/util:scalar_type_util",
60            "//executorch/runtime/core/exec_aten/util:tensor_util",
61        ],
62        compiler_flags = ["-Wno-missing-prototypes"],
63        visibility = ["//executorch/kernels/portable/cpu/..."],
64    )
65
66    runtime.cxx_library(
67        name = "broadcast_util",
68        srcs = ["broadcast_util.cpp"],
69        exported_headers = [
70            "broadcast_util.h",
71        ],
72        compiler_flags = ["-Wno-missing-prototypes"],
73        deps = [
74            ":repeat_util",
75            "//executorch/runtime/kernel:kernel_includes",
76            "//executorch/runtime/core/exec_aten/util:tensor_util",
77        ],
78        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/...", "@EXECUTORCH_CLIENTS"],
79    )
80
81    runtime.cxx_library(
82        name = "dtype_util",
83        srcs = ["dtype_util.cpp"],
84        exported_headers = [
85            "dtype_util.h",
86        ],
87        compiler_flags = ["-Wno-missing-prototypes"],
88        deps = [
89            "//executorch/runtime/kernel:kernel_includes",
90        ],
91        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
92    )
93
94    runtime.cxx_library(
95        name = "elementwise_util",
96        exported_headers = [
97            "elementwise_util.h",
98        ],
99        compiler_flags = ["-Wno-missing-prototypes"],
100        deps = [
101            ":broadcast_util",
102            ":dtype_util",
103            "//executorch/kernels/portable/cpu:scalar_utils",
104            "//executorch/runtime/kernel:kernel_includes",
105        ],
106        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
107    )
108
109    runtime.cxx_library(
110        name = "advanced_index_util",
111        srcs = ["advanced_index_util.cpp"],
112        exported_headers = [
113            "advanced_index_util.h",
114        ],
115        compiler_flags = ["-Wno-missing-prototypes"],
116        deps = [
117            ":broadcast_util",
118            "//executorch/runtime/kernel:kernel_includes",
119        ],
120        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
121    )
122
123    runtime.cxx_library(
124        name = "copy_ops_util",
125        srcs = ["copy_ops_util.cpp"],
126        exported_headers = [
127            "copy_ops_util.h",
128        ],
129        compiler_flags = ["-Wno-missing-prototypes"],
130        deps = [
131            "//executorch/runtime/kernel:kernel_includes",
132        ],
133        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
134    )
135
136    runtime.cxx_library(
137        name = "distance_util",
138        srcs = ["distance_util.cpp"],
139        exported_headers = [
140            "distance_util.h",
141        ],
142        compiler_flags = ["-Wno-missing-prototypes"],
143        deps = [
144            "//executorch/runtime/kernel:kernel_includes",
145        ],
146        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
147    )
148
149    runtime.cxx_library(
150        name = "kernel_ops_util",
151        srcs = ["kernel_ops_util.cpp"],
152        exported_headers = [
153            "kernel_ops_util.h",
154        ],
155        compiler_flags = ["-Wno-missing-prototypes"],
156        deps = [
157            "//executorch/runtime/kernel:kernel_includes",
158        ],
159        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
160    )
161
162    runtime.cxx_library(
163        name = "matmul_ops_util",
164        srcs = ["matmul_ops_util.cpp"],
165        exported_headers = [
166            "matmul_ops_util.h",
167        ],
168        compiler_flags = ["-Wno-missing-prototypes"],
169        deps = [
170            ":broadcast_util",
171            "//executorch/runtime/kernel:kernel_includes",
172        ],
173        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
174    )
175
176    runtime.cxx_library(
177        name = "padding_util",
178        srcs = ["padding_util.cpp"],
179        exported_headers = [
180            "padding_util.h",
181        ],
182        compiler_flags = ["-Wno-missing-prototypes"],
183        deps = [
184            "//executorch/runtime/kernel:kernel_includes",
185        ],
186        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
187    )
188
189    runtime.cxx_library(
190        name = "normalization_ops_util",
191        srcs = ["normalization_ops_util.cpp"],
192        exported_headers = [
193            "normalization_ops_util.h",
194        ],
195        compiler_flags = ["-Wno-missing-prototypes"],
196        deps = [
197            "//executorch/runtime/kernel:kernel_includes",
198        ],
199        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/optimized/cpu/..."],
200    )
201
202    runtime.cxx_library(
203        name = "transpose_util",
204        exported_headers = [
205            "transpose_util.h",
206        ],
207        deps = [
208            "//executorch/runtime/kernel:kernel_includes",
209            "//executorch/runtime/core/exec_aten/util:tensor_util",
210        ],
211        visibility = ["//executorch/kernels/portable/cpu/..."],
212    )
213
214    # Utility functions that can be used by operators that perform indexing
215    runtime.cxx_library(
216        name = "index_util",
217        srcs = ["index_util.cpp"],
218        exported_headers = ["index_util.h"],
219        deps = [
220            "//executorch/runtime/kernel:kernel_includes",
221            "//executorch/runtime/core/exec_aten/util:tensor_util",
222        ],
223        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/quantized/..."],
224    )
225
226    # Utility functions that can be used by operators that repeat the same computation for each element in the tensor
227    # Note that because this is a header only library, targets must also depend on broadcast_util.
228    runtime.cxx_library(
229        name = "functional_util",
230        srcs = [],
231        exported_headers = ["functional_util.h"],
232        deps = [
233            "//executorch/runtime/kernel:kernel_includes",
234            "//executorch/runtime/core/exec_aten/util:tensor_util",
235            ":broadcast_util",
236        ],
237        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/quantized/...", "@EXECUTORCH_CLIENTS"],
238    )
239
240    runtime.cxx_library(
241        name = "math_util",
242        srcs = [],
243        exported_headers = ["math_util.h"],
244        visibility = ["//executorch/kernels/portable/cpu/...", "//executorch/kernels/quantized/..."],
245    )
246
247    runtime.cxx_library(
248        name = "select_copy_util",
249        srcs = ["select_copy_util.cpp"],
250        exported_headers = ["select_copy_util.h"],
251        deps = [
252            ":copy_ops_util",
253            "//executorch/runtime/kernel:kernel_includes",
254            "//executorch/runtime/core/exec_aten/util:tensor_util",
255        ],
256        visibility = ["//executorch/kernels/portable/cpu/..."],
257    )
258
259    runtime.cxx_library(
260        name = "slice_util",
261        srcs = ["slice_util.cpp"],
262        exported_headers = ["slice_util.h"],
263        deps = [
264            "//executorch/runtime/kernel:kernel_includes",
265        ],
266        visibility = ["//executorch/kernels/portable/cpu/..."],
267    )
268
269    # Utility functions that can be used by operators that perform reduction
270    for aten_mode in [True, False]:
271        suffix = "_aten" if aten_mode else ""
272        runtime.cxx_library(
273            name = "reduce_util{}".format(suffix),
274            srcs = ["reduce_util.cpp"],
275            exported_headers = ["reduce_util.h"],
276            deps = [
277                "//executorch/runtime/kernel:kernel_includes{}".format(suffix),
278                "//executorch/runtime/core/exec_aten/util:tensor_util{}".format(suffix),
279            ],
280            exported_preprocessor_flags = ["-DUSE_ATEN_LIB"] if aten_mode else [],
281            visibility = [
282                "//executorch/extension/llm/custom_ops/...",
283                "//executorch/kernels/portable/cpu/...",
284                "//executorch/kernels/quantized/...",
285                "@EXECUTORCH_CLIENTS",
286            ],
287        )
288