// 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 {
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() {
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;