@@ -231,7 +231,7 @@ impl Step for Std {
231231 let target_sysroot_bin =
232232 builder. sysroot_libdir ( compiler, target) . parent ( ) . unwrap ( ) . join ( "bin" ) ;
233233 t ! ( fs:: create_dir_all( & target_sysroot_bin) ) ;
234- builder. cp_r ( & src_sysroot_bin, & target_sysroot_bin) ;
234+ builder. cp_link_r ( & src_sysroot_bin, & target_sysroot_bin) ;
235235 }
236236 }
237237
@@ -307,7 +307,7 @@ fn copy_and_stamp(
307307 dependency_type : DependencyType ,
308308) {
309309 let target = libdir. join ( name) ;
310- builder. copy ( & sourcedir. join ( name) , & target) ;
310+ builder. copy_link ( & sourcedir. join ( name) , & target) ;
311311
312312 target_deps. push ( ( target, dependency_type) ) ;
313313}
@@ -316,7 +316,7 @@ fn copy_llvm_libunwind(builder: &Builder<'_>, target: TargetSelection, libdir: &
316316 let libunwind_path = builder. ensure ( llvm:: Libunwind { target } ) ;
317317 let libunwind_source = libunwind_path. join ( "libunwind.a" ) ;
318318 let libunwind_target = libdir. join ( "libunwind.a" ) ;
319- builder. copy ( & libunwind_source, & libunwind_target) ;
319+ builder. copy_link ( & libunwind_source, & libunwind_target) ;
320320 libunwind_target
321321}
322322
@@ -385,7 +385,7 @@ fn copy_self_contained_objects(
385385 for & obj in & [ "crtbegin.o" , "crtbeginS.o" , "crtend.o" , "crtendS.o" ] {
386386 let src = crt_path. join ( obj) ;
387387 let target = libdir_self_contained. join ( obj) ;
388- builder. copy ( & src, & target) ;
388+ builder. copy_link ( & src, & target) ;
389389 target_deps. push ( ( target, DependencyType :: TargetSelfContained ) ) ;
390390 }
391391
@@ -418,7 +418,7 @@ fn copy_self_contained_objects(
418418 for obj in [ "crt2.o" , "dllcrt2.o" ] . iter ( ) {
419419 let src = compiler_file ( builder, & builder. cc ( target) , target, CLang :: C , obj) ;
420420 let target = libdir_self_contained. join ( obj) ;
421- builder. copy ( & src, & target) ;
421+ builder. copy_link ( & src, & target) ;
422422 target_deps. push ( ( target, DependencyType :: TargetSelfContained ) ) ;
423423 }
424424 }
@@ -637,7 +637,7 @@ impl Step for StdLink {
637637 let stage0_bin_dir = builder. out . join ( host) . join ( "stage0/bin" ) ;
638638 let sysroot_bin_dir = sysroot. join ( "bin" ) ;
639639 t ! ( fs:: create_dir_all( & sysroot_bin_dir) ) ;
640- builder. cp_r ( & stage0_bin_dir, & sysroot_bin_dir) ;
640+ builder. cp_link_r ( & stage0_bin_dir, & sysroot_bin_dir) ;
641641
642642 // Copy all *.so files from stage0/lib to stage0-sysroot/lib
643643 let stage0_lib_dir = builder. out . join ( host) . join ( "stage0/lib" ) ;
@@ -646,7 +646,8 @@ impl Step for StdLink {
646646 let file = t ! ( file) ;
647647 let path = file. path ( ) ;
648648 if path. is_file ( ) && is_dylib ( & file. file_name ( ) . into_string ( ) . unwrap ( ) ) {
649- builder. copy ( & path, & sysroot. join ( "lib" ) . join ( path. file_name ( ) . unwrap ( ) ) ) ;
649+ builder
650+ . copy_link ( & path, & sysroot. join ( "lib" ) . join ( path. file_name ( ) . unwrap ( ) ) ) ;
650651 }
651652 }
652653 }
@@ -661,7 +662,7 @@ impl Step for StdLink {
661662 . join ( host)
662663 . join ( "codegen-backends" ) ;
663664 if stage0_codegen_backends. exists ( ) {
664- builder. cp_r ( & stage0_codegen_backends, & sysroot_codegen_backends) ;
665+ builder. cp_link_r ( & stage0_codegen_backends, & sysroot_codegen_backends) ;
665666 }
666667 }
667668 }
@@ -684,7 +685,7 @@ fn copy_sanitizers(
684685
685686 for runtime in & runtimes {
686687 let dst = libdir. join ( & runtime. name ) ;
687- builder. copy ( & runtime. path , & dst) ;
688+ builder. copy_link ( & runtime. path , & dst) ;
688689
689690 // The `aarch64-apple-ios-macabi` and `x86_64-apple-ios-macabi` are also supported for
690691 // sanitizers, but they share a sanitizer runtime with `${arch}-apple-darwin`, so we do
@@ -790,7 +791,7 @@ impl Step for StartupObjects {
790791 }
791792
792793 let target = sysroot_dir. join ( ( * file) . to_string ( ) + ".o" ) ;
793- builder. copy ( dst_file, & target) ;
794+ builder. copy_link ( dst_file, & target) ;
794795 target_deps. push ( ( target, DependencyType :: Target ) ) ;
795796 }
796797
@@ -812,7 +813,7 @@ fn cp_rustc_component_to_ci_sysroot(
812813 if src. is_dir ( ) {
813814 t ! ( fs:: create_dir_all( dst) ) ;
814815 } else {
815- builder. copy ( & src, & dst) ;
816+ builder. copy_link ( & src, & dst) ;
816817 }
817818 }
818819}
@@ -1443,7 +1444,7 @@ fn copy_codegen_backends_to_sysroot(
14431444 let dot = filename. find ( '.' ) . unwrap ( ) ;
14441445 format ! ( "{}-{}{}" , & filename[ ..dash] , builder. rust_release( ) , & filename[ dot..] )
14451446 } ;
1446- builder. copy ( file, & dst. join ( target_filename) ) ;
1447+ builder. copy_link ( file, & dst. join ( target_filename) ) ;
14471448 }
14481449}
14491450
@@ -1599,7 +1600,7 @@ impl Step for Sysroot {
15991600 OsStr :: new ( std:: env:: consts:: DLL_EXTENSION ) ,
16001601 ] ;
16011602 let ci_rustc_dir = builder. config . ci_rustc_dir ( ) ;
1602- builder. cp_filtered ( & ci_rustc_dir, & sysroot, & |path| {
1603+ builder. cp_link_filtered ( & ci_rustc_dir, & sysroot, & |path| {
16031604 if path. extension ( ) . map_or ( true , |ext| !filtered_extensions. contains ( & ext) ) {
16041605 return true ;
16051606 }
@@ -1791,7 +1792,7 @@ impl Step for Assemble {
17911792 let filename = f. file_name ( ) . into_string ( ) . unwrap ( ) ;
17921793 if ( is_dylib ( & filename) || is_debug_info ( & filename) ) && !proc_macros. contains ( & filename)
17931794 {
1794- builder. copy ( & f. path ( ) , & rustc_libdir. join ( & filename) ) ;
1795+ builder. copy_link ( & f. path ( ) , & rustc_libdir. join ( & filename) ) ;
17951796 }
17961797 }
17971798
@@ -1805,15 +1806,15 @@ impl Step for Assemble {
18051806 if let Some ( lld_install) = lld_install {
18061807 let src_exe = exe ( "lld" , target_compiler. host ) ;
18071808 let dst_exe = exe ( "rust-lld" , target_compiler. host ) ;
1808- builder. copy ( & lld_install. join ( "bin" ) . join ( src_exe) , & libdir_bin. join ( dst_exe) ) ;
1809+ builder. copy_link ( & lld_install. join ( "bin" ) . join ( src_exe) , & libdir_bin. join ( dst_exe) ) ;
18091810 let self_contained_lld_dir = libdir_bin. join ( "gcc-ld" ) ;
18101811 t ! ( fs:: create_dir_all( & self_contained_lld_dir) ) ;
18111812 let lld_wrapper_exe = builder. ensure ( crate :: core:: build_steps:: tool:: LldWrapper {
18121813 compiler : build_compiler,
18131814 target : target_compiler. host ,
18141815 } ) ;
18151816 for name in crate :: LLD_FILE_NAMES {
1816- builder. copy (
1817+ builder. copy_link (
18171818 & lld_wrapper_exe,
18181819 & self_contained_lld_dir. join ( exe ( name, target_compiler. host ) ) ,
18191820 ) ;
@@ -1838,7 +1839,7 @@ impl Step for Assemble {
18381839 // When using `download-ci-llvm`, some of the tools
18391840 // may not exist, so skip trying to copy them.
18401841 if src_path. exists ( ) {
1841- builder. copy ( & src_path, & libdir_bin. join ( & tool_exe) ) ;
1842+ builder. copy_link ( & src_path, & libdir_bin. join ( & tool_exe) ) ;
18421843 }
18431844 }
18441845 }
@@ -1851,7 +1852,7 @@ impl Step for Assemble {
18511852 extra_features : vec ! [ ] ,
18521853 } ) ;
18531854 let tool_exe = exe ( "llvm-bitcode-linker" , target_compiler. host ) ;
1854- builder. copy ( & src_path, & libdir_bin. join ( & tool_exe) ) ;
1855+ builder. copy_link ( & src_path, & libdir_bin. join ( & tool_exe) ) ;
18551856 }
18561857
18571858 // Ensure that `libLLVM.so` ends up in the newly build compiler directory,
@@ -1865,7 +1866,7 @@ impl Step for Assemble {
18651866 let bindir = sysroot. join ( "bin" ) ;
18661867 t ! ( fs:: create_dir_all( bindir) ) ;
18671868 let compiler = builder. rustc ( target_compiler) ;
1868- builder. copy ( & rustc, & compiler) ;
1869+ builder. copy_link ( & rustc, & compiler) ;
18691870
18701871 target_compiler
18711872 }
@@ -1891,7 +1892,7 @@ pub fn add_to_sysroot(
18911892 DependencyType :: Target => sysroot_dst,
18921893 DependencyType :: TargetSelfContained => self_contained_dst,
18931894 } ;
1894- builder. copy ( & path, & dst. join ( path. file_name ( ) . unwrap ( ) ) ) ;
1895+ builder. copy_link ( & path, & dst. join ( path. file_name ( ) . unwrap ( ) ) ) ;
18951896 }
18961897}
18971898
0 commit comments