load("@bazel_skylib//lib:selects.bzl", "selects") licenses(["notice"]) package(default_visibility = ["//visibility:public"]) config_setting( name = "msvc_compiler", flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"}, ) selects.config_setting_group( name = "winplusmsvc", match_all = [ "@platforms//os:windows", ":msvc_compiler", ], ) cc_library( name = "nanobind", srcs = glob([ "src/*.cpp", ]), additional_linker_inputs = select({ "@platforms//os:macos": [":cmake/darwin-ld-cpython.sym"], "//conditions:default": [], }), copts = select({ ":msvc_compiler": [ "/EHsc", # exceptions "/Os", # size optimizations "/GL", # LTO / whole program optimization ], # these should work on both clang and gcc. "//conditions:default": [ "-fexceptions", "-flto", "-Os", ], }), includes = [ "ext/robin_map/include", "include", ], linkopts = select({ ":winplusmsvc": ["/LTGC"], # Windows + MSVC. "@platforms//os:macos": ["-Wl,@$(location :cmake/darwin-ld-cpython.sym)"], # Apple. "//conditions:default": [], }), textual_hdrs = glob( [ "include/**/*.h", "src/*.h", "ext/robin_map/include/tsl/*.h", ], ), deps = ["@python_headers"], )