xref: /aosp_15_r20/external/executorch/third-party/gtest_defs.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker# Copied from fbsource/third-party/googletest
2*523fa7a6SAndroid Build Coastguard Worker
3*523fa7a6SAndroid Build Coastguard WorkerCOMPILER_FLAGS = [
4*523fa7a6SAndroid Build Coastguard Worker    "-std=c++17",
5*523fa7a6SAndroid Build Coastguard Worker]
6*523fa7a6SAndroid Build Coastguard WorkerCOMPILER_FLAGS_ATEN = [
7*523fa7a6SAndroid Build Coastguard Worker    "-std=c++17",
8*523fa7a6SAndroid Build Coastguard Worker    "-D_GLIBCXX_USE_CXX11_ABI=0",  # `libtorch` is built without CXX11_ABI so gtest needs to be compiled in the same way
9*523fa7a6SAndroid Build Coastguard Worker]
10*523fa7a6SAndroid Build Coastguard Worker
11*523fa7a6SAndroid Build Coastguard Worker# define_gtest_targets
12*523fa7a6SAndroid Build Coastguard Workerdef define_gtest_targets():
13*523fa7a6SAndroid Build Coastguard Worker    # Library that defines the FRIEND_TEST macro.
14*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
15*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
16*523fa7a6SAndroid Build Coastguard Worker        name = "gtest_prod",
17*523fa7a6SAndroid Build Coastguard Worker        public_system_include_directories = ["googletest/googletest/include"],
18*523fa7a6SAndroid Build Coastguard Worker        raw_headers = ["googletest/googletest/include/gtest/gtest_prod.h"],
19*523fa7a6SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
20*523fa7a6SAndroid Build Coastguard Worker    )
21*523fa7a6SAndroid Build Coastguard Worker
22*523fa7a6SAndroid Build Coastguard Worker    for aten_mode in (True, False):
23*523fa7a6SAndroid Build Coastguard Worker        aten_suffix = "_aten" if aten_mode else ""
24*523fa7a6SAndroid Build Coastguard Worker
25*523fa7a6SAndroid Build Coastguard Worker        # # Google Test
26*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
27*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
28*523fa7a6SAndroid Build Coastguard Worker            name = "gtest" + aten_suffix,
29*523fa7a6SAndroid Build Coastguard Worker            srcs = native.glob(
30*523fa7a6SAndroid Build Coastguard Worker                [
31*523fa7a6SAndroid Build Coastguard Worker                    "googletest/googletest/src/*.cc",
32*523fa7a6SAndroid Build Coastguard Worker                ],
33*523fa7a6SAndroid Build Coastguard Worker                exclude = [
34*523fa7a6SAndroid Build Coastguard Worker                    "googletest/googletest/src/gtest-all.cc",
35*523fa7a6SAndroid Build Coastguard Worker                    "googletest/googletest/src/gtest_main.cc",
36*523fa7a6SAndroid Build Coastguard Worker                ],
37*523fa7a6SAndroid Build Coastguard Worker            ),
38*523fa7a6SAndroid Build Coastguard Worker            include_directories = [
39*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest",
40*523fa7a6SAndroid Build Coastguard Worker            ],
41*523fa7a6SAndroid Build Coastguard Worker            public_system_include_directories = [
42*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/include",
43*523fa7a6SAndroid Build Coastguard Worker            ],
44*523fa7a6SAndroid Build Coastguard Worker            raw_headers = native.glob([
45*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/include/gtest/**/*.h",
46*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/src/*.h",
47*523fa7a6SAndroid Build Coastguard Worker            ]),
48*523fa7a6SAndroid Build Coastguard Worker            visibility = ["PUBLIC"],
49*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = COMPILER_FLAGS_ATEN if aten_mode else COMPILER_FLAGS,
50*523fa7a6SAndroid Build Coastguard Worker            # TODO: gtest crashes after the test finishes when pthread is used, the root
51*523fa7a6SAndroid Build Coastguard Worker            # cause is unclear. So it's turned off here for now. The error is as follows:
52*523fa7a6SAndroid Build Coastguard Worker            # googletest/include/gtest/internal/gtest-port.h:1771:: pthread_key_delete(key_)failed with error 22
53*523fa7a6SAndroid Build Coastguard Worker            exported_preprocessor_flags = ["-DGTEST_HAS_PTHREAD=0"],
54*523fa7a6SAndroid Build Coastguard Worker        )
55*523fa7a6SAndroid Build Coastguard Worker
56*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
57*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
58*523fa7a6SAndroid Build Coastguard Worker            name = "gmock" + aten_suffix,
59*523fa7a6SAndroid Build Coastguard Worker            srcs = native.glob(
60*523fa7a6SAndroid Build Coastguard Worker                [
61*523fa7a6SAndroid Build Coastguard Worker                    "googletest/googlemock/src/*.cc",
62*523fa7a6SAndroid Build Coastguard Worker                ],
63*523fa7a6SAndroid Build Coastguard Worker                exclude = [
64*523fa7a6SAndroid Build Coastguard Worker                    "googletest/googlemock/src/gmock-all.cc",
65*523fa7a6SAndroid Build Coastguard Worker                    "googletest/googlemock/src/gmock_main.cc",
66*523fa7a6SAndroid Build Coastguard Worker                ],
67*523fa7a6SAndroid Build Coastguard Worker            ),
68*523fa7a6SAndroid Build Coastguard Worker            include_directories = [
69*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest",
70*523fa7a6SAndroid Build Coastguard Worker            ],
71*523fa7a6SAndroid Build Coastguard Worker            public_system_include_directories = [
72*523fa7a6SAndroid Build Coastguard Worker                "googletest/googlemock/include",
73*523fa7a6SAndroid Build Coastguard Worker            ],
74*523fa7a6SAndroid Build Coastguard Worker            raw_headers = native.glob([
75*523fa7a6SAndroid Build Coastguard Worker                "googletest/googlemock/include/gmock/**/*.h",
76*523fa7a6SAndroid Build Coastguard Worker            ]),
77*523fa7a6SAndroid Build Coastguard Worker            exported_deps = [":gtest" + aten_suffix],
78*523fa7a6SAndroid Build Coastguard Worker            visibility = ["PUBLIC"],
79*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = COMPILER_FLAGS_ATEN if aten_mode else COMPILER_FLAGS,
80*523fa7a6SAndroid Build Coastguard Worker        )
81*523fa7a6SAndroid Build Coastguard Worker
82*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
83*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
84*523fa7a6SAndroid Build Coastguard Worker            name = "gtest_headers" + aten_suffix,
85*523fa7a6SAndroid Build Coastguard Worker            include_directories = [
86*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest",
87*523fa7a6SAndroid Build Coastguard Worker            ],
88*523fa7a6SAndroid Build Coastguard Worker            public_system_include_directories = [
89*523fa7a6SAndroid Build Coastguard Worker                "googletest/googlemock/include",
90*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/include",
91*523fa7a6SAndroid Build Coastguard Worker            ],
92*523fa7a6SAndroid Build Coastguard Worker            raw_headers = native.glob([
93*523fa7a6SAndroid Build Coastguard Worker                "googletest/googlemock/include/gmock/**/*.h",
94*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/include/gtest/**/*.h",
95*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/src/*.h",
96*523fa7a6SAndroid Build Coastguard Worker            ]),
97*523fa7a6SAndroid Build Coastguard Worker            visibility = ["PUBLIC"],
98*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = COMPILER_FLAGS_ATEN if aten_mode else COMPILER_FLAGS,
99*523fa7a6SAndroid Build Coastguard Worker        )
100*523fa7a6SAndroid Build Coastguard Worker
101*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
102*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
103*523fa7a6SAndroid Build Coastguard Worker            name = "gtest_main" + aten_suffix,
104*523fa7a6SAndroid Build Coastguard Worker            srcs = ["googletest/googletest/src/gtest_main.cc"],
105*523fa7a6SAndroid Build Coastguard Worker            visibility = ["PUBLIC"],
106*523fa7a6SAndroid Build Coastguard Worker            exported_deps = [":gtest" + aten_suffix],
107*523fa7a6SAndroid Build Coastguard Worker            compiler_flags = COMPILER_FLAGS_ATEN if aten_mode else COMPILER_FLAGS,
108*523fa7a6SAndroid Build Coastguard Worker        )
109*523fa7a6SAndroid Build Coastguard Worker
110*523fa7a6SAndroid Build Coastguard Worker        # # The following rules build samples of how to use gTest.
111*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
112*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
113*523fa7a6SAndroid Build Coastguard Worker            name = "gtest_sample_lib" + aten_suffix,
114*523fa7a6SAndroid Build Coastguard Worker            srcs = [
115*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample1.cc",
116*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample2.cc",
117*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample4.cc",
118*523fa7a6SAndroid Build Coastguard Worker            ],
119*523fa7a6SAndroid Build Coastguard Worker            public_system_include_directories = [
120*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples",
121*523fa7a6SAndroid Build Coastguard Worker            ],
122*523fa7a6SAndroid Build Coastguard Worker            raw_headers = [
123*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/prime_tables.h",
124*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample1.h",
125*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample2.h",
126*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample3-inl.h",
127*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample4.h",
128*523fa7a6SAndroid Build Coastguard Worker            ],
129*523fa7a6SAndroid Build Coastguard Worker        )
130*523fa7a6SAndroid Build Coastguard Worker
131*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
132*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
133*523fa7a6SAndroid Build Coastguard Worker            name = "gtest_samples" + aten_suffix,
134*523fa7a6SAndroid Build Coastguard Worker            # All Samples except:
135*523fa7a6SAndroid Build Coastguard Worker            #   sample9 (main)
136*523fa7a6SAndroid Build Coastguard Worker            #   sample10 (main and takes a command line option and needs to be separate)
137*523fa7a6SAndroid Build Coastguard Worker            srcs = [
138*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample1_unittest.cc",
139*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample2_unittest.cc",
140*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample3_unittest.cc",
141*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample4_unittest.cc",
142*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample5_unittest.cc",
143*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample6_unittest.cc",
144*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample7_unittest.cc",
145*523fa7a6SAndroid Build Coastguard Worker                "googletest/googletest/samples/sample8_unittest.cc",
146*523fa7a6SAndroid Build Coastguard Worker            ],
147*523fa7a6SAndroid Build Coastguard Worker            deps = [
148*523fa7a6SAndroid Build Coastguard Worker                ":gtest_main" + aten_suffix,
149*523fa7a6SAndroid Build Coastguard Worker                ":gtest_sample_lib" + aten_suffix,
150*523fa7a6SAndroid Build Coastguard Worker            ],
151*523fa7a6SAndroid Build Coastguard Worker        )
152*523fa7a6SAndroid Build Coastguard Worker
153*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
154*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
155*523fa7a6SAndroid Build Coastguard Worker            name = "sample9_unittest" + aten_suffix,
156*523fa7a6SAndroid Build Coastguard Worker            srcs = ["googletest/googletest/samples/sample9_unittest.cc"],
157*523fa7a6SAndroid Build Coastguard Worker            deps = [":gtest" + aten_suffix],
158*523fa7a6SAndroid Build Coastguard Worker        )
159*523fa7a6SAndroid Build Coastguard Worker
160*523fa7a6SAndroid Build Coastguard Worker        # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
161*523fa7a6SAndroid Build Coastguard Worker        native.cxx_library(
162*523fa7a6SAndroid Build Coastguard Worker            name = "sample10_unittest" + aten_suffix,
163*523fa7a6SAndroid Build Coastguard Worker            srcs = ["googletest/googletest/samples/sample10_unittest.cc"],
164*523fa7a6SAndroid Build Coastguard Worker            deps = [":gtest" + aten_suffix],
165*523fa7a6SAndroid Build Coastguard Worker        )
166