X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fbootstrap%2Fconfig.rs;h=7e6eecaaa884f5f4102aeb50c1f448bab7c03479;hb=88609e51265a563552e8fb4509f83a99e15451b2;hp=0c0a4733231d22e07bbbcc910eb1bda673a01f0d;hpb=af8604faddc44b27a59d1a719ff6ceca8bc145eb;p=rust.git diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 0c0a4733231..7e6eecaaa88 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -362,11 +362,13 @@ fn do_merge(x: &mut Option, y: Option) { // We are using a decl macro instead of a derive proc macro here to reduce the compile time of // rustbuild. -macro_rules! derive_merge { +macro_rules! define_config { ($(#[$attr:meta])* struct $name:ident { $($field:ident: $field_ty:ty,)* }) => { $(#[$attr])* + #[derive(Deserialize)] + #[serde(deny_unknown_fields, rename_all = "kebab-case")] struct $name { $($field: $field_ty,)* } @@ -383,10 +385,9 @@ fn merge(&mut self, other: Self) { } } -derive_merge! { +define_config! { /// TOML representation of various global build decisions. - #[derive(Deserialize, Default)] - #[serde(deny_unknown_fields, rename_all = "kebab-case")] + #[derive(Default)] struct Build { build: Option, host: Option>, @@ -429,10 +430,8 @@ struct Build { } } -derive_merge! { +define_config! { /// TOML representation of various global install decisions. - #[derive(Deserialize)] - #[serde(deny_unknown_fields, rename_all = "kebab-case")] struct Install { prefix: Option, sysconfdir: Option, @@ -444,10 +443,8 @@ struct Install { } } -derive_merge! { +define_config! { /// TOML representation of how the LLVM build is configured. - #[derive(Deserialize)] - #[serde(deny_unknown_fields, rename_all = "kebab-case")] struct Llvm { skip_rebuild: Option, optimize: Option, @@ -479,9 +476,7 @@ struct Llvm { } } -derive_merge! { - #[derive(Deserialize)] - #[serde(deny_unknown_fields, rename_all = "kebab-case")] +define_config! { struct Dist { sign_folder: Option, gpg_password_file: Option, @@ -505,10 +500,8 @@ fn default() -> StringOrBool { } } -derive_merge! { +define_config! { /// TOML representation of how the Rust build is configured. - #[derive(Deserialize)] - #[serde(deny_unknown_fields, rename_all = "kebab-case")] struct Rust { optimize: Option, debug: Option, @@ -560,10 +553,8 @@ struct Rust { } } -derive_merge! { +define_config! { /// TOML representation of how each build target is configured. - #[derive(Deserialize)] - #[serde(deny_unknown_fields, rename_all = "kebab-case")] struct TomlTarget { cc: Option, cxx: Option,