@@ -127,6 +127,8 @@ pub enum LinkerFlavor {
127
127
/// Emscripten Compiler Frontend, a wrapper around `WasmLld(Cc::Yes)` that has a different
128
128
/// interface and produces some additional JavaScript output.
129
129
EmCc ,
130
+ // TODO: This needs some design on how to proceed
131
+ Wild ,
130
132
// Below: other linker-like tools with unique interfaces for exotic targets.
131
133
/// Linker tool for BPF.
132
134
Bpf ,
@@ -153,6 +155,7 @@ pub enum LinkerFlavorCli {
153
155
Bpf ,
154
156
Ptx ,
155
157
Llbc ,
158
+ Wild ,
156
159
157
160
// Legacy stable values
158
161
Gcc ,
@@ -178,7 +181,8 @@ impl LinkerFlavorCli {
178
181
| LinkerFlavorCli :: Ld
179
182
| LinkerFlavorCli :: Lld ( ..)
180
183
| LinkerFlavorCli :: Msvc ( Lld :: No )
181
- | LinkerFlavorCli :: Em => false ,
184
+ | LinkerFlavorCli :: Em
185
+ | LinkerFlavorCli :: Wild => false ,
182
186
}
183
187
}
184
188
}
@@ -245,6 +249,7 @@ impl LinkerFlavor {
245
249
LinkerFlavorCli :: Bpf => LinkerFlavor :: Bpf ,
246
250
LinkerFlavorCli :: Llbc => LinkerFlavor :: Llbc ,
247
251
LinkerFlavorCli :: Ptx => LinkerFlavor :: Ptx ,
252
+ LinkerFlavorCli :: Wild => LinkerFlavor :: Wild ,
248
253
249
254
// Below: legacy stable values
250
255
LinkerFlavorCli :: Gcc => match lld_flavor {
@@ -285,6 +290,7 @@ impl LinkerFlavor {
285
290
LinkerFlavor :: Bpf => LinkerFlavorCli :: Bpf ,
286
291
LinkerFlavor :: Llbc => LinkerFlavorCli :: Llbc ,
287
292
LinkerFlavor :: Ptx => LinkerFlavorCli :: Ptx ,
293
+ LinkerFlavor :: Wild => LinkerFlavorCli :: Wild ,
288
294
}
289
295
}
290
296
@@ -300,6 +306,7 @@ impl LinkerFlavor {
300
306
LinkerFlavor :: Bpf => LinkerFlavorCli :: Bpf ,
301
307
LinkerFlavor :: Llbc => LinkerFlavorCli :: Llbc ,
302
308
LinkerFlavor :: Ptx => LinkerFlavorCli :: Ptx ,
309
+ LinkerFlavor :: Wild => LinkerFlavorCli :: Wild ,
303
310
}
304
311
}
305
312
@@ -314,6 +321,7 @@ impl LinkerFlavor {
314
321
LinkerFlavorCli :: EmCc => ( Some ( Cc :: Yes ) , Some ( Lld :: Yes ) ) ,
315
322
LinkerFlavorCli :: Bpf | LinkerFlavorCli :: Ptx => ( None , None ) ,
316
323
LinkerFlavorCli :: Llbc => ( None , None ) ,
324
+ LinkerFlavorCli :: Wild => ( None , None ) ,
317
325
318
326
// Below: legacy stable values
319
327
LinkerFlavorCli :: Gcc => ( Some ( Cc :: Yes ) , None ) ,
@@ -332,6 +340,8 @@ impl LinkerFlavor {
332
340
333
341
if stem == "llvm-bitcode-linker" {
334
342
Ok ( Self :: Llbc )
343
+ } else if stem == "wild" {
344
+ Ok ( Self :: Wild )
335
345
} else if stem == "emcc" // GCC/Clang can have an optional target prefix.
336
346
|| stem == "gcc"
337
347
|| stem. ends_with ( "-gcc" )
@@ -369,7 +379,11 @@ impl LinkerFlavor {
369
379
LinkerFlavor :: WasmLld ( cc) => LinkerFlavor :: WasmLld ( cc_hint. unwrap_or ( cc) ) ,
370
380
LinkerFlavor :: Unix ( cc) => LinkerFlavor :: Unix ( cc_hint. unwrap_or ( cc) ) ,
371
381
LinkerFlavor :: Msvc ( lld) => LinkerFlavor :: Msvc ( lld_hint. unwrap_or ( lld) ) ,
372
- LinkerFlavor :: EmCc | LinkerFlavor :: Bpf | LinkerFlavor :: Llbc | LinkerFlavor :: Ptx => self ,
382
+ LinkerFlavor :: EmCc
383
+ | LinkerFlavor :: Bpf
384
+ | LinkerFlavor :: Llbc
385
+ | LinkerFlavor :: Ptx
386
+ | LinkerFlavor :: Wild => self ,
373
387
}
374
388
}
375
389
@@ -397,7 +411,8 @@ impl LinkerFlavor {
397
411
| ( LinkerFlavor :: EmCc , LinkerFlavorCli :: EmCc )
398
412
| ( LinkerFlavor :: Bpf , LinkerFlavorCli :: Bpf )
399
413
| ( LinkerFlavor :: Llbc , LinkerFlavorCli :: Llbc )
400
- | ( LinkerFlavor :: Ptx , LinkerFlavorCli :: Ptx ) => return true ,
414
+ | ( LinkerFlavor :: Ptx , LinkerFlavorCli :: Ptx )
415
+ | ( LinkerFlavor :: Wild , LinkerFlavorCli :: Wild ) => return true ,
401
416
// 2. The linker flavor is independent of target and compatible
402
417
( LinkerFlavor :: Ptx , LinkerFlavorCli :: Llbc ) => return true ,
403
418
_ => { }
@@ -427,6 +442,7 @@ impl LinkerFlavor {
427
442
LinkerFlavor :: Darwin ( ..) => LldFlavor :: Ld64 ,
428
443
LinkerFlavor :: WasmLld ( ..) => LldFlavor :: Wasm ,
429
444
LinkerFlavor :: Msvc ( ..) => LldFlavor :: Link ,
445
+ LinkerFlavor :: Wild => todo ! ( ) ,
430
446
}
431
447
}
432
448
@@ -449,7 +465,8 @@ impl LinkerFlavor {
449
465
| LinkerFlavor :: Unix ( _)
450
466
| LinkerFlavor :: Bpf
451
467
| LinkerFlavor :: Llbc
452
- | LinkerFlavor :: Ptx => false ,
468
+ | LinkerFlavor :: Ptx
469
+ | LinkerFlavor :: Wild => false ,
453
470
}
454
471
}
455
472
@@ -461,7 +478,8 @@ impl LinkerFlavor {
461
478
| LinkerFlavor :: Darwin ( Cc :: Yes , _)
462
479
| LinkerFlavor :: WasmLld ( Cc :: Yes )
463
480
| LinkerFlavor :: Unix ( Cc :: Yes )
464
- | LinkerFlavor :: EmCc => true ,
481
+ | LinkerFlavor :: EmCc
482
+ | LinkerFlavor :: Wild => true ,
465
483
LinkerFlavor :: Gnu ( ..)
466
484
| LinkerFlavor :: Darwin ( ..)
467
485
| LinkerFlavor :: WasmLld ( _)
@@ -546,6 +564,7 @@ linker_flavor_cli_impls! {
546
564
( LinkerFlavorCli :: Bpf ) "bpf"
547
565
( LinkerFlavorCli :: Llbc ) "llbc"
548
566
( LinkerFlavorCli :: Ptx ) "ptx"
567
+ ( LinkerFlavorCli :: Wild ) "wild"
549
568
550
569
// Legacy stable flavors
551
570
( LinkerFlavorCli :: Gcc ) "gcc"
@@ -2847,6 +2866,7 @@ fn add_link_args_iter(
2847
2866
assert_eq ! ( lld, Lld :: No ) ;
2848
2867
insert ( LinkerFlavor :: Msvc ( Lld :: Yes ) ) ;
2849
2868
}
2869
+ LinkerFlavor :: Wild => insert ( LinkerFlavor :: Wild ) ,
2850
2870
LinkerFlavor :: WasmLld ( ..)
2851
2871
| LinkerFlavor :: Unix ( ..)
2852
2872
| LinkerFlavor :: EmCc
@@ -3237,6 +3257,7 @@ impl Target {
3237
3257
| LinkerFlavor :: Llbc => {
3238
3258
check_eq ! ( flavor, self . linker_flavor, "mixing different linker flavors" )
3239
3259
}
3260
+ LinkerFlavor :: Wild => todo ! ( ) ,
3240
3261
}
3241
3262
3242
3263
// Check that link args for cc and non-cc versions of flavors are consistent.
0 commit comments