Add cfg-blocklist config flag.
Bug: 293289578
Test: Ran on anyhow crate.
Change-Id: I007bc243b4132f8245639356e591a142cf5d761e
diff --git a/tools/cargo_embargo/src/config.rs b/tools/cargo_embargo/src/config.rs
index 8cd72f0..92f4c3c 100644
--- a/tools/cargo_embargo/src/config.rs
+++ b/tools/cargo_embargo/src/config.rs
@@ -82,6 +82,9 @@
/// Package specific config options.
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub package: BTreeMap<String, PackageConfig>,
+ /// `cfg` flags in this list will not be included.
+ #[serde(default, skip_serializing_if = "Vec::is_empty")]
+ pub cfg_blocklist: Vec<String>,
/// Modules in this list will not be generated.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub module_blocklist: Vec<String>,
@@ -108,6 +111,7 @@
min_sdk_version: None,
module_name_overrides: Default::default(),
package: Default::default(),
+ cfg_blocklist: Default::default(),
module_blocklist: Default::default(),
module_visibility: Default::default(),
run_cargo: true,
diff --git a/tools/cargo_embargo/src/config/legacy.rs b/tools/cargo_embargo/src/config/legacy.rs
index 1665f42..273b218 100644
--- a/tools/cargo_embargo/src/config/legacy.rs
+++ b/tools/cargo_embargo/src/config/legacy.rs
@@ -27,6 +27,8 @@
pub struct Config {
#[serde(default)]
apex_available: Vec<String>,
+ #[serde(default)]
+ cfg_blocklist: Vec<String>,
#[allow(unused)] // Deprecated option.
#[serde(default)]
dependencies: bool,
@@ -108,6 +110,7 @@
tests: self.tests,
features,
apex_available,
+ cfg_blocklist: self.cfg_blocklist.clone(),
product_available: self.product_available,
vendor_available: self.vendor_available,
min_sdk_version: self.min_sdk_version.clone(),
diff --git a/tools/cargo_embargo/src/main.rs b/tools/cargo_embargo/src/main.rs
index e4e4d7f..6faaf96 100644
--- a/tools/cargo_embargo/src/main.rs
+++ b/tools/cargo_embargo/src/main.rs
@@ -562,7 +562,15 @@
m.props.set("edition", crate_.edition.clone());
m.props.set_if_nonempty("features", crate_.features.clone());
- m.props.set_if_nonempty("cfgs", crate_.cfgs.clone());
+ m.props.set_if_nonempty(
+ "cfgs",
+ crate_
+ .cfgs
+ .clone()
+ .into_iter()
+ .filter(|crate_cfg| !cfg.cfg_blocklist.contains(crate_cfg))
+ .collect(),
+ );
let mut flags = Vec::new();
if !crate_.cap_lints.is_empty() {