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

# 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). Pigweed's
# Python libraries break without this.
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

# 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

# Ensures `--run_under` is treated as an exec platform binary.
# This ensures when targeting `--platform=foo`, a `--run_under` test runner
# will be built for the host. This was originally intended to be flipped in
# Bazel 8.0.0, but didn't quite make the cut.
# Also see: https://github.com/bazelbuild/bazel/issues/23179
common --incompatible_bazel_test_exec_run_under=True

# Names the platform-specific output directories in `bazel-out/` after their
# associated platform.
#
# These names are used by Pigweed's IDE integration to surface available views
# for code intelligence.
#
# Warning: This can cause confusing conflicts in C++ compile actions if there's
# any intermixing of the well-known host platform definitions. More info:
# https://github.com/bazelbuild/bazel/issues/26228
common --experimental_platform_in_output_dir=True

# C++ configuration
# =================

common --custom_malloc=//targets:malloc

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

# 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 --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

# clang-tidy configuration
build:clang-tidy --aspects @bazel_clang_tidy//clang_tidy:clang_tidy.bzl%clang_tidy_aspect
build:clang-tidy --output_groups=report
build:clang-tidy --@bazel_clang_tidy//:clang_tidy_config=//:clang_tidy_config
# Use the clang-tidy executable from Pigweed's toolchain, and include
# our sysroot headers.
build:clang-tidy --@bazel_clang_tidy//:clang_tidy_executable=@pigweed//pw_toolchain/host_clang:copy_clang_tidy
build:clang-tidy --@bazel_clang_tidy//:clang_tidy_additional_deps=@pigweed//pw_toolchain/host_clang:sysroot_root
# Skip any targets with tags = ["noclangtidy"]. This allows a gradual
# rollout.
build:clang-tidy --build_tag_filters=-noclangtidy
# We need to disable this warning to avoid spurious "#pragma once in main file"
# warnings for header-only libraries. For another approach, see
# https://github.com/mongodb-forks/bazel_clang_tidy/pull/2
build:clang-tidy --copt=-Wno-pragma-once-outside-header

# Pull python packages from AirLock rather than pypi.org
# This is required on machines which are enrolled in go/corp-airlock
# Users in other regions can override this value with a closer
# repository - go/airlock-repositories
common:airlock --action_env=PIGWEED_PIP_INDEX_URL=https://us-python.pkg.dev/artifact-foundry-prod/python-3p-trusted/simple
common:airlock --credential_helper=*.pkg.dev=%workspace%/tools/cred_helper.sh

# 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
