@@ -776,6 +776,30 @@ impl Merge for TomlConfig {
776
776
}
777
777
}
778
778
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
+
779
803
let parent_dir = parent_config_path
780
804
. as_ref ( )
781
805
. and_then ( |p| p. parent ( ) . map ( ToOwned :: to_owned) )
@@ -810,30 +834,6 @@ impl Merge for TomlConfig {
810
834
811
835
included_extensions. remove ( & include_path) ;
812
836
}
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
- }
837
837
}
838
838
}
839
839
@@ -1640,12 +1640,14 @@ impl Config {
1640
1640
// This must be handled before applying the `profile` since `include`s should always take
1641
1641
// precedence over `profile`s.
1642
1642
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| {
1644
1646
eprintln ! ( "ERROR: Failed to parse '{}': {e}" , include_path. display( ) ) ;
1645
1647
exit ! ( 2 ) ;
1646
1648
} ) ;
1647
1649
toml. merge (
1648
- Some ( toml_path . join ( include_path) ) ,
1650
+ Some ( include_path) ,
1649
1651
& mut Default :: default ( ) ,
1650
1652
included_toml,
1651
1653
ReplaceOpt :: IgnoreDuplicate ,
0 commit comments