@@ -9,8 +9,10 @@ elementIn() {
99}
1010
1111main () {
12+ git clone https://github.com/posborne/cmsis-svd || true
13+
1214 local tests_dir=$( pwd) /tests
13- local cmsis_dir=$tests_dir /cmsis_tests
15+ local cmsis_dir=$tests_dir /src/ cmsis_tests
1416 local blacklist=(
1517 # These SVD files have some registers with a `resetValue` bigger than the register itself
1618 Toshiba/M365
@@ -21,12 +23,14 @@ main() {
2123 SiliconLabs/SIM3L1x8_SVD
2224 )
2325
24- rm -rf tests/cmsis_tests
25- mkdir -p tests/cmsis_tests
26+ rm -rf $cmsis_dir
27+ mkdir -p $cmsis_dir
28+ > " $cmsis_dir /../cmsis_tests.rs"
2629
2730 local vendor_dir
2831 for vendor_dir in $( echo cmsis-svd/data/* ) ; do
2932 local vendor=$( basename $vendor_dir )
33+ vendor=${vendor// -/ _}
3034 cat > " $cmsis_dir /$vendor .rs" << EOF
3135#![allow(non_snake_case)]
3236
@@ -35,6 +39,7 @@ use svd_parser as svd;
3539EOF
3640
3741 local device_path
42+
3843 for device_path in $( find $vendor_dir /* -name ' *.svd' ) ; do
3944 local device=$( basename $device_path )
4045 device=${device% .svd}
4449 fi
4550
4651 device=${device// ./ _}
52+ device=${device// -/ _}
4753
4854 cat >> " $cmsis_dir /$vendor .rs" << EOF
4955#[test]
5056fn $device () {
51- let xml = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/$device_path "));
57+ use std::io::Read;
58+ let path = concat!(env!("CARGO_MANIFEST_DIR"), "/../$device_path ");
59+ let mut file = std::fs::File::open(path).unwrap();
60+ let mut xml = String::new();
61+ file.read_to_string(&mut xml).unwrap();
5262
53- svd::parse(xml).unwrap();
63+ svd::parse(& xml).unwrap();
5464}
5565EOF
5666 done
57- cat >> " $cmsis_dir /mod .rs" << EOF
67+ cat >> " $cmsis_dir /../cmsis_tests .rs" << EOF
5868pub mod $vendor ;
5969EOF
6070 done
61- cat > " $tests_dir /cmsis.rs" << EOF
62- pub mod cmsis_tests;
63- EOF
6471}
6572
6673main
0 commit comments