Files
carbon-lang/bazel/cc_rules/defs.bzl
T
Jon Ross-Perkins 8c3fa80691 Add cc rule wrappers for cc_env (#5277)
Rules executed by bazel don't necessarily have the right environment to
find the symbolizer, which was the intent of `cc_env` setting
`LLVM_SYMBOLIZER_PATH`. So far, this has kind of been a case-by-case
fix, but every so often I'm trying to debug a crash in a test that
doesn't provide it. Rather continuing down this route, instead add
drop-in wrappers for cc rules so that it's hard to forget.

Note `bazel/cc_rules` is intended to mirror `bazel/carbon_rules` and
`bazel/cc_toolchains`, rather than `@rules_cc`.

AFAICT there isn't a great way to add this as a default for the `bazel
run` environment. It's not typically going to be set on its own,
forwarding `$PATH` would be too broad, and the [action
`env_sets`](https://bazel.build/docs/cc-toolchain-config-reference#using-action-config)
I think are not quite what we need (I think those don't include output
execution, only compilation).
2025-04-11 19:58:54 +00:00

34 lines
889 B
Python

# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
"""Wraps standard cc rules with the `cc_env` addition.
These should generally be used in place of `@rules_cc`.
"""
load(
"@rules_cc//cc:defs.bzl",
actual_cc_binary = "cc_binary",
actual_cc_library = "cc_library",
actual_cc_test = "cc_test",
)
load("//bazel/cc_toolchains:defs.bzl", "cc_env")
# Expose cc_library directly, for consistency.
cc_library = actual_cc_library
def cc_binary(env = {}, **kwargs):
"""Wraps `cc_binary`, adding `cc_env`."""
actual_cc_binary(
env = cc_env() | env,
**kwargs
)
def cc_test(env = {}, **kwargs):
"""Wraps `cc_binary`, adding `cc_env`."""
actual_cc_test(
env = cc_env() | env,
**kwargs
)