Skip to content

Commit 51f00f9

Browse files
committed
Add config warning for -Zextra-link-arg.
1 parent 8726da2 commit 51f00f9

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

src/cargo/util/config/target.rs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ pub(super) fn load_target_triple(config: &Config, triple: &str) -> CargoResult<T
7777
// Links do not support environment variables.
7878
let target_key = ConfigKey::from_str(&format!("target.{}", triple));
7979
let links_overrides = match config.get_table(&target_key)? {
80-
Some(links) => parse_links_overrides(&target_key, links.val)?,
80+
Some(links) => parse_links_overrides(&target_key, links.val, &config)?,
8181
None => BTreeMap::new(),
8282
};
8383
Ok(TargetConfig {
@@ -91,7 +91,10 @@ pub(super) fn load_target_triple(config: &Config, triple: &str) -> CargoResult<T
9191
fn parse_links_overrides(
9292
target_key: &ConfigKey,
9393
links: HashMap<String, CV>,
94+
config: &Config,
9495
) -> CargoResult<BTreeMap<String, BuildOutput>> {
96+
let extra_link_arg = config.cli_unstable().extra_link_arg;
97+
9598
let mut links_overrides = BTreeMap::new();
9699
for (lib_name, value) in links {
97100
// Skip these keys, it shares the namespace with `TargetConfig`.
@@ -135,14 +138,28 @@ fn parse_links_overrides(
135138
output.linker_args.extend(args);
136139
}
137140
"rustc-bin-link-arg" => {
138-
let args = value.list(key)?;
139-
let args = args.iter().map(|v| (Some(LinkType::Bin), v.0.clone()));
140-
output.linker_args.extend(args);
141+
if extra_link_arg {
142+
let args = value.list(key)?;
143+
let args = args.iter().map(|v| (Some(LinkType::Bin), v.0.clone()));
144+
output.linker_args.extend(args);
145+
} else {
146+
config.shell().warn(format!(
147+
"target config `{}.{}` requires -Zextra-link-arg flag",
148+
target_key, key
149+
))?;
150+
}
141151
}
142152
"rustc-link-arg" => {
143-
let args = value.list(key)?;
144-
let args = args.iter().map(|v| (None, v.0.clone()));
145-
output.linker_args.extend(args);
153+
if extra_link_arg {
154+
let args = value.list(key)?;
155+
let args = args.iter().map(|v| (None, v.0.clone()));
156+
output.linker_args.extend(args);
157+
} else {
158+
config.shell().warn(format!(
159+
"target config `{}.{}` requires -Zextra-link-arg flag",
160+
target_key, key
161+
))?;
162+
}
146163
}
147164
"rustc-cfg" => {
148165
let list = value.list(key)?;

0 commit comments

Comments
 (0)