@@ -104,9 +104,13 @@ impl Step for ToolBuild {
104104        let  is_ext_tool = self . is_ext_tool ; 
105105
106106        match  self . mode  { 
107-             Mode :: ToolStd  => builder. ensure ( compile:: Std  {  compiler,  target } ) , 
108-             Mode :: ToolTest  => builder. ensure ( compile:: Test  {  compiler,  target } ) , 
109-             Mode :: ToolRustc  => builder. ensure ( compile:: Rustc  {  compiler,  target } ) , 
107+             Mode :: ToolRustc  => { 
108+                 builder. ensure ( compile:: Rustc  {  compiler,  target } ) 
109+             } 
110+             Mode :: ToolStd  => { 
111+                 builder. ensure ( compile:: Std  {  compiler,  target } ) 
112+             } 
113+             Mode :: ToolBootstrap  => { }  // uses downloaded stage0 compiler libs 
110114            _ => panic ! ( "unexpected Mode for tool build" ) 
111115        } 
112116
@@ -341,17 +345,17 @@ macro_rules! tool {
341345} 
342346
343347tool ! ( 
344-     Rustbook ,  "src/tools/rustbook" ,  "rustbook" ,  Mode :: ToolRustc ; 
348+     Rustbook ,  "src/tools/rustbook" ,  "rustbook" ,  Mode :: ToolBootstrap ; 
345349    ErrorIndex ,  "src/tools/error_index_generator" ,  "error_index_generator" ,  Mode :: ToolRustc ; 
346-     UnstableBookGen ,  "src/tools/unstable-book-gen" ,  "unstable-book-gen" ,  Mode :: ToolStd ; 
347-     Tidy ,  "src/tools/tidy" ,  "tidy" ,  Mode :: ToolStd ; 
348-     Linkchecker ,  "src/tools/linkchecker" ,  "linkchecker" ,  Mode :: ToolStd ; 
349-     CargoTest ,  "src/tools/cargotest" ,  "cargotest" ,  Mode :: ToolStd ; 
350-     Compiletest ,  "src/tools/compiletest" ,  "compiletest" ,  Mode :: ToolTest ,  llvm_tools = true ; 
351-     BuildManifest ,  "src/tools/build-manifest" ,  "build-manifest" ,  Mode :: ToolStd ; 
352-     RemoteTestClient ,  "src/tools/remote-test-client" ,  "remote-test-client" ,  Mode :: ToolStd ; 
353-     RustInstaller ,  "src/tools/rust-installer" ,  "fabricate" ,  Mode :: ToolStd ; 
354-     RustdocTheme ,  "src/tools/rustdoc-themes" ,  "rustdoc-themes" ,  Mode :: ToolStd ; 
350+     UnstableBookGen ,  "src/tools/unstable-book-gen" ,  "unstable-book-gen" ,  Mode :: ToolBootstrap ; 
351+     Tidy ,  "src/tools/tidy" ,  "tidy" ,  Mode :: ToolBootstrap ; 
352+     Linkchecker ,  "src/tools/linkchecker" ,  "linkchecker" ,  Mode :: ToolBootstrap ; 
353+     CargoTest ,  "src/tools/cargotest" ,  "cargotest" ,  Mode :: ToolBootstrap ; 
354+     Compiletest ,  "src/tools/compiletest" ,  "compiletest" ,  Mode :: ToolBootstrap ,  llvm_tools = true ; 
355+     BuildManifest ,  "src/tools/build-manifest" ,  "build-manifest" ,  Mode :: ToolBootstrap ; 
356+     RemoteTestClient ,  "src/tools/remote-test-client" ,  "remote-test-client" ,  Mode :: ToolBootstrap ; 
357+     RustInstaller ,  "src/tools/rust-installer" ,  "fabricate" ,  Mode :: ToolBootstrap ; 
358+     RustdocTheme ,  "src/tools/rustdoc-themes" ,  "rustdoc-themes" ,  Mode :: ToolBootstrap ; 
355359) ; 
356360
357361#[ derive( Debug ,  Copy ,  Clone ,  Hash ,  PartialEq ,  Eq ) ]  
@@ -604,7 +608,11 @@ impl<'a> Builder<'a> {
604608fn  prepare_tool_cmd ( & self ,  compiler :  Compiler ,  tool :  Tool ,  cmd :  & mut  Command )  { 
605609        let  host = & compiler. host ; 
606610        let  mut  lib_paths:  Vec < PathBuf >  = vec ! [ 
607-             PathBuf :: from( & self . sysroot_libdir( compiler,  compiler. host) ) , 
611+             if  compiler. stage == 0  { 
612+                 self . build. rustc_snapshot_libdir( ) 
613+             }  else { 
614+                 PathBuf :: from( & self . sysroot_libdir( compiler,  compiler. host) ) 
615+             } , 
608616            self . cargo_out( compiler,  tool. get_mode( ) ,  * host) . join( "deps" ) , 
609617        ] ; 
610618
0 commit comments