-
Notifications
You must be signed in to change notification settings - Fork 5.6k
/
.bazelrc
214 lines (179 loc) · 9.15 KB
/
.bazelrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# Reference docs: https://bazel.build/run/bazelrc
# coverity need to use the local command without remote execution auto
# enabled.
info --config=local
# This automatically sets a config based on host platform, ex: --config=macos if the host is macos
build --enable_platform_specific_config=true
# Don't use legacy toolchain resolution.
build --incompatible_enable_cc_toolchain_resolution
# This makes builds more hermetic by preventing environment variables from leaking into the execution of rules
build --incompatible_strict_action_env=true
# allows us to use python rules. This is needed because of the bug:
# https://github.com/bazelbuild/bazel/issues/4327
build --experimental_inprocess_symlink_creation
# cc_library transitively propagates link opts. The build uses cc_shared_library to avoid this when linking
# dynamically.
build --experimental_cc_shared_library
# Reuse sandboxes to save sandbox execution and deletion times.
build --experimental_reuse_sandbox_directories
# while in hybrid build state, using local unsandboxed linking should be faster. When most of our link
# targets have been converted (i.e. unittest binaries) and we can BWOB, remote linking should be faster
# in those cases:
build --strategy=CppLink=local
build --strategy=CppArchive=local
build --strategy=SolibSymlink=local
build --strategy=StripDebuginfo=local
build --strategy=ExtractDebuginfo=local
build --modify_execution_info=^(CppLink|CppArchive|SolibSymlink|ExtractDebuginfo|StripDebuginfo)$=+no-remote-cache
# Aliases for config flags
build --flag_alias=linkstatic=//bazel/config:linkstatic
build --flag_alias=compiler_type=//bazel/config:compiler_type
build --flag_alias=linker=//bazel/config:linker
build --flag_alias=use_gdbserver=//bazel/config:use_gdbserver
build --flag_alias=libunwind=//bazel/config:libunwind
build --flag_alias=spider_monkey_dbg=//bazel/config:spider_monkey_dbg
build --flag_alias=allocator=//bazel/config:allocator
build --flag_alias=use_lldbserver=//bazel/config:use_lldbserver
build --flag_alias=opt=//bazel/config:opt
build --flag_alias=dbg=//bazel/config:dbg
build --flag_alias=debug_symbols=//bazel/config:debug_symbols
build --flag_alias=thin_lto=//bazel/config:thin_lto
build --flag_alias=separate_debug=//bazel/config:separate_debug
build --flag_alias=use_wait_for_debugger=//bazel/config:use_wait_for_debugger
build --flag_alias=use_ocsp_stapling=//bazel/config:use_ocsp_stapling
build --flag_alias=use_disable_ref_track=//bazel/config:use_disable_ref_track
build --flag_alias=use_wiredtiger=//bazel/config:use_wiredtiger
build --flag_alias=use_glibcxx_debug=//bazel/config:use_glibcxx_debug
build --flag_alias=use_tracing_profiler=//bazel/config:use_tracing_profiler
build --flag_alias=build_grpc=//bazel/config:build_grpc
build --flag_alias=use_libcxx=//bazel/config:use_libcxx
build --flag_alias=detect_odr_violations=//bazel/config:detect_odr_violations
build --flag_alias=shared_archive=//bazel/config:shared_archive
build --flag_alias=streams_release_build=//bazel/config:streams_release_build
build --flag_alias=release=//bazel/config:release
build --flag_alias=build_enterprise=//bazel/config:build_enterprise
build --flag_alias=visibility_support=//bazel/config:visibility_support
build --flag_alias=disable_warnings_as_errors=//bazel/config:disable_warnings_as_errors
build --flag_alias=gcov=//bazel/config:gcov
build --flag_alias=pgo_profile=//bazel/config:pgo_profile
build --flag_alias=server_js=//bazel/config:server_js
build --flag_alias=ssl=//bazel/config:ssl
build --flag_alias=js_engine=//bazel/config:js_engine
build --flag_alias=use_sasl_client=//bazel/config:use_sasl_client
build --flag_alias=enterprise_feature_all=//bazel/config:enterprise_feature_all
build --flag_alias=enterprise_feature_all=//bazel/config:enterprise_feature_all
build --flag_alias=enterprise_feature_all=//bazel/config:enterprise_feature_all
build --flag_alias=dwarf_version=//bazel/config:dwarf_version
build --flag_alias=http_client=//bazel/config:http_client
build --flag_alias=developer_dir=//bazel/config:developer_dir
build --flag_alias=asan=//bazel/config:asan
build --flag_alias=fsan=//bazel/config:fsan
build --flag_alias=msan=//bazel/config:msan
build --flag_alias=lsan=//bazel/config:lsan
build --flag_alias=tsan=//bazel/config:tsan
build --flag_alias=ubsan=//bazel/config:ubsan
--config=remote_link
build:remote_link --strategy=CppLink=remote
build:remote_link --strategy=CppArchive=remote
build:remote_link --strategy=SolibSymlink=remote
build:remote_link --strategy=ExtractDebugInfo=remote
build:remote_link --strategy=StripDebugInfo=remote
build:remote_link --features=-thin_archive
# Disable the default compiler flags to avoid certain flags that conflict with flags we setup.
build:windows --features=-smaller_binary
build:windows --features=-frame_pointer
build:windows --features=-opt
build:windows --features=-dbg
build:windows --features=-fastbuild
build:windows --features=-dynamic_link_msvcrt
# Dynamic linking on Windows (DLL generation) is currently not supported.
build:windows --//bazel/config:linkstatic=True
# The only Windows compiler we support is MSVC.
build:windows --//bazel/config:compiler_type=msvc
# Windows and MacOS do not use the custom toolchain config, so the compiler flags need to be set here.
build:macos --cxxopt=-std=c++20
build:windows --cxxopt=/std:c++20
# Set the windows version to win10 by default
# TODO(SERVER-87654): We may want to add support for other Windows versions in the future.
build:windows --cxxopt=-D_WIN32_WINNT=0x0A00
build:windows --cxxopt=-DBOOST_USE_WINAPI_VERSION=0x0A00
build:windows --cxxopt=-DNTDDI_VERSION=0x0A000000
# TODO(SERVER-93585): Remove this and fix s2 to work with Bazel's default which
# sets COMPILER_MSVC on windows.
build:windows --cxxopt=-UCOMPILER_MSVC
# Remote execution and caching is the default, but only mongodb employees will be able to access
# the engflow cluster. External builders should use the --config=local option
# Enable remote build execution:
build:linux --remote_executor=grpcs://sodalite.cluster.engflow.com
build:linux --jobs=200
# Enable remote cache (also necessary for remote build execution):
build --remote_cache=grpcs://sodalite.cluster.engflow.com
build --bes_backend=grpcs://sodalite.cluster.engflow.com
build --bes_results_url=https://sodalite.cluster.engflow.com/invocation/
build --remote_cache_compression=true
build --grpc_keepalive_time=30s
build --nolegacy_important_outputs
build --bes_keywords=repo:mongo
common --remote_upload_local_results=False
# Settings specific for clang-tidy
--config=clang-tidy
build:clang-tidy --//bazel/config:compiler_type=clang
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
build:clang-tidy --@bazel_clang_tidy//:clang_tidy_executable=@mongo_toolchain//:clang_tidy
build:clang-tidy --@bazel_clang_tidy//:clang_tidy_additional_deps=@mongo_toolchain//:all
# if you don't have access to the remote execution cluster above, use the local config
# described below.
# pass local config to SCons like:
# > buildscripts/scons.py BAZEL_FLAGS=--config=local <others args>
# or if invoking bazel directly pass "--config=local" on the bazel command line
--config=local
build:local --remote_executor=
build:local --remote_cache=
build:local --bes_backend=
build:local --bes_results_url=
build:local --tls_client_certificate=
build:local --tls_client_key=
build:local --remote_cache_compression=false
build:local --grpc_keepalive_time=0s
build:local --legacy_important_outputs
build:local --jobs=auto
# Disable remote execution but keep remote cache enabled
--config=no-remote-exec
common:no-remote-exec --remote_executor=
common:no-remote-exec --jobs=auto
# Disable remote execution and caching for public releases
--config=public-release
build:public-release --remote_executor=
build:public-release --remote_cache=
build:public-release --bes_backend=
build:public-release --bes_results_url=
build:public-release --tls_client_certificate=
build:public-release --tls_client_key=
build:public-release --remote_cache_compression=false
build:public-release --grpc_keepalive_time=0s
build:public-release --legacy_important_outputs
# Avoid failing builds when BES metadata fails to upload.
common --bes_upload_mode=fully_async
# Enable Build without the Bytes
common --remote_download_outputs=toplevel
common --enable_bzlmod=false
# Default Mongo Version if a version is not specified.
build --define=MONGO_VERSION=8.1.0-alpha
# Default distmod if not specified.
build --define=MONGO_DISTMOD=""
# Default if .git directory is not present
build --define=GIT_COMMIT_HASH="nogitversion"
# try to import the bazelrc files if available
try-import %workspace%/.bazelrc.local
# TODO(WT-12780): delete this once wiredtiger switches to /.bazelrc.evergreen.
try-import %workspace%/.bazelrc.evergreen_engflow_creds
# Evergreen settings, ex. in evergreen this will set the key/cert options for access to the cluster
try-import %workspace%/.bazelrc.evergreen
# Import settings for selecting the right xcode version on mac
try-import %workspace%/.bazelrc.xcode
# local default dev settings
try-import %workspace%/.bazelrc.workstation
# local git version info
try-import %workspace%/.bazelrc.gitinfo