1a8c51b3fSopenharmony_cilicenses(["notice"])
2a8c51b3fSopenharmony_ci
3a8c51b3fSopenharmony_ciconfig_setting(
4a8c51b3fSopenharmony_ci    name = "qnx",
5a8c51b3fSopenharmony_ci    constraint_values = ["@platforms//os:qnx"],
6a8c51b3fSopenharmony_ci    values = {
7a8c51b3fSopenharmony_ci        "cpu": "x64_qnx",
8a8c51b3fSopenharmony_ci    },
9a8c51b3fSopenharmony_ci    visibility = [":__subpackages__"],
10a8c51b3fSopenharmony_ci)
11a8c51b3fSopenharmony_ci
12a8c51b3fSopenharmony_ciconfig_setting(
13a8c51b3fSopenharmony_ci    name = "windows",
14a8c51b3fSopenharmony_ci    constraint_values = ["@platforms//os:windows"],
15a8c51b3fSopenharmony_ci    values = {
16a8c51b3fSopenharmony_ci        "cpu": "x64_windows",
17a8c51b3fSopenharmony_ci    },
18a8c51b3fSopenharmony_ci    visibility = [":__subpackages__"],
19a8c51b3fSopenharmony_ci)
20a8c51b3fSopenharmony_ci
21a8c51b3fSopenharmony_ciconfig_setting(
22a8c51b3fSopenharmony_ci    name = "macos",
23a8c51b3fSopenharmony_ci    constraint_values = ["@platforms//os:macos"],
24a8c51b3fSopenharmony_ci    visibility = ["//visibility:public"],
25a8c51b3fSopenharmony_ci)
26a8c51b3fSopenharmony_ci
27a8c51b3fSopenharmony_ciconfig_setting(
28a8c51b3fSopenharmony_ci    name = "perfcounters",
29a8c51b3fSopenharmony_ci    define_values = {
30a8c51b3fSopenharmony_ci        "pfm": "1",
31a8c51b3fSopenharmony_ci    },
32a8c51b3fSopenharmony_ci    visibility = [":__subpackages__"],
33a8c51b3fSopenharmony_ci)
34a8c51b3fSopenharmony_ci
35a8c51b3fSopenharmony_cicc_library(
36a8c51b3fSopenharmony_ci    name = "benchmark",
37a8c51b3fSopenharmony_ci    srcs = glob(
38a8c51b3fSopenharmony_ci        [
39a8c51b3fSopenharmony_ci            "src/*.cc",
40a8c51b3fSopenharmony_ci            "src/*.h",
41a8c51b3fSopenharmony_ci        ],
42a8c51b3fSopenharmony_ci        exclude = ["src/benchmark_main.cc"],
43a8c51b3fSopenharmony_ci    ),
44a8c51b3fSopenharmony_ci    hdrs = [
45a8c51b3fSopenharmony_ci        "include/benchmark/benchmark.h",
46a8c51b3fSopenharmony_ci        "include/benchmark/export.h",
47a8c51b3fSopenharmony_ci    ],
48a8c51b3fSopenharmony_ci    linkopts = select({
49a8c51b3fSopenharmony_ci        ":windows": ["-DEFAULTLIB:shlwapi.lib"],
50a8c51b3fSopenharmony_ci        "//conditions:default": ["-pthread"],
51a8c51b3fSopenharmony_ci    }),
52a8c51b3fSopenharmony_ci    copts = select({
53a8c51b3fSopenharmony_ci        ":windows": [],
54a8c51b3fSopenharmony_ci        "//conditions:default": ["-Werror=old-style-cast"],
55a8c51b3fSopenharmony_ci    }),
56a8c51b3fSopenharmony_ci    strip_include_prefix = "include",
57a8c51b3fSopenharmony_ci    visibility = ["//visibility:public"],
58a8c51b3fSopenharmony_ci    # Only static linking is allowed; no .so will be produced.
59a8c51b3fSopenharmony_ci    # Using `defines` (i.e. not `local_defines`) means that no
60a8c51b3fSopenharmony_ci    # dependent rules need to bother about defining the macro.
61a8c51b3fSopenharmony_ci    linkstatic = True,
62a8c51b3fSopenharmony_ci    defines = [
63a8c51b3fSopenharmony_ci        "BENCHMARK_STATIC_DEFINE",
64a8c51b3fSopenharmony_ci    ] + select({
65a8c51b3fSopenharmony_ci        ":perfcounters": ["HAVE_LIBPFM"],
66a8c51b3fSopenharmony_ci        "//conditions:default": [],
67a8c51b3fSopenharmony_ci    }),
68a8c51b3fSopenharmony_ci    deps = select({
69a8c51b3fSopenharmony_ci        ":perfcounters": ["@libpfm//:libpfm"],
70a8c51b3fSopenharmony_ci        "//conditions:default": [],
71a8c51b3fSopenharmony_ci    }),
72a8c51b3fSopenharmony_ci)
73a8c51b3fSopenharmony_ci
74a8c51b3fSopenharmony_cicc_library(
75a8c51b3fSopenharmony_ci    name = "benchmark_main",
76a8c51b3fSopenharmony_ci    srcs = ["src/benchmark_main.cc"],
77a8c51b3fSopenharmony_ci    hdrs = ["include/benchmark/benchmark.h", "include/benchmark/export.h"],
78a8c51b3fSopenharmony_ci    strip_include_prefix = "include",
79a8c51b3fSopenharmony_ci    visibility = ["//visibility:public"],
80a8c51b3fSopenharmony_ci    deps = [":benchmark"],
81a8c51b3fSopenharmony_ci)
82a8c51b3fSopenharmony_ci
83a8c51b3fSopenharmony_cicc_library(
84a8c51b3fSopenharmony_ci    name = "benchmark_internal_headers",
85a8c51b3fSopenharmony_ci    hdrs = glob(["src/*.h"]),
86a8c51b3fSopenharmony_ci    visibility = ["//test:__pkg__"],
87a8c51b3fSopenharmony_ci)
88