Skip to content

Commit f094467

Browse files
committed
abstract configure_linker from Builder::cargo
Signed-off-by: onur-ozkan <[email protected]>
1 parent 993c72f commit f094467

File tree

7 files changed

+178
-168
lines changed

7 files changed

+178
-168
lines changed

src/bootstrap/src/core/build_steps/check.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,9 @@ impl Step for Std {
116116
SourceType::InTree,
117117
target,
118118
cargo_subcommand(builder.kind),
119-
false,
120119
);
120+
cargo.configure_linker(builder);
121+
121122
std_cargo(builder, target, compiler.stage, &mut cargo);
122123
if matches!(builder.config.cmd, Subcommand::Fix { .. }) {
123124
// By default, cargo tries to fix all targets. Tell it not to fix tests until we've added `test` to the sysroot.
@@ -169,8 +170,8 @@ impl Step for Std {
169170
SourceType::InTree,
170171
target,
171172
cargo_subcommand(builder.kind),
172-
false,
173173
);
174+
cargo.configure_linker(builder);
174175

175176
// If we're not in stage 0, tests and examples will fail to compile
176177
// from `core` definitions being loaded from two different `libcore`
@@ -264,8 +265,9 @@ impl Step for Rustc {
264265
SourceType::InTree,
265266
target,
266267
cargo_subcommand(builder.kind),
267-
false,
268268
);
269+
cargo.configure_linker(builder);
270+
269271
rustc_cargo(builder, &mut cargo, target, compiler.stage);
270272

271273
// For ./x.py clippy, don't run with --all-targets because
@@ -341,8 +343,9 @@ impl Step for CodegenBackend {
341343
SourceType::InTree,
342344
target,
343345
cargo_subcommand(builder.kind),
344-
false,
345346
);
347+
cargo.configure_linker(builder);
348+
346349
cargo
347350
.arg("--manifest-path")
348351
.arg(builder.src.join(format!("compiler/rustc_codegen_{backend}/Cargo.toml")));

src/bootstrap/src/core/build_steps/compile.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,6 @@ impl Step for Std {
239239
SourceType::InTree,
240240
target,
241241
if self.is_for_mir_opt_tests { "check" } else { "build" },
242-
self.is_for_mir_opt_tests,
243242
);
244243
// We build a sysroot for mir-opt tests using the same trick that Miri does: A check build
245244
// with -Zalways-encode-mir. This frees us from the need to have a target linker, and the
@@ -248,6 +247,7 @@ impl Step for Std {
248247
cargo.rustflag("-Zalways-encode-mir");
249248
cargo.arg("--manifest-path").arg(builder.src.join("library/sysroot/Cargo.toml"));
250249
} else {
250+
cargo.configure_linker(builder);
251251
std_cargo(builder, target, compiler.stage, &mut cargo);
252252
for krate in &*self.crates {
253253
cargo.arg("-p").arg(krate);
@@ -915,8 +915,9 @@ impl Step for Rustc {
915915
builder.config.build,
916916
));
917917

918-
let mut cargo =
919-
builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "build", false);
918+
let mut cargo = builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "build");
919+
cargo.configure_linker(builder);
920+
920921
rustc_cargo(builder, &mut cargo, target, compiler.stage);
921922

922923
if builder.config.rust_profile_use.is_some()
@@ -1336,8 +1337,8 @@ impl Step for CodegenBackend {
13361337

13371338
let out_dir = builder.cargo_out(compiler, Mode::Codegen, target);
13381339

1339-
let mut cargo =
1340-
builder.cargo(compiler, Mode::Codegen, SourceType::InTree, target, "build", false);
1340+
let mut cargo = builder.cargo(compiler, Mode::Codegen, SourceType::InTree, target, "build");
1341+
cargo.configure_linker(builder);
13411342
cargo
13421343
.arg("--manifest-path")
13431344
.arg(builder.src.join(format!("compiler/rustc_codegen_{backend}/Cargo.toml")));

src/bootstrap/src/core/build_steps/doc.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,9 @@ fn doc_std(
684684
// as a function parameter.
685685
let out_dir = target_dir.join(target.triple).join("doc");
686686

687-
let mut cargo = builder.cargo(compiler, Mode::Std, SourceType::InTree, target, "doc", false);
687+
let mut cargo = builder.cargo(compiler, Mode::Std, SourceType::InTree, target, "doc");
688+
cargo.configure_linker(builder);
689+
688690
compile::std_cargo(builder, target, compiler.stage, &mut cargo);
689691
cargo
690692
.arg("--no-deps")
@@ -785,8 +787,9 @@ impl Step for Rustc {
785787
);
786788

787789
// Build cargo command.
788-
let mut cargo =
789-
builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "doc", false);
790+
let mut cargo = builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "doc");
791+
cargo.configure_linker(builder);
792+
790793
cargo.rustdocflag("--document-private-items");
791794
// Since we always pass --document-private-items, there's no need to warn about linking to private items.
792795
cargo.rustdocflag("-Arustdoc::private-intra-doc-links");

src/bootstrap/src/core/build_steps/run.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ impl Step for Miri {
165165
SourceType::InTree,
166166
&[],
167167
);
168-
miri.add_rustc_lib_path(builder, compiler);
168+
miri.add_rustc_lib_path(builder);
169169
// Forward arguments.
170170
miri.arg("--").arg("--target").arg(target.rustc_target_arg());
171171
miri.args(builder.config.args());

src/bootstrap/src/core/build_steps/test.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ impl Step for RustAnalyzer {
380380
// work in Rust CI
381381
cargo.env("SKIP_SLOW_TESTS", "1");
382382

383-
cargo.add_rustc_lib_path(builder, compiler);
383+
cargo.add_rustc_lib_path(builder);
384384
run_cargo_test(cargo, &[], &[], "rust-analyzer", "rust-analyzer", compiler, host, builder);
385385
}
386386
}
@@ -426,7 +426,7 @@ impl Step for Rustfmt {
426426
t!(fs::create_dir_all(&dir));
427427
cargo.env("RUSTFMT_TEST_DIR", dir);
428428

429-
cargo.add_rustc_lib_path(builder, compiler);
429+
cargo.add_rustc_lib_path(builder);
430430

431431
run_cargo_test(cargo, &[], &[], "rustfmt", "rustfmt", compiler, host, builder);
432432
}
@@ -476,7 +476,7 @@ impl Step for RustDemangler {
476476
t!(fs::create_dir_all(&dir));
477477

478478
cargo.env("RUST_DEMANGLER_DRIVER_PATH", rust_demangler);
479-
cargo.add_rustc_lib_path(builder, compiler);
479+
cargo.add_rustc_lib_path(builder);
480480

481481
run_cargo_test(
482482
cargo,
@@ -517,7 +517,7 @@ impl Miri {
517517
SourceType::InTree,
518518
&[],
519519
);
520-
cargo.add_rustc_lib_path(builder, compiler);
520+
cargo.add_rustc_lib_path(builder);
521521
cargo.arg("--").arg("miri").arg("setup");
522522
cargo.arg("--target").arg(target.rustc_target_arg());
523523

@@ -618,7 +618,7 @@ impl Step for Miri {
618618
);
619619
let _guard = builder.msg_sysroot_tool(Kind::Test, compiler.stage, "miri", host, target);
620620

621-
cargo.add_rustc_lib_path(builder, compiler);
621+
cargo.add_rustc_lib_path(builder);
622622

623623
// miri tests need to know about the stage sysroot
624624
cargo.env("MIRI_SYSROOT", &miri_sysroot);
@@ -671,7 +671,7 @@ impl Step for Miri {
671671
SourceType::Submodule,
672672
&[],
673673
);
674-
cargo.add_rustc_lib_path(builder, compiler);
674+
cargo.add_rustc_lib_path(builder);
675675
cargo.arg("--").arg("miri").arg("test");
676676
if builder.config.locked_deps {
677677
cargo.arg("--locked");
@@ -788,7 +788,7 @@ impl Step for Clippy {
788788
let host_libs = builder.stage_out(compiler, Mode::ToolRustc).join(builder.cargo_dir());
789789
cargo.env("HOST_LIBS", host_libs);
790790

791-
cargo.add_rustc_lib_path(builder, compiler);
791+
cargo.add_rustc_lib_path(builder);
792792
let mut cargo = prepare_cargo_test(cargo, &[], &[], "clippy", compiler, host, builder);
793793

794794
let _guard = builder.msg_sysroot_tool(Kind::Test, compiler.stage, "clippy", host, host);
@@ -2500,7 +2500,9 @@ impl Step for Crate {
25002500
let compiler = builder.compiler_for(compiler.stage, compiler.host, target);
25012501

25022502
let mut cargo =
2503-
builder.cargo(compiler, mode, SourceType::InTree, target, builder.kind.as_str(), false);
2503+
builder.cargo(compiler, mode, SourceType::InTree, target, builder.kind.as_str());
2504+
cargo.configure_linker(builder);
2505+
25042506
match mode {
25052507
Mode::Std => {
25062508
compile::std_cargo(builder, target, compiler.stage, &mut cargo);
@@ -3140,8 +3142,9 @@ impl Step for CodegenCranelift {
31403142
SourceType::InTree,
31413143
target,
31423144
"run",
3143-
false,
31443145
);
3146+
cargo.configure_linker(builder);
3147+
31453148
cargo.current_dir(&builder.src.join("compiler/rustc_codegen_cranelift"));
31463149
cargo
31473150
.arg("--manifest-path")
@@ -3267,8 +3270,9 @@ impl Step for CodegenGCC {
32673270
SourceType::InTree,
32683271
target,
32693272
"run",
3270-
false,
32713273
);
3274+
cargo.configure_linker(builder);
3275+
32723276
cargo.current_dir(&builder.src.join("compiler/rustc_codegen_gcc"));
32733277
cargo
32743278
.arg("--manifest-path")

src/bootstrap/src/core/build_steps/tool.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,9 @@ pub fn prepare_tool_cargo(
142142
source_type: SourceType,
143143
extra_features: &[String],
144144
) -> CargoCommand {
145-
let mut cargo = builder.cargo(compiler, mode, source_type, target, command, false);
145+
let mut cargo = builder.cargo(compiler, mode, source_type, target, command);
146+
cargo.configure_linker(builder);
147+
146148
let dir = builder.src.join(path);
147149
cargo.arg("--manifest-path").arg(dir.join("Cargo.toml"));
148150

0 commit comments

Comments
 (0)