@@ -110,7 +110,7 @@ impl Step for ToolBuild {
110
110
_ => panic ! ( "unexpected Mode for tool build" )
111
111
}
112
112
113
- let mut cargo = prepare_tool_cargo ( builder, compiler, target, "build" , path) ;
113
+ let mut cargo = prepare_tool_cargo ( builder, compiler, self . mode , target, "build" , path) ;
114
114
cargo. arg ( "--features" ) . arg ( self . extra_features . join ( " " ) ) ;
115
115
116
116
let _folder = builder. fold_output ( || format ! ( "stage{}-{}" , compiler. stage, tool) ) ;
@@ -202,7 +202,7 @@ impl Step for ToolBuild {
202
202
return None ;
203
203
}
204
204
} else {
205
- let cargo_out = builder. cargo_out ( compiler, Mode :: ToolRustc , target)
205
+ let cargo_out = builder. cargo_out ( compiler, self . mode , target)
206
206
. join ( exe ( tool, & compiler. host ) ) ;
207
207
let bin = builder. tools_dir ( compiler) . join ( exe ( tool, & compiler. host ) ) ;
208
208
builder. copy ( & cargo_out, & bin) ;
@@ -214,11 +214,12 @@ impl Step for ToolBuild {
214
214
pub fn prepare_tool_cargo (
215
215
builder : & Builder ,
216
216
compiler : Compiler ,
217
+ mode : Mode ,
217
218
target : Interned < String > ,
218
219
command : & ' static str ,
219
220
path : & ' static str ,
220
221
) -> Command {
221
- let mut cargo = builder. cargo ( compiler, Mode :: ToolRustc , target, command) ;
222
+ let mut cargo = builder. cargo ( compiler, mode , target, command) ;
222
223
let dir = builder. src . join ( path) ;
223
224
cargo. arg ( "--manifest-path" ) . arg ( dir. join ( "Cargo.toml" ) ) ;
224
225
@@ -261,6 +262,15 @@ macro_rules! tool {
261
262
) +
262
263
}
263
264
265
+ impl Tool {
266
+ pub fn get_mode( & self ) -> Mode {
267
+ let mode = match self {
268
+ $( Tool :: $name => $mode, ) +
269
+ } ;
270
+ mode
271
+ }
272
+ }
273
+
264
274
impl <' a> Builder <' a> {
265
275
pub fn tool_exe( & self , tool: Tool ) -> PathBuf {
266
276
let stage = self . tool_default_stage( tool) ;
@@ -414,6 +424,7 @@ impl Step for Rustdoc {
414
424
415
425
let mut cargo = prepare_tool_cargo ( builder,
416
426
build_compiler,
427
+ Mode :: ToolRustc ,
417
428
target,
418
429
"build" ,
419
430
"src/tools/rustdoc" ) ;
@@ -575,19 +586,19 @@ impl<'a> Builder<'a> {
575
586
pub fn tool_cmd ( & self , tool : Tool ) -> Command {
576
587
let mut cmd = Command :: new ( self . tool_exe ( tool) ) ;
577
588
let compiler = self . compiler ( self . tool_default_stage ( tool) , self . config . build ) ;
578
- self . prepare_tool_cmd ( compiler, & mut cmd) ;
589
+ self . prepare_tool_cmd ( compiler, tool . get_mode ( ) , & mut cmd) ;
579
590
cmd
580
591
}
581
592
582
593
/// Prepares the `cmd` provided to be able to run the `compiler` provided.
583
594
///
584
595
/// Notably this munges the dynamic library lookup path to point to the
585
596
/// right location to run `compiler`.
586
- fn prepare_tool_cmd ( & self , compiler : Compiler , cmd : & mut Command ) {
597
+ fn prepare_tool_cmd ( & self , compiler : Compiler , mode : Mode , cmd : & mut Command ) {
587
598
let host = & compiler. host ;
588
599
let mut lib_paths: Vec < PathBuf > = vec ! [
589
600
PathBuf :: from( & self . sysroot_libdir( compiler, compiler. host) ) ,
590
- self . cargo_out( compiler, Mode :: ToolRustc , * host) . join( "deps" ) ,
601
+ self . cargo_out( compiler, mode , * host) . join( "deps" ) ,
591
602
] ;
592
603
593
604
// On MSVC a tool may invoke a C compiler (e.g. compiletest in run-make
0 commit comments