rustbuild: Pass a threads flag that works to windows-gnu lld
MinGW driver for COFF LLD doesn't currently translate GNU-style `--threads=N` to native `/threads:N`, so we have to pass the option in its native form to avoid an error. Also pass the `threads` flag to lld-link as well
This commit is contained in:
parent
c825bc431e
commit
f9eda61569
1 changed files with 15 additions and 8 deletions
|
|
@ -1110,6 +1110,19 @@ struct Compiletest {
|
|||
compare_mode: Option<&'static str>,
|
||||
}
|
||||
|
||||
impl Compiletest {
|
||||
fn add_lld_flags(builder: &Builder<'_>, target: TargetSelection, flags: &mut Vec<String>) {
|
||||
if builder.config.use_lld {
|
||||
if builder.is_fuse_ld_lld(target) {
|
||||
flags.push("-Clink-arg=-fuse-ld=lld".to_string());
|
||||
}
|
||||
|
||||
let threads = if target.contains("windows") { "/threads:1" } else { "--threads=1" };
|
||||
flags.push(format!("-Clink-arg=-Wl,{}", threads));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Step for Compiletest {
|
||||
type Output = ();
|
||||
|
||||
|
|
@ -1250,18 +1263,12 @@ note: if you're sure you want to do this, please open an issue as to why. In the
|
|||
|
||||
let mut hostflags = flags.clone();
|
||||
hostflags.push(format!("-Lnative={}", builder.test_helpers_out(compiler.host).display()));
|
||||
if builder.is_fuse_ld_lld(compiler.host) {
|
||||
hostflags.push("-Clink-args=-fuse-ld=lld".to_string());
|
||||
hostflags.push("-Clink-arg=-Wl,--threads=1".to_string());
|
||||
}
|
||||
Self::add_lld_flags(builder, compiler.host, &mut hostflags);
|
||||
cmd.arg("--host-rustcflags").arg(hostflags.join(" "));
|
||||
|
||||
let mut targetflags = flags;
|
||||
targetflags.push(format!("-Lnative={}", builder.test_helpers_out(target).display()));
|
||||
if builder.is_fuse_ld_lld(target) {
|
||||
targetflags.push("-Clink-args=-fuse-ld=lld".to_string());
|
||||
targetflags.push("-Clink-arg=-Wl,--threads=1".to_string());
|
||||
}
|
||||
Self::add_lld_flags(builder, target, &mut targetflags);
|
||||
cmd.arg("--target-rustcflags").arg(targetflags.join(" "));
|
||||
|
||||
cmd.arg("--docck-python").arg(builder.python());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue