@@ -411,6 +411,10 @@ impl Config {
411
411
self . target_cfg ( ) . abi == abi
412
412
}
413
413
414
+ pub fn matches_family ( & self , family : & str ) -> bool {
415
+ self . target_cfg ( ) . families . iter ( ) . any ( |f| f == family)
416
+ }
417
+
414
418
pub fn is_big_endian ( & self ) -> bool {
415
419
self . target_cfg ( ) . endian == Endian :: Big
416
420
}
@@ -436,6 +440,7 @@ pub struct TargetCfg {
436
440
os : String ,
437
441
env : String ,
438
442
abi : String ,
443
+ families : Vec < String > ,
439
444
pointer_width : u32 ,
440
445
endian : Endian ,
441
446
}
@@ -470,6 +475,7 @@ impl TargetCfg {
470
475
let mut os = None ;
471
476
let mut env = None ;
472
477
let mut abi = None ;
478
+ let mut families = Vec :: new ( ) ;
473
479
let mut pointer_width = None ;
474
480
let mut endian = None ;
475
481
for line in print_cfg. lines ( ) {
@@ -480,6 +486,7 @@ impl TargetCfg {
480
486
"target_os" => os = Some ( value) ,
481
487
"target_env" => env = Some ( value) ,
482
488
"target_abi" => abi = Some ( value) ,
489
+ "target_family" => families. push ( value. to_string ( ) ) ,
483
490
"target_pointer_width" => pointer_width = Some ( value. parse ( ) . unwrap ( ) ) ,
484
491
"target_endian" => {
485
492
endian = Some ( match value {
@@ -497,6 +504,7 @@ impl TargetCfg {
497
504
os : os. unwrap ( ) . to_string ( ) ,
498
505
env : env. unwrap ( ) . to_string ( ) ,
499
506
abi : abi. unwrap ( ) . to_string ( ) ,
507
+ families,
500
508
pointer_width : pointer_width. unwrap ( ) ,
501
509
endian : endian. unwrap ( ) ,
502
510
}
0 commit comments