aboutsummaryrefslogtreecommitdiff
path: root/.bazelrc
diff options
context:
space:
mode:
Diffstat (limited to '.bazelrc')
-rw-r--r--.bazelrc78
1 files changed, 62 insertions, 16 deletions
diff --git a/.bazelrc b/.bazelrc
index 832402187..b8d5c6278 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -12,9 +12,29 @@
# License for the specific language governing permissions and limitations under
# the License.
+# Silence all C/C++ warnings in external code.
+#
+# Note that this will not silence warnings from external headers #include'd in
+# first-party code.
+common --per_file_copt=external/.*@-w
+common --host_per_file_copt=external/.*@-w
+
+# Don't automatically create __init__.py files.
+#
+# This prevents spurious package name collisions at import time, and should be
+# the default (https://github.com/bazelbuild/bazel/issues/7386). It's
+# particularly helpful for Pigweed, because we have many potential package name
+# collisions due to a profusion of stuttering paths like
+# pw_transfer/py/pw_transfer.
+common --incompatible_default_to_explicit_init_py
+
# 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
@@ -28,6 +48,10 @@ build --ui_event_filters=-debug
# 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
@@ -35,22 +59,11 @@ build --incompatible_strict_action_env
# (https://github.com/bazelembedded/rules_cc_toolchain/issues/46).
build --features=external_include_paths
-# TODO(b/269204725): Move the following flags to the toolchain configuration.
-# By default build with C++17.
-build --cxxopt='-std=c++17'
-build --cxxopt="-fno-rtti"
-build --cxxopt="-Wnon-virtual-dtor"
-# Allow uses of the register keyword, which may appear in C headers.
-build --cxxopt="-Wno-register"
-
-# This leaks the PATH variable into the Bazel build environment, which
-# enables the Python pw_protobuf plugins to find the Python version
-# via CIPD and pw_env_setup. This is a partial fix for pwbug/437,
-# however this does not provide a fix for downstream projects that
-# use system Python < 3.6. This approach is problematic because of the
-# Protobuf rebuild sensitivity to environment variable changes.
-# TODO(pwbug/437): Remove this once pwbug/437 is completely resolved.
-build --action_env=PATH
+# 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 \
@@ -59,6 +72,31 @@ 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
+
+# We use non-default labels for the STM32Cube repositories upstream (to reserve
+# the option of building for more than one MCU family down the road), so need to
+# override the three labels below.
+common --//third_party/stm32cube:hal_driver=@stm32f4xx_hal_driver//:hal_driver
+common --@stm32f4xx_hal_driver//:cmsis_device=@cmsis_device_f4//:cmsis_device
+common --@stm32f4xx_hal_driver//:cmsis_init=@cmsis_device_f4//:default_cmsis_init
+
+# Config for the stm32f429i_disc1_stm32cube platform.
+#
+# TODO: b/301334234 - Make the platform set the flags below.
+build:stm32f429i --platforms=//targets/stm32f429i_disc1_stm32cube:platform
+build:stm32f429i --copt="-DSTM32CUBE_HEADER=\"stm32f4xx.h\""
+build:stm32f429i --copt="-DSTM32F429xx"
+build:stm32f429i --@stm32f4xx_hal_driver//:hal_config=//targets/stm32f429i_disc1_stm32cube:hal_config
+build:stm32f429i --//pw_log:backend_impl=@pigweed//pw_log_tokenized:impl
+build:stm32f429i --//targets:pw_log_backend=@pigweed//pw_log_tokenized
+build:stm32f429i --//targets:pw_log_tokenized_handler_backend=@pigweed//pw_system:log_backend
+
# Specifies desired output mode for running tests.
# Valid values are
# 'summary' to output only test status summary
@@ -68,3 +106,11 @@ build:asan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan
# (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