xref: /aosp_15_r20/external/google-benchmark/BUILD.bazel (revision dbb99499c3810fa1611fa2242a2fc446be01a57c)
1*dbb99499SAndroid Build Coastguard Workerlicenses(["notice"])
2*dbb99499SAndroid Build Coastguard Worker
3*dbb99499SAndroid Build Coastguard WorkerCOPTS = [
4*dbb99499SAndroid Build Coastguard Worker    "-pedantic",
5*dbb99499SAndroid Build Coastguard Worker    "-pedantic-errors",
6*dbb99499SAndroid Build Coastguard Worker    "-std=c++14",
7*dbb99499SAndroid Build Coastguard Worker    "-Wall",
8*dbb99499SAndroid Build Coastguard Worker    "-Wconversion",
9*dbb99499SAndroid Build Coastguard Worker    "-Wextra",
10*dbb99499SAndroid Build Coastguard Worker    "-Wshadow",
11*dbb99499SAndroid Build Coastguard Worker    #    "-Wshorten-64-to-32",
12*dbb99499SAndroid Build Coastguard Worker    "-Wfloat-equal",
13*dbb99499SAndroid Build Coastguard Worker    "-fstrict-aliasing",
14*dbb99499SAndroid Build Coastguard Worker    ## assert() are used a lot in tests upstream, which may be optimised out leading to
15*dbb99499SAndroid Build Coastguard Worker    ## unused-variable warning.
16*dbb99499SAndroid Build Coastguard Worker    "-Wno-unused-variable",
17*dbb99499SAndroid Build Coastguard Worker    "-Werror=old-style-cast",
18*dbb99499SAndroid Build Coastguard Worker]
19*dbb99499SAndroid Build Coastguard Worker
20*dbb99499SAndroid Build Coastguard Workerconfig_setting(
21*dbb99499SAndroid Build Coastguard Worker    name = "qnx",
22*dbb99499SAndroid Build Coastguard Worker    constraint_values = ["@platforms//os:qnx"],
23*dbb99499SAndroid Build Coastguard Worker    values = {
24*dbb99499SAndroid Build Coastguard Worker        "cpu": "x64_qnx",
25*dbb99499SAndroid Build Coastguard Worker    },
26*dbb99499SAndroid Build Coastguard Worker    visibility = [":__subpackages__"],
27*dbb99499SAndroid Build Coastguard Worker)
28*dbb99499SAndroid Build Coastguard Worker
29*dbb99499SAndroid Build Coastguard Workerconfig_setting(
30*dbb99499SAndroid Build Coastguard Worker    name = "windows",
31*dbb99499SAndroid Build Coastguard Worker    constraint_values = ["@platforms//os:windows"],
32*dbb99499SAndroid Build Coastguard Worker    values = {
33*dbb99499SAndroid Build Coastguard Worker        "cpu": "x64_windows",
34*dbb99499SAndroid Build Coastguard Worker    },
35*dbb99499SAndroid Build Coastguard Worker    visibility = [":__subpackages__"],
36*dbb99499SAndroid Build Coastguard Worker)
37*dbb99499SAndroid Build Coastguard Worker
38*dbb99499SAndroid Build Coastguard Workerconfig_setting(
39*dbb99499SAndroid Build Coastguard Worker    name = "macos",
40*dbb99499SAndroid Build Coastguard Worker    constraint_values = ["@platforms//os:macos"],
41*dbb99499SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
42*dbb99499SAndroid Build Coastguard Worker)
43*dbb99499SAndroid Build Coastguard Worker
44*dbb99499SAndroid Build Coastguard Workerconfig_setting(
45*dbb99499SAndroid Build Coastguard Worker    name = "perfcounters",
46*dbb99499SAndroid Build Coastguard Worker    define_values = {
47*dbb99499SAndroid Build Coastguard Worker        "pfm": "1",
48*dbb99499SAndroid Build Coastguard Worker    },
49*dbb99499SAndroid Build Coastguard Worker    visibility = [":__subpackages__"],
50*dbb99499SAndroid Build Coastguard Worker)
51*dbb99499SAndroid Build Coastguard Worker
52*dbb99499SAndroid Build Coastguard Workercc_library(
53*dbb99499SAndroid Build Coastguard Worker    name = "benchmark",
54*dbb99499SAndroid Build Coastguard Worker    srcs = glob(
55*dbb99499SAndroid Build Coastguard Worker        [
56*dbb99499SAndroid Build Coastguard Worker            "src/*.cc",
57*dbb99499SAndroid Build Coastguard Worker            "src/*.h",
58*dbb99499SAndroid Build Coastguard Worker        ],
59*dbb99499SAndroid Build Coastguard Worker        exclude = ["src/benchmark_main.cc"],
60*dbb99499SAndroid Build Coastguard Worker    ),
61*dbb99499SAndroid Build Coastguard Worker    hdrs = [
62*dbb99499SAndroid Build Coastguard Worker        "include/benchmark/benchmark.h",
63*dbb99499SAndroid Build Coastguard Worker        "include/benchmark/export.h",
64*dbb99499SAndroid Build Coastguard Worker    ],
65*dbb99499SAndroid Build Coastguard Worker    copts = select({
66*dbb99499SAndroid Build Coastguard Worker        ":windows": [],
67*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": COPTS,
68*dbb99499SAndroid Build Coastguard Worker    }),
69*dbb99499SAndroid Build Coastguard Worker    defines = [
70*dbb99499SAndroid Build Coastguard Worker        "BENCHMARK_STATIC_DEFINE",
71*dbb99499SAndroid Build Coastguard Worker        "BENCHMARK_VERSION=\\\"" + (module_version() if module_version() != None else "") + "\\\"",
72*dbb99499SAndroid Build Coastguard Worker    ] + select({
73*dbb99499SAndroid Build Coastguard Worker        ":perfcounters": ["HAVE_LIBPFM"],
74*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": [],
75*dbb99499SAndroid Build Coastguard Worker    }),
76*dbb99499SAndroid Build Coastguard Worker    includes = ["include"],
77*dbb99499SAndroid Build Coastguard Worker    linkopts = select({
78*dbb99499SAndroid Build Coastguard Worker        ":windows": ["-DEFAULTLIB:shlwapi.lib"],
79*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": ["-pthread"],
80*dbb99499SAndroid Build Coastguard Worker    }),
81*dbb99499SAndroid Build Coastguard Worker    # Only static linking is allowed; no .so will be produced.
82*dbb99499SAndroid Build Coastguard Worker    # Using `defines` (i.e. not `local_defines`) means that no
83*dbb99499SAndroid Build Coastguard Worker    # dependent rules need to bother about defining the macro.
84*dbb99499SAndroid Build Coastguard Worker    linkstatic = True,
85*dbb99499SAndroid Build Coastguard Worker    local_defines = [
86*dbb99499SAndroid Build Coastguard Worker        # Turn on Large-file Support
87*dbb99499SAndroid Build Coastguard Worker        "_FILE_OFFSET_BITS=64",
88*dbb99499SAndroid Build Coastguard Worker        "_LARGEFILE64_SOURCE",
89*dbb99499SAndroid Build Coastguard Worker        "_LARGEFILE_SOURCE",
90*dbb99499SAndroid Build Coastguard Worker    ],
91*dbb99499SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
92*dbb99499SAndroid Build Coastguard Worker    deps = select({
93*dbb99499SAndroid Build Coastguard Worker        ":perfcounters": ["@libpfm"],
94*dbb99499SAndroid Build Coastguard Worker        "//conditions:default": [],
95*dbb99499SAndroid Build Coastguard Worker    }),
96*dbb99499SAndroid Build Coastguard Worker)
97*dbb99499SAndroid Build Coastguard Worker
98*dbb99499SAndroid Build Coastguard Workercc_library(
99*dbb99499SAndroid Build Coastguard Worker    name = "benchmark_main",
100*dbb99499SAndroid Build Coastguard Worker    srcs = ["src/benchmark_main.cc"],
101*dbb99499SAndroid Build Coastguard Worker    hdrs = [
102*dbb99499SAndroid Build Coastguard Worker        "include/benchmark/benchmark.h",
103*dbb99499SAndroid Build Coastguard Worker        "include/benchmark/export.h",
104*dbb99499SAndroid Build Coastguard Worker    ],
105*dbb99499SAndroid Build Coastguard Worker    includes = ["include"],
106*dbb99499SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
107*dbb99499SAndroid Build Coastguard Worker    deps = [":benchmark"],
108*dbb99499SAndroid Build Coastguard Worker)
109*dbb99499SAndroid Build Coastguard Worker
110*dbb99499SAndroid Build Coastguard Workercc_library(
111*dbb99499SAndroid Build Coastguard Worker    name = "benchmark_internal_headers",
112*dbb99499SAndroid Build Coastguard Worker    hdrs = glob(["src/*.h"]),
113*dbb99499SAndroid Build Coastguard Worker    visibility = ["//test:__pkg__"],
114*dbb99499SAndroid Build Coastguard Worker)
115