1*6777b538SAndroid Build Coastguard Worker# Copyright 2017 Google Inc. 2*6777b538SAndroid Build Coastguard Worker# All Rights Reserved. 3*6777b538SAndroid Build Coastguard Worker# 4*6777b538SAndroid Build Coastguard Worker# 5*6777b538SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 6*6777b538SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are 7*6777b538SAndroid Build Coastguard Worker# met: 8*6777b538SAndroid Build Coastguard Worker# 9*6777b538SAndroid Build Coastguard Worker# * Redistributions of source code must retain the above copyright 10*6777b538SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 11*6777b538SAndroid Build Coastguard Worker# * Redistributions in binary form must reproduce the above 12*6777b538SAndroid Build Coastguard Worker# copyright notice, this list of conditions and the following disclaimer 13*6777b538SAndroid Build Coastguard Worker# in the documentation and/or other materials provided with the 14*6777b538SAndroid Build Coastguard Worker# distribution. 15*6777b538SAndroid Build Coastguard Worker# * Neither the name of Google Inc. nor the names of its 16*6777b538SAndroid Build Coastguard Worker# contributors may be used to endorse or promote products derived from 17*6777b538SAndroid Build Coastguard Worker# this software without specific prior written permission. 18*6777b538SAndroid Build Coastguard Worker# 19*6777b538SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20*6777b538SAndroid Build Coastguard Worker# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21*6777b538SAndroid Build Coastguard Worker# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22*6777b538SAndroid Build Coastguard Worker# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23*6777b538SAndroid Build Coastguard Worker# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24*6777b538SAndroid Build Coastguard Worker# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25*6777b538SAndroid Build Coastguard Worker# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26*6777b538SAndroid Build Coastguard Worker# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27*6777b538SAndroid Build Coastguard Worker# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28*6777b538SAndroid Build Coastguard Worker# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29*6777b538SAndroid Build Coastguard Worker# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30*6777b538SAndroid Build Coastguard Worker# 31*6777b538SAndroid Build Coastguard Worker# Bazel Build for Google C++ Testing Framework(Google Test) 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"]) 34*6777b538SAndroid Build Coastguard Worker 35*6777b538SAndroid Build Coastguard Workerlicenses(["notice"]) 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Workerexports_files(["LICENSE"]) 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Workerconfig_setting( 40*6777b538SAndroid Build Coastguard Worker name = "qnx", 41*6777b538SAndroid Build Coastguard Worker constraint_values = ["@platforms//os:qnx"], 42*6777b538SAndroid Build Coastguard Worker) 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Workerconfig_setting( 45*6777b538SAndroid Build Coastguard Worker name = "windows", 46*6777b538SAndroid Build Coastguard Worker constraint_values = ["@platforms//os:windows"], 47*6777b538SAndroid Build Coastguard Worker) 48*6777b538SAndroid Build Coastguard Worker 49*6777b538SAndroid Build Coastguard Workerconfig_setting( 50*6777b538SAndroid Build Coastguard Worker name = "freebsd", 51*6777b538SAndroid Build Coastguard Worker constraint_values = ["@platforms//os:freebsd"], 52*6777b538SAndroid Build Coastguard Worker) 53*6777b538SAndroid Build Coastguard Worker 54*6777b538SAndroid Build Coastguard Workerconfig_setting( 55*6777b538SAndroid Build Coastguard Worker name = "openbsd", 56*6777b538SAndroid Build Coastguard Worker constraint_values = ["@platforms//os:openbsd"], 57*6777b538SAndroid Build Coastguard Worker) 58*6777b538SAndroid Build Coastguard Worker 59*6777b538SAndroid Build Coastguard Worker# NOTE: Fuchsia is not an officially supported platform. 60*6777b538SAndroid Build Coastguard Workerconfig_setting( 61*6777b538SAndroid Build Coastguard Worker name = "fuchsia", 62*6777b538SAndroid Build Coastguard Worker constraint_values = ["@platforms//os:fuchsia"], 63*6777b538SAndroid Build Coastguard Worker) 64*6777b538SAndroid Build Coastguard Worker 65*6777b538SAndroid Build Coastguard Workerconfig_setting( 66*6777b538SAndroid Build Coastguard Worker name = "msvc_compiler", 67*6777b538SAndroid Build Coastguard Worker flag_values = { 68*6777b538SAndroid Build Coastguard Worker "@bazel_tools//tools/cpp:compiler": "msvc-cl", 69*6777b538SAndroid Build Coastguard Worker }, 70*6777b538SAndroid Build Coastguard Worker visibility = [":__subpackages__"], 71*6777b538SAndroid Build Coastguard Worker) 72*6777b538SAndroid Build Coastguard Worker 73*6777b538SAndroid Build Coastguard Workerconfig_setting( 74*6777b538SAndroid Build Coastguard Worker name = "has_absl", 75*6777b538SAndroid Build Coastguard Worker values = {"define": "absl=1"}, 76*6777b538SAndroid Build Coastguard Worker) 77*6777b538SAndroid Build Coastguard Worker 78*6777b538SAndroid Build Coastguard Worker# Library that defines the FRIEND_TEST macro. 79*6777b538SAndroid Build Coastguard Workercc_library( 80*6777b538SAndroid Build Coastguard Worker name = "gtest_prod", 81*6777b538SAndroid Build Coastguard Worker hdrs = ["googletest/include/gtest/gtest_prod.h"], 82*6777b538SAndroid Build Coastguard Worker includes = ["googletest/include"], 83*6777b538SAndroid Build Coastguard Worker) 84*6777b538SAndroid Build Coastguard Worker 85*6777b538SAndroid Build Coastguard Worker# Google Test including Google Mock 86*6777b538SAndroid Build Coastguard Workercc_library( 87*6777b538SAndroid Build Coastguard Worker name = "gtest", 88*6777b538SAndroid Build Coastguard Worker srcs = glob( 89*6777b538SAndroid Build Coastguard Worker include = [ 90*6777b538SAndroid Build Coastguard Worker "googletest/src/*.cc", 91*6777b538SAndroid Build Coastguard Worker "googletest/src/*.h", 92*6777b538SAndroid Build Coastguard Worker "googletest/include/gtest/**/*.h", 93*6777b538SAndroid Build Coastguard Worker "googlemock/src/*.cc", 94*6777b538SAndroid Build Coastguard Worker "googlemock/include/gmock/**/*.h", 95*6777b538SAndroid Build Coastguard Worker ], 96*6777b538SAndroid Build Coastguard Worker exclude = [ 97*6777b538SAndroid Build Coastguard Worker "googletest/src/gtest-all.cc", 98*6777b538SAndroid Build Coastguard Worker "googletest/src/gtest_main.cc", 99*6777b538SAndroid Build Coastguard Worker "googlemock/src/gmock-all.cc", 100*6777b538SAndroid Build Coastguard Worker "googlemock/src/gmock_main.cc", 101*6777b538SAndroid Build Coastguard Worker ], 102*6777b538SAndroid Build Coastguard Worker ), 103*6777b538SAndroid Build Coastguard Worker hdrs = glob([ 104*6777b538SAndroid Build Coastguard Worker "googletest/include/gtest/*.h", 105*6777b538SAndroid Build Coastguard Worker "googlemock/include/gmock/*.h", 106*6777b538SAndroid Build Coastguard Worker ]), 107*6777b538SAndroid Build Coastguard Worker copts = select({ 108*6777b538SAndroid Build Coastguard Worker ":qnx": [], 109*6777b538SAndroid Build Coastguard Worker ":windows": [], 110*6777b538SAndroid Build Coastguard Worker "//conditions:default": ["-pthread"], 111*6777b538SAndroid Build Coastguard Worker }), 112*6777b538SAndroid Build Coastguard Worker defines = select({ 113*6777b538SAndroid Build Coastguard Worker ":has_absl": ["GTEST_HAS_ABSL=1"], 114*6777b538SAndroid Build Coastguard Worker "//conditions:default": [], 115*6777b538SAndroid Build Coastguard Worker }), 116*6777b538SAndroid Build Coastguard Worker features = select({ 117*6777b538SAndroid Build Coastguard Worker ":windows": ["windows_export_all_symbols"], 118*6777b538SAndroid Build Coastguard Worker "//conditions:default": [], 119*6777b538SAndroid Build Coastguard Worker }), 120*6777b538SAndroid Build Coastguard Worker includes = [ 121*6777b538SAndroid Build Coastguard Worker "googlemock", 122*6777b538SAndroid Build Coastguard Worker "googlemock/include", 123*6777b538SAndroid Build Coastguard Worker "googletest", 124*6777b538SAndroid Build Coastguard Worker "googletest/include", 125*6777b538SAndroid Build Coastguard Worker ], 126*6777b538SAndroid Build Coastguard Worker linkopts = select({ 127*6777b538SAndroid Build Coastguard Worker ":qnx": ["-lregex"], 128*6777b538SAndroid Build Coastguard Worker ":windows": [], 129*6777b538SAndroid Build Coastguard Worker ":freebsd": [ 130*6777b538SAndroid Build Coastguard Worker "-lm", 131*6777b538SAndroid Build Coastguard Worker "-pthread", 132*6777b538SAndroid Build Coastguard Worker ], 133*6777b538SAndroid Build Coastguard Worker ":openbsd": [ 134*6777b538SAndroid Build Coastguard Worker "-lm", 135*6777b538SAndroid Build Coastguard Worker "-pthread", 136*6777b538SAndroid Build Coastguard Worker ], 137*6777b538SAndroid Build Coastguard Worker "//conditions:default": ["-pthread"], 138*6777b538SAndroid Build Coastguard Worker }), 139*6777b538SAndroid Build Coastguard Worker deps = select({ 140*6777b538SAndroid Build Coastguard Worker ":has_absl": [ 141*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/container:flat_hash_set", 142*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/debugging:failure_signal_handler", 143*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/debugging:stacktrace", 144*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/debugging:symbolize", 145*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/flags:flag", 146*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/flags:parse", 147*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/flags:reflection", 148*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/flags:usage", 149*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/strings", 150*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/types:any", 151*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/types:optional", 152*6777b538SAndroid Build Coastguard Worker "@com_google_absl//absl/types:variant", 153*6777b538SAndroid Build Coastguard Worker "@com_googlesource_code_re2//:re2", 154*6777b538SAndroid Build Coastguard Worker ], 155*6777b538SAndroid Build Coastguard Worker "//conditions:default": [], 156*6777b538SAndroid Build Coastguard Worker }) + select({ 157*6777b538SAndroid Build Coastguard Worker # `gtest-death-test.cc` has `EXPECT_DEATH` that spawns a process, 158*6777b538SAndroid Build Coastguard Worker # expects it to crash and inspects its logs with the given matcher, 159*6777b538SAndroid Build Coastguard Worker # so that's why these libraries are needed. 160*6777b538SAndroid Build Coastguard Worker # Otherwise, builds targeting Fuchsia would fail to compile. 161*6777b538SAndroid Build Coastguard Worker ":fuchsia": [ 162*6777b538SAndroid Build Coastguard Worker "@fuchsia_sdk//pkg/fdio", 163*6777b538SAndroid Build Coastguard Worker "@fuchsia_sdk//pkg/syslog", 164*6777b538SAndroid Build Coastguard Worker "@fuchsia_sdk//pkg/zx", 165*6777b538SAndroid Build Coastguard Worker ], 166*6777b538SAndroid Build Coastguard Worker "//conditions:default": [], 167*6777b538SAndroid Build Coastguard Worker }), 168*6777b538SAndroid Build Coastguard Worker) 169*6777b538SAndroid Build Coastguard Worker 170*6777b538SAndroid Build Coastguard Workercc_library( 171*6777b538SAndroid Build Coastguard Worker name = "gtest_main", 172*6777b538SAndroid Build Coastguard Worker srcs = ["googlemock/src/gmock_main.cc"], 173*6777b538SAndroid Build Coastguard Worker features = select({ 174*6777b538SAndroid Build Coastguard Worker ":windows": ["windows_export_all_symbols"], 175*6777b538SAndroid Build Coastguard Worker "//conditions:default": [], 176*6777b538SAndroid Build Coastguard Worker }), 177*6777b538SAndroid Build Coastguard Worker deps = [":gtest"], 178*6777b538SAndroid Build Coastguard Worker) 179*6777b538SAndroid Build Coastguard Worker 180*6777b538SAndroid Build Coastguard Worker# The following rules build samples of how to use gTest. 181*6777b538SAndroid Build Coastguard Workercc_library( 182*6777b538SAndroid Build Coastguard Worker name = "gtest_sample_lib", 183*6777b538SAndroid Build Coastguard Worker srcs = [ 184*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample1.cc", 185*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample2.cc", 186*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample4.cc", 187*6777b538SAndroid Build Coastguard Worker ], 188*6777b538SAndroid Build Coastguard Worker hdrs = [ 189*6777b538SAndroid Build Coastguard Worker "googletest/samples/prime_tables.h", 190*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample1.h", 191*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample2.h", 192*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample3-inl.h", 193*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample4.h", 194*6777b538SAndroid Build Coastguard Worker ], 195*6777b538SAndroid Build Coastguard Worker features = select({ 196*6777b538SAndroid Build Coastguard Worker ":windows": ["windows_export_all_symbols"], 197*6777b538SAndroid Build Coastguard Worker "//conditions:default": [], 198*6777b538SAndroid Build Coastguard Worker }), 199*6777b538SAndroid Build Coastguard Worker) 200*6777b538SAndroid Build Coastguard Worker 201*6777b538SAndroid Build Coastguard Workercc_test( 202*6777b538SAndroid Build Coastguard Worker name = "gtest_samples", 203*6777b538SAndroid Build Coastguard Worker size = "small", 204*6777b538SAndroid Build Coastguard Worker # All Samples except: 205*6777b538SAndroid Build Coastguard Worker # sample9 (main) 206*6777b538SAndroid Build Coastguard Worker # sample10 (main and takes a command line option and needs to be separate) 207*6777b538SAndroid Build Coastguard Worker srcs = [ 208*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample1_unittest.cc", 209*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample2_unittest.cc", 210*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample3_unittest.cc", 211*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample4_unittest.cc", 212*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample5_unittest.cc", 213*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample6_unittest.cc", 214*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample7_unittest.cc", 215*6777b538SAndroid Build Coastguard Worker "googletest/samples/sample8_unittest.cc", 216*6777b538SAndroid Build Coastguard Worker ], 217*6777b538SAndroid Build Coastguard Worker linkstatic = 0, 218*6777b538SAndroid Build Coastguard Worker deps = [ 219*6777b538SAndroid Build Coastguard Worker "gtest_sample_lib", 220*6777b538SAndroid Build Coastguard Worker ":gtest_main", 221*6777b538SAndroid Build Coastguard Worker ], 222*6777b538SAndroid Build Coastguard Worker) 223*6777b538SAndroid Build Coastguard Worker 224*6777b538SAndroid Build Coastguard Workercc_test( 225*6777b538SAndroid Build Coastguard Worker name = "sample9_unittest", 226*6777b538SAndroid Build Coastguard Worker size = "small", 227*6777b538SAndroid Build Coastguard Worker srcs = ["googletest/samples/sample9_unittest.cc"], 228*6777b538SAndroid Build Coastguard Worker deps = [":gtest"], 229*6777b538SAndroid Build Coastguard Worker) 230*6777b538SAndroid Build Coastguard Worker 231*6777b538SAndroid Build Coastguard Workercc_test( 232*6777b538SAndroid Build Coastguard Worker name = "sample10_unittest", 233*6777b538SAndroid Build Coastguard Worker size = "small", 234*6777b538SAndroid Build Coastguard Worker srcs = ["googletest/samples/sample10_unittest.cc"], 235*6777b538SAndroid Build Coastguard Worker deps = [":gtest"], 236*6777b538SAndroid Build Coastguard Worker) 237