googletest.BUILD (5270B)
1 # Copyright 2017 Google Inc. 2 # All Rights Reserved. 3 # 4 # 5 # Redistribution and use in source and binary forms, with or without 6 # modification, are permitted provided that the following conditions are 7 # met: 8 # 9 # * Redistributions of source code must retain the above copyright 10 # notice, this list of conditions and the following disclaimer. 11 # * Redistributions in binary form must reproduce the above 12 # copyright notice, this list of conditions and the following disclaimer 13 # in the documentation and/or other materials provided with the 14 # distribution. 15 # * Neither the name of Google Inc. nor the names of its 16 # contributors may be used to endorse or promote products derived from 17 # this software without specific prior written permission. 18 # 19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 # 31 # Author: misterg@google.com (Gennadiy Civil) 32 # 33 # Bazel Build for Google C++ Testing Framework(Google Test) 34 35 package(default_visibility = ["//visibility:public"]) 36 37 licenses(["notice"]) 38 39 config_setting( 40 name = "windows", 41 values = {"cpu": "x64_windows"}, 42 ) 43 44 config_setting( 45 name = "windows_msvc", 46 values = {"cpu": "x64_windows_msvc"}, 47 ) 48 49 config_setting( 50 name = "has_absl", 51 values = {"define": "absl=1"}, 52 ) 53 54 # Google Test including Google Mock 55 cc_library( 56 name = "gtest", 57 srcs = glob( 58 include = [ 59 "googletest/src/*.cc", 60 "googletest/src/*.h", 61 "googletest/include/gtest/**/*.h", 62 "googlemock/src/*.cc", 63 "googlemock/include/gmock/**/*.h", 64 ], 65 exclude = [ 66 "googletest/src/gtest-all.cc", 67 "googletest/src/gtest_main.cc", 68 "googlemock/src/gmock-all.cc", 69 "googlemock/src/gmock_main.cc", 70 ], 71 ), 72 hdrs = glob([ 73 "googletest/include/gtest/*.h", 74 "googlemock/include/gmock/*.h", 75 ]), 76 copts = select( 77 { 78 ":windows": [], 79 ":windows_msvc": [], 80 "//conditions:default": ["-pthread"], 81 }, 82 ), 83 defines = select( 84 { 85 ":has_absl": [ 86 "GTEST_HAS_ABSL=1", 87 ], 88 "//conditions:default": [], 89 }, 90 ), 91 includes = [ 92 "googlemock", 93 "googlemock/include", 94 "googletest", 95 "googletest/include", 96 ], 97 linkopts = select({ 98 ":windows": [], 99 ":windows_msvc": [], 100 "//conditions:default": [ 101 "-pthread", 102 ], 103 }), 104 deps = select( 105 { 106 ":has_absl": [ 107 "@com_google_absl//absl/debugging:failure_signal_handler", 108 "@com_google_absl//absl/debugging:stacktrace", 109 "@com_google_absl//absl/debugging:symbolize", 110 "@com_google_absl//absl/strings", 111 "@com_google_absl//absl/types:optional", 112 "@com_google_absl//absl/types:variant", 113 ], 114 "//conditions:default": [], 115 }, 116 ), 117 ) 118 119 cc_library( 120 name = "gtest_main", 121 srcs = [ 122 "googlemock/src/gmock_main.cc", 123 ], 124 deps = [":gtest"], 125 ) 126 127 # The following rules build samples of how to use gTest. 128 cc_library( 129 name = "gtest_sample_lib", 130 srcs = [ 131 "googletest/samples/sample1.cc", 132 "googletest/samples/sample2.cc", 133 "googletest/samples/sample4.cc", 134 ], 135 hdrs = [ 136 "googletest/samples/prime_tables.h", 137 "googletest/samples/sample1.h", 138 "googletest/samples/sample2.h", 139 "googletest/samples/sample3-inl.h", 140 "googletest/samples/sample4.h", 141 ], 142 ) 143 144 cc_test( 145 name = "gtest_samples", 146 size = "small", 147 #All Samples except: 148 #sample9 ( main ) 149 #sample10 (main and takes a command line option and needs to be separate) 150 srcs = [ 151 "googletest/samples/sample1_unittest.cc", 152 "googletest/samples/sample2_unittest.cc", 153 "googletest/samples/sample3_unittest.cc", 154 "googletest/samples/sample4_unittest.cc", 155 "googletest/samples/sample5_unittest.cc", 156 "googletest/samples/sample6_unittest.cc", 157 "googletest/samples/sample7_unittest.cc", 158 "googletest/samples/sample8_unittest.cc", 159 ], 160 deps = [ 161 "gtest_sample_lib", 162 ":gtest_main", 163 ], 164 ) 165 166 cc_test( 167 name = "sample9_unittest", 168 size = "small", 169 srcs = ["googletest/samples/sample9_unittest.cc"], 170 deps = [":gtest"], 171 ) 172 173 cc_test( 174 name = "sample10_unittest", 175 size = "small", 176 srcs = ["googletest/samples/sample10_unittest.cc"], 177 deps = [ 178 ":gtest", 179 ], 180 )