Files
carbon-lang/bazel/cc_toolchains/defs.bzl
T
Jon Ross-Perkins c451a5004d Add LLVM_SYMBOLIZER_PATH to the standard cc_binary environment. (#2291)
LLVM_SYMBOLIZER_PATH is required if `llvm-symbolizer` isn't in the developer's PATH. This sets it via bazel instead of having a developer handle it. I noticed this because the apt install of clang doesn't put llvm-symbolizer in the PATH.

I'd like to make this the default without putting it everywhere, but I don't see a way to do this intrinsically through [the toolchain](https://bazel.build/docs/cc-toolchain-config-reference), and the [rules_cc/defs.bzl](https://github.com/bazelbuild/rules_cc/blob/main/cc/defs.bzl) remains a thin wrapper around the native cc_binary.

Since I'm adding another env, it seems undesirable to have the macos asan workaround separate. As a consequence, this merges it in. Note bazel doesn't support merging a dict and a select, so it's also necessary to have the two env vars at least mildly aware there's something up (and this could get worse if we end up having more selects).
2022-10-17 14:56:04 -07:00

23 lines
927 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
"""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."""
env = {"LLVM_SYMBOLIZER_PATH": llvm_symbolizer}
# On macOS, there's a nano zone allocation warning due to asan (arises
# in fastbuild/dbg). This suppresses the warning in `bazel run`.
#
# Concatenation of a dict with a select isn't supported, so we concatenate
# within the select.
# https://github.com/bazelbuild/bazel/issues/12457
return select({
"//bazel/cc_toolchains:macos_asan": env.update({"MallocNanoZone": "0"}),
"//conditions:default": env,
})