@@ -411,6 +411,10 @@ impl Config {
411411 self . target_cfg ( ) . abi == abi
412412 }
413413
414+ pub fn matches_family ( & self , family : & str ) -> bool {
415+ self . target_cfg ( ) . families . iter ( ) . any ( |f| f == family)
416+ }
417+
414418 pub fn is_big_endian ( & self ) -> bool {
415419 self . target_cfg ( ) . endian == Endian :: Big
416420 }
@@ -436,6 +440,7 @@ pub struct TargetCfg {
436440 os : String ,
437441 env : String ,
438442 abi : String ,
443+ families : Vec < String > ,
439444 pointer_width : u32 ,
440445 endian : Endian ,
441446}
@@ -470,6 +475,7 @@ impl TargetCfg {
470475 let mut os = None ;
471476 let mut env = None ;
472477 let mut abi = None ;
478+ let mut families = Vec :: new ( ) ;
473479 let mut pointer_width = None ;
474480 let mut endian = None ;
475481 for line in print_cfg. lines ( ) {
@@ -480,6 +486,7 @@ impl TargetCfg {
480486 "target_os" => os = Some ( value) ,
481487 "target_env" => env = Some ( value) ,
482488 "target_abi" => abi = Some ( value) ,
489+ "target_family" => families. push ( value. to_string ( ) ) ,
483490 "target_pointer_width" => pointer_width = Some ( value. parse ( ) . unwrap ( ) ) ,
484491 "target_endian" => {
485492 endian = Some ( match value {
@@ -497,6 +504,7 @@ impl TargetCfg {
497504 os : os. unwrap ( ) . to_string ( ) ,
498505 env : env. unwrap ( ) . to_string ( ) ,
499506 abi : abi. unwrap ( ) . to_string ( ) ,
507+ families,
500508 pointer_width : pointer_width. unwrap ( ) ,
501509 endian : endian. unwrap ( ) ,
502510 }
0 commit comments