# 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=@rbe_autoconfig//cc:toolchain
build:remote_shared --extra_toolchains=@rbe_autoconfig//config:cc-toolchain
build:remote_shared --extra_execution_platforms=@rbe_autoconfig//config:platform
build:remote_shared --host_platform=@rbe_autoconfig//config:platform
build:remote_shared --platforms=@rbe_autoconfig//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
