[MemProf] Templatize CallStackRadixTreeBuilder (NFC) (#117014)
[llvm-project.git] / utils / bazel / .bazelrc
blob2628352f5162b6b259004a8a3b344eb89d122adc
1 # This file is licensed under the Apache License v2.0 with LLVM Exceptions.
2 # See https://llvm.org/LICENSE.txt for license information.
3 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5 ###############################################################################
6 # Common flags that apply to all configurations.
7 # Use sparingly for things common to all compilers and platforms.
8 ###############################################################################
10 # Flip off to disable MODULE.bazel until we're ready.
11 # https://github.com/llvm/llvm-project/issues/55924
12 common --enable_bzlmod=false
14 # Prevent invalid caching if input files are modified during a build.
15 build --experimental_guard_against_concurrent_changes
17 # Automatically enable --config=(linux|macos|windows) based on the host
18 build --enable_platform_specific_config
20 # In opt mode, bazel by default builds both PIC and non-PIC object files for
21 # tests vs binaries. We don't need this feature and it slows down opt builds
22 # considerably.
23 # TODO: Remove platform specifics we're on bazel 7.x https://github.com/bazelbuild/bazel/issues/12439
24 # Apple platforms always enable pic so this flag is unnecessary anyways
25 build:linux --force_pic
26 build:windows --force_pic
28 # Shared objects take up more space. With fast linkers and binaries that aren't
29 # super large, the benefits of shared objects are minimal.
30 build --dynamic_mode=off
32 # Rely on compiler flags to compile with debug info/strip rather than stripping
33 # based on compilation_mode.
34 build --strip=never
36 # Add layering check to all projects.
37 build --features=layering_check
39 # Opt out of legacy lax behavior implicitly exporting files that are rule inputs
40 # with default visibility.
41 # See: https://bazel.build/reference/be/functions#exports_files
42 build --incompatible_no_implicit_file_export
44 # Enable so downstream users can flip this flag globally, this should
45 # eventually become the default
46 common --incompatible_disallow_empty_glob
48 # TODO: Remove once we move to bazel 7.x
49 build --experimental_cc_shared_library
51 # Disabling runfiles links drastically increases performance in slow disk IO
52 # situations Do not build runfile trees by default. If an execution strategy
53 # relies on runfile symlink tree, the tree is created on-demand. See:
54 # https://github.com/bazelbuild/bazel/issues/6627 and
55 # https://github.com/bazelbuild/bazel/commit/03246077f948f2790a83520e7dccc2625650e6df
56 build --build_runfile_links=false
58 ###############################################################################
59 # Options to select different strategies for linking potential dependent
60 # libraries. The default leaves it disabled.
61 ###############################################################################
63 build:zlib_external --repo_env=BAZEL_LLVM_ZLIB_STRATEGY=external
64 build:zlib_system --repo_env=BAZEL_LLVM_ZLIB_STRATEGY=system
66 ###############################################################################
67 # Options for "generic_clang" builds: these options should generally apply to
68 # builds using a Clang-based compiler, and default to the `clang` executable on
69 # the `PATH`. While these are provided for convenience and may serve as a
70 # reference, it would be preferable for users to configure an explicit C++
71 # toolchain instead of relying on `.bazelrc` files.
72 ###############################################################################
74 # Set the default compiler to the `clang` binary on the `PATH`.
75 build:generic_clang --repo_env=CC=clang
77 # C++17 standard version is required.
78 build:generic_clang --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
80 # Use `-Wall` for Clang.
81 build:generic_clang --copt=-Wall --host_copt=-Wall
83 # The Clang available on MacOS has a warning that isn't clean on MLIR code. The
84 # warning doesn't show up with more recent Clangs, so just disable for now.
85 build:generic_clang --cxxopt=-Wno-range-loop-analysis --host_cxxopt=-Wno-range-loop-analysis
87 # Build errors are not a helpful way to enforce deprecation in-repo and it is
88 # not the point of the Bazel build to catch usage of deprecated APIs.
89 build:generic_clang --copt=-Wno-deprecated --host_copt=-Wno-deprecated
91 # lld links faster than other linkers. Assume that anybody using clang also has
92 # lld available.
93 build:generic_clang --linkopt=-fuse-ld=lld --host_linkopt=-fuse-ld=lld
95 ###############################################################################
96 # Options for "generic_gcc" builds: these options should generally apply to
97 # builds using a GCC-based compiler, and default to the `gcc` executable on
98 # the `PATH`. While these are provided for convenience and may serve as a
99 # reference, it would be preferable for users to configure an explicit C++
100 # toolchain instead of relying on `.bazelrc` files.
101 ###############################################################################
103 # Set the default compiler to the `gcc` binary on the `PATH`.
104 build:generic_gcc --repo_env=CC=gcc
106 # C++17 standard version is required.
107 build:generic_gcc --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
109 # Build errors are not a helpful way to enforce deprecation in-repo and it is
110 # not the point of the Bazel build to catch usage of deprecated APIs.
111 build:generic_gcc --copt=-Wno-deprecated --host_copt=-Wno-deprecated
113 # Disable GCC warnings that are noisy and/or false positives on LLVM code.
114 # These need to be global as some code triggering these is in header files.
115 build:generic_gcc --copt=-Wno-unused-parameter --host_copt=-Wno-unused-parameter
116 build:generic_gcc --copt=-Wno-comment --host_copt=-Wno-comment
117 build:generic_gcc --cxxopt=-Wno-class-memaccess --host_cxxopt=-Wno-class-memaccess
118 build:generic_gcc --copt=-Wno-maybe-uninitialized --host_copt=-Wno-maybe-uninitialized
119 build:generic_gcc --copt=-Wno-misleading-indentation --host_copt=-Wno-misleading-indentation
121 ###############################################################################
122 # Generic Windows flags common to both MSVC and Clang.
123 ###############################################################################
125 # C++17 standard version is required.
126 build:windows --cxxopt=/std:c++17 --host_cxxopt=/std:c++17
128 # Other generic dialect flags.
129 build:windows --copt=/Zc:strictStrings --host_copt=/Zc:strictStrings
130 build:windows --copt=/Oi --host_copt=/Oi
131 build:windows --cxxopt=/Zc:rvalueCast --host_cxxopt=/Zc:rvalueCast
133 # Use the more flexible bigobj format for C++ files that have lots of symbols.
134 build:windows --cxxopt=/bigobj --host_cxxopt=/bigobj
136 ###############################################################################
137 # Windows specific flags for building with MSVC.
138 ###############################################################################
140 build:msvc --config=windows
142 build:msvc --copt=/WX --host_copt=/WX    # Treat warnings as errors...
143 # ...but disable the ones that are violated
144 build:msvc --copt=/wd4141 --host_copt=/wd4141 # inline used more than once
145 build:msvc --copt=/wd4244 --host_copt=/wd4244 # conversion type -> type
146 build:msvc --copt=/wd4267 --host_copt=/wd4267 # conversion size_t -> type
147 build:msvc --copt=/wd4273 --host_copt=/wd4273 # multiple definitions with different dllimport
148 build:msvc --copt=/wd4319 --host_copt=/wd4319 # zero-extending after complement
149 build:msvc --copt=/wd4624 --host_copt=/wd4624 # destructor was implicitly defined as deleted
150 build:msvc --copt=/wd4804 --host_copt=/wd4804 # comparisons between bool and int
151 build:msvc --copt=/wd4805 --host_copt=/wd4805 # comparisons between bool and int
153 build:msvc --linkopt=/WX --host_linkopt=/WX # Treat warnings as errors...
154 # ...but disable the ones that are violated.
155 build:msvc --linkopt=/IGNORE:4001 --host_linkopt=/IGNORE:4001 # no object files
157 ###############################################################################
158 # Options for Windows `clang-cl` builds.
159 ###############################################################################
161 # We just start with the baseline Windows config as `clang-cl` doesn't accept
162 # some of the generic Clang flags.
163 build:clang-cl --config=windows
165 # Switch from MSVC to the `clang-cl` compiler.
166 build:clang-cl --compiler=clang-cl
168 # Use Clang's internal warning flags instead of the ones that sometimes map
169 # through to MSVC's flags.
170 build:clang-cl --copt=/clang:-Wall --host_copt=/clang:-Wall
171 build:clang-cl --copt=/clang:-Werror --host_copt=/clang:-Werror
173 # This doesn't appear to be enforced by any upstream bot.
174 build:clang-cl --copt=/clang:-Wno-unused --host_copt=/clang:-Wno-unused
176 # There appears to be an unused constant in GoogleTest on Windows.
177 build:clang-cl --copt=/clang:-Wno-unused-const-variable --host_copt=/clang:-Wno-unused-const-variable
179 # Disable some warnings hit even with `clang-cl` in Clang's own code.
180 build:clang-cl --copt=/clang:-Wno-inconsistent-dllimport --host_copt=/clang:-Wno-inconsistent-dllimport
181 build:clang-cl --cxxopt=/clang:-Wno-c++11-narrowing --host_cxxopt=/clang:-Wno-c++11-narrowing
183 ###############################################################################
184 # Options for continuous integration.
185 ###############################################################################
187 # -O1 tries to provide a reasonable tradeoff between compile times and runtime
188 # performance. However, if we start running more tests (e.g. all of
189 # check-clang) we may want more optimizations.
190 # Note for anybody considering using --compilation_mode=opt in CI, it builds
191 # most files twice, one PIC version for shared libraries in tests, and one
192 # non-PIC version for binaries.
193 build:ci --copt=-O1
195 # Use clang.
196 build:ci --config=generic_clang
198 # Speedup bazel using a ramdisk.
199 build:ci --sandbox_base=/dev/shm
201 # Use system's mpfr and pfm instead of building it from source.
202 # This is non hermetic but helps with compile time.
203 build:ci --@llvm-project//libc:mpfr=system
204 build:ci --@llvm-project//llvm:pfm=system
206 # Don't build/test targets tagged with "nobuildkite".
207 build:ci --build_tag_filters=-nobuildkite
208 build:ci --test_tag_filters=-nobuildkite
210 # Show as many errors as possible.
211 build:ci --keep_going
213 # Show test errors.
214 build:ci --test_output=errors
216 # Only show failing tests to reduce output
217 build:ci --test_summary=terse
219 # Attempt to work around intermittent issue while trying to fetch remote blob.
220 # See e.g. https://github.com/bazelbuild/bazel/issues/18694.
221 build:ci --remote_default_exec_properties=cache-silo-key=CleverPeafowl
223 ###############################################################################
225 # The user.bazelrc file is not checked in but available for local mods.
226 # Always keep this at the end of the file so that user flags override.
227 try-import %workspace%/user.bazelrc