xref: /aosp_15_r20/external/google-benchmark/test/BUILD (revision dbb99499c3810fa1611fa2242a2fc446be01a57c)
1*dbb99499SAndroid Build Coastguard Workerload("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
2*dbb99499SAndroid Build Coastguard Worker
3*dbb99499SAndroid Build Coastguard Workerplatform(
4*dbb99499SAndroid Build Coastguard Worker    name = "windows",
5*dbb99499SAndroid Build Coastguard Worker    constraint_values = [
6*dbb99499SAndroid Build Coastguard Worker        "@platforms//os:windows",
7*dbb99499SAndroid Build Coastguard Worker    ],
8*dbb99499SAndroid Build Coastguard Worker)
9*dbb99499SAndroid Build Coastguard Worker
10*dbb99499SAndroid Build Coastguard WorkerTEST_COPTS = [
11*dbb99499SAndroid Build Coastguard Worker    "-pedantic",
12*dbb99499SAndroid Build Coastguard Worker    "-pedantic-errors",
13*dbb99499SAndroid Build Coastguard Worker    "-std=c++11",
14*dbb99499SAndroid Build Coastguard Worker    "-Wall",
15*dbb99499SAndroid Build Coastguard Worker    "-Wconversion",
16*dbb99499SAndroid Build Coastguard Worker    "-Wextra",
17*dbb99499SAndroid Build Coastguard Worker    "-Wshadow",
18*dbb99499SAndroid Build Coastguard Worker    #    "-Wshorten-64-to-32",
19*dbb99499SAndroid Build Coastguard Worker    "-Wfloat-equal",
20*dbb99499SAndroid Build Coastguard Worker    "-fstrict-aliasing",
21*dbb99499SAndroid Build Coastguard Worker    ## assert() are used a lot in tests upstream, which may be optimised out leading to
22*dbb99499SAndroid Build Coastguard Worker    ## unused-variable warning.
23*dbb99499SAndroid Build Coastguard Worker    "-Wno-unused-variable",
24*dbb99499SAndroid Build Coastguard Worker    "-Werror=old-style-cast",
25*dbb99499SAndroid Build Coastguard Worker]
26*dbb99499SAndroid Build Coastguard Worker
27*dbb99499SAndroid Build Coastguard Worker# Some of the issues with DoNotOptimize only occur when optimization is enabled
28*dbb99499SAndroid Build Coastguard WorkerPER_SRC_COPTS = {
29*dbb99499SAndroid Build Coastguard Worker    "donotoptimize_test.cc": ["-O3"],
30*dbb99499SAndroid Build Coastguard Worker}
31*dbb99499SAndroid Build Coastguard Worker
32*dbb99499SAndroid Build Coastguard WorkerTEST_ARGS = ["--benchmark_min_time=0.01s"]
33*dbb99499SAndroid Build Coastguard Worker
34*dbb99499SAndroid Build Coastguard WorkerPER_SRC_TEST_ARGS = {
35*dbb99499SAndroid Build Coastguard Worker    "user_counters_tabular_test.cc": ["--benchmark_counters_tabular=true"],
36*dbb99499SAndroid Build Coastguard Worker    "repetitions_test.cc": [" --benchmark_repetitions=3"],
37*dbb99499SAndroid Build Coastguard Worker    "spec_arg_test.cc": ["--benchmark_filter=BM_NotChosen"],
38*dbb99499SAndroid Build Coastguard Worker    "spec_arg_verbosity_test.cc": ["--v=42"],
39*dbb99499SAndroid Build Coastguard Worker    "complexity_test.cc": ["--benchmark_min_time=1000000x"],
40*dbb99499SAndroid Build Coastguard Worker}
41*dbb99499SAndroid Build Coastguard Worker
42*dbb99499SAndroid Build Coastguard Workercc_library(
43*dbb99499SAndroid Build Coastguard Worker    name = "output_test_helper",
44*dbb99499SAndroid Build Coastguard Worker    testonly = 1,
45*dbb99499SAndroid Build Coastguard Worker    srcs = ["output_test_helper.cc"],
46*dbb99499SAndroid Build Coastguard Worker    hdrs = ["output_test.h"],
47*dbb99499SAndroid Build Coastguard Worker    copts = select({
48*dbb99499SAndroid Build Coastguard Worker        "//:windows": [],
49*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": TEST_COPTS,
50*dbb99499SAndroid Build Coastguard Worker    }),
51*dbb99499SAndroid Build Coastguard Worker    deps = [
52*dbb99499SAndroid Build Coastguard Worker        "//:benchmark",
53*dbb99499SAndroid Build Coastguard Worker        "//:benchmark_internal_headers",
54*dbb99499SAndroid Build Coastguard Worker    ],
55*dbb99499SAndroid Build Coastguard Worker)
56*dbb99499SAndroid Build Coastguard Worker
57*dbb99499SAndroid Build Coastguard Worker# Tests that use gtest.  These rely on `gtest_main`.
58*dbb99499SAndroid Build Coastguard Worker[
59*dbb99499SAndroid Build Coastguard Worker    cc_test(
60*dbb99499SAndroid Build Coastguard Worker        name = test_src[:-len(".cc")],
61*dbb99499SAndroid Build Coastguard Worker        size = "small",
62*dbb99499SAndroid Build Coastguard Worker        srcs = [test_src],
63*dbb99499SAndroid Build Coastguard Worker        copts = select({
64*dbb99499SAndroid Build Coastguard Worker            "//:windows": [],
65*dbb99499SAndroid Build Coastguard Worker            "//conditions:default": TEST_COPTS,
66*dbb99499SAndroid Build Coastguard Worker        }) + PER_SRC_COPTS.get(test_src, []),
67*dbb99499SAndroid Build Coastguard Worker        deps = [
68*dbb99499SAndroid Build Coastguard Worker            "//:benchmark",
69*dbb99499SAndroid Build Coastguard Worker            "//:benchmark_internal_headers",
70*dbb99499SAndroid Build Coastguard Worker            "@com_google_googletest//:gtest",
71*dbb99499SAndroid Build Coastguard Worker            "@com_google_googletest//:gtest_main",
72*dbb99499SAndroid Build Coastguard Worker        ],
73*dbb99499SAndroid Build Coastguard Worker    )
74*dbb99499SAndroid Build Coastguard Worker    for test_src in glob(["*_gtest.cc"])
75*dbb99499SAndroid Build Coastguard Worker]
76*dbb99499SAndroid Build Coastguard Worker
77*dbb99499SAndroid Build Coastguard Worker# Tests that do not use gtest.  These have their own `main` defined.
78*dbb99499SAndroid Build Coastguard Worker[
79*dbb99499SAndroid Build Coastguard Worker    cc_test(
80*dbb99499SAndroid Build Coastguard Worker        name = test_src[:-len(".cc")],
81*dbb99499SAndroid Build Coastguard Worker        size = "small",
82*dbb99499SAndroid Build Coastguard Worker        srcs = [test_src],
83*dbb99499SAndroid Build Coastguard Worker        args = TEST_ARGS + PER_SRC_TEST_ARGS.get(test_src, []),
84*dbb99499SAndroid Build Coastguard Worker        copts = select({
85*dbb99499SAndroid Build Coastguard Worker            "//:windows": [],
86*dbb99499SAndroid Build Coastguard Worker            "//conditions:default": TEST_COPTS,
87*dbb99499SAndroid Build Coastguard Worker        }) + PER_SRC_COPTS.get(test_src, []),
88*dbb99499SAndroid Build Coastguard Worker        deps = [
89*dbb99499SAndroid Build Coastguard Worker            ":output_test_helper",
90*dbb99499SAndroid Build Coastguard Worker            "//:benchmark",
91*dbb99499SAndroid Build Coastguard Worker            "//:benchmark_internal_headers",
92*dbb99499SAndroid Build Coastguard Worker        ],
93*dbb99499SAndroid Build Coastguard Worker        # FIXME: Add support for assembly tests to bazel.
94*dbb99499SAndroid Build Coastguard Worker        # See Issue #556
95*dbb99499SAndroid Build Coastguard Worker        # https://github.com/google/benchmark/issues/556
96*dbb99499SAndroid Build Coastguard Worker    )
97*dbb99499SAndroid Build Coastguard Worker    for test_src in glob(
98*dbb99499SAndroid Build Coastguard Worker        ["*_test.cc"],
99*dbb99499SAndroid Build Coastguard Worker        exclude = [
100*dbb99499SAndroid Build Coastguard Worker            "*_assembly_test.cc",
101*dbb99499SAndroid Build Coastguard Worker            "cxx03_test.cc",
102*dbb99499SAndroid Build Coastguard Worker            "link_main_test.cc",
103*dbb99499SAndroid Build Coastguard Worker        ],
104*dbb99499SAndroid Build Coastguard Worker    )
105*dbb99499SAndroid Build Coastguard Worker]
106*dbb99499SAndroid Build Coastguard Worker
107*dbb99499SAndroid Build Coastguard Workercc_test(
108*dbb99499SAndroid Build Coastguard Worker    name = "cxx03_test",
109*dbb99499SAndroid Build Coastguard Worker    size = "small",
110*dbb99499SAndroid Build Coastguard Worker    srcs = ["cxx03_test.cc"],
111*dbb99499SAndroid Build Coastguard Worker    copts = TEST_COPTS + ["-std=c++03"],
112*dbb99499SAndroid Build Coastguard Worker    target_compatible_with = select({
113*dbb99499SAndroid Build Coastguard Worker        "//:windows": ["@platforms//:incompatible"],
114*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": [],
115*dbb99499SAndroid Build Coastguard Worker    }),
116*dbb99499SAndroid Build Coastguard Worker    deps = [
117*dbb99499SAndroid Build Coastguard Worker        ":output_test_helper",
118*dbb99499SAndroid Build Coastguard Worker        "//:benchmark",
119*dbb99499SAndroid Build Coastguard Worker        "//:benchmark_internal_headers",
120*dbb99499SAndroid Build Coastguard Worker    ],
121*dbb99499SAndroid Build Coastguard Worker)
122*dbb99499SAndroid Build Coastguard Worker
123*dbb99499SAndroid Build Coastguard Workercc_test(
124*dbb99499SAndroid Build Coastguard Worker    name = "link_main_test",
125*dbb99499SAndroid Build Coastguard Worker    size = "small",
126*dbb99499SAndroid Build Coastguard Worker    srcs = ["link_main_test.cc"],
127*dbb99499SAndroid Build Coastguard Worker    copts = select({
128*dbb99499SAndroid Build Coastguard Worker        "//:windows": [],
129*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": TEST_COPTS,
130*dbb99499SAndroid Build Coastguard Worker    }),
131*dbb99499SAndroid Build Coastguard Worker    deps = ["//:benchmark_main"],
132*dbb99499SAndroid Build Coastguard Worker)
133