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