@@ -1548,6 +1548,7 @@ impl Step for Extended {
1548
1548
compiler: builder. compiler( stage, target) ,
1549
1549
backend: "cranelift" . to_string( ) ,
1550
1550
} ) ;
1551
+ add_component ! ( "llvm-bitcode-linker" => LlvmBitcodeLinker { compiler, target} ) ;
1551
1552
1552
1553
let etc = builder. src . join ( "src/etc/installer" ) ;
1553
1554
@@ -2224,6 +2225,53 @@ impl Step for LlvmTools {
2224
2225
}
2225
2226
}
2226
2227
2228
+ #[ derive( Debug , PartialOrd , Ord , Clone , Hash , PartialEq , Eq ) ]
2229
+ pub struct LlvmBitcodeLinker {
2230
+ pub compiler : Compiler ,
2231
+ pub target : TargetSelection ,
2232
+ }
2233
+
2234
+ impl Step for LlvmBitcodeLinker {
2235
+ type Output = Option < GeneratedTarball > ;
2236
+ const DEFAULT : bool = true ;
2237
+ const ONLY_HOSTS : bool = true ;
2238
+
2239
+ fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
2240
+ let default = should_build_extended_tool ( run. builder , "llvm-bitcode-linker" ) ;
2241
+ run. alias ( "llvm-bitcode-linker" ) . default_condition ( default)
2242
+ }
2243
+
2244
+ fn make_run ( run : RunConfig < ' _ > ) {
2245
+ run. builder . ensure ( LlvmBitcodeLinker {
2246
+ compiler : run. builder . compiler_for (
2247
+ run. builder . top_stage ,
2248
+ run. builder . config . build ,
2249
+ run. target ,
2250
+ ) ,
2251
+ target : run. target ,
2252
+ } ) ;
2253
+ }
2254
+
2255
+ fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
2256
+ let compiler = self . compiler ;
2257
+ let target = self . target ;
2258
+
2259
+ let llbc_linker =
2260
+ builder. ensure ( tool:: LlvmBitcodeLinker { compiler, target, extra_features : vec ! [ ] } ) ;
2261
+
2262
+ let self_contained_bin_dir = format ! ( "lib/rustlib/{}/bin/self-contained" , target. triple) ;
2263
+
2264
+ // Prepare the image directory
2265
+ let mut tarball = Tarball :: new ( builder, "llvm-bitcode-linker" , & target. triple ) ;
2266
+ tarball. set_overlay ( OverlayKind :: LlvmBitcodeLinker ) ;
2267
+ tarball. is_preview ( true ) ;
2268
+
2269
+ tarball. add_file ( llbc_linker, self_contained_bin_dir, 0o755 ) ;
2270
+
2271
+ Some ( tarball. generate ( ) )
2272
+ }
2273
+ }
2274
+
2227
2275
// Tarball intended for internal consumption to ease rustc/std development.
2228
2276
//
2229
2277
// Should not be considered stable by end users.
0 commit comments