@@ -776,6 +776,30 @@ impl Merge for TomlConfig {
776776 }
777777 }
778778
779+ self . change_id . inner . merge ( None , & mut Default :: default ( ) , change_id. inner , replace) ;
780+ self . profile . merge ( None , & mut Default :: default ( ) , profile, replace) ;
781+
782+ do_merge ( & mut self . build , build, replace) ;
783+ do_merge ( & mut self . install , install, replace) ;
784+ do_merge ( & mut self . llvm , llvm, replace) ;
785+ do_merge ( & mut self . gcc , gcc, replace) ;
786+ do_merge ( & mut self . rust , rust, replace) ;
787+ do_merge ( & mut self . dist , dist, replace) ;
788+
789+ match ( self . target . as_mut ( ) , target) {
790+ ( _, None ) => { }
791+ ( None , Some ( target) ) => self . target = Some ( target) ,
792+ ( Some ( original_target) , Some ( new_target) ) => {
793+ for ( triple, new) in new_target {
794+ if let Some ( original) = original_target. get_mut ( & triple) {
795+ original. merge ( None , & mut Default :: default ( ) , new, replace) ;
796+ } else {
797+ original_target. insert ( triple, new) ;
798+ }
799+ }
800+ }
801+ }
802+
779803 let parent_dir = parent_config_path
780804 . as_ref ( )
781805 . and_then ( |p| p. parent ( ) . map ( ToOwned :: to_owned) )
@@ -810,30 +834,6 @@ impl Merge for TomlConfig {
810834
811835 included_extensions. remove ( & include_path) ;
812836 }
813-
814- self . change_id . inner . merge ( None , & mut Default :: default ( ) , change_id. inner , replace) ;
815- self . profile . merge ( None , & mut Default :: default ( ) , profile, replace) ;
816-
817- do_merge ( & mut self . build , build, replace) ;
818- do_merge ( & mut self . install , install, replace) ;
819- do_merge ( & mut self . llvm , llvm, replace) ;
820- do_merge ( & mut self . gcc , gcc, replace) ;
821- do_merge ( & mut self . rust , rust, replace) ;
822- do_merge ( & mut self . dist , dist, replace) ;
823-
824- match ( self . target . as_mut ( ) , target) {
825- ( _, None ) => { }
826- ( None , Some ( target) ) => self . target = Some ( target) ,
827- ( Some ( original_target) , Some ( new_target) ) => {
828- for ( triple, new) in new_target {
829- if let Some ( original) = original_target. get_mut ( & triple) {
830- original. merge ( None , & mut Default :: default ( ) , new, replace) ;
831- } else {
832- original_target. insert ( triple, new) ;
833- }
834- }
835- }
836- }
837837 }
838838}
839839
@@ -1640,12 +1640,14 @@ impl Config {
16401640 // This must be handled before applying the `profile` since `include`s should always take
16411641 // precedence over `profile`s.
16421642 for include_path in toml. include . clone ( ) . unwrap_or_default ( ) . iter ( ) . rev ( ) {
1643- let included_toml = get_toml ( include_path) . unwrap_or_else ( |e| {
1643+ let include_path = toml_path. parent ( ) . unwrap ( ) . join ( include_path) ;
1644+
1645+ let included_toml = get_toml ( & include_path) . unwrap_or_else ( |e| {
16441646 eprintln ! ( "ERROR: Failed to parse '{}': {e}" , include_path. display( ) ) ;
16451647 exit ! ( 2 ) ;
16461648 } ) ;
16471649 toml. merge (
1648- Some ( toml_path . join ( include_path) ) ,
1650+ Some ( include_path) ,
16491651 & mut Default :: default ( ) ,
16501652 included_toml,
16511653 ReplaceOpt :: IgnoreDuplicate ,
0 commit comments