|
1 | 1 | load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime", "is_arvr_mode") |
2 | 2 |
|
3 | | -def get_sleef_preprocessor_flags(): |
| 3 | +def get_preprocessor_flags(is_fbcode): |
| 4 | + flags = ["-DSTANDALONE_TORCH_HEADER"] |
4 | 5 | if runtime.is_oss: |
5 | | - return [] |
6 | | - return ["-DAT_BUILD_ARM_VEC256_WITH_SLEEF"] |
| 6 | + return flags |
| 7 | + arm64_flags = [ |
| 8 | + "-DCPU_CAPABILITY_DEFAULT", |
| 9 | + ] |
| 10 | + if is_fbcode: |
| 11 | + # TODO: enable Sleef in xplat? |
| 12 | + arm64_flags = arm64_flags + ["-DAT_BUILD_ARM_VEC256_WITH_SLEEF"] |
| 13 | + |
| 14 | + x86_avx2_flags = [ |
| 15 | + "-DCPU_CAPABILITY_AVX2", |
| 16 | + "-DHAVE_AVX2_CPU_DEFINITION", |
| 17 | + ] |
| 18 | + default_flags = [ |
| 19 | + "-DCPU_CAPABILITY_DEFAULT", |
| 20 | + ] |
| 21 | + fbcode_flags = select({ |
| 22 | + "ovr_config//cpu:x86_64": x86_avx2_flags, |
| 23 | + "ovr_config//cpu:arm64": arm64_flags, |
| 24 | + "DEFAULT": default_flags, |
| 25 | + }) |
| 26 | + non_fbcode_flags = select({ |
| 27 | + "ovr_config//cpu/x86:avx2": x86_avx2_flags, |
| 28 | + "ovr_config//cpu:arm64": arm64_flags, |
| 29 | + "DEFAULT": default_flags, |
| 30 | + }) |
| 31 | + return flags + ["-DET_USE_PYTORCH_HEADERS"] + (fbcode_flags if is_fbcode else non_fbcode_flags) |
7 | 32 |
|
| 33 | +def get_sleef_deps(): |
| 34 | + if runtime.is_oss: |
| 35 | + return [] |
| 36 | + return select({ |
| 37 | + "DEFAULT": [], |
| 38 | + "ovr_config//cpu:x86_64": [ |
| 39 | + "fbsource//third-party/sleef:sleef", |
| 40 | + ], |
| 41 | + "ovr_config//cpu:arm64": [ |
| 42 | + "fbsource//third-party/sleef:sleef", |
| 43 | + ], |
| 44 | + }) |
8 | 45 |
|
9 | 46 | def define_common_targets(): |
10 | 47 | """Defines targets that should be shared between fbcode and xplat. |
@@ -54,42 +91,30 @@ def define_common_targets(): |
54 | 91 | name = "aten_headers_for_executorch", |
55 | 92 | srcs = [], |
56 | 93 | visibility = ["//executorch/kernels/optimized/...", "@EXECUTORCH_CLIENTS"], |
| 94 | + # select() on ovr_config//runtime:fbcode does not work |
| 95 | + # properly in all cases. I have seen |
| 96 | + # //xplat/executorch/runtime/core/portable_type/c10/c10:aten_headers_for_executorch |
| 97 | + # pass such a select in (at least) arvr mode. Going back to |
| 98 | + # fbcode_exported_deps accordingly. |
57 | 99 | exported_deps = select({ |
58 | 100 | "DEFAULT": [], |
59 | 101 | "ovr_config//cpu:arm64": [ |
60 | 102 | "fbsource//third-party/sleef:sleef", |
61 | 103 | ] if not runtime.is_oss else [], |
62 | | - # fbsource//third-party/sleef:sleef currently fails to |
63 | | - # link with missing symbols, hence the fbcode-specific dep below. |
64 | 104 | }), |
| 105 | + xplat_exported_deps = [ |
| 106 | + "//xplat/caffe2:aten_header", |
| 107 | + "//xplat/caffe2/c10:c10_headers", |
| 108 | + ("//xplat/caffe2:ovrsource_aten_Config.h" |
| 109 | + if is_arvr_mode() else "//xplat/caffe2:generated_aten_config_header"), |
| 110 | + ], # + get_sleef_deps(), # TODO: enable Sleef in xplat? |
65 | 111 | fbcode_exported_deps = ([ |
66 | 112 | "//caffe2:aten-headers-cpu", |
67 | 113 | "//caffe2:generated-config-header", |
68 | 114 | "//caffe2/c10:c10_headers", |
69 | | - ] + select({ |
70 | | - "DEFAULT": [], |
71 | | - "ovr_config//cpu:x86_64": [ |
72 | | - "third-party//sleef:sleef", |
73 | | - ] |
74 | | - })) if not runtime.is_oss else [], |
75 | | - fbcode_exported_preprocessor_flags = [ |
76 | | - # We don't -DCPU_CAPABILITY=AVX2 because that trips |
77 | | - # -Wmacro-redefined, and we only care about getting |
78 | | - # reasonable vectorization and Sleef support. |
79 | | - "-DCPU_CAPABILITY_AVX2", |
80 | | - "-DET_USE_PYTORCH_HEADERS", |
81 | | - "-DHAVE_AVX2_CPU_DEFINITION", |
82 | | - "-DSTANDALONE_TORCH_HEADER", |
83 | | - ] + get_sleef_preprocessor_flags(), |
84 | | - xplat_exported_deps = [ |
85 | | - "//xplat/caffe2:aten_header", |
86 | | - "//xplat/caffe2/c10:c10_headers", |
87 | | - ] + ["//xplat/caffe2:ovrsource_aten_Config.h" if is_arvr_mode() else "//xplat/caffe2:generated_aten_config_header",], |
88 | | - exported_preprocessor_flags = select({ |
89 | | - # Intentionally punting on non-fbcode x86 sleef support |
90 | | - # for now because of fbsource//third-party/sleef:sleef |
91 | | - # linker failure. |
92 | | - "ovr_config//cpu:arm64": get_sleef_preprocessor_flags(), |
93 | | - "DEFAULT": [], |
94 | | - }) + ["-DSTANDALONE_TORCH_HEADER"] + ([] if runtime.is_oss else ["-DET_USE_PYTORCH_HEADERS"]), |
| 115 | + ] + get_sleef_deps()) if not runtime.is_oss else [], |
| 116 | + exported_preprocessor_flags = get_preprocessor_flags(is_fbcode=False) |
| 117 | + + ([] if runtime.is_oss else ["-DET_USE_PYTORCH_HEADERS"]), |
| 118 | + fbcode_exported_preprocessor_flags = get_preprocessor_flags(is_fbcode=True) |
| 119 | + + ([] if runtime.is_oss else ["-DET_USE_PYTORCH_HEADERS"]), |
95 | 120 | ) |
0 commit comments