# Import Aspect bazelrc presets
import %workspace%/third_party/bazelrc/aspect/bazel8.bazelrc
import %workspace%/third_party/bazelrc/aspect/convenience.bazelrc
import %workspace%/third_party/bazelrc/aspect/correctness.bazelrc
import %workspace%/third_party/bazelrc/aspect/performance.bazelrc

# rules_proto_grpc isn't fully compatible with Bazel 8 yet.
common --noincompatible_disallow_ctx_resolve_tools

# Actually make the lock file a lock file by not updating it without any
# request to do so.
common --lockfile_mode=error

# Allow empty globs as there are a lot until we replace our rust toolchain and
# qemu BUILD files.
common --noincompatible_disallow_empty_glob

# Don't warn about too high test timeout as these can vary a lot.
test --notest_verbose_timeout_warnings

# Set compilation mode (-c) to debug when running with --config dbg.
build:dbg --compilation_mode=dbg

# Run race config with race detector
build:race --@io_bazel_rules_go//go/config:race
build:race --no@io_bazel_rules_go//go/config:pure

# Only download the final result, the intermediate files can stay on the
# server side.
build:remote --remote_download_toplevel
build:remote --noremote_upload_local_results

# Set the execution platform which adds constraints for the scheduler.
build:remote --extra_execution_platforms=//build/platforms:remote_x86_64

# We have some large uploads and actions, the default 60s is not enough.
build:remote --remote_timeout=360s

# Enable pure by default. Specific go_binary targets which need cgo should set
# `pure = "off"`.
build --@io_bazel_rules_go//go/config:pure

# Force netgo and osusergo
build --@io_bazel_rules_go//go/config:tags=osusergo,netgo

# Include platform in output directory name. For each platform we use, a short
# name should be assigned here, otherwise Bazel uses a hash.
build --experimental_platform_in_output_dir
build --noexperimental_use_platforms_in_output_dir_legacy_heuristic
build --experimental_override_name_platform_in_output_dir=//build/platforms:linux_x86_64=linux-x86_64
build --experimental_override_name_platform_in_output_dir=//build/platforms:linux_aarch64=linux-aarch64
build --experimental_override_name_platform_in_output_dir=//build/platforms:uefi_x86_64=uefi-x86_64
build --experimental_override_name_platform_in_output_dir=//build/platforms:uefi_aarch64=uefi-aarch64
build --experimental_override_name_platform_in_output_dir=//build/platforms:remote_x86_64=remote-x86_64
build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:darwin_amd64=go-darwin-amd64
build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:darwin_arm64=go-darwin-arm64
build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:windows_amd64=go-windows-amd64
build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:windows_arm64=go-windows-arm64

# Enable path mapping to improve cache hit rate.
# Actions in custom rules can opt in with supports-path-mapping.
# See https://github.com/bazelbuild/bazel/discussions/22658
build --experimental_output_paths=strip

# Stop propagation of settings to exec config by default.
# See https://github.com/bazelbuild/bazel/issues/22457
build --experimental_exclude_starlark_flags_from_exec_config
# These flags need to be propagated for nogo to work. We currently need to
# reference rules_go with the canonical repo name; this is no longer necessary
# once the fix for https://github.com/bazelbuild/bazel/issues/25208 is released.
build --experimental_propagate_custom_flag=@@rules_go+//go/private:request_nogo
build --experimental_propagate_custom_flag=@@rules_go+//go/private:bootstrap_nogo

# No local CPP toolchain resolution. In our sandbox root, it doesn't make sense -
# anything auto-detected during analysis stage is on the host instead of the sandbox.
# Sysroot rebuild is pure Go and doesn't need it either.
# The flag ensures we fail early if we somehow depend on the host toolchain,
# and do not spend unnecessary time on autodiscovery.
build --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1

# Use new-style C++ toolchain resolution.
build --incompatible_enable_cc_toolchain_resolution
build --experimental_cc_static_library

# Use new-style proto toolchain resolution.
build --incompatible_enable_proto_toolchain_resolution

# In our monorepo, we mostly ignore the host platform since we bring our own
# execution environment. However, we still need to run a small number of tools
# such as gazelle.
build --host_platform=//build/platforms:linux_x86_64

# Target platform for the monorepo is currently the same as the host platform,
# but we'll support cross-compilation at some point. Do not rely on it.
build --platforms=//build/platforms:linux_x86_64
# Make sure our platform is picked instead of the --host_platform.
build --extra_execution_platforms=//build/platforms:linux_x86_64

# Build resources
startup --batch_cpu_scheduling --io_nice_level 7

# Build with C++17.
build --cxxopt=-std=c++17

# Set workspace status file and stamp
build --stamp --workspace_status_command=./build/print-workspace-status.py

# The --nostamp Bazel flag does not work in this repo; instead use
# --config=nostamp to disable stamping with commit info.
build:nostamp --workspace_status_command="./build/print-workspace-status.py --nostamp"

# Assume a 10k IOPS device (average NVMe) and 64GiB of RAM for test scheduling.
test --local_resources=iops=10000 --local_resources=ram=64000

common --downloader_config=build/bazel/bazel_downloader.cfg

# Load custom per-user settings.
try-import %workspace%/.bazelrc.user
