BUILD.bazel 5.44 KB
Newer Older
misterg's avatar
misterg committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Copyright 2017 Google Inc.
# All Rights Reserved.
#
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
#     * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#   Bazel Build for Google C++ Testing Framework(Google Test)

33
34
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")

misterg's avatar
misterg committed
35
36
37
38
39
40
package(default_visibility = ["//visibility:public"])

licenses(["notice"])

config_setting(
    name = "windows",
krzysio's avatar
krzysio committed
41
    constraint_values = ["@bazel_tools//platforms:windows"],
misterg's avatar
misterg committed
42
43
44
45
46
47
48
)

config_setting(
    name = "has_absl",
    values = {"define": "absl=1"},
)

krzysio's avatar
krzysio committed
49
50
51
52
53
54
55
# Library that defines the FRIEND_TEST macro.
cc_library(
    name = "gtest_prod",
    hdrs = ["googletest/include/gtest/gtest_prod.h"],
    includes = ["googletest/include"],
)

misterg's avatar
misterg committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Google Test including Google Mock
cc_library(
    name = "gtest",
    srcs = glob(
        include = [
            "googletest/src/*.cc",
            "googletest/src/*.h",
            "googletest/include/gtest/**/*.h",
            "googlemock/src/*.cc",
            "googlemock/include/gmock/**/*.h",
        ],
        exclude = [
            "googletest/src/gtest-all.cc",
            "googletest/src/gtest_main.cc",
            "googlemock/src/gmock-all.cc",
            "googlemock/src/gmock_main.cc",
        ],
    ),
    hdrs = glob([
        "googletest/include/gtest/*.h",
        "googlemock/include/gmock/*.h",
    ]),
krzysio's avatar
krzysio committed
78
79
80
81
82
83
84
85
    copts = select({
        ":windows": [],
        "//conditions:default": ["-pthread"],
    }),
    defines = select({
        ":has_absl": ["GTEST_HAS_ABSL=1"],
        "//conditions:default": [],
    }),
86
87
88
89
    features = select({
        ":windows": ["windows_export_all_symbols"],
        "//conditions:default": [],
    }),
misterg's avatar
misterg committed
90
91
92
93
94
95
96
97
    includes = [
        "googlemock",
        "googlemock/include",
        "googletest",
        "googletest/include",
    ],
    linkopts = select({
        ":windows": [],
krzysio's avatar
krzysio committed
98
99
100
101
102
103
104
105
        "//conditions:default": ["-pthread"],
    }),
    deps = select({
        ":has_absl": [
            "@com_google_absl//absl/debugging:failure_signal_handler",
            "@com_google_absl//absl/debugging:stacktrace",
            "@com_google_absl//absl/debugging:symbolize",
            "@com_google_absl//absl/strings",
106
            "@com_google_absl//absl/types:any",
krzysio's avatar
krzysio committed
107
108
            "@com_google_absl//absl/types:optional",
            "@com_google_absl//absl/types:variant",
misterg's avatar
misterg committed
109
        ],
krzysio's avatar
krzysio committed
110
        "//conditions:default": [],
misterg's avatar
misterg committed
111
112
113
114
115
    }),
)

cc_library(
    name = "gtest_main",
krzysio's avatar
krzysio committed
116
    srcs = ["googlemock/src/gmock_main.cc"],
117
118
119
    features = select({
        ":windows": ["windows_export_all_symbols"],
        "//conditions:default": [],
120
121
    }),
    deps = [":gtest"],
misterg's avatar
misterg committed
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
)

# The following rules build samples of how to use gTest.
cc_library(
    name = "gtest_sample_lib",
    srcs = [
        "googletest/samples/sample1.cc",
        "googletest/samples/sample2.cc",
        "googletest/samples/sample4.cc",
    ],
    hdrs = [
        "googletest/samples/prime_tables.h",
        "googletest/samples/sample1.h",
        "googletest/samples/sample2.h",
        "googletest/samples/sample3-inl.h",
        "googletest/samples/sample4.h",
    ],
139
140
141
    features = select({
        ":windows": ["windows_export_all_symbols"],
        "//conditions:default": [],
142
    }),
misterg's avatar
misterg committed
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
)

cc_test(
    name = "gtest_samples",
    size = "small",
    # All Samples except:
    #   sample9 (main)
    #   sample10 (main and takes a command line option and needs to be separate)
    srcs = [
        "googletest/samples/sample1_unittest.cc",
        "googletest/samples/sample2_unittest.cc",
        "googletest/samples/sample3_unittest.cc",
        "googletest/samples/sample4_unittest.cc",
        "googletest/samples/sample5_unittest.cc",
        "googletest/samples/sample6_unittest.cc",
        "googletest/samples/sample7_unittest.cc",
        "googletest/samples/sample8_unittest.cc",
    ],
161
    linkstatic = 0,
misterg's avatar
misterg committed
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
    deps = [
        "gtest_sample_lib",
        ":gtest_main",
    ],
)

cc_test(
    name = "sample9_unittest",
    size = "small",
    srcs = ["googletest/samples/sample9_unittest.cc"],
    deps = [":gtest"],
)

cc_test(
    name = "sample10_unittest",
    size = "small",
    srcs = ["googletest/samples/sample10_unittest.cc"],
krzysio's avatar
krzysio committed
179
    deps = [":gtest"],
misterg's avatar
misterg committed
180
)