| licenses(["notice"]) |
| |
| COPTS = [ |
| "-pedantic", |
| "-pedantic-errors", |
| "-std=c++11", |
| "-Wall", |
| "-Wconversion", |
| "-Wextra", |
| "-Wshadow", |
| # "-Wshorten-64-to-32", |
| "-Wfloat-equal", |
| "-fstrict-aliasing", |
| ## assert() are used a lot in tests upstream, which may be optimised out leading to |
| ## unused-variable warning. |
| "-Wno-unused-variable", |
| "-Werror=old-style-cast", |
| ] |
| |
| config_setting( |
| name = "qnx", |
| constraint_values = ["@platforms//os:qnx"], |
| values = { |
| "cpu": "x64_qnx", |
| }, |
| visibility = [":__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "windows", |
| constraint_values = ["@platforms//os:windows"], |
| values = { |
| "cpu": "x64_windows", |
| }, |
| visibility = [":__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "macos", |
| constraint_values = ["@platforms//os:macos"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| config_setting( |
| name = "perfcounters", |
| define_values = { |
| "pfm": "1", |
| }, |
| visibility = [":__subpackages__"], |
| ) |
| |
| cc_library( |
| name = "benchmark", |
| srcs = glob( |
| [ |
| "src/*.cc", |
| "src/*.h", |
| ], |
| exclude = ["src/benchmark_main.cc"], |
| ), |
| hdrs = [ |
| "include/benchmark/benchmark.h", |
| "include/benchmark/export.h", |
| ], |
| copts = select({ |
| ":windows": [], |
| "//conditions:default": COPTS, |
| }), |
| defines = [ |
| "BENCHMARK_STATIC_DEFINE", |
| "BENCHMARK_VERSION=\\\"" + (module_version() if module_version() != None else "") + "\\\"", |
| ] + select({ |
| ":perfcounters": ["HAVE_LIBPFM"], |
| "//conditions:default": [], |
| }), |
| linkopts = select({ |
| ":windows": ["-DEFAULTLIB:shlwapi.lib"], |
| "//conditions:default": ["-pthread"], |
| }), |
| # Only static linking is allowed; no .so will be produced. |
| # Using `defines` (i.e. not `local_defines`) means that no |
| # dependent rules need to bother about defining the macro. |
| linkstatic = True, |
| local_defines = [ |
| # Turn on Large-file Support |
| "_FILE_OFFSET_BITS=64", |
| "_LARGEFILE64_SOURCE", |
| "_LARGEFILE_SOURCE", |
| ], |
| strip_include_prefix = "include", |
| visibility = ["//visibility:public"], |
| deps = select({ |
| ":perfcounters": ["@libpfm"], |
| "//conditions:default": [], |
| }), |
| ) |
| |
| cc_library( |
| name = "benchmark_main", |
| srcs = ["src/benchmark_main.cc"], |
| hdrs = [ |
| "include/benchmark/benchmark.h", |
| "include/benchmark/export.h", |
| ], |
| strip_include_prefix = "include", |
| visibility = ["//visibility:public"], |
| deps = [":benchmark"], |
| ) |
| |
| cc_library( |
| name = "benchmark_internal_headers", |
| hdrs = glob(["src/*.h"]), |
| visibility = ["//test:__pkg__"], |
| ) |