blob: 6bc21809e296e271dbc23d10af8269d1bc690fe1 [file] [log] [blame]
# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Defines the configuration of Remote Build Execution (RBE).
declare_args() {
# The directory where the re-client tooling binaries are.
rbe_bin_dir = rebase_path("//buildtools/reclient", root_build_dir)
# Execution root - this should be the root of the source tree.
# This is defined here instead of in the config file because
# this will vary depending on where the user has placed the
# chromium source on their system.
rbe_exec_root = rebase_path("//")
# Set to true to enable remote compilation using reclient.
use_remoteexec = false
# Set to true to enable remote linking using reclient.
use_remoteexec_links = false
# The directory where the re-client configuration files are.
rbe_cfg_dir = "//buildtools/reclient_cfgs"
}
declare_args() {
# Set to the path of the RBE reclient configuration files.
# Configuration file selection based on operating system.
if (host_os == "linux") {
rbe_py_cfg_file =
rebase_path(rbe_cfg_dir, root_build_dir) + "/python/rewrapper_linux.cfg"
rbe_py_large_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/python/rewrapper_linux_large.cfg"
rbe_cc_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/chromium-browser-clang/rewrapper_linux.cfg"
rbe_link_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/chromium-browser-clang/rewrapper_linux_link.cfg"
} else if (host_os == "win") {
rbe_py_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/python/rewrapper_windows.cfg"
rbe_py_large_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/python/rewrapper_windows_large.cfg"
rbe_cc_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/chromium-browser-clang/rewrapper_windows.cfg"
rbe_link_cfg_file = ""
} else if (host_os == "mac") {
rbe_py_cfg_file =
rebase_path(rbe_cfg_dir, root_build_dir) + "/python/rewrapper_mac.cfg"
rbe_py_large_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/python/rewrapper_mac_large.cfg"
rbe_cc_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) +
"/chromium-browser-clang/rewrapper_mac.cfg"
rbe_link_cfg_file = ""
} else {
rbe_linkcfg_file = ""
rbe_py_cfg_file = ""
rbe_cc_cfg_file = ""
}
# Set to the path of the RBE recleint wrapper for ChromeOS.
rbe_cros_cc_wrapper = "${rbe_bin_dir}/rewrapper"
}
if (use_remoteexec && current_toolchain == default_toolchain) {
# Check existence of reclient configs and show user friendly error message if
# it doesn't.
exec_script(rebase_path("//build/toolchain/check_rewrapper_cfg.py"),
[ rbe_cc_cfg_file ],
"",
[ rebase_path(rbe_cc_cfg_file, ".", root_build_dir) ])
}
if (is_win) {
if (use_remoteexec_links) {
print("For now, remote linking is not available for Windows.")
use_remoteexec_links = false
}
}
if (is_mac || is_ios) {
if (use_remoteexec_links) {
print("For now, remote linking is not available on Macs.")
use_remoteexec_links = false
}
}
# TODO(crbug.com/326584510): Reclient does not upload `inputs` from C/C++
# targets. This file is added to `inputs` for all C targets in
# //build/config/BUILDCONFIG.gn. We work around the bug in Reclient by
# specifying the file here.
#
# This is a comma-delimited list of paths relative to the source tree root. The
# leading space is important, if the string is non-empty. :)
rbe_bug_326584510_missing_inputs = ""
if (defined(clang_unsafe_buffers_paths) &&
"$clang_unsafe_buffers_paths" != "") {
from_exec_root = rebase_path(clang_unsafe_buffers_paths, rbe_exec_root)
rbe_bug_326584510_missing_inputs = " -inputs=$from_exec_root"
}