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