@@ -362,11 +362,13 @@ impl Merge for TomlConfig {
362362
363363// We are using a decl macro instead of a derive proc macro here to reduce the compile time of
364364// rustbuild.
365- macro_rules! derive_merge {
365+ macro_rules! define_config {
366366 ( $( #[ $attr: meta] ) * struct $name: ident {
367367 $( $field: ident: $field_ty: ty, ) *
368368 } ) => {
369369 $( #[ $attr] ) *
370+ #[ derive( Deserialize ) ]
371+ #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
370372 struct $name {
371373 $( $field: $field_ty, ) *
372374 }
@@ -383,10 +385,9 @@ macro_rules! derive_merge {
383385 }
384386}
385387
386- derive_merge ! {
388+ define_config ! {
387389 /// TOML representation of various global build decisions.
388- #[ derive( Deserialize , Default ) ]
389- #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
390+ #[ derive( Default ) ]
390391 struct Build {
391392 build: Option <String >,
392393 host: Option <Vec <String >>,
@@ -429,10 +430,8 @@ derive_merge! {
429430 }
430431}
431432
432- derive_merge ! {
433+ define_config ! {
433434 /// TOML representation of various global install decisions.
434- #[ derive( Deserialize ) ]
435- #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
436435 struct Install {
437436 prefix: Option <String >,
438437 sysconfdir: Option <String >,
@@ -444,10 +443,8 @@ derive_merge! {
444443 }
445444}
446445
447- derive_merge ! {
446+ define_config ! {
448447 /// TOML representation of how the LLVM build is configured.
449- #[ derive( Deserialize ) ]
450- #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
451448 struct Llvm {
452449 skip_rebuild: Option <bool >,
453450 optimize: Option <bool >,
@@ -479,9 +476,7 @@ derive_merge! {
479476 }
480477}
481478
482- derive_merge ! {
483- #[ derive( Deserialize ) ]
484- #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
479+ define_config ! {
485480 struct Dist {
486481 sign_folder: Option <String >,
487482 gpg_password_file: Option <String >,
@@ -505,10 +500,8 @@ impl Default for StringOrBool {
505500 }
506501}
507502
508- derive_merge ! {
503+ define_config ! {
509504 /// TOML representation of how the Rust build is configured.
510- #[ derive( Deserialize ) ]
511- #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
512505 struct Rust {
513506 optimize: Option <bool >,
514507 debug: Option <bool >,
@@ -560,10 +553,8 @@ derive_merge! {
560553 }
561554}
562555
563- derive_merge ! {
556+ define_config ! {
564557 /// TOML representation of how each build target is configured.
565- #[ derive( Deserialize ) ]
566- #[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
567558 struct TomlTarget {
568559 cc: Option <String >,
569560 cxx: Option <String >,
0 commit comments