@@ -4,21 +4,14 @@ use quote::{quote, ToTokens};
4
4
use std:: fs:: File ;
5
5
use std:: io:: Write ;
6
6
7
- use crate :: util:: { self , ToSanitizedUpperCase } ;
7
+ use crate :: util:: { self , Config , ToSanitizedUpperCase } ;
8
8
use crate :: Target ;
9
9
use anyhow:: Result ;
10
10
11
11
use crate :: generate:: { interrupt, peripheral} ;
12
12
13
13
/// Whole device generation
14
- pub fn render (
15
- d : & Device ,
16
- target : Target ,
17
- nightly : bool ,
18
- generic_mod : bool ,
19
- make_mod : bool ,
20
- device_x : & mut String ,
21
- ) -> Result < TokenStream > {
14
+ pub fn render ( d : & Device , config : & Config , device_x : & mut String ) -> Result < TokenStream > {
22
15
let mut out = TokenStream :: new ( ) ;
23
16
24
17
let commit_info = {
@@ -46,14 +39,14 @@ pub fn render(
46
39
commit_info
47
40
) ;
48
41
49
- if target == Target :: Msp430 {
42
+ if config . target == Target :: Msp430 {
50
43
out. extend ( quote ! {
51
44
#![ feature( abi_msp430_interrupt) ]
52
45
} ) ;
53
46
}
54
47
55
48
out. extend ( quote ! { #![ doc = #doc] } ) ;
56
- if !make_mod {
49
+ if !config . make_mod {
57
50
out. extend ( quote ! {
58
51
// Deny a subset of warnings
59
52
#![ deny( const_err) ]
@@ -109,7 +102,7 @@ pub fn render(
109
102
110
103
let mut fields = TokenStream :: new ( ) ;
111
104
let mut exprs = TokenStream :: new ( ) ;
112
- if target == Target :: CortexM {
105
+ if config . target == Target :: CortexM {
113
106
out. extend ( quote ! {
114
107
pub use cortex_m:: peripheral:: Peripherals as CorePeripherals ;
115
108
#[ cfg( feature = "rt" ) ]
@@ -133,7 +126,7 @@ pub fn render(
133
126
}
134
127
}
135
128
136
- if target == Target :: Msp430 {
129
+ if config . target == Target :: Msp430 {
137
130
out. extend ( quote ! {
138
131
// XXX: Are there any core peripherals, really? Requires bump of msp430 crate.
139
132
// pub use msp430::peripheral::Peripherals as CorePeripherals;
@@ -145,10 +138,10 @@ pub fn render(
145
138
}
146
139
147
140
let generic_file = std:: str:: from_utf8 ( include_bytes ! ( "generic.rs" ) ) ?;
148
- if generic_mod {
141
+ if config . generic_mod {
149
142
writeln ! ( File :: create( "generic.rs" ) ?, "{}" , generic_file) ?;
150
143
151
- if !make_mod {
144
+ if !config . make_mod {
152
145
out. extend ( quote ! {
153
146
#[ allow( unused_imports) ]
154
147
use generic:: * ;
@@ -169,10 +162,10 @@ pub fn render(
169
162
} ) ;
170
163
}
171
164
172
- out. extend ( interrupt:: render ( target, & d. peripherals , device_x) ?) ;
165
+ out. extend ( interrupt:: render ( config . target , & d. peripherals , device_x) ?) ;
173
166
174
167
for p in & d. peripherals {
175
- if target == Target :: CortexM && core_peripherals. contains ( & & * p. name . to_uppercase ( ) ) {
168
+ if config . target == Target :: CortexM && core_peripherals. contains ( & & * p. name . to_uppercase ( ) ) {
176
169
// Core peripherals are handled above
177
170
continue ;
178
171
}
@@ -181,7 +174,7 @@ pub fn render(
181
174
p,
182
175
& d. peripherals ,
183
176
& d. default_register_properties ,
184
- nightly ,
177
+ config ,
185
178
) ?) ;
186
179
187
180
if p. registers
@@ -206,7 +199,7 @@ pub fn render(
206
199
}
207
200
208
201
let span = Span :: call_site ( ) ;
209
- let take = match target {
202
+ let take = match config . target {
210
203
Target :: CortexM => Some ( Ident :: new ( "cortex_m" , span) ) ,
211
204
Target :: Msp430 => Some ( Ident :: new ( "msp430" , span) ) ,
212
205
Target :: RISCV => Some ( Ident :: new ( "riscv" , span) ) ,
0 commit comments