@@ -128,6 +128,8 @@ pub enum LinkerFlavor {
128
128
/// Emscripten Compiler Frontend, a wrapper around `WasmLld(Cc::Yes)` that has a different
129
129
/// interface and produces some additional JavaScript output.
130
130
EmCc ,
131
+ // TODO: This needs some design on how to proceed
132
+ Wild ,
131
133
// Below: other linker-like tools with unique interfaces for exotic targets.
132
134
/// Linker tool for BPF.
133
135
Bpf ,
@@ -154,6 +156,7 @@ pub enum LinkerFlavorCli {
154
156
Bpf ,
155
157
Ptx ,
156
158
Llbc ,
159
+ Wild ,
157
160
158
161
// Legacy stable values
159
162
Gcc ,
@@ -179,7 +182,8 @@ impl LinkerFlavorCli {
179
182
| LinkerFlavorCli :: Ld
180
183
| LinkerFlavorCli :: Lld ( ..)
181
184
| LinkerFlavorCli :: Msvc ( Lld :: No )
182
- | LinkerFlavorCli :: Em => false ,
185
+ | LinkerFlavorCli :: Em
186
+ | LinkerFlavorCli :: Wild => false ,
183
187
}
184
188
}
185
189
}
@@ -211,6 +215,7 @@ impl LinkerFlavor {
211
215
LinkerFlavorCli :: Bpf => LinkerFlavor :: Bpf ,
212
216
LinkerFlavorCli :: Llbc => LinkerFlavor :: Llbc ,
213
217
LinkerFlavorCli :: Ptx => LinkerFlavor :: Ptx ,
218
+ LinkerFlavorCli :: Wild => LinkerFlavor :: Wild ,
214
219
215
220
// Below: legacy stable values
216
221
LinkerFlavorCli :: Gcc => match lld_flavor {
@@ -251,6 +256,7 @@ impl LinkerFlavor {
251
256
LinkerFlavor :: Bpf => LinkerFlavorCli :: Bpf ,
252
257
LinkerFlavor :: Llbc => LinkerFlavorCli :: Llbc ,
253
258
LinkerFlavor :: Ptx => LinkerFlavorCli :: Ptx ,
259
+ LinkerFlavor :: Wild => LinkerFlavorCli :: Wild ,
254
260
}
255
261
}
256
262
@@ -266,6 +272,7 @@ impl LinkerFlavor {
266
272
LinkerFlavor :: Bpf => LinkerFlavorCli :: Bpf ,
267
273
LinkerFlavor :: Llbc => LinkerFlavorCli :: Llbc ,
268
274
LinkerFlavor :: Ptx => LinkerFlavorCli :: Ptx ,
275
+ LinkerFlavor :: Wild => LinkerFlavorCli :: Wild ,
269
276
}
270
277
}
271
278
@@ -280,6 +287,7 @@ impl LinkerFlavor {
280
287
LinkerFlavorCli :: EmCc => ( Some ( Cc :: Yes ) , Some ( Lld :: Yes ) ) ,
281
288
LinkerFlavorCli :: Bpf | LinkerFlavorCli :: Ptx => ( None , None ) ,
282
289
LinkerFlavorCli :: Llbc => ( None , None ) ,
290
+ LinkerFlavorCli :: Wild => ( None , None ) ,
283
291
284
292
// Below: legacy stable values
285
293
LinkerFlavorCli :: Gcc => ( Some ( Cc :: Yes ) , None ) ,
@@ -298,6 +306,8 @@ impl LinkerFlavor {
298
306
299
307
if stem == "llvm-bitcode-linker" {
300
308
Ok ( Self :: Llbc )
309
+ } else if stem == "wild" {
310
+ Ok ( Self :: Wild )
301
311
} else if stem == "emcc" // GCC/Clang can have an optional target prefix.
302
312
|| stem == "gcc"
303
313
|| stem. ends_with ( "-gcc" )
@@ -335,7 +345,11 @@ impl LinkerFlavor {
335
345
LinkerFlavor :: WasmLld ( cc) => LinkerFlavor :: WasmLld ( cc_hint. unwrap_or ( cc) ) ,
336
346
LinkerFlavor :: Unix ( cc) => LinkerFlavor :: Unix ( cc_hint. unwrap_or ( cc) ) ,
337
347
LinkerFlavor :: Msvc ( lld) => LinkerFlavor :: Msvc ( lld_hint. unwrap_or ( lld) ) ,
338
- LinkerFlavor :: EmCc | LinkerFlavor :: Bpf | LinkerFlavor :: Llbc | LinkerFlavor :: Ptx => self ,
348
+ LinkerFlavor :: EmCc
349
+ | LinkerFlavor :: Bpf
350
+ | LinkerFlavor :: Llbc
351
+ | LinkerFlavor :: Ptx
352
+ | LinkerFlavor :: Wild => self ,
339
353
}
340
354
}
341
355
@@ -363,7 +377,8 @@ impl LinkerFlavor {
363
377
| ( LinkerFlavor :: EmCc , LinkerFlavorCli :: EmCc )
364
378
| ( LinkerFlavor :: Bpf , LinkerFlavorCli :: Bpf )
365
379
| ( LinkerFlavor :: Llbc , LinkerFlavorCli :: Llbc )
366
- | ( LinkerFlavor :: Ptx , LinkerFlavorCli :: Ptx ) => return true ,
380
+ | ( LinkerFlavor :: Ptx , LinkerFlavorCli :: Ptx )
381
+ | ( LinkerFlavor :: Wild , LinkerFlavorCli :: Wild ) => return true ,
367
382
// 2. The linker flavor is independent of target and compatible
368
383
( LinkerFlavor :: Ptx , LinkerFlavorCli :: Llbc ) => return true ,
369
384
_ => { }
@@ -393,6 +408,7 @@ impl LinkerFlavor {
393
408
LinkerFlavor :: Darwin ( ..) => LldFlavor :: Ld64 ,
394
409
LinkerFlavor :: WasmLld ( ..) => LldFlavor :: Wasm ,
395
410
LinkerFlavor :: Msvc ( ..) => LldFlavor :: Link ,
411
+ LinkerFlavor :: Wild => todo ! ( ) ,
396
412
}
397
413
}
398
414
@@ -415,7 +431,8 @@ impl LinkerFlavor {
415
431
| LinkerFlavor :: Unix ( _)
416
432
| LinkerFlavor :: Bpf
417
433
| LinkerFlavor :: Llbc
418
- | LinkerFlavor :: Ptx => false ,
434
+ | LinkerFlavor :: Ptx
435
+ | LinkerFlavor :: Wild => false ,
419
436
}
420
437
}
421
438
@@ -427,7 +444,8 @@ impl LinkerFlavor {
427
444
| LinkerFlavor :: Darwin ( Cc :: Yes , _)
428
445
| LinkerFlavor :: WasmLld ( Cc :: Yes )
429
446
| LinkerFlavor :: Unix ( Cc :: Yes )
430
- | LinkerFlavor :: EmCc => true ,
447
+ | LinkerFlavor :: EmCc
448
+ | LinkerFlavor :: Wild => true ,
431
449
LinkerFlavor :: Gnu ( ..)
432
450
| LinkerFlavor :: Darwin ( ..)
433
451
| LinkerFlavor :: WasmLld ( _)
@@ -512,6 +530,7 @@ linker_flavor_cli_impls! {
512
530
( LinkerFlavorCli :: Bpf ) "bpf"
513
531
( LinkerFlavorCli :: Llbc ) "llbc"
514
532
( LinkerFlavorCli :: Ptx ) "ptx"
533
+ ( LinkerFlavorCli :: Wild ) "wild"
515
534
516
535
// Legacy stable flavors
517
536
( LinkerFlavorCli :: Gcc ) "gcc"
@@ -2380,6 +2399,7 @@ fn add_link_args_iter(
2380
2399
assert_eq ! ( lld, Lld :: No ) ;
2381
2400
insert ( LinkerFlavor :: Msvc ( Lld :: Yes ) ) ;
2382
2401
}
2402
+ LinkerFlavor :: Wild => insert ( LinkerFlavor :: Wild ) ,
2383
2403
LinkerFlavor :: WasmLld ( ..)
2384
2404
| LinkerFlavor :: Unix ( ..)
2385
2405
| LinkerFlavor :: EmCc
@@ -2770,6 +2790,7 @@ impl Target {
2770
2790
| LinkerFlavor :: Llbc => {
2771
2791
check_eq ! ( flavor, self . linker_flavor, "mixing different linker flavors" )
2772
2792
}
2793
+ LinkerFlavor :: Wild => todo ! ( ) ,
2773
2794
}
2774
2795
2775
2796
// Check that link args for cc and non-cc versions of flavors are consistent.
0 commit comments