mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 20:20:10 +01:00
Use `Label` to mark labels that are local to this module. Remove workspace root when forming manifest. Add explicit import for name that is not available implicitly in an imported module. Assisted-by: Gemini via Antigravity
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
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
|
|
|
|
"""Provides helpers for cc rules. Intended for general consumption."""
|
|
|
|
load("@bazel_cc_toolchain//:clang_detected_variables.bzl", "llvm_symbolizer")
|
|
|
|
def cc_env():
|
|
"""Returns standard environment settings for a cc_binary.
|
|
|
|
In use, this looks like:
|
|
|
|
```
|
|
load("//bazel/cc_toolchains:defs.bzl", "cc_env")
|
|
|
|
cc_binary(
|
|
...
|
|
env = cc_env(),
|
|
)
|
|
```
|
|
|
|
We're currently setting this on a target-by-target basis, mainly because
|
|
it's difficult to modify default behaviors.
|
|
"""
|
|
|
|
# Settings which apply cross-platform.
|
|
# buildifier: disable=unsorted-dict-items
|
|
common_env = {
|
|
"LLVM_SYMBOLIZER_PATH": llvm_symbolizer,
|
|
# Sanitizers don't use LLVM as fallback, but sometimes ASAN may be used
|
|
# for UBSAN errors; we still set UBSAN in case it's directly used.
|
|
"ASAN_SYMBOLIZER_PATH": llvm_symbolizer,
|
|
"UBSAN_SYMBOLIZER_PATH": llvm_symbolizer,
|
|
# Default to printing traces for UBSAN.
|
|
"UBSAN_OPTIONS": "print_stacktrace=1",
|
|
}
|
|
|
|
# On macOS, there's a nano zone allocation warning when asan is enabled.
|
|
# This suppresses the warning in `bazel run`.
|
|
macos_env = {"MallocNanoZone": "0"}
|
|
|
|
return common_env | select({
|
|
Label("//bazel/cc_toolchains:macos_asan"): macos_env,
|
|
"//conditions:default": {},
|
|
})
|