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