-
Notifications
You must be signed in to change notification settings - Fork 116
/
.bazelrc
74 lines (67 loc) · 3.49 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
# Copyright 2023 The StableHLO Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
build --cxxopt=-std=c++17
build --host_cxxopt=-std=c++17
# llvm builds typically without rtti
# disable it to be consistent with the llvm build
# this also helps later on when using sanitizers
build --cxxopt=-fno-rtti
build --host_cxxopt=-fno-rtti
# support layering_check similar to Google internal
# this only works for Clang toolchain AFAIK
# https://github.com/bazelbuild/bazel/pull/11440
build --features=layering_check
# Set the default compiler to the `clang` binary on the `PATH`.
# TODO(fzakaria): Make this a toolchain or hermetic somehow
build --repo_env=CC=clang
# turn on fission https://gcc.gnu.org/wiki/DebugFission
# this separates the debug information and can improve link times
build --fission=dbg
build:san-common --strip=never --copt=-fno-omit-frame-pointer
# Some of this is from "Can I run AddressSanitizer with more aggressive diagnostics enabled?"
# on https://github.com/google/sanitizers/wiki/AddressSanitizer#faq and some is from
# https://chromium.googlesource.com/external/github.com/grpc/grpc/+/4e9206f48c91e17f43856b016b12f59dd5118293/tools/bazel.rc
build:asan --config=san-common
build:asan --features=asan
build:asan --copt=-fsanitize-address-use-after-scope
# We explicitly disable strict_init_order because LLVM is "hostile to init order"
# even the google3 monorepo disables it
# TODO(fzakaria): disabling due to costs of test execution
# I don't think internally to Google we use these options
# build:asan --action_env=ASAN_OPTIONS=detect_odr_violations=2:detect_leaks=1:strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=0
# build:asan --action_env=LSAN_OPTIONS=report_objects=1
build:asan --cc_output_directory_tag=asan
# asan tests tend to take longer, so increase the timeouts
# defaults are: 60,300,900,3600
test:asan --test_timeout=300,600,1800,-1
build:ubsan --config=san-common
build:ubsan --features=ubsan
# This is needed on account of
# https://github.com/bazelbuild/bazel/issues/11122#issuecomment-896613570
# tl;dr; bazel uses clang and not clang++ to be the driver
# that discrepenancy causes some issues with ubsan
build:ubsan --linkopt=-fsanitize-link-c++-runtime
build:ubsan --copt=-fsanitize-link-c++-runtime
build:ubsan --linkopt=--driver-mode=g++
build:ubsan --host_linkopt=-fsanitize-link-c++-runtime
build:ubsan --action_env=UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1
# Disabling runfiles links drastically increases performance in slow disk IO situations
# Do not build runfile trees by default. If an execution strategy relies on runfile
# symlink tree, the tree is created on-demand. See: https://github.com/bazelbuild/bazel/issues/6627
# and https://github.com/bazelbuild/bazel/commit/03246077f948f2790a83520e7dccc2625650e6df
build --nobuild_runfile_links
test --nobuild_runfile_links
# https://bazel.build/reference/command-line-reference#flag--legacy_external_runfiles
build --nolegacy_external_runfiles
test --nolegacy_external_runfiles