# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Defines the configuration of RBE and related global variables.

# Prebuilt RBE binaries
rbe_common_tools = [
  "//prebuilt/proprietary/third_party/reclient/$host_platform/bootstrap",
  "//prebuilt/proprietary/third_party/reclient/$host_platform/reproxy",
  "//prebuilt/proprietary/third_party/reclient/$host_platform/rewrapper",
]

# Toolchain-agnostic RBE scripts and configuration.
rbe_common_scripts = [
  "//build/rbe/fuchsia-rbe-action.sh",
  "//build/rbe/fuchsia-re-client.cfg",
  "//build/rbe/fuchsia-reproxy-wrap.sh",
]

rustc_remote_wrapper = "//build/rbe/rustc-remote-wrapper.sh"

# Dependencies for all RBE-enabled rust actions.
rust_rbe_deps = rbe_common_tools + rbe_common_scripts + [ rustc_remote_wrapper ]

cxx_remote_wrapper = "//build/rbe/cxx-remote-wrapper.sh"

# Dependencies for all RBE-enabled C++ actions.
cxx_rbe_deps = rbe_common_tools + rbe_common_scripts + [ cxx_remote_wrapper ]

declare_args() {
  #########################
  ### Rust RBE controls ###
  #########################

  # Set to true to enable distributed compilation of Rust using RBE.
  rust_rbe_enable = false

  # One of:
  #
  #   * "remote": Execute action remotely on cache miss.
  #         The remote cache is always updated with this result.
  #
  #   * "local": Lookup action in the remote cache, but execute action
  #         locally on cache miss.  The locally produced result is
  #         not uploaded to the remote cache.
  #   (There are other rewrapper options that are not exposed.)
  rust_rbe_exec_strategy = "remote"

  # Run one of the more expensive checks, intended for CI.
  # All of these require rust_rbe_enable=true.
  #
  # One of:
  #
  #   * "none": No additional check.
  #
  #   * "determinism":
  #       Check of determinism of rustc targets by running locally twice
  #       and comparing outputs, failing if any differences are found.
  #       Even though this check doesn't involve RBE, it uses the same
  #       wrapper script, which knows what output files to expect and
  #       compare.
  #
  #       Build outputs that depend on time are discouraged because they
  #       impact caching.
  #       If your result depends on the current time, this check will
  #       definitely fail.  If it depends on only the date, there is still
  #       a nonzero chance of failure, if the rerun falls on the next day.
  #
  #   * "consistency":
  #       Check consistency between local and remote rust compiles,
  #       by running both and comparing results.
  #
  rust_rbe_check = "none"

  ########################
  ### C++ RBE controls ###
  ########################

  # Set to true to enable distributed compilation of C++ using RBE.
  # Enabling this takes precedence over `use_goma`.
  cxx_rbe_enable = false

  # One of:
  #
  #   * "remote": Execute action remotely on cache miss.
  #         The remote cache is always updated with this result.
  #
  #   * "local": Lookup action in the remote cache, but execute action
  #         locally on cache miss.  The locally produced result is
  #         not uploaded to the remote cache.
  #   (There are other rewrapper options that are not exposed.)
  cxx_rbe_exec_strategy = "remote"
}
