-
Notifications
You must be signed in to change notification settings - Fork 0
/
generate.ps1
57 lines (57 loc) · 2.35 KB
/
generate.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
${env:RUST_LOG}="warn"
New-item -ItemType Directory . -Name svd -ErrorAction Ignore | Out-Null
Get-ChildItem ./PACKs/Keil5/ -Filter *.pack |
Foreach-Object -Parallel {
$pack = $_
Expand-Archive $pack
Push-Location $pack.BaseName
Get-ChildItem ./SVD/ -Filter *.svd |
Foreach-Object {
$svd = $_
$svd_path = "../svd/" + $svd.Name.replace('xx_v2','').ToLower()
Copy-Item $svd -Destination $svd_path
}
Pop-Location
Remove-Item $pack.BaseName -Recurse
}
Get-ChildItem ./patches/ -Filter *.yaml |
Foreach-Object -Parallel {
svdtools patch $_
}
Get-ChildItem ./svd/ -Filter *.svd.patched |
Foreach-Object -Parallel {
$svd = $_
$dirName = $svd.BaseName.replace('.svd','').ToLower()
New-item -ItemType Directory . -Name $dirName -ErrorAction Ignore | Out-Null
$svd_name = $svd.BaseName.ToLower()
Copy-Item $svd -Destination ./$dirName/$svd_name
Push-Location ./$dirName
cargo init -q
svd2rust -m -g -s --reexport-core-peripherals --reexport-interrupt -f peripheral::c: -f peripheral_singleton::c: -f register::c: -f register_spec::c:_SPEC -f field_reader::c:_R -f field_writer::c:_W -f interrupt::c: -f enum_name::c:_A -f enum_value::p: --max_cluster_size --atomics --atomics_feature atomics --impl_debug -l warn -i $svd_name
if ($LastExitCode) {
Pop-Location
return;
}
form -i mod.rs -o src/
Remove-Item mod.rs
cargo fmt
Copy-Item $svd_name -Destination src
Copy-Item device.x -Destination src
Rename-Item -Path src/lib.rs -NewName mod.rs
$path = ("../src/" + $dirName)
if (Test-Path $path) {
Remove-Item $path -Recurse
}
Copy-Item -Path src -Destination $path -Recurse
Pop-Location
Remove-Item ./$dirName -Recurse -Force
}
svdtools html ./html (Get-ChildItem ./svd/ -Filter *.patched) | Out-Null
svdtools html ./html/original (Get-ChildItem ./svd/ -Filter *.svd) | Out-Null
svdtools htmlcompare ./html/comparison (Get-ChildItem ./svd/ -Filter *.patched) | Out-Null
svdtools htmlcompare ./html/original/comparison (Get-ChildItem ./svd/ -Filter *.svd) | Out-Null
$index = "./html/original/index.html"
(Get-Content $index).replace('comparisons.html', 'comparison/index.html') | Set-Content $index
$index = "./html/index.html"
(Get-Content $index).replace('comparisons.html', 'comparison/index.html') | Set-Content $index
Remove-Item svd -Recurse