]> git.proxmox.com Git - cargo.git/blobdiff - src/cargo/util/config/target.rs
New upstream version 0.66.0
[cargo.git] / src / cargo / util / config / target.rs
index 21089ce491b4299977a5e243eaaa95dd88b0e8cc..8190529a68607780e8d86e7b987d60ef87943bb2 100644 (file)
@@ -120,7 +120,7 @@ fn load_config_table(config: &Config, prefix: &str) -> CargoResult<TargetConfig>
     // Links do not support environment variables.
     let target_key = ConfigKey::from_str(prefix);
     let links_overrides = match config.get_table(&target_key)? {
-        Some(links) => parse_links_overrides(&target_key, links.val)?,
+        Some(links) => parse_links_overrides(&target_key, links.val, config)?,
         None => BTreeMap::new(),
     };
     Ok(TargetConfig {
@@ -134,8 +134,14 @@ fn load_config_table(config: &Config, prefix: &str) -> CargoResult<TargetConfig>
 fn parse_links_overrides(
     target_key: &ConfigKey,
     links: HashMap<String, CV>,
+    config: &Config,
 ) -> CargoResult<BTreeMap<String, BuildOutput>> {
     let mut links_overrides = BTreeMap::new();
+    let extra_check_cfg = match config.cli_unstable().check_cfg {
+        Some((_, _, _, output)) => output,
+        None => false,
+    };
+
     for (lib_name, value) in links {
         // Skip these keys, it shares the namespace with `TargetConfig`.
         match lib_name.as_str() {
@@ -200,6 +206,17 @@ fn parse_links_overrides(
                     let list = value.list(key)?;
                     output.cfgs.extend(list.iter().map(|v| v.0.clone()));
                 }
+                "rustc-check-cfg" => {
+                    if extra_check_cfg {
+                        let list = value.list(key)?;
+                        output.check_cfgs.extend(list.iter().map(|v| v.0.clone()));
+                    } else {
+                        config.shell().warn(format!(
+                            "target config `{}.{}` requires -Zcheck-cfg=output flag",
+                            target_key, key
+                        ))?;
+                    }
+                }
                 "rustc-env" => {
                     for (name, val) in value.table(key)?.0 {
                         let val = val.string(name)?.0;