# Copyright 2024 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.

# General Bazel configuration
# ===========================
common --verbose_failures
test --test_output=errors

# Rust configuration
# ==================
# TODO: https://pwbug.dev/389149411 - Always enabling clippy/rustfmt aspects
# causes toolchain resolution problems for the device builds.

# Enable clippy lints
build:lint --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
build:lint --output_groups=+clippy_checks

# Enforce rustfmt formatting
build:lint --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect
build:lint --output_groups=+rustfmt_checks

# TODO - konkers: fix upstream stable toolchains
common --@rules_rust//rust/toolchain/channel=nightly

# Ensure this flag is propagated to exec config.
common --experimental_propagate_custom_flag=@rules_rust//rust/toolchain/channel

common --@pigweed//pw_log/rust:pw_log_backend=//subsys/console:pw_log_backend

# Clippy broken with embedded tests
build:qemu-microbit --output_groups=-clippy_checks
build:qemu-microbit --output_groups=-rustfmt_checks
build:qemu-microbit --platforms=//target/qemu:microbit --output_groups=-clippy_checks
run:qemu-microbit --run_under="@qemu//:qemu-system-arm \
-cpu cortex-m0 \
-machine microbit \
-nographic \
-semihosting-config \
enable=on,target=native \
-serial mon:stdio \
-kernel "

# Clippy broken with embedded tests
build:qemu-lm3s6965evb --output_groups=-clippy_checks
build:qemu-lm3s6965evb --output_groups=-rustfmt_checks
build:qemu-lm3s6965evb --platforms=//target/qemu:lm3s6965evb
run:qemu-lm3s6965evb --run_under="@qemu//:qemu-system-arm \
-cpu cortex-m3 \
-machine lm3s6965evb \
-nographic \
-semihosting-config \
enable=on,target=native \
-serial mon:stdio \
-kernel "
test:qemu-lm3s6965evb --run_under="@qemu//:qemu-system-arm \
-cpu cortex-m3 \
-machine lm3s6965evb \
-nographic \
-semihosting-config \
enable=on,target=native \
-serial mon:stdio \
-kernel "

build:rp2350 --output_groups=-clippy_checks
build:rp2350 --platforms=//target/rp:rp2350

# Standard Pigweed flags
# ======================
# All Pigweed projects are expected to set these flags. They mostly pre-adopt
# future Bazel settings, and most are critical to working around known issues.
#
# The source of truth for these flags is @pigweed//pw_build:pigweed.bazelrc in
# the main Pigweed repo.

# 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

# 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

# Don't propagate flags or defines to the exec config. This will become the
# default one day (https://github.com/bazelbuild/bazel/issues/22457) and will
# improve cache hit rates between builds targeting different platforms. This is
# especially impactful for large host tools like protoc, which will have its
# cache invalidated when your host C++ config changes, causing many rebuilds
# of protoc (https://pwbug.dev/315871648).
common --experimental_exclude_defines_from_exec_config
common --experimental_exclude_starlark_flags_from_exec_config

# Enforces consistent action environment variables. This is important to
# address Protobuf's rebuild sensitivity on changes to the environment
# variables. It also improves cache hit rates. Should be true by default one
# day (https://github.com/bazelbuild/bazel/issues/7026).
build --incompatible_strict_action_env

# Expose exec toolchains for Python. We use these toolchains in some rule
# implementations (git grep for
# "@rules_python//python:exec_tools_toolchain_type").
build --@rules_python//python/config_settings:exec_tools_toolchain=enabled

# TODO: https://github.com/bazelbuild/rules_python/issues/2515 - This flag was
# enabled with Bazel 8.0.0, but it breaks py_proto_library imports when using
# the latest release of rules_python (1.0.0). Flipping this flag is a temporary
# workaround.
common --legacy_external_runfiles=True

# Remote execution config definitions
# ===================================
# Use the remote cache. This will only work for users who have permission to access it.
common:remote_cache --bes_backend="buildeventservice.googleapis.com"
common:remote_cache --bes_instance_name=pigweed-rbe-open
common:remote_cache --bes_results_url="https://source.cloud.google.com/results/invocations/"
common:remote_cache --bes_timeout=600s
common:remote_cache --experimental_remote_cache_eviction_retries=5
common:remote_cache --google_default_credentials=true
# Required to use buildeventservice on Bazel 8+.
# TODO: b/345556899 -- Remove this flag when no longer required.
common:remote_cache --legacy_important_outputs
common:remote_cache --remote_cache=grpcs://remotebuildexecution.googleapis.com
common:remote_cache --remote_instance_name=projects/pigweed-rbe-open/instances/default-instance
common:remote_cache --remote_upload_local_results=false
# TODO: https://github.com/bazelbuild/bazel/issues/24867 - This flag breaks
# runfiles handling with remote caching, and causes a bunch of
# java.io.FileNotFoundException when creating runfiles trees.
common:remote_cache --experimental_inprocess_symlink_creation=false

# cache-silo-key: this is essentially a "salt" added to the remote cache key.
# Change it to a new value when we want to create a new cache from scratch
# (e.g. to recover from cache poisoning). We've used the current date in
# YYYYMMDD format in the past.
common --remote_default_exec_properties=cache-silo-key=20240918

# 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
