@@ -360,7 +360,12 @@ impl Step for Miri {
360360
361361 let miri =
362362 builder. ensure ( tool:: Miri { compiler, target : self . host , extra_features : Vec :: new ( ) } ) ;
363- if let Some ( miri) = miri {
363+ let cargo_miri = builder. ensure ( tool:: CargoMiri {
364+ compiler,
365+ target : self . host ,
366+ extra_features : Vec :: new ( ) ,
367+ } ) ;
368+ if let ( Some ( miri) , Some ( _cargo_miri) ) = ( miri, cargo_miri) {
364369 let mut cargo = builder. cargo ( compiler, Mode :: ToolRustc , host, "install" ) ;
365370 cargo. arg ( "xargo" ) ;
366371 // Configure `cargo install` path. cargo adds a `bin/`.
@@ -378,14 +383,16 @@ impl Step for Miri {
378383 Mode :: ToolRustc ,
379384 host,
380385 "run" ,
381- "src/tools/miri" ,
386+ "src/tools/miri/cargo-miri " ,
382387 SourceType :: Submodule ,
383388 & [ ] ,
384389 ) ;
385- cargo. arg ( "--bin" ) . arg ( "cargo-miri" ) . arg ( "-- ") . arg ( "miri" ) . arg ( "setup" ) ;
390+ cargo. arg ( "--" ) . arg ( "miri" ) . arg ( "setup" ) ;
386391
387392 // Tell `cargo miri setup` where to find the sources.
388393 cargo. env ( "XARGO_RUST_SRC" , builder. src . join ( "src" ) ) ;
394+ // Tell it where to find Miri.
395+ cargo. env ( "MIRI" , & miri) ;
389396 // Debug things.
390397 cargo. env ( "RUST_BACKTRACE" , "1" ) ;
391398 // Overwrite bootstrap's `rustc` wrapper overwriting our flags.
@@ -437,7 +444,7 @@ impl Step for Miri {
437444 // miri tests need to know about the stage sysroot
438445 cargo. env ( "MIRI_SYSROOT" , miri_sysroot) ;
439446 cargo. env ( "RUSTC_LIB_PATH" , builder. rustc_libdir ( compiler) ) ;
440- cargo. env ( "MIRI_PATH " , miri) ;
447+ cargo. env ( "MIRI " , miri) ;
441448
442449 cargo. arg ( "--" ) . args ( builder. config . cmd . test_args ( ) ) ;
443450
0 commit comments