mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 20:30:14 +01:00
This sets things up to use `bazel` to run `clang-tidy` using https://github.com/erenon/bazel_clang_tidy. I'm fixing issues outside of explorer, and disabling clang-tidy for targets in explorer that have legacy issues. I was going to disable clang-tidy for targets in explorer such as interpreter anyways, because they're slow to parse, and just extended that to the currently failing targets.
71 lines
3.1 KiB
Plaintext
71 lines
3.1 KiB
Plaintext
# 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
|
|
|
|
# Support running clang-tidy with:
|
|
# bazel build --config=clang-tidy -k //...
|
|
# See: https://github.com/erenon/bazel_clang_tidy
|
|
build:clang-tidy --aspects @bazel_clang_tidy//clang_tidy:clang_tidy.bzl%clang_tidy_aspect
|
|
build:clang-tidy --output_groups=report
|
|
build:clang-tidy --@bazel_clang_tidy//:clang_tidy_config=//:clang_tidy_config
|
|
|
|
# Default to using a disk cache to minimize re-building LLVM and Clang which we
|
|
# try to avoid updating too frequently to minimize rebuild cost. The location
|
|
# here can be overridden in the user configuration where needed.
|
|
#
|
|
# Note that this cache will grow without bound currently. You should
|
|
# periodically run the `scripts/clean_disk_cache.sh` script or some equivalent.
|
|
# https://github.com/bazelbuild/bazel/issues/5139 tracks fixing this in Bazel.
|
|
build --disk_cache=~/.cache/carbon-lang-build-cache
|
|
|
|
# Enable some safety when using the build cache, likely to be defaulted in
|
|
# future Bazel releases.
|
|
build --experimental_guard_against_concurrent_changes
|
|
|
|
# Disable warnings for all external compilations. These involve code that isn't
|
|
# developed as part of Carbon and may be difficult or impossible to patch, so
|
|
# warnings aren't likely to be actionable.
|
|
build --per_file_copt=external/.*\.(c|cc|cpp|cxx)$@-w
|
|
build --host_per_file_copt=external/.*\.(c|cc|cpp|cxx)$@-w
|
|
|
|
# Default dynamic linking to off. While this can help build performance in some
|
|
# edge cases with very large linked executables and a slow linker, between using
|
|
# fast linkers on all platforms (LLD and the Apple linker), as well as having
|
|
# relatively few such executables, shared objects simply waste too much space in
|
|
# our builds.
|
|
build --dynamic_mode=off
|
|
|
|
# Always compile PIC code. There are few if any disadvantages on the platforms
|
|
# and architectures we care about and it avoids the need to compile files twice.
|
|
build --force_pic
|
|
|
|
# Completely disable Bazel's automatic stripping of debug information. Removing
|
|
# that information causes unhelpful backtraces from unittest failures and other
|
|
# crashes. Optimized builds already avoid using debug information by default.
|
|
build --strip=never
|
|
|
|
# Enable Abseil for GoogleTest.
|
|
build --define=absl=1
|
|
|
|
# Configuration for enabling Address Sanitizer. Note that this is enabled by
|
|
# default for fastbuild. The config is provided to enable ASan even in
|
|
# optimized or other build configurations.
|
|
build:asan --features=asan
|
|
|
|
# Configuration for enabling LibFuzzer (along with ASan).
|
|
build:fuzzer --features=fuzzer
|
|
|
|
# Always allow tests to symbolize themselves with whatever `llvm-symbolize` is
|
|
# in the users environment.
|
|
build --test_env=ASAN_SYMBOLIZER_PATH
|
|
|
|
# Force actions to have a UTF-8 language encoding.
|
|
# TODO: Need to investigate what this should be on Windows, but at least for
|
|
# Linux and macOS this seems strictly better than the Bazel default of just
|
|
# `en_US`.
|
|
build --action_env=LANG=en_US.UTF-8
|
|
|
|
# Allow users to override any of the flags desired by importing a user-specific
|
|
# RC file here if present.
|
|
try-import %workspace%/user.bazelrc
|