Skip to content

Commit 5d294f1

Browse files
committed
fix enabled
1 parent bec9f61 commit 5d294f1

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

build.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::env;
1+
use std::{collections::HashSet, env};
22

33
#[derive(Clone, Copy, Debug)]
44
enum GetOneError {
@@ -175,16 +175,20 @@ const FEATURES: phf::Map<&str, &[&str]> = phf::phf_map! {
175175
"pac_dfsdm2" => &["any_dfsdm"],
176176
};
177177

178-
fn enable_feature(fname: &str) {
179-
if let Some(v) = FEATURES.get(fname) {
180-
for &f in v.iter() {
181-
println!("cargo:rustc-cfg={}", f);
182-
enable_feature(f);
178+
fn enable_feature<'a>(fname: &'a str, enabled: &mut HashSet<&'a str>) {
179+
if !enabled.contains(fname) {
180+
if let Some(v) = FEATURES.get(fname) {
181+
for &f in v.iter() {
182+
println!("cargo:rustc-cfg={}", f);
183+
enabled.insert(fname);
184+
enable_feature(f, enabled);
185+
}
183186
}
184187
}
185188
}
186189

187190
fn main() {
191+
let mut enabled = HashSet::new();
188192
let chip_name = match env::vars()
189193
.map(|(a, _)| a)
190194
.filter(|x| x.starts_with("CARGO_FEATURE_STM32F4"))
@@ -198,5 +202,5 @@ fn main() {
198202
.unwrap()
199203
.to_ascii_lowercase();
200204

201-
enable_feature(&chip_name);
205+
enable_feature(&chip_name, &mut enabled);
202206
}

0 commit comments

Comments
 (0)