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