| # 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" |
| # TODO(fzakaria): disabling due to costs of test execution |
| # 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 |