xref: /llvm-project/third-party/benchmark/bindings/python/nanobind.BUILD (revision a5b797172cc902db166e9a695716fb81405f86e4)
1load("@bazel_skylib//lib:selects.bzl", "selects")
2
3licenses(["notice"])
4
5package(default_visibility = ["//visibility:public"])
6
7config_setting(
8    name = "msvc_compiler",
9    flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"},
10)
11
12selects.config_setting_group(
13    name = "winplusmsvc",
14    match_all = [
15        "@platforms//os:windows",
16        ":msvc_compiler",
17    ],
18)
19
20cc_library(
21    name = "nanobind",
22    srcs = glob([
23        "src/*.cpp",
24    ]),
25    additional_linker_inputs = select({
26        "@platforms//os:macos": [":cmake/darwin-ld-cpython.sym"],
27        "//conditions:default": [],
28    }),
29    copts = select({
30        ":msvc_compiler": [
31            "/EHsc",  # exceptions
32            "/Os",  # size optimizations
33            "/GL",  # LTO / whole program optimization
34        ],
35        # these should work on both clang and gcc.
36        "//conditions:default": [
37            "-fexceptions",
38            "-flto",
39            "-Os",
40        ],
41    }),
42    includes = [
43        "ext/robin_map/include",
44        "include",
45    ],
46    linkopts = select({
47        ":winplusmsvc": ["/LTGC"],  # Windows + MSVC.
48        "@platforms//os:macos": ["-Wl,@$(location :cmake/darwin-ld-cpython.sym)"],  # Apple.
49        "//conditions:default": [],
50    }),
51    textual_hdrs = glob(
52        [
53            "include/**/*.h",
54            "src/*.h",
55            "ext/robin_map/include/tsl/*.h",
56        ],
57    ),
58    deps = ["@python_headers"],
59)
60