1
Fork 0

Rollup merge of #136941 - Kobzol:ccache-build, r=onur-ozkan

Move `llvm.ccache` to `build.ccache`

(S)ccache can be useful for more things that just LLVM. For example, we will soon want to use it also for GCC, and theoretically also for building stage0 Rust tools (https://github.com/rust-lang/rust/pull/136921, https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Using.20sccache.20for.20Rust).

r? ``@onur-ozkan``
This commit is contained in:
Jubilee 2025-02-13 17:46:09 -08:00 committed by GitHub
commit 9f87de67a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 34 additions and 15 deletions

View file

@ -87,10 +87,6 @@
# Whether to build LLVM with support for it's gpu offload runtime.
#offload = false
# Indicates whether ccache is used when building LLVM. Set to `true` to use the first `ccache` in
# PATH, or set an absolute path to use a specific version.
#ccache = false
# When true, link libstdc++ statically into the rustc_llvm.
# This is useful if you don't want to use the dynamic version of that
# library provided by LLVM.
@ -424,6 +420,11 @@
# What custom diff tool to use for displaying compiletest tests.
#compiletest-diff-tool = <none>
# Indicates whether ccache is used when building certain artifacts (e.g. LLVM).
# Set to `true` to use the first `ccache` in PATH, or set an absolute path to use
# a specific version.
#ccache = false
# =============================================================================
# General install configuration options
# =============================================================================

View file

@ -44,10 +44,14 @@ o("optimize-tests", "rust.optimize-tests", "build tests with optimizations")
o("verbose-tests", "rust.verbose-tests", "enable verbose output when running tests")
o(
"ccache",
"llvm.ccache",
"invoke gcc/clang via ccache to reuse object files between builds",
"build.ccache",
"invoke gcc/clang/rustc via ccache to reuse object files between builds",
)
o(
"sccache",
None,
"invoke gcc/clang/rustc via sccache to reuse object files between builds",
)
o("sccache", None, "invoke gcc/clang via sccache to reuse object files between builds")
o("local-rust", None, "use an installed rustc rather than downloading a snapshot")
v("local-rust-root", None, "set prefix for local rust binary")
o(
@ -510,7 +514,7 @@ def apply_args(known_args, option_checking, config):
build_triple = build(known_args)
if option.name == "sccache":
set("llvm.ccache", "sccache", config)
set("build.ccache", "sccache", config)
elif option.name == "local-rust":
for path in os.environ["PATH"].split(os.pathsep):
if os.path.exists(path + "/rustc"):

View file

@ -935,6 +935,7 @@ define_config! {
optimized_compiler_builtins: Option<bool> = "optimized-compiler-builtins",
jobs: Option<u32> = "jobs",
compiletest_diff_tool: Option<String> = "compiletest-diff-tool",
ccache: Option<StringOrBool> = "ccache",
}
}
@ -961,6 +962,7 @@ define_config! {
tests: Option<bool> = "tests",
enzyme: Option<bool> = "enzyme",
plugins: Option<bool> = "plugins",
// FIXME: Remove this field at Q2 2025, it has been replaced by build.ccache
ccache: Option<StringOrBool> = "ccache",
static_libstdcpp: Option<bool> = "static-libstdcpp",
libzstd: Option<bool> = "libzstd",
@ -1622,6 +1624,7 @@ impl Config {
optimized_compiler_builtins,
jobs,
compiletest_diff_tool,
mut ccache,
} = toml.build.unwrap_or_default();
config.jobs = Some(threads_from_config(flags.jobs.unwrap_or(jobs.unwrap_or(0))));
@ -2006,7 +2009,7 @@ impl Config {
tests,
enzyme,
plugins,
ccache,
ccache: llvm_ccache,
static_libstdcpp,
libzstd,
ninja,
@ -2029,13 +2032,11 @@ impl Config {
download_ci_llvm,
build_config,
} = llvm;
match ccache {
Some(StringOrBool::String(ref s)) => config.ccache = Some(s.to_string()),
Some(StringOrBool::Bool(true)) => {
config.ccache = Some("ccache".to_string());
}
Some(StringOrBool::Bool(false)) | None => {}
if llvm_ccache.is_some() {
eprintln!("Warning: llvm.ccache is deprecated. Use build.ccache instead.");
}
ccache = ccache.or(llvm_ccache);
set(&mut config.ninja_in_file, ninja);
llvm_tests = tests;
llvm_enzyme = enzyme;
@ -2189,6 +2190,14 @@ impl Config {
}
}
match ccache {
Some(StringOrBool::String(ref s)) => config.ccache = Some(s.to_string()),
Some(StringOrBool::Bool(true)) => {
config.ccache = Some("ccache".to_string());
}
Some(StringOrBool::Bool(false)) | None => {}
}
if config.llvm_from_ci {
let triple = &config.build.triple;
let ci_llvm_bin = config.ci_llvm_root().join("bin");

View file

@ -345,4 +345,9 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
severity: ChangeSeverity::Info,
summary: "Rustdoc now respects the value of rust.lto.",
},
ChangeInfo {
change_id: 136941,
severity: ChangeSeverity::Info,
summary: "The llvm.ccache option has moved to build.ccache. llvm.ccache is now deprecated.",
},
];