@@ -9,8 +9,10 @@ elementIn() {
9
9
}
10
10
11
11
main () {
12
+ git clone https://github.com/posborne/cmsis-svd || true
13
+
12
14
local tests_dir=$( pwd) /tests
13
- local cmsis_dir=$tests_dir /cmsis_tests
15
+ local cmsis_dir=$tests_dir /src/ cmsis_tests
14
16
local blacklist=(
15
17
# These SVD files have some registers with a `resetValue` bigger than the register itself
16
18
Toshiba/M365
@@ -21,12 +23,14 @@ main() {
21
23
SiliconLabs/SIM3L1x8_SVD
22
24
)
23
25
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"
26
29
27
30
local vendor_dir
28
31
for vendor_dir in $( echo cmsis-svd/data/* ) ; do
29
32
local vendor=$( basename $vendor_dir )
33
+ vendor=${vendor// -/ _}
30
34
cat > " $cmsis_dir /$vendor .rs" << EOF
31
35
#![allow(non_snake_case)]
32
36
@@ -35,6 +39,7 @@ use svd_parser as svd;
35
39
EOF
36
40
37
41
local device_path
42
+
38
43
for device_path in $( find $vendor_dir /* -name ' *.svd' ) ; do
39
44
local device=$( basename $device_path )
40
45
device=${device% .svd}
44
49
fi
45
50
46
51
device=${device// ./ _}
52
+ device=${device// -/ _}
47
53
48
54
cat >> " $cmsis_dir /$vendor .rs" << EOF
49
55
#[test]
50
56
fn $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();
52
62
53
- svd::parse(xml).unwrap();
63
+ svd::parse(& xml).unwrap();
54
64
}
55
65
EOF
56
66
done
57
- cat >> " $cmsis_dir /mod .rs" << EOF
67
+ cat >> " $cmsis_dir /../cmsis_tests .rs" << EOF
58
68
pub mod $vendor ;
59
69
EOF
60
70
done
61
- cat > " $tests_dir /cmsis.rs" << EOF
62
- pub mod cmsis_tests;
63
- EOF
64
71
}
65
72
66
73
main
0 commit comments