xref: /aosp_15_r20/external/pytorch/c10/ovrsource_defs.bzl (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Workerload("//arvr/tools/build_defs:genrule_utils.bzl", "gen_cmake_header")
2*da0073e9SAndroid Build Coastguard Workerload("//arvr/tools/build_defs:oxx.bzl", "oxx_static_library")
3*da0073e9SAndroid Build Coastguard Worker
4*da0073e9SAndroid Build Coastguard Workercpu_supported_platforms = [
5*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:android",
6*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:iphoneos",
7*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:linux-x86_64",
8*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:macos",
9*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:windows-x86_64",
10*da0073e9SAndroid Build Coastguard Worker    "ovr_config//runtime:arm64-linux-ubuntu-neon",
11*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:linux-arm64",
12*da0073e9SAndroid Build Coastguard Worker]
13*da0073e9SAndroid Build Coastguard Worker
14*da0073e9SAndroid Build Coastguard Workercuda_supported_platforms = [
15*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:linux-cuda",
16*da0073e9SAndroid Build Coastguard Worker    "ovr_config//os:windows-cuda",
17*da0073e9SAndroid Build Coastguard Worker]
18*da0073e9SAndroid Build Coastguard Worker
19*da0073e9SAndroid Build Coastguard Workerdef define_c10_ovrsource(name, is_mobile):
20*da0073e9SAndroid Build Coastguard Worker    if is_mobile:
21*da0073e9SAndroid Build Coastguard Worker        pp_flags = ["-DC10_MOBILE=1"]
22*da0073e9SAndroid Build Coastguard Worker    else:
23*da0073e9SAndroid Build Coastguard Worker        pp_flags = []
24*da0073e9SAndroid Build Coastguard Worker
25*da0073e9SAndroid Build Coastguard Worker    oxx_static_library(
26*da0073e9SAndroid Build Coastguard Worker        name = name,
27*da0073e9SAndroid Build Coastguard Worker        srcs = native.glob([
28*da0073e9SAndroid Build Coastguard Worker            "core/*.cpp",
29*da0073e9SAndroid Build Coastguard Worker            "core/impl/*.cpp",
30*da0073e9SAndroid Build Coastguard Worker            "mobile/*.cpp",
31*da0073e9SAndroid Build Coastguard Worker            "util/*.cpp",
32*da0073e9SAndroid Build Coastguard Worker        ]),
33*da0073e9SAndroid Build Coastguard Worker        compatible_with = cpu_supported_platforms,
34*da0073e9SAndroid Build Coastguard Worker        compiler_flags = select({
35*da0073e9SAndroid Build Coastguard Worker            "DEFAULT": [],
36*da0073e9SAndroid Build Coastguard Worker            "ovr_config//compiler:cl": [
37*da0073e9SAndroid Build Coastguard Worker                "/w",
38*da0073e9SAndroid Build Coastguard Worker            ],
39*da0073e9SAndroid Build Coastguard Worker            "ovr_config//toolchain/clang:win": [
40*da0073e9SAndroid Build Coastguard Worker                "-Wno-error",
41*da0073e9SAndroid Build Coastguard Worker                "-Wno-shadow",
42*da0073e9SAndroid Build Coastguard Worker                "-Wno-undef",
43*da0073e9SAndroid Build Coastguard Worker                "-Wno-unused-variable",
44*da0073e9SAndroid Build Coastguard Worker            ],
45*da0073e9SAndroid Build Coastguard Worker        }),
46*da0073e9SAndroid Build Coastguard Worker        include_directories = [".."],
47*da0073e9SAndroid Build Coastguard Worker        preprocessor_flags = [
48*da0073e9SAndroid Build Coastguard Worker            "-DNO_EXPORT",
49*da0073e9SAndroid Build Coastguard Worker            "-DC10_BUILD_MAIN_LIB=1",
50*da0073e9SAndroid Build Coastguard Worker            "-DSUPPORTS_BACKTRACE=0",
51*da0073e9SAndroid Build Coastguard Worker        ],
52*da0073e9SAndroid Build Coastguard Worker        fbobjc_compiler_flags = ["-Wno-error=global-constructors", "-Wno-error=missing-prototypes"],
53*da0073e9SAndroid Build Coastguard Worker        public_include_directories = [".."],
54*da0073e9SAndroid Build Coastguard Worker        public_preprocessor_flags = pp_flags,
55*da0073e9SAndroid Build Coastguard Worker        public_raw_headers = native.glob([
56*da0073e9SAndroid Build Coastguard Worker            "core/*.h",
57*da0073e9SAndroid Build Coastguard Worker            "macros/*.h",
58*da0073e9SAndroid Build Coastguard Worker            "mobile/*.h",
59*da0073e9SAndroid Build Coastguard Worker            "test/util/*.h",  # some external tests use this
60*da0073e9SAndroid Build Coastguard Worker            "util/*.h",
61*da0073e9SAndroid Build Coastguard Worker        ]),
62*da0073e9SAndroid Build Coastguard Worker        raw_headers = native.glob([
63*da0073e9SAndroid Build Coastguard Worker            "core/impl/*.h",
64*da0073e9SAndroid Build Coastguard Worker        ]),
65*da0073e9SAndroid Build Coastguard Worker        reexport_all_header_dependencies = False,
66*da0073e9SAndroid Build Coastguard Worker        # tests = C10_CPU_TEST_TARGETS,
67*da0073e9SAndroid Build Coastguard Worker        visibility = [
68*da0073e9SAndroid Build Coastguard Worker            "//xplat/caffe2/c10:c10_ovrsource",
69*da0073e9SAndroid Build Coastguard Worker        ],
70*da0073e9SAndroid Build Coastguard Worker        deps = select({
71*da0073e9SAndroid Build Coastguard Worker            "DEFAULT": [],
72*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:linux": [
73*da0073e9SAndroid Build Coastguard Worker                "//third-party/numactl:numactl",
74*da0073e9SAndroid Build Coastguard Worker            ],
75*da0073e9SAndroid Build Coastguard Worker        }),
76*da0073e9SAndroid Build Coastguard Worker        exported_deps = [
77*da0073e9SAndroid Build Coastguard Worker            ":ovrsource_c10_cmake_macros.h",
78*da0073e9SAndroid Build Coastguard Worker            "//arvr/third-party/gflags:gflags",
79*da0073e9SAndroid Build Coastguard Worker            "//third-party/cpuinfo:cpuinfo",
80*da0073e9SAndroid Build Coastguard Worker            "//third-party/fmt:fmt",
81*da0073e9SAndroid Build Coastguard Worker            "//third-party/glog:glog",
82*da0073e9SAndroid Build Coastguard Worker        ],
83*da0073e9SAndroid Build Coastguard Worker    )
84*da0073e9SAndroid Build Coastguard Worker
85*da0073e9SAndroid Build Coastguard Workerdef define_ovrsource_targets():
86*da0073e9SAndroid Build Coastguard Worker    # C10_CPU_TEST_FILES = native.glob([
87*da0073e9SAndroid Build Coastguard Worker    #     "test/core/*.cpp",
88*da0073e9SAndroid Build Coastguard Worker    #     "test/util/*.cpp",
89*da0073e9SAndroid Build Coastguard Worker    # ])
90*da0073e9SAndroid Build Coastguard Worker
91*da0073e9SAndroid Build Coastguard Worker    # C10_GPU_TEST_FILES = native.glob([
92*da0073e9SAndroid Build Coastguard Worker    #     "cuda/test/**/*.cpp",
93*da0073e9SAndroid Build Coastguard Worker    # ])
94*da0073e9SAndroid Build Coastguard Worker
95*da0073e9SAndroid Build Coastguard Worker    # C10_CPU_TEST_TARGETS = [
96*da0073e9SAndroid Build Coastguard Worker    #     ":" + paths.basename(test)[:-len(".cpp")] + "_ovrsource"
97*da0073e9SAndroid Build Coastguard Worker    #     for test in C10_CPU_TEST_FILES
98*da0073e9SAndroid Build Coastguard Worker    # ]
99*da0073e9SAndroid Build Coastguard Worker
100*da0073e9SAndroid Build Coastguard Worker    # C10_GPU_TEST_TARGETS = [
101*da0073e9SAndroid Build Coastguard Worker    #     ":" + paths.basename(test)[:-len(".cpp")] + "_ovrsource"
102*da0073e9SAndroid Build Coastguard Worker    #     for test in C10_GPU_TEST_FILES
103*da0073e9SAndroid Build Coastguard Worker    # ]
104*da0073e9SAndroid Build Coastguard Worker
105*da0073e9SAndroid Build Coastguard Worker    common_c10_cmake_defines = [
106*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_BUILD_SHARED_LIBS", ""),
107*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_NUMA", ""),
108*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_MSVC_STATIC_RUNTIME", ""),
109*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_ROCM_KERNEL_ASSERT", ""),
110*da0073e9SAndroid Build Coastguard Worker    ]
111*da0073e9SAndroid Build Coastguard Worker
112*da0073e9SAndroid Build Coastguard Worker    mobile_c10_cmake_defines = [
113*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_GLOG", ""),
114*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_GFLAGS", ""),
115*da0073e9SAndroid Build Coastguard Worker    ]
116*da0073e9SAndroid Build Coastguard Worker
117*da0073e9SAndroid Build Coastguard Worker    non_mobile_c10_cmake_defines = [
118*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_GLOG", "#define C10_USE_GLOG 1"),
119*da0073e9SAndroid Build Coastguard Worker        ("#cmakedefine C10_USE_GFLAGS", "#define C10_USE_GFLAGS 1"),
120*da0073e9SAndroid Build Coastguard Worker    ]
121*da0073e9SAndroid Build Coastguard Worker
122*da0073e9SAndroid Build Coastguard Worker    gen_cmake_header(
123*da0073e9SAndroid Build Coastguard Worker        src = "macros/cmake_macros.h.in",
124*da0073e9SAndroid Build Coastguard Worker        defines = common_c10_cmake_defines + mobile_c10_cmake_defines,
125*da0073e9SAndroid Build Coastguard Worker        header = "c10/macros/cmake_macros.h",
126*da0073e9SAndroid Build Coastguard Worker        prefix = "ovrsource_c10_mobile_",
127*da0073e9SAndroid Build Coastguard Worker    )
128*da0073e9SAndroid Build Coastguard Worker
129*da0073e9SAndroid Build Coastguard Worker    gen_cmake_header(
130*da0073e9SAndroid Build Coastguard Worker        src = "macros/cmake_macros.h.in",
131*da0073e9SAndroid Build Coastguard Worker        defines = common_c10_cmake_defines + non_mobile_c10_cmake_defines,
132*da0073e9SAndroid Build Coastguard Worker        header = "c10/macros/cmake_macros.h",
133*da0073e9SAndroid Build Coastguard Worker        prefix = "ovrsource_c10_non_mobile_",
134*da0073e9SAndroid Build Coastguard Worker    )
135*da0073e9SAndroid Build Coastguard Worker
136*da0073e9SAndroid Build Coastguard Worker    oxx_static_library(
137*da0073e9SAndroid Build Coastguard Worker        name = "ovrsource_c10_cmake_macros.h",
138*da0073e9SAndroid Build Coastguard Worker        compatible_with = [
139*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:android",
140*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:iphoneos",
141*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:linux",
142*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:macos",
143*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:windows",
144*da0073e9SAndroid Build Coastguard Worker        ],
145*da0073e9SAndroid Build Coastguard Worker        deps = select({
146*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:android": [":ovrsource_c10_mobile_cmake_macros.h"],
147*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:iphoneos": [":ovrsource_c10_mobile_cmake_macros.h"],
148*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:linux": [":ovrsource_c10_non_mobile_cmake_macros.h"],
149*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:macos": [":ovrsource_c10_non_mobile_cmake_macros.h"],
150*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:windows": [":ovrsource_c10_non_mobile_cmake_macros.h"],
151*da0073e9SAndroid Build Coastguard Worker        }),
152*da0073e9SAndroid Build Coastguard Worker    )
153*da0073e9SAndroid Build Coastguard Worker
154*da0073e9SAndroid Build Coastguard Worker    c10_cuda_macros = gen_cmake_header(
155*da0073e9SAndroid Build Coastguard Worker        src = "cuda/impl/cuda_cmake_macros.h.in",
156*da0073e9SAndroid Build Coastguard Worker        defines = [
157*da0073e9SAndroid Build Coastguard Worker            ("#cmakedefine C10_CUDA_BUILD_SHARED_LIBS", ""),
158*da0073e9SAndroid Build Coastguard Worker        ],
159*da0073e9SAndroid Build Coastguard Worker        header = "c10/cuda/impl/cuda_cmake_macros.h",
160*da0073e9SAndroid Build Coastguard Worker        prefix = "ovrsource",
161*da0073e9SAndroid Build Coastguard Worker    )
162*da0073e9SAndroid Build Coastguard Worker
163*da0073e9SAndroid Build Coastguard Worker    oxx_static_library(
164*da0073e9SAndroid Build Coastguard Worker        name = "c10_ovrsource",
165*da0073e9SAndroid Build Coastguard Worker        compatible_with = cpu_supported_platforms,
166*da0073e9SAndroid Build Coastguard Worker        exported_deps = select({
167*da0073e9SAndroid Build Coastguard Worker            "DEFAULT": [":c10_full_ovrsource"],
168*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:android": [":c10_mobile_ovrsource"],
169*da0073e9SAndroid Build Coastguard Worker            "ovr_config//os:iphoneos": [":c10_mobile_ovrsource"],
170*da0073e9SAndroid Build Coastguard Worker        }),
171*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
172*da0073e9SAndroid Build Coastguard Worker    )
173*da0073e9SAndroid Build Coastguard Worker
174*da0073e9SAndroid Build Coastguard Worker    """
175*da0073e9SAndroid Build Coastguard Worker    Most users should use c10_ovrsource, not these targets directly.
176*da0073e9SAndroid Build Coastguard Worker    """
177*da0073e9SAndroid Build Coastguard Worker    define_c10_ovrsource("c10_mobile_ovrsource", True)
178*da0073e9SAndroid Build Coastguard Worker    define_c10_ovrsource("c10_full_ovrsource", False)
179*da0073e9SAndroid Build Coastguard Worker
180*da0073e9SAndroid Build Coastguard Worker    oxx_static_library(
181*da0073e9SAndroid Build Coastguard Worker        name = "c10_cuda_ovrsource",
182*da0073e9SAndroid Build Coastguard Worker        srcs = native.glob([
183*da0073e9SAndroid Build Coastguard Worker            "cuda/*.cpp",
184*da0073e9SAndroid Build Coastguard Worker            "cuda/impl/*.cpp",
185*da0073e9SAndroid Build Coastguard Worker        ]),
186*da0073e9SAndroid Build Coastguard Worker        compatible_with = cuda_supported_platforms,
187*da0073e9SAndroid Build Coastguard Worker        compiler_flags = select({
188*da0073e9SAndroid Build Coastguard Worker            "DEFAULT": [],
189*da0073e9SAndroid Build Coastguard Worker            "ovr_config//compiler:cl": [
190*da0073e9SAndroid Build Coastguard Worker                "/w",
191*da0073e9SAndroid Build Coastguard Worker            ],
192*da0073e9SAndroid Build Coastguard Worker            "ovr_config//toolchain/clang:win": [
193*da0073e9SAndroid Build Coastguard Worker                "-Wno-error",
194*da0073e9SAndroid Build Coastguard Worker                "-Wno-shadow",
195*da0073e9SAndroid Build Coastguard Worker                "-Wno-undef",
196*da0073e9SAndroid Build Coastguard Worker                "-Wno-unused-variable",
197*da0073e9SAndroid Build Coastguard Worker            ],
198*da0073e9SAndroid Build Coastguard Worker        }),
199*da0073e9SAndroid Build Coastguard Worker        link_whole = True,
200*da0073e9SAndroid Build Coastguard Worker        preprocessor_flags = [
201*da0073e9SAndroid Build Coastguard Worker            "-DNO_EXPORT",
202*da0073e9SAndroid Build Coastguard Worker            "-DC10_CUDA_BUILD_MAIN_LIB=1",
203*da0073e9SAndroid Build Coastguard Worker        ],
204*da0073e9SAndroid Build Coastguard Worker        raw_headers = native.glob([
205*da0073e9SAndroid Build Coastguard Worker            "cuda/*.h",
206*da0073e9SAndroid Build Coastguard Worker            "cuda/impl/*.h",
207*da0073e9SAndroid Build Coastguard Worker        ]),
208*da0073e9SAndroid Build Coastguard Worker        reexport_all_header_dependencies = False,
209*da0073e9SAndroid Build Coastguard Worker        # tests = C10_GPU_TEST_TARGETS,
210*da0073e9SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
211*da0073e9SAndroid Build Coastguard Worker        deps = [
212*da0073e9SAndroid Build Coastguard Worker            "//third-party/cuda:libcuda",
213*da0073e9SAndroid Build Coastguard Worker            "//third-party/cuda:libcudart",
214*da0073e9SAndroid Build Coastguard Worker        ],
215*da0073e9SAndroid Build Coastguard Worker        exported_deps = c10_cuda_macros + [
216*da0073e9SAndroid Build Coastguard Worker            ":c10_ovrsource",
217*da0073e9SAndroid Build Coastguard Worker        ],
218*da0073e9SAndroid Build Coastguard Worker    )
219*da0073e9SAndroid Build Coastguard Worker
220*da0073e9SAndroid Build Coastguard Worker    # [
221*da0073e9SAndroid Build Coastguard Worker    #     oxx_test(
222*da0073e9SAndroid Build Coastguard Worker    #         name = paths.basename(test)[:-len(".cpp")] + "_ovrsource",
223*da0073e9SAndroid Build Coastguard Worker    #         srcs = [test],
224*da0073e9SAndroid Build Coastguard Worker    #         compatible_with = cpu_supported_platforms,
225*da0073e9SAndroid Build Coastguard Worker    #         compiler_flags = select({
226*da0073e9SAndroid Build Coastguard Worker    #             "DEFAULT": [],
227*da0073e9SAndroid Build Coastguard Worker    #             "ovr_config//compiler:cl": [
228*da0073e9SAndroid Build Coastguard Worker    #                 "/w",
229*da0073e9SAndroid Build Coastguard Worker    #             ],
230*da0073e9SAndroid Build Coastguard Worker    #             "ovr_config//compiler:clang": [
231*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-error",
232*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-self-assign-overloaded",
233*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-self-move",
234*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-shadow",
235*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-undef",
236*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-unused-function",
237*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-unused-variable",
238*da0073e9SAndroid Build Coastguard Worker    #             ],
239*da0073e9SAndroid Build Coastguard Worker    #         }),
240*da0073e9SAndroid Build Coastguard Worker    #         framework = "gtest",
241*da0073e9SAndroid Build Coastguard Worker    #         oncall = "ovrsource_pytorch",
242*da0073e9SAndroid Build Coastguard Worker    #         raw_headers = native.glob([
243*da0073e9SAndroid Build Coastguard Worker    #             "test/**/*.h",
244*da0073e9SAndroid Build Coastguard Worker    #         ]),
245*da0073e9SAndroid Build Coastguard Worker    #         deps = [
246*da0073e9SAndroid Build Coastguard Worker    #             ":c10_ovrsource",
247*da0073e9SAndroid Build Coastguard Worker    #         ],
248*da0073e9SAndroid Build Coastguard Worker    #     )
249*da0073e9SAndroid Build Coastguard Worker    #     for test in C10_CPU_TEST_FILES
250*da0073e9SAndroid Build Coastguard Worker    # ]
251*da0073e9SAndroid Build Coastguard Worker
252*da0073e9SAndroid Build Coastguard Worker    # [
253*da0073e9SAndroid Build Coastguard Worker    #     oxx_test(
254*da0073e9SAndroid Build Coastguard Worker    #         name = paths.basename(test)[:-len(".cpp")] + "_ovrsource",
255*da0073e9SAndroid Build Coastguard Worker    #         srcs = [test],
256*da0073e9SAndroid Build Coastguard Worker    #         compatible_with = cuda_supported_platforms,
257*da0073e9SAndroid Build Coastguard Worker    #         compiler_flags = select({
258*da0073e9SAndroid Build Coastguard Worker    #             "DEFAULT": [],
259*da0073e9SAndroid Build Coastguard Worker    #             "ovr_config//compiler:cl": [
260*da0073e9SAndroid Build Coastguard Worker    #                 "/w",
261*da0073e9SAndroid Build Coastguard Worker    #             ],
262*da0073e9SAndroid Build Coastguard Worker    #             "ovr_config//compiler:clang": [
263*da0073e9SAndroid Build Coastguard Worker    #                 "-Wno-error",
264*da0073e9SAndroid Build Coastguard Worker    #             ],
265*da0073e9SAndroid Build Coastguard Worker    #         }),
266*da0073e9SAndroid Build Coastguard Worker    #         framework = "gtest",
267*da0073e9SAndroid Build Coastguard Worker    #         oncall = "ovrsource_pytorch",
268*da0073e9SAndroid Build Coastguard Worker    #         raw_headers = native.glob([
269*da0073e9SAndroid Build Coastguard Worker    #             "test/**/*.h",
270*da0073e9SAndroid Build Coastguard Worker    #         ]),
271*da0073e9SAndroid Build Coastguard Worker    #         runtime_shared_libraries = [
272*da0073e9SAndroid Build Coastguard Worker    #             "//third-party/cuda:cudart",
273*da0073e9SAndroid Build Coastguard Worker    #         ],
274*da0073e9SAndroid Build Coastguard Worker    #         deps = [
275*da0073e9SAndroid Build Coastguard Worker    #             ":c10_cuda_ovrsource",
276*da0073e9SAndroid Build Coastguard Worker    #         ],
277*da0073e9SAndroid Build Coastguard Worker    #     )
278*da0073e9SAndroid Build Coastguard Worker    #     for test in C10_GPU_TEST_FILES
279*da0073e9SAndroid Build Coastguard Worker    # ]
280