@@ -64,17 +64,13 @@ impl Step for Std {
64
64
return ;
65
65
}
66
66
67
- let mut target_deps = builder. ensure ( StartupObjects { compiler, target } ) ;
67
+ builder. ensure ( StartupObjects { compiler, target } ) ;
68
+ copy_third_party_objects ( builder, & compiler, target) ;
68
69
69
70
let compiler_to_use = builder. compiler_for ( compiler. stage , compiler. host , target) ;
70
71
if compiler_to_use != compiler {
71
72
builder. ensure ( Std { compiler : compiler_to_use, target } ) ;
72
73
builder. info ( & format ! ( "Uplifting stage1 std ({} -> {})" , compiler_to_use. host, target) ) ;
73
-
74
- // Even if we're not building std this stage, the new sysroot must
75
- // still contain the third party objects needed by various targets.
76
- copy_third_party_objects ( builder, & compiler, target) ;
77
-
78
74
builder. ensure ( StdLink {
79
75
compiler : compiler_to_use,
80
76
target_compiler : compiler,
@@ -83,7 +79,6 @@ impl Step for Std {
83
79
return ;
84
80
}
85
81
86
- target_deps. extend ( copy_third_party_objects ( builder, & compiler, target) . into_iter ( ) ) ;
87
82
88
83
let mut cargo = builder. cargo ( compiler, Mode :: Std , target, "build" ) ;
89
84
std_cargo ( builder, target, compiler. stage , & mut cargo) ;
@@ -97,7 +92,6 @@ impl Step for Std {
97
92
cargo,
98
93
vec ! [ ] ,
99
94
& libstd_stamp ( builder, compiler, target) ,
100
- target_deps,
101
95
false ,
102
96
) ;
103
97
@@ -114,15 +108,12 @@ fn copy_third_party_objects(
114
108
builder : & Builder < ' _ > ,
115
109
compiler : & Compiler ,
116
110
target : Interned < String > ,
117
- ) -> Vec < PathBuf > {
111
+ ) {
118
112
let libdir = builder. sysroot_libdir ( * compiler, target) ;
119
113
120
- let mut target_deps = vec ! [ ] ;
121
-
122
- let mut copy_and_stamp = |sourcedir : & Path , name : & str | {
114
+ let copy = |sourcedir : & Path , name : & str | {
123
115
let target = libdir. join ( name) ;
124
116
builder. copy ( & sourcedir. join ( name) , & target) ;
125
- target_deps. push ( target) ;
126
117
} ;
127
118
128
119
// Copies the CRT objects.
@@ -135,11 +126,11 @@ fn copy_third_party_objects(
135
126
if target. contains ( "musl" ) {
136
127
let srcdir = builder. musl_root ( target) . unwrap ( ) . join ( "lib" ) ;
137
128
for & obj in & [ "crt1.o" , "Scrt1.o" , "rcrt1.o" , "crti.o" , "crtn.o" ] {
138
- copy_and_stamp ( & srcdir, obj) ;
129
+ copy ( & srcdir, obj) ;
139
130
}
140
131
} else if target. ends_with ( "-wasi" ) {
141
132
let srcdir = builder. wasi_root ( target) . unwrap ( ) . join ( "lib/wasm32-wasi" ) ;
142
- copy_and_stamp ( & srcdir, "crt1.o" ) ;
133
+ copy ( & srcdir, "crt1.o" ) ;
143
134
}
144
135
145
136
// Copies libunwind.a compiled to be linked with x86_64-fortanix-unknown-sgx.
@@ -151,16 +142,14 @@ fn copy_third_party_objects(
151
142
let src_path_env = "X86_FORTANIX_SGX_LIBS" ;
152
143
let src =
153
144
env:: var ( src_path_env) . unwrap_or_else ( |_| panic ! ( "{} not found in env" , src_path_env) ) ;
154
- copy_and_stamp ( Path :: new ( & src) , "libunwind.a" ) ;
145
+ copy ( Path :: new ( & src) , "libunwind.a" ) ;
155
146
}
156
147
157
148
if builder. config . sanitizers && compiler. stage != 0 {
158
149
// The sanitizers are only copied in stage1 or above,
159
150
// to avoid creating dependency on LLVM.
160
- target_deps . extend ( copy_sanitizers ( builder, & compiler, target) ) ;
151
+ copy_sanitizers ( builder, & compiler, target) ;
161
152
}
162
-
163
- target_deps
164
153
}
165
154
166
155
/// Configure cargo to compile the standard library, adding appropriate env vars
@@ -287,14 +276,13 @@ fn copy_sanitizers(
287
276
builder : & Builder < ' _ > ,
288
277
compiler : & Compiler ,
289
278
target : Interned < String > ,
290
- ) -> Vec < PathBuf > {
279
+ ) {
291
280
let runtimes: Vec < native:: SanitizerRuntime > = builder. ensure ( native:: Sanitizers { target } ) ;
292
281
293
282
if builder. config . dry_run {
294
- return Vec :: new ( ) ;
283
+ return ;
295
284
}
296
285
297
- let mut target_deps = Vec :: new ( ) ;
298
286
let libdir = builder. sysroot_libdir ( * compiler, target) ;
299
287
300
288
for runtime in & runtimes {
@@ -311,11 +299,7 @@ fn copy_sanitizers(
311
299
. expect ( "failed to execute `install_name_tool`" ) ;
312
300
assert ! ( status. success( ) ) ;
313
301
}
314
-
315
- target_deps. push ( dst) ;
316
302
}
317
-
318
- target_deps
319
303
}
320
304
321
305
#[ derive( Debug , Copy , Clone , PartialEq , Eq , Hash ) ]
@@ -325,7 +309,7 @@ pub struct StartupObjects {
325
309
}
326
310
327
311
impl Step for StartupObjects {
328
- type Output = Vec < PathBuf > ;
312
+ type Output = ( ) ;
329
313
330
314
fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
331
315
run. path ( "src/rtstartup" )
@@ -344,15 +328,13 @@ impl Step for StartupObjects {
344
328
/// They don't require any library support as they're just plain old object
345
329
/// files, so we just use the nightly snapshot compiler to always build them (as
346
330
/// no other compilers are guaranteed to be available).
347
- fn run ( self , builder : & Builder < ' _ > ) -> Vec < PathBuf > {
331
+ fn run ( self , builder : & Builder < ' _ > ) {
348
332
let for_compiler = self . compiler ;
349
333
let target = self . target ;
350
334
if !target. contains ( "windows-gnu" ) {
351
- return vec ! [ ] ;
335
+ return ( ) ;
352
336
}
353
337
354
- let mut target_deps = vec ! [ ] ;
355
-
356
338
let src_dir = & builder. src . join ( "src/rtstartup" ) ;
357
339
let dst_dir = & builder. native_dir ( target) . join ( "rtstartup" ) ;
358
340
let sysroot_dir = & builder. sysroot_libdir ( for_compiler, target) ;
@@ -378,17 +360,13 @@ impl Step for StartupObjects {
378
360
379
361
let target = sysroot_dir. join ( ( * file) . to_string ( ) + ".o" ) ;
380
362
builder. copy ( dst_file, & target) ;
381
- target_deps. push ( target) ;
382
363
}
383
364
384
365
for obj in [ "crt2.o" , "dllcrt2.o" ] . iter ( ) {
385
366
let src = compiler_file ( builder, builder. cc ( target) , target, obj) ;
386
367
let target = sysroot_dir. join ( obj) ;
387
368
builder. copy ( & src, & target) ;
388
- target_deps. push ( target) ;
389
369
}
390
-
391
- target_deps
392
370
}
393
371
}
394
372
@@ -462,7 +440,6 @@ impl Step for Rustc {
462
440
cargo,
463
441
vec ! [ ] ,
464
442
& librustc_stamp ( builder, compiler, target) ,
465
- vec ! [ ] ,
466
443
false ,
467
444
) ;
468
445
@@ -814,7 +791,6 @@ pub fn run_cargo(
814
791
cargo : Cargo ,
815
792
tail_args : Vec < String > ,
816
793
stamp : & Path ,
817
- additional_target_deps : Vec < PathBuf > ,
818
794
is_check : bool ,
819
795
) -> Vec < PathBuf > {
820
796
if builder. config . dry_run {
@@ -931,7 +907,6 @@ pub fn run_cargo(
931
907
deps. push ( ( path_to_add. into ( ) , false ) ) ;
932
908
}
933
909
934
- deps. extend ( additional_target_deps. into_iter ( ) . map ( |d| ( d, false ) ) ) ;
935
910
deps. sort ( ) ;
936
911
let mut new_contents = Vec :: new ( ) ;
937
912
for ( dep, proc_macro) in deps. iter ( ) {
0 commit comments