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