# 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.
#
# TODO: https://pwbug.dev/258836641#comment4: Enabling bzlmod breaks the build.
common --noenable_bzlmod

# 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

# Ignore all warnings in third-party code.
common --per_file_copt=external/.*@-w
common --host_per_file_copt=external/.*@-w

common --custom_malloc=//targets:malloc

# Default host backends.
common --@pigweed//pw_log:backend=@pigweed//pw_log_string
common --@pigweed//pw_log:backend_impl=@pigweed//pw_log_string:impl
common --@pigweed//pw_log_string:handler_backend=@pigweed//pw_system:log_backend
common --@pigweed//pw_sys_io:backend=@pigweed//pw_sys_io_stdio
common --@pigweed//pw_system:io_backend=@pigweed//pw_system:socket_target_io

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

# Keep debugging symbols, but don't send them when flashing.
build --strip=never

build --@pico-sdk//bazel/config:PICO_STDIO_USB=True
build --@pico-sdk//bazel/config:PICO_STDIO_UART=True

# Default targets to build when running:
# bazel build --config=presubmit
build:presubmit -- \
  //... \
  //apps/blinky:blinky \
  //apps/blinky:rp2040_blinky.elf \
  //apps/blinky:simulator_blinky \
  //tools:console \
  //tools:example_script

# 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

common:asan --@pigweed//pw_toolchain/host_clang:asan

# Error output settings.
common --verbose_failures
test --test_output=errors

# Use the remote cache. This will only work for users who have permission to access it.
common:remote_cache --remote_cache=grpcs://remotebuildexecution.googleapis.com
common:remote_cache --google_default_credentials=true
common:remote_cache --remote_instance_name=projects/pigweed-rbe-open/instances/default-instance
common:remote_cache --remote_upload_local_results=false

# 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.
common --experimental_exclude_defines_from_exec_config
common --experimental_exclude_starlark_flags_from_exec_config

# Allow running unit tests directly on hardware.
build:rp2040 --platforms=//targets/rp2040:platform
build:rp2040 --//system:system=//targets/rp2040:system
build:rp2040 --@pigweed//pw_assert:check_backend=@pigweed//pw_assert_basic
build:rp2040 --@pigweed//pw_assert:check_backend_impl=@pigweed//pw_assert_basic:impl
build:rp2040 --@pigweed//pw_interrupt:backend=@pigweed//pw_interrupt_cortex_m:context
build:rp2040 --@pigweed//pw_log:backend=@pigweed//pw_log_tokenized
build:rp2040 --@pigweed//pw_log:backend_impl=@pigweed//pw_log_tokenized:impl
build:rp2040 --@pigweed//pw_log_tokenized:handler_backend=@pigweed//pw_system:log_backend
build:rp2040 --@pigweed//pw_sync:binary_semaphore_backend=@pigweed//pw_sync_freertos:binary_semaphore
build:rp2040 --@pigweed//pw_sync:interrupt_spin_lock_backend=@pigweed//pw_sync_freertos:interrupt_spin_lock
build:rp2040 --@pigweed//pw_sync:mutex_backend=@pigweed//pw_sync_freertos:mutex
build:rp2040 --@pigweed//pw_sync:thread_notification_backend=@pigweed//pw_sync_freertos:thread_notification
build:rp2040 --@pigweed//pw_sync:timed_thread_notification_backend=@pigweed//pw_sync_freertos:timed_thread_notification
build:rp2040 --@pigweed//pw_sys_io:backend=@pigweed//pw_sys_io_rp2040
build:rp2040 --@pigweed//pw_system:extra_platform_libs=//targets/rp2040:extra_platform_libs
build:rp2040 --@pigweed//pw_thread_freertos:config_override=//targets/rp2040:thread_config_overrides
build:rp2040 --@pigweed//pw_thread:id_backend=@pigweed//pw_thread_freertos:id
build:rp2040 --@pigweed//pw_thread:iteration_backend=@pigweed//pw_thread_freertos:thread_iteration
build:rp2040 --@pigweed//pw_thread:sleep_backend=@pigweed//pw_thread_freertos:sleep
build:rp2040 --@pigweed//pw_thread:thread_backend=@pigweed//pw_thread_freertos:thread
build:rp2040 --@pigweed//pw_thread:test_thread_context_backend=@pigweed//pw_thread_freertos:test_thread_context
build:rp2040 --@pigweed//pw_unit_test:main=//targets/rp2040:unit_test_rpc_main
build:rp2040 --@freertos//:freertos_config=//targets/rp2040:freertos_config
build:rp2040 --@pico-sdk//bazel/config:PICO_STDIO_USB=True
build:rp2040 --@pico-sdk//bazel/config:PICO_STDIO_UART=True
test:rp2040 --run_under=@pigweed//targets/rp2040/py:unit_test_client

# 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
