Skip to content

Commit 90ee347

Browse files
authored
Add selective_build.bzl file in prepartion for next PR
Differential Revision: D82664665 Pull Request resolved: #14387
1 parent 907fde5 commit 90ee347

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2+
3+
def prim_ops_registry_selective(name, selected_prim_ops_header_target, aten_suffix="", **kwargs):
4+
"""
5+
Create a selective prim ops registry target.
6+
7+
Args:
8+
name: Name of the target to create
9+
selected_prim_ops_header_target: Target that generates selected_prim_ops.h
10+
aten_suffix: Suffix for aten mode (e.g. "_aten")
11+
**kwargs: Additional arguments passed to runtime.cxx_library
12+
"""
13+
14+
target = "//executorch/kernels/prim_ops:prim_ops_sources"
15+
header_target = "//executorch/kernels/prim_ops:selective_build_prim_ops.h"
16+
source_name = "register_prim_ops.cpp"
17+
header_name = "selective_build_prim_ops.h"
18+
genrule_dep_name = name + "_register_prim_ops_srcs_copy"
19+
runtime.genrule(
20+
name = genrule_dep_name,
21+
cmd = "cp -f $(location {})/{} $OUT/{} && cp -f $(location {})/{} $OUT/{} && cp -f $(location {selected_prim_ops_header_target})/selected_prim_ops.h $OUT/selected_prim_ops.h".format(
22+
target, source_name, source_name,
23+
header_target, header_name, header_name,
24+
selected_prim_ops_header_target=selected_prim_ops_header_target
25+
),
26+
outs = {
27+
source_name: [source_name],
28+
header_name: [header_name],
29+
"selected_prim_ops.h": ["selected_prim_ops.h"]
30+
},
31+
default_outs = ["."],
32+
)
33+
runtime.cxx_library(
34+
name = name,
35+
srcs = [":" + genrule_dep_name + "[register_prim_ops.cpp]"],
36+
exported_headers = {
37+
"selective_build_prim_ops.h": ":" + genrule_dep_name + "[selective_build_prim_ops.h]",
38+
"selected_prim_ops.h": ":" + genrule_dep_name + "[selected_prim_ops.h]"
39+
},
40+
visibility = [
41+
"//executorch/...",
42+
"@EXECUTORCH_CLIENTS",
43+
],
44+
# @lint-ignore BUCKLINT link_whole, need this to register prim ops.
45+
link_whole = True,
46+
# prim ops are registered through a global table so the ctor needs to be allowed
47+
compiler_flags = select({
48+
"DEFAULT": ["-Wno-global-constructors"],
49+
"ovr_config//os:windows": [],
50+
}) + ["-DET_PRIM_OPS_SELECTIVE_BUILD"],
51+
deps = [
52+
"//executorch/kernels/prim_ops:et_copy_index" + aten_suffix,
53+
"//executorch/kernels/prim_ops:et_view" + aten_suffix,
54+
"//executorch/runtime/core:evalue" + aten_suffix,
55+
"//executorch/runtime/kernel:operator_registry" + aten_suffix,
56+
"//executorch/runtime/kernel:kernel_includes" + aten_suffix,
57+
],
58+
**kwargs
59+
)

0 commit comments

Comments
 (0)