Skip to content

Commit 9d631ff

Browse files
committed
metapac: add ALL_CHIPS
1 parent 303445e commit 9d631ff

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

mspm0-metapac-gen/res/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ include!(env!("MSPM0_METAPAC_PAC_PATH"));
1313
pub mod metadata {
1414
include!("metadata.rs");
1515
include!(env!("MSPM0_METAPAC_METADATA_PATH"));
16-
// TODO: all_chips
16+
include!("all_chips.rs");
1717
}

mspm0-metapac-gen/src/main.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::{
99

1010
use anyhow::Context;
1111
use mspm0_data_types::{Chip, Package};
12+
use quote::quote;
1213

1314
mod interrupt;
1415
mod krate;
@@ -65,6 +66,8 @@ fn main() -> anyhow::Result<()> {
6566
}
6667
}
6768

69+
generate_all_chips(&out_dir, chips.values())?;
70+
6871
krate::generate(&out_dir, &chips)?;
6972

7073
Ok(())
@@ -155,6 +158,28 @@ fn generate_chip_metadata(
155158
rustfmt(path);
156159
}
157160

161+
fn generate_all_chips<'a>(out_dir: &Path, chips: impl Iterator<Item = &'a Chip>) -> anyhow::Result<()> {
162+
let mut list = Vec::new();
163+
164+
for chip in chips {
165+
for package in chip.packages.iter() {
166+
list.push(&package.chip);
167+
}
168+
}
169+
170+
let list = quote! {
171+
pub const ALL_CHIPS: &[&str] = &[
172+
#(#list),*
173+
];
174+
};
175+
176+
let all_chips = out_dir.join("src/all_chips.rs");
177+
fs::write(&all_chips, list.to_string())?;
178+
rustfmt(all_chips);
179+
180+
Ok(())
181+
}
182+
158183
fn rustfmt<P: AsRef<Path>>(path: P) {
159184
Command::new("rustfmt")
160185
.arg(path.as_ref())

0 commit comments

Comments
 (0)