diff options
| author | Mads Marquart <mads@marquart.dk> | 2025-02-10 10:18:02 +0100 |
|---|---|---|
| committer | Mads Marquart <mads@marquart.dk> | 2025-02-10 11:02:58 +0100 |
| commit | ea68a47103c72c17f894510d4ddc5d309369c272 (patch) | |
| tree | b0a95a4399f1bf0806c54a867c741d073b2e72f0 /src/bootstrap | |
| parent | d8e93c7e07ec3b299fae88e5f8b07e7a786b0082 (diff) | |
| download | rust-ea68a47103c72c17f894510d4ddc5d309369c272.tar.gz rust-ea68a47103c72c17f894510d4ddc5d309369c272.zip | |
bootstrap: Don't overwrite CFLAGS_* set in the environment
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/src/core/builder/cargo.rs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/bootstrap/src/core/builder/cargo.rs b/src/bootstrap/src/core/builder/cargo.rs index d8d7877f34e..c88b9b81014 100644 --- a/src/bootstrap/src/core/builder/cargo.rs +++ b/src/bootstrap/src/core/builder/cargo.rs @@ -317,8 +317,15 @@ impl Cargo { let cc = ccacheify(&builder.cc(target)); self.command.env(format!("CC_{triple_underscored}"), &cc); - let cflags = builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::C).join(" "); - self.command.env(format!("CFLAGS_{triple_underscored}"), &cflags); + // Extend `CXXFLAGS_$TARGET` with our extra flags. + let env = format!("CFLAGS_{triple_underscored}"); + let mut cflags = + builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::C).join(" "); + if let Ok(var) = std::env::var(&env) { + cflags.push(' '); + cflags.push_str(&var); + } + self.command.env(env, &cflags); if let Some(ar) = builder.ar(target) { let ranlib = format!("{} s", ar.display()); @@ -329,11 +336,17 @@ impl Cargo { if let Ok(cxx) = builder.cxx(target) { let cxx = ccacheify(&cxx); - let cxxflags = + self.command.env(format!("CXX_{triple_underscored}"), &cxx); + + // Extend `CXXFLAGS_$TARGET` with our extra flags. + let env = format!("CXXFLAGS_{triple_underscored}"); + let mut cxxflags = builder.cc_unhandled_cflags(target, GitRepo::Rustc, CLang::Cxx).join(" "); - self.command - .env(format!("CXX_{triple_underscored}"), &cxx) - .env(format!("CXXFLAGS_{triple_underscored}"), cxxflags); + if let Ok(var) = std::env::var(&env) { + cxxflags.push(' '); + cxxflags.push_str(&var); + } + self.command.env(&env, cxxflags); } } |
