@@ -624,6 +624,21 @@ impl Target {
624
624
base. options. $key_name = args;
625
625
}
626
626
} ) ;
627
+ ( $key_name: ident, env) => ( {
628
+ let name = ( stringify!( $key_name) ) . replace( "_" , "-" ) ;
629
+ if let Some ( a) = obj. find( & name[ ..] ) . and_then( |o| o. as_array( ) ) {
630
+ for o in a {
631
+ if let Some ( s) = o. as_string( ) {
632
+ let p = s. split( '=' ) . collect:: <Vec <_>>( ) ;
633
+ if p. len( ) == 2 {
634
+ let k = p[ 0 ] . to_string( ) ;
635
+ let v = p[ 1 ] . to_string( ) ;
636
+ base. options. $key_name. push( ( k, v) ) ;
637
+ }
638
+ }
639
+ }
640
+ }
641
+ } ) ;
627
642
}
628
643
629
644
key ! ( is_builtin, bool ) ;
@@ -635,6 +650,7 @@ impl Target {
635
650
key ! ( late_link_args, link_args) ;
636
651
key ! ( post_link_objects, list) ;
637
652
key ! ( post_link_args, link_args) ;
653
+ key ! ( link_env, env) ;
638
654
key ! ( asm_args, list) ;
639
655
key ! ( cpu) ;
640
656
key ! ( features) ;
@@ -789,6 +805,17 @@ impl ToJson for Target {
789
805
d. insert( name. to_string( ) , obj. to_json( ) ) ;
790
806
}
791
807
} ) ;
808
+ ( env - $attr: ident) => ( {
809
+ let name = ( stringify!( $attr) ) . replace( "_" , "-" ) ;
810
+ if default . $attr != self . options. $attr {
811
+ let obj = self . options. $attr
812
+ . iter( )
813
+ . map( |& ( ref k, ref v) | k. clone( ) + "=" + & v)
814
+ . collect:: <Vec <_>>( ) ;
815
+ d. insert( name. to_string( ) , obj. to_json( ) ) ;
816
+ }
817
+ } ) ;
818
+
792
819
}
793
820
794
821
target_val ! ( llvm_target) ;
@@ -810,6 +837,7 @@ impl ToJson for Target {
810
837
target_option_val ! ( link_args - late_link_args) ;
811
838
target_option_val ! ( post_link_objects) ;
812
839
target_option_val ! ( link_args - post_link_args) ;
840
+ target_option_val ! ( env - link_env) ;
813
841
target_option_val ! ( asm_args) ;
814
842
target_option_val ! ( cpu) ;
815
843
target_option_val ! ( features) ;
0 commit comments