blob: 850dbf189c5e1e8146d7d2fa5d3532e2aa5de67c [file] [log] [blame]
"""Function for preserving `select` entries for Cargo cfg expressions which did
not match any enabled target triple / Bazel platform.
For example we might generate:
rust_library(
...
deps = [
"//common:unconditional_dep",
] + selects.with_unmapped({
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
"//third-party/rust:windows-sys", # cfg(windows)
],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
"//third-party/rust:libc", # cfg(any(unix, target_os = "wasi"))
],
"//conditions:default": [],
selects.NO_MATCHING_PLATFORM_TRIPLES: [
"//third-party/rust:hermit-abi", # cfg(target_os = "hermit")
],
})
)
"""
_SENTINEL = struct()
def _with_unmapped(configurations):
configurations.pop(_SENTINEL)
return select(configurations)
selects = struct(
with_unmapped = _with_unmapped,
NO_MATCHING_PLATFORM_TRIPLES = _SENTINEL,
)