# Copyright 2021 The Pigweed Authors
#
# 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.

# Required for new toolchain resolution API.
build --incompatible_enable_cc_toolchain_resolution

# Do not attempt to configure an autodetected (local) toolchain. We vendor all
# our toolchains, and CI VMs may not have any local toolchain to detect.
common --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1

# Required for combined code coverage reports.
coverage --experimental_generate_llvm_lcov
coverage --combined_report=lcov

# Suppress the DEBUG: log messages from bazel. We get lots of spammy DEBUG:
# messages from our third-party dependencies.
build --ui_event_filters=-debug

# Enforces consistent action environment variables. This is important to
# address Protobuf's rebuild sensitivity on changes to the environment
# variables.
build --incompatible_strict_action_env

# Workaround for https://github.com/bazelbuild/rules_jvm_external/issues/445.
build --java_runtime_version=remotejdk_11
build --repo_env=JAVA_HOME=../bazel_tools/jdk

# Silence compiler warnings from external repositories.
#
# This is supported by Bazel's default C++ toolchain, but not yet by
# rules_cc_toolchain
# (https://github.com/bazelembedded/rules_cc_toolchain/issues/46).
build --features=external_include_paths

# This feature can't be enabled until __unordtf2 and __letf2 are implemented by
# compiler-rt. See https://reviews.llvm.org/D53608.
# build --features=fully_static_link

build --@mbedtls//:mbedtls_config=//third_party/mbedtls:default_config

# Define the --config=asan-libfuzzer configuration.
build:asan-libfuzzer \
    --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzing/engines:libfuzzer
build:asan-libfuzzer \
    --@rules_fuzzing//fuzzing:cc_engine_instrumentation=libfuzzer
build:asan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan

# Include FuzzTest build configurations.
try-import %workspace%/third_party/fuzztest/fuzztest.bazelrc
build:fuzztest \
    --@pigweed//targets:pw_fuzzer_fuzztest_backend=@com_google_fuzztest//fuzztest
build:fuzztest \
    --@pigweed//targets:pw_unit_test_main=@com_google_fuzztest//fuzztest:fuzztest_gtest_main

# Specifies desired output mode for running tests.
# Valid values are
#   'summary' to output only test status summary
#   'errors' to also print test logs for failed tests
#   'all' to print logs for all tests
#   'streamed' to output logs for all tests in real time
#     (this will force tests to be executed locally one at a time regardless
#     of --test_strategy value).
test --test_output=errors

# User bazelrc file; see
# https://bazel.build/configure/best-practices#bazelrc-file
#
# Note: this should be at the bottom of the file, so that user-specified
# options override anything in this file
# (https://bazel.build/run/bazelrc#imports)
try-import %workspace%/user.bazelrc
