| # Copyright 2022 Google LLC | |
| # | |
| # 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 | |
| # | |
| # http://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. | |
| common --enable_platform_specific_config | |
| # Force the use of Clang for all builds. | |
| build --action_env=CC=clang | |
| build --action_env=CXX=clang++ | |
| # Use the C++17 standard. | |
| build --cxxopt=-std=c++17 | |
| # Warn about the extensions that are not supported in C++17. | |
| # TODO(b/391433873): Turn warnings into errors once existing warnings are fixed. | |
| build --cxxopt=-Wc++17-compat-pedantic | |
| # Required by the cc_fuzztest_grammar_library rule, which uses the | |
| # "exec configuration" (https://bazel.build/reference/be/general#cross-compilation-considerations). | |
| # The --cxxopt flag does not apply to the exec configuration, only the | |
| # --host_cxxopt flag (https://bazel.build/docs/user-manual#host-cxxopt). | |
| build --host_cxxopt=-std=c++17 | |
| build --host_cxxopt=-Wc++17-compat-pedantic | |
| # Abseil emits a warning on clang <16 that's treated as an error by default. | |
| # See https://github.com/abseil/abseil-cpp/issues/2073. | |
| build --per_file_copt=-external/.*@-Wno-invalid-partial-specialization | |
| # Build GoogleTest with ABSL support. | |
| build --define absl=1 | |
| build:macos --macos_minimum_os=10.15 | |
| # To create this file, please run: | |
| # | |
| # bazel run //bazel:setup_configs > fuzztest.bazelrc | |
| # | |
| try-import %workspace%/fuzztest.bazelrc | |
| # Configure rules_rust to use the nightly channel toolchain by default. | |
| build --@rules_rust//rust/toolchain/channel:channel=nightly | |
| # CI cache configuration used by GitHub Actions workflows (--config=ci). | |
| # Store only external repository archives and compilation action outputs in | |
| # ~/.cache/bazel-cache rather than caching ~/.cache/bazel (Bazel's | |
| # output_user_root), which also contains the full execroot, bazel-out working | |
| # trees, .runfiles symlink forests, and test logs. | |
| common:ci --repository_cache=~/.cache/bazel-cache/repo | |
| build:ci --disk_cache=~/.cache/bazel-cache/disk | |
| # Exclude linked binaries (CppLink) from the disk cache: statically linked | |
| # debug/ASan/FuzzTest test binaries are tens to hundreds of MBs each and change | |
| # frequently, whereas caching compilation, archive (.o / .a), and test result | |
| # (TestRunner) actions keeps the cache compact while skipping unaffected tests. | |
| build:ci --modify_execution_info=CppLink=+no-cache | |
| # Automatically garbage-collect disk cache entries older than 7 days or | |
| # exceeding 2 GB immediately when the Bazel server becomes idle after a command. | |
| build:ci --experimental_disk_cache_gc_max_size=2G | |
| build:ci --experimental_disk_cache_gc_max_age=7d | |
| build:ci --experimental_disk_cache_gc_idle_delay=0 |