@@ -19,6 +19,7 @@ use object::read::archive::ArchiveFile;
19
19
#[ cfg( feature = "tracing" ) ]
20
20
use tracing:: instrument;
21
21
22
+ use crate :: core:: build_steps:: compile:: { get_codegen_backend_file, normalize_codegen_backend_name} ;
22
23
use crate :: core:: build_steps:: doc:: DocumentationFormat ;
23
24
use crate :: core:: build_steps:: tool:: { self , RustcPrivateCompilers , Tool } ;
24
25
use crate :: core:: build_steps:: vendor:: { VENDOR_DIR , Vendor } ;
@@ -1442,35 +1443,29 @@ impl Step for CraneliftCodegenBackend {
1442
1443
tarball. is_preview ( true ) ;
1443
1444
tarball. add_legal_and_readme_to ( "share/doc/rustc_codegen_cranelift" ) ;
1444
1445
1445
- builder. ensure ( compile:: CraneliftCodegenBackend { compilers } ) ;
1446
+ let stamp = builder. ensure ( compile:: CraneliftCodegenBackend { compilers } ) ;
1446
1447
1447
1448
if builder. config . dry_run ( ) {
1448
1449
return None ;
1449
1450
}
1450
1451
1451
- let src = builder . sysroot ( self . build_compiler ) ;
1452
- let backends_src = builder. sysroot_codegen_backends ( self . build_compiler ) ;
1453
- let backends_rel = backends_src
1454
- . strip_prefix ( src )
1452
+ // Get the relative path of where the codegen backend should be stored.
1453
+ let backends_dst = builder. sysroot_codegen_backends ( compilers . target_compiler ( ) ) ;
1454
+ let backends_rel = backends_dst
1455
+ . strip_prefix ( builder . sysroot ( compilers . target_compiler ( ) ) )
1455
1456
. unwrap ( )
1456
- . strip_prefix ( builder. sysroot_libdir_relative ( self . build_compiler ) )
1457
+ . strip_prefix ( builder. sysroot_libdir_relative ( compilers . target_compiler ( ) ) )
1457
1458
. unwrap ( ) ;
1458
1459
// Don't use custom libdir here because ^lib/ will be resolved again with installer
1459
1460
let backends_dst = PathBuf :: from ( "lib" ) . join ( backends_rel) ;
1460
1461
1461
- let mut found_backend = false ;
1462
- for backend in fs:: read_dir ( & backends_src) . unwrap ( ) {
1463
- let file_name = backend. unwrap ( ) . file_name ( ) ;
1464
- if file_name. to_str ( ) . unwrap ( ) . contains ( "rustc_codegen_cranelift" ) {
1465
- tarball. add_file (
1466
- backends_src. join ( file_name) ,
1467
- & backends_dst,
1468
- FileType :: NativeLibrary ,
1469
- ) ;
1470
- found_backend = true ;
1471
- }
1472
- }
1473
- assert ! ( found_backend) ;
1462
+ let codegen_backend_dylib = get_codegen_backend_file ( & stamp) ;
1463
+ tarball. add_renamed_file (
1464
+ & codegen_backend_dylib,
1465
+ & backends_dst,
1466
+ & normalize_codegen_backend_name ( builder, & codegen_backend_dylib) ,
1467
+ FileType :: NativeLibrary ,
1468
+ ) ;
1474
1469
1475
1470
Some ( tarball. generate ( ) )
1476
1471
}
0 commit comments