@@ -1253,7 +1253,7 @@ pub struct RustDemangler {
12531253}
12541254
12551255impl Step for RustDemangler {
1256- type Output = GeneratedTarball ;
1256+ type Output = Option < GeneratedTarball > ;
12571257 const ONLY_HOSTS : bool = true ;
12581258
12591259 fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
@@ -1271,11 +1271,17 @@ impl Step for RustDemangler {
12711271 } ) ;
12721272 }
12731273
1274- fn run ( self , builder : & Builder < ' _ > ) -> GeneratedTarball {
1274+ fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
12751275 let compiler = self . compiler ;
12761276 let target = self . target ;
12771277 assert ! ( builder. config. extended) ;
12781278
1279+ // Only build this extended tool if explicitly included in `tools`, or if `profiler = true`
1280+ let profiler = builder. config . profiler_enabled ( target) ;
1281+ if !builder. config . tools . as_ref ( ) . map_or ( profiler, |t| t. contains ( "rust-demangler" ) ) {
1282+ return None ;
1283+ }
1284+
12791285 let rust_demangler = builder
12801286 . ensure ( tool:: RustDemangler { compiler, target, extra_features : Vec :: new ( ) } )
12811287 . expect ( "rust-demangler expected to build - in-tree tool" ) ;
@@ -1286,7 +1292,7 @@ impl Step for RustDemangler {
12861292 tarball. is_preview ( true ) ;
12871293 tarball. add_file ( & rust_demangler, "bin" , 0o755 ) ;
12881294 tarball. add_legal_and_readme_to ( "share/doc/rust-demangler" ) ;
1289- tarball. generate ( )
1295+ Some ( tarball. generate ( ) )
12901296 }
12911297}
12921298
@@ -1326,14 +1332,7 @@ impl Step for Extended {
13261332 let rustc_installer = builder. ensure ( Rustc { compiler : builder. compiler ( stage, target) } ) ;
13271333 let cargo_installer = builder. ensure ( Cargo { compiler, target } ) ;
13281334 let rustfmt_installer = builder. ensure ( Rustfmt { compiler, target } ) ;
1329- let profiler = builder. config . profiler_enabled ( target) ;
1330- let install_rust_demangler =
1331- builder. config . tools . as_ref ( ) . map_or ( profiler, |t| t. contains ( "rust-demangler" ) ) ;
1332- let rust_demangler_installer = if install_rust_demangler {
1333- Some ( builder. ensure ( RustDemangler { compiler, target } ) )
1334- } else {
1335- None
1336- } ;
1335+ let rust_demangler_installer = builder. ensure ( RustDemangler { compiler, target } ) ;
13371336 let rls_installer = builder. ensure ( Rls { compiler, target } ) ;
13381337 let rust_analyzer_installer = builder. ensure ( RustAnalyzer { compiler, target } ) ;
13391338 let llvm_tools_installer = builder. ensure ( LlvmTools { target } ) ;
@@ -1359,14 +1358,12 @@ impl Step for Extended {
13591358 let mut tarballs = Vec :: new ( ) ;
13601359 tarballs. push ( rustc_installer) ;
13611360 tarballs. push ( cargo_installer) ;
1361+ tarballs. push ( clippy_installer) ;
1362+ tarballs. extend ( rust_demangler_installer. clone ( ) ) ;
13621363 tarballs. extend ( rls_installer. clone ( ) ) ;
13631364 tarballs. extend ( rust_analyzer_installer. clone ( ) ) ;
1364- tarballs. push ( clippy_installer) ;
13651365 tarballs. extend ( miri_installer. clone ( ) ) ;
13661366 tarballs. extend ( rustfmt_installer. clone ( ) ) ;
1367- if let Some ( rust_demangler_installer) = rust_demangler_installer {
1368- tarballs. push ( rust_demangler_installer) ;
1369- }
13701367 tarballs. extend ( llvm_tools_installer) ;
13711368 if let Some ( analysis_installer) = analysis_installer {
13721369 tarballs. push ( analysis_installer) ;
@@ -1421,6 +1418,9 @@ impl Step for Extended {
14211418
14221419 let xform = |p : & Path | {
14231420 let mut contents = t ! ( fs:: read_to_string( p) ) ;
1421+ if rust_demangler_installer. is_none ( ) {
1422+ contents = filter ( & contents, "rust-demangler" ) ;
1423+ }
14241424 if rls_installer. is_none ( ) {
14251425 contents = filter ( & contents, "rls" ) ;
14261426 }
@@ -1468,11 +1468,10 @@ impl Step for Extended {
14681468 prepare ( "rust-docs" ) ;
14691469 prepare ( "rust-std" ) ;
14701470 prepare ( "rust-analysis" ) ;
1471- if install_rust_demangler {
1471+ prepare ( "clippy" ) ;
1472+ if rust_demangler_installer. is_some ( ) {
14721473 prepare ( "rust-demangler" ) ;
14731474 }
1474- prepare ( "clippy" ) ;
1475-
14761475 if rls_installer. is_some ( ) {
14771476 prepare ( "rls" ) ;
14781477 }
@@ -1520,6 +1519,8 @@ impl Step for Extended {
15201519 "rust-analyzer-preview" . to_string ( )
15211520 } else if name == "clippy" {
15221521 "clippy-preview" . to_string ( )
1522+ } else if name == "rust-demangler" {
1523+ "rust-demangler-preview" . to_string ( )
15231524 } else if name == "miri" {
15241525 "miri-preview" . to_string ( )
15251526 } else {
@@ -1534,12 +1535,12 @@ impl Step for Extended {
15341535 prepare ( "rustc" ) ;
15351536 prepare ( "cargo" ) ;
15361537 prepare ( "rust-analysis" ) ;
1537- if install_rust_demangler {
1538- prepare ( "rust-demangler" ) ;
1539- }
15401538 prepare ( "rust-docs" ) ;
15411539 prepare ( "rust-std" ) ;
15421540 prepare ( "clippy" ) ;
1541+ if rust_demangler_installer. is_some ( ) {
1542+ prepare ( "rust-demangler" ) ;
1543+ }
15431544 if rls_installer. is_some ( ) {
15441545 prepare ( "rls" ) ;
15451546 }
@@ -1681,7 +1682,7 @@ impl Step for Extended {
16811682 . arg ( "-t" )
16821683 . arg ( etc. join ( "msi/remove-duplicates.xsl" ) ) ,
16831684 ) ;
1684- if install_rust_demangler {
1685+ if rust_demangler_installer . is_some ( ) {
16851686 builder. run (
16861687 Command :: new ( & heat)
16871688 . current_dir ( & exe)
@@ -1773,6 +1774,9 @@ impl Step for Extended {
17731774 . arg ( & input) ;
17741775 add_env ( builder, & mut cmd, target) ;
17751776
1777+ if rust_demangler_installer. is_some ( ) {
1778+ cmd. arg ( "-dRustDemanglerDir=rust-demangler" ) ;
1779+ }
17761780 if rls_installer. is_some ( ) {
17771781 cmd. arg ( "-dRlsDir=rls" ) ;
17781782 }
@@ -1795,7 +1799,7 @@ impl Step for Extended {
17951799 candle ( "CargoGroup.wxs" . as_ref ( ) ) ;
17961800 candle ( "StdGroup.wxs" . as_ref ( ) ) ;
17971801 candle ( "ClippyGroup.wxs" . as_ref ( ) ) ;
1798- if install_rust_demangler {
1802+ if rust_demangler_installer . is_some ( ) {
17991803 candle ( "RustDemanglerGroup.wxs" . as_ref ( ) ) ;
18001804 }
18011805 if rls_installer. is_some ( ) {
@@ -1844,7 +1848,7 @@ impl Step for Extended {
18441848 if rust_analyzer_installer. is_some ( ) {
18451849 cmd. arg ( "RustAnalyzerGroup.wixobj" ) ;
18461850 }
1847- if install_rust_demangler {
1851+ if rust_demangler_installer . is_some ( ) {
18481852 cmd. arg ( "RustDemanglerGroup.wixobj" ) ;
18491853 }
18501854 if miri_installer. is_some ( ) {
0 commit comments