"""Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias="opt"` to enable.""" load("@rules_cc//cc:defs.bzl", "CcInfo") load("@rules_rust//rust:rust_common.bzl", "COMMON_PROVIDERS") def _transition_alias_impl(ctx): # `ctx.attr.actual` is a list of 1 item due to the transition providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS] if CcInfo in ctx.attr.actual[0]: providers.append(ctx.attr.actual[0][CcInfo]) return providers def _change_compilation_mode(compilation_mode): def _change_compilation_mode_impl(_settings, _attr): return { "//command_line_option:compilation_mode": compilation_mode, } return transition( implementation = _change_compilation_mode_impl, inputs = [], outputs = [ "//command_line_option:compilation_mode", ], ) def _transition_alias_rule(compilation_mode): return rule( implementation = _transition_alias_impl, provides = COMMON_PROVIDERS, attrs = { "actual": attr.label( mandatory = True, doc = "`rust_library()` target to transition to `compilation_mode=opt`.", providers = COMMON_PROVIDERS, cfg = _change_compilation_mode(compilation_mode), ), "_allowlist_function_transition": attr.label( default = "@bazel_tools//tools/allowlists/function_transition_allowlist", ), }, doc = "Transitions a Rust library crate to the `compilation_mode=opt`.", ) transition_alias_dbg = _transition_alias_rule("dbg") transition_alias_fastbuild = _transition_alias_rule("fastbuild") transition_alias_opt = _transition_alias_rule("opt")