60 lines · plain
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", # exceptions32 "/Os", # size optimizations33 "/GL", # LTO / whole program optimization34 ],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