aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-07-13 05:55:09 +0200
committerGitHub <[email protected]>2021-07-13 05:55:09 +0200
commit8f28d6b4b1e74b3b3b64fd3a28ce1ea9072b7cbb (patch)
tree16e35fce864f001d4832ef2426b327d8987f76ee
parent549ddf7fc885946d8b28024363148735d7a88425 (diff)
parent5450ec3d4cf3cdf465c3eaf9eb72c5678f6cfafc (diff)
Merge pull request #288 from embassy-rs/rafix
Fix wonky workspace issues
-rw-r--r--.github/workflows/rust.yml2
-rw-r--r--.vscode/settings.json3
-rw-r--r--Cargo.example.toml6
-rw-r--r--stm32-metapac-gen/Cargo.toml (renamed from stm32-metapac/gen/Cargo.toml)0
-rw-r--r--stm32-metapac-gen/src/assets/build.rs (renamed from stm32-metapac/gen/src/assets/build.rs)0
-rw-r--r--stm32-metapac-gen/src/assets/lib_inner.rs (renamed from stm32-metapac/gen/src/assets/lib_inner.rs)0
-rw-r--r--stm32-metapac-gen/src/lib.rs (renamed from stm32-metapac/gen/src/lib.rs)47
-rw-r--r--stm32-metapac-gen/src/main.rs (renamed from stm32-metapac/gen/src/main.rs)2
-rw-r--r--stm32-metapac/Cargo.toml2
-rw-r--r--stm32-metapac/gen/.vscode/settings.json3
10 files changed, 35 insertions, 30 deletions
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index b2b7ee099..2035c96dc 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -142,4 +142,4 @@ jobs:
142 with: 142 with:
143 toolchain: stable 143 toolchain: stable
144 - name: Generate pregenerated metapac 144 - name: Generate pregenerated metapac
145 run: cd stm32-metapac/gen; cargo run --release 145 run: cd stm32-metapac-gen; cargo run --release
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c897dd798..e90553506 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,12 +1,11 @@
1{ 1{
2 "rust-analyzer.assist.importMergeBehavior": "last",
3 "editor.formatOnSave": true, 2 "editor.formatOnSave": true,
4 "rust-analyzer.checkOnSave.allFeatures": false, 3 "rust-analyzer.checkOnSave.allFeatures": false,
5 "rust-analyzer.checkOnSave.allTargets": false, 4 "rust-analyzer.checkOnSave.allTargets": false,
6 "rust-analyzer.cargo.target": "thumbv7em-none-eabi", 5 "rust-analyzer.cargo.target": "thumbv7em-none-eabi",
7 "rust-analyzer.checkOnSave.target": "thumbv7em-none-eabi", 6 "rust-analyzer.checkOnSave.target": "thumbv7em-none-eabi",
8 "rust-analyzer.procMacro.enable": true, 7 "rust-analyzer.procMacro.enable": true,
9 "rust-analyzer.cargo.loadOutDirsFromCheck": true, 8 "rust-analyzer.cargo.runBuildScripts": true,
10 "files.watcherExclude": { 9 "files.watcherExclude": {
11 "**/.git/objects/**": true, 10 "**/.git/objects/**": true,
12 "**/.git/subtree-cache/**": true, 11 "**/.git/subtree-cache/**": true,
diff --git a/Cargo.example.toml b/Cargo.example.toml
index c615d29ad..cbb221e7b 100644
--- a/Cargo.example.toml
+++ b/Cargo.example.toml
@@ -47,6 +47,12 @@ members = [
47 #"examples/std", 47 #"examples/std",
48] 48]
49 49
50exclude = [
51 # This is only built as a build-dependency, for the host. It shouldn't
52 # get built for the target.
53 "stm32-metapac-gen"
54]
55
50[profile.dev] 56[profile.dev]
51codegen-units = 1 57codegen-units = 1
52debug = 2 58debug = 2
diff --git a/stm32-metapac/gen/Cargo.toml b/stm32-metapac-gen/Cargo.toml
index 33c43e5b4..33c43e5b4 100644
--- a/stm32-metapac/gen/Cargo.toml
+++ b/stm32-metapac-gen/Cargo.toml
diff --git a/stm32-metapac/gen/src/assets/build.rs b/stm32-metapac-gen/src/assets/build.rs
index c16bd6407..c16bd6407 100644
--- a/stm32-metapac/gen/src/assets/build.rs
+++ b/stm32-metapac-gen/src/assets/build.rs
diff --git a/stm32-metapac/gen/src/assets/lib_inner.rs b/stm32-metapac-gen/src/assets/lib_inner.rs
index b7729cb3a..b7729cb3a 100644
--- a/stm32-metapac/gen/src/assets/lib_inner.rs
+++ b/stm32-metapac-gen/src/assets/lib_inner.rs
diff --git a/stm32-metapac/gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs
index 8eae49111..978f70b92 100644
--- a/stm32-metapac/gen/src/lib.rs
+++ b/stm32-metapac-gen/src/lib.rs
@@ -128,18 +128,17 @@ fn find_reg_for_field<'c>(
128} 128}
129 129
130fn make_peripheral_counts(out: &mut String, data: &HashMap<String, u8>) { 130fn make_peripheral_counts(out: &mut String, data: &HashMap<String, u8>) {
131 write!(out, 131 write!(
132 "#[macro_export] 132 out,
133 "#[macro_export]
133macro_rules! peripheral_count {{ 134macro_rules! peripheral_count {{
134 ").unwrap(); 135 "
136 )
137 .unwrap();
135 for (name, count) in data { 138 for (name, count) in data {
136 write!(out, 139 write!(out, "({}) => ({});\n", name, count,).unwrap();
137 "({}) => ({});\n",
138 name, count,
139 ).unwrap();
140 } 140 }
141 write!(out, 141 write!(out, " }}\n").unwrap();
142 " }}\n").unwrap();
143} 142}
144 143
145fn make_table(out: &mut String, name: &str, data: &Vec<Vec<String>>) { 144fn make_table(out: &mut String, name: &str, data: &Vec<Vec<String>>) {
@@ -155,7 +154,7 @@ macro_rules! {} {{
155", 154",
156 name, name 155 name, name
157 ) 156 )
158 .unwrap(); 157 .unwrap();
159 158
160 for row in data { 159 for row in data {
161 write!(out, " __{}_inner!(({}));\n", name, row.join(",")).unwrap(); 160 write!(out, " __{}_inner!(({}));\n", name, row.join(",")).unwrap();
@@ -166,7 +165,7 @@ macro_rules! {} {{
166 " }}; 165 " }};
167}}" 166}}"
168 ) 167 )
169 .unwrap(); 168 .unwrap();
170} 169}
171 170
172pub struct Options { 171pub struct Options {
@@ -341,7 +340,7 @@ pub fn gen(options: Options) {
341 peripherals_table.push(peripheral_row); 340 peripherals_table.push(peripheral_row);
342 341
343 if let Some(old_version) = 342 if let Some(old_version) =
344 peripheral_versions.insert(bi.module.clone(), bi.version.clone()) 343 peripheral_versions.insert(bi.module.clone(), bi.version.clone())
345 { 344 {
346 if old_version != bi.version { 345 if old_version != bi.version {
347 panic!( 346 panic!(
@@ -487,7 +486,11 @@ pub fn gen(options: Options) {
487 make_table(&mut extra, "peripherals", &peripherals_table); 486 make_table(&mut extra, "peripherals", &peripherals_table);
488 make_table(&mut extra, "peripheral_versions", &peripheral_version_table); 487 make_table(&mut extra, "peripheral_versions", &peripheral_version_table);
489 make_table(&mut extra, "peripheral_pins", &peripheral_pins_table); 488 make_table(&mut extra, "peripheral_pins", &peripheral_pins_table);
490 make_table(&mut extra, "peripheral_dma_channels", &peripheral_dma_channels_table); 489 make_table(
490 &mut extra,
491 "peripheral_dma_channels",
492 &peripheral_dma_channels_table,
493 );
491 make_table(&mut extra, "peripheral_rcc", &peripheral_rcc_table); 494 make_table(&mut extra, "peripheral_rcc", &peripheral_rcc_table);
492 make_table(&mut extra, "dma_channels", &dma_channels_table); 495 make_table(&mut extra, "dma_channels", &dma_channels_table);
493 make_table(&mut extra, "dma_requests", &dma_requests_table); 496 make_table(&mut extra, "dma_requests", &dma_requests_table);
@@ -500,7 +503,7 @@ pub fn gen(options: Options) {
500 "#[path=\"../../peripherals/{}_{}.rs\"] pub mod {};\n", 503 "#[path=\"../../peripherals/{}_{}.rs\"] pub mod {};\n",
501 module, version, module 504 module, version, module
502 ) 505 )
503 .unwrap(); 506 .unwrap();
504 } 507 }
505 508
506 // Cleanups! 509 // Cleanups!
@@ -538,7 +541,7 @@ pub fn gen(options: Options) {
538 "PROVIDE({} = DefaultHandler);\n", 541 "PROVIDE({} = DefaultHandler);\n",
539 name.to_ascii_uppercase() 542 name.to_ascii_uppercase()
540 ) 543 )
541 .unwrap(); 544 .unwrap();
542 } 545 }
543 546
544 File::create(chip_dir.join("device.x")) 547 File::create(chip_dir.join("device.x"))
@@ -566,7 +569,7 @@ pub fn gen(options: Options) {
566 transform::NameKind::Enum => format!("vals::{}", s), 569 transform::NameKind::Enum => format!("vals::{}", s),
567 _ => s.to_string(), 570 _ => s.to_string(),
568 }) 571 })
569 .unwrap(); 572 .unwrap();
570 573
571 transform::sort::Sort {}.run(&mut ir).unwrap(); 574 transform::sort::Sort {}.run(&mut ir).unwrap();
572 transform::Sanitize {}.run(&mut ir).unwrap(); 575 transform::Sanitize {}.run(&mut ir).unwrap();
@@ -577,7 +580,7 @@ pub fn gen(options: Options) {
577 .join("src/peripherals") 580 .join("src/peripherals")
578 .join(format!("{}_{}.rs", module, version)), 581 .join(format!("{}_{}.rs", module, version)),
579 ) 582 )
580 .unwrap(); 583 .unwrap();
581 let data = items.to_string().replace("] ", "]\n"); 584 let data = items.to_string().replace("] ", "]\n");
582 585
583 // Remove inner attributes like #![no_std] 586 // Remove inner attributes like #![no_std]
@@ -600,14 +603,14 @@ pub fn gen(options: Options) {
600 "#[cfg_attr(feature=\"{}_{}\", path = \"chips/{}_{}/pac.rs\")]", 603 "#[cfg_attr(feature=\"{}_{}\", path = \"chips/{}_{}/pac.rs\")]",
601 x, c, x, c 604 x, c, x, c
602 ) 605 )
603 .unwrap(); 606 .unwrap();
604 } else { 607 } else {
605 write!( 608 write!(
606 &mut paths, 609 &mut paths,
607 "#[cfg_attr(feature=\"{}\", path = \"chips/{}/pac.rs\")]", 610 "#[cfg_attr(feature=\"{}\", path = \"chips/{}/pac.rs\")]",
608 x, x 611 x, x
609 ) 612 )
610 .unwrap(); 613 .unwrap();
611 } 614 }
612 } 615 }
613 let mut contents: Vec<u8> = Vec::new(); 616 let mut contents: Vec<u8> = Vec::new();
@@ -618,7 +621,7 @@ pub fn gen(options: Options) {
618 621
619 // Generate src/lib.rs 622 // Generate src/lib.rs
620 const CUT_MARKER: &[u8] = b"// GEN CUT HERE"; 623 const CUT_MARKER: &[u8] = b"// GEN CUT HERE";
621 let librs = include_bytes!("../../src/lib.rs"); 624 let librs = include_bytes!("../../stm32-metapac/src/lib.rs");
622 let i = bytes_find(librs, CUT_MARKER).unwrap(); 625 let i = bytes_find(librs, CUT_MARKER).unwrap();
623 let mut contents: Vec<u8> = Vec::new(); 626 let mut contents: Vec<u8> = Vec::new();
624 contents.extend(&librs[..i]); 627 contents.extend(&librs[..i]);
@@ -630,13 +633,13 @@ pub fn gen(options: Options) {
630 out_dir.join("src").join("common.rs"), 633 out_dir.join("src").join("common.rs"),
631 generate::COMMON_MODULE, 634 generate::COMMON_MODULE,
632 ) 635 )
633 .unwrap(); 636 .unwrap();
634 637
635 // Generate Cargo.toml 638 // Generate Cargo.toml
636 const BUILDDEP_BEGIN: &[u8] = b"# BEGIN BUILD DEPENDENCIES"; 639 const BUILDDEP_BEGIN: &[u8] = b"# BEGIN BUILD DEPENDENCIES";
637 const BUILDDEP_END: &[u8] = b"# END BUILD DEPENDENCIES"; 640 const BUILDDEP_END: &[u8] = b"# END BUILD DEPENDENCIES";
638 641
639 let mut contents = include_bytes!("../../Cargo.toml").to_vec(); 642 let mut contents = include_bytes!("../../stm32-metapac/Cargo.toml").to_vec();
640 let begin = bytes_find(&contents, BUILDDEP_BEGIN).unwrap(); 643 let begin = bytes_find(&contents, BUILDDEP_BEGIN).unwrap();
641 let end = bytes_find(&contents, BUILDDEP_END).unwrap() + BUILDDEP_END.len(); 644 let end = bytes_find(&contents, BUILDDEP_END).unwrap() + BUILDDEP_END.len();
642 contents.drain(begin..end); 645 contents.drain(begin..end);
diff --git a/stm32-metapac/gen/src/main.rs b/stm32-metapac-gen/src/main.rs
index bb76b9167..31f684046 100644
--- a/stm32-metapac/gen/src/main.rs
+++ b/stm32-metapac-gen/src/main.rs
@@ -3,7 +3,7 @@ use stm32_metapac_gen::*;
3 3
4fn main() { 4fn main() {
5 let out_dir = PathBuf::from("out"); 5 let out_dir = PathBuf::from("out");
6 let data_dir = PathBuf::from("../../stm32-data/data"); 6 let data_dir = PathBuf::from("../stm32-data/data");
7 7
8 let chips = std::fs::read_dir(data_dir.join("chips")) 8 let chips = std::fs::read_dir(data_dir.join("chips"))
9 .unwrap() 9 .unwrap()
diff --git a/stm32-metapac/Cargo.toml b/stm32-metapac/Cargo.toml
index 79f1c3746..2e01d5183 100644
--- a/stm32-metapac/Cargo.toml
+++ b/stm32-metapac/Cargo.toml
@@ -11,7 +11,7 @@ cortex-m-rt = { version = "0.6.8", optional = true }
11# BEGIN BUILD DEPENDENCIES 11# BEGIN BUILD DEPENDENCIES
12# These are removed when generating the pre-generated crate using the tool at gen/. 12# These are removed when generating the pre-generated crate using the tool at gen/.
13[build-dependencies] 13[build-dependencies]
14stm32-metapac-gen = { path = "./gen" } 14stm32-metapac-gen = { path = "../stm32-metapac-gen" }
15regex = "1.5.4" 15regex = "1.5.4"
16# END BUILD DEPENDENCIES 16# END BUILD DEPENDENCIES
17 17
diff --git a/stm32-metapac/gen/.vscode/settings.json b/stm32-metapac/gen/.vscode/settings.json
deleted file mode 100644
index 23fd35f0e..000000000
--- a/stm32-metapac/gen/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
1{
2 "editor.formatOnSave": true
3} \ No newline at end of file