# Copyright 2016 The Bazel Authors. All rights reserved.
#
# 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
#
#    http://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.

# This file is auto-generated from release/bazelrc.tpl and should not be
# modified directly.

# This .bazelrc file contains all of the flags required for the provided
# toolchain with Remote Build Execution.
#
# This .bazelrc file also contains all of the flags required for the local
# docker sandboxing.

# Depending on how many machines are in the remote execution instance, setting
# this higher can make builds faster by allowing more jobs to run in parallel.
# Setting it too high can result in jobs that timeout, however, while waiting
# for a remote machine to execute them.
build:remote_shared --jobs=200
build:remote_shared --disk_cache=
build:remote_shared --remote_download_minimal

# Set several flags related to specifying the platform, toolchain and java
# properties.
build:remote_shared --crosstool_top=@ubuntu2204_jdk17//cc:toolchain
build:remote_shared --extra_toolchains=@ubuntu2204_jdk17//config:cc-toolchain
build:remote_shared --extra_execution_platforms=@ubuntu2204_jdk17//config:platform
build:remote_shared --host_platform=@ubuntu2204_jdk17//config:platform
build:remote_shared --platforms=@ubuntu2204_jdk17//config:platform
build:remote_shared --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1

# Set various strategies so that all actions execute remotely. Mixing remote
# and local execution will lead to errors unless the toolchain and remote
# machine exactly match the host machine.
build:remote_shared --define=EXECUTOR=remote

# Set a higher timeout value, just in case.
build:remote_shared --remote_timeout=3600

# Configuration flags for remote settings in Google GCP RBE
# Enable the remote cache so action results can be shared across machines,
# developers, and workspaces.
build:config_gcp --remote_cache=remotebuildexecution.googleapis.com

# Enable remote execution so actions are performed on the remote systems.
build:config_gcp --remote_executor=remotebuildexecution.googleapis.com

# Enable authentication. This will pick up application default credentials by
# default. You can use --auth_credentials=some_file.json to use a service
# account credential instead.
build:config_gcp --google_default_credentials
build:config_gcp --config=remote_shared

# Configuration flags for remote settings in BuildBuddy RBE
# Enable the remote cache so action results can be shared across machines,
# developers, and workspaces.
build:config_bb --remote_cache=grpcs://remote.buildbuddy.io

# Enable remote execution so actions are performed on the remote systems.
build:config_bb --remote_executor=grpcs://remote.buildbuddy.io

# The results from each Bazel command are viewable with BuildBuddy
build:config_bb --bes_results_url=https://app.buildbuddy.io/invocation/

# The results of a local build will be uploaded to the BuildBuddy server,
# providing visibility and collaboration features for the build.
build:config_bb --remote_upload_local_results

# Define the Build Event Service (BES) backend to use for remote caching and
# build event storage.
build:config_bb --bes_backend=grpcs://remote.buildbuddy.io
build:config_bb --config=remote_shared
