@@ -43,7 +43,7 @@ struct Device<'a> {
43
43
pub cflags : Vec < String > ,
44
44
pub glyphs_folders : Vec < PathBuf > ,
45
45
pub arm_libs : String ,
46
- pub linker_script : & ' a str ,
46
+ pub linker_script : String ,
47
47
}
48
48
49
49
impl std:: fmt:: Display for DeviceName {
@@ -140,7 +140,7 @@ impl SDKBuilder<'_> {
140
140
} ,
141
141
target : "thumbv8m.main-none-eabi" ,
142
142
defines : {
143
- let mut v = header2define ( " c_sdk_build_nanosplus.defines") ;
143
+ let mut v = header2define ( format ! ( "{}/devices/nanosplus/ c_sdk_build_nanosplus.defines", env! ( "CARGO_MANIFEST_DIR" ) ) . as_str ( ) ) ;
144
144
if env:: var_os ( "CARGO_FEATURE_NANO_NBGL" ) . is_some ( ) {
145
145
println ! ( "cargo:warning=NBGL is built" ) ;
146
146
v. push ( ( String :: from ( "HAVE_NBGL" ) , None ) ) ;
@@ -155,8 +155,7 @@ impl SDKBuilder<'_> {
155
155
v
156
156
} ,
157
157
cflags : {
158
- let mut m_path = String :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
159
- m_path. push_str ( "/c_sdk_build_nanosplus.cflags" ) ;
158
+ let m_path = format ! ( "{}/devices/nanosplus/c_sdk_build_nanosplus.cflags" , env!( "CARGO_MANIFEST_DIR" ) ) ;
160
159
let f = File :: open ( m_path)
161
160
. expect ( "Failed to open c_sdk_build_nanosplus.cflags file" ) ;
162
161
let reader = BufReader :: new ( f) ;
@@ -167,7 +166,7 @@ impl SDKBuilder<'_> {
167
166
} ,
168
167
glyphs_folders : Vec :: new ( ) ,
169
168
arm_libs : Default :: default ( ) ,
170
- linker_script : " nanosplus_layout.ld",
169
+ linker_script : format ! ( "{}/devices/nanosplus/ nanosplus_layout.ld", env! ( "CARGO_MANIFEST_DIR" ) )
171
170
} ,
172
171
"nanox" => Device {
173
172
name : DeviceName :: NanoX ,
@@ -177,7 +176,7 @@ impl SDKBuilder<'_> {
177
176
} ,
178
177
target : "thumbv6m-none-eabi" ,
179
178
defines : {
180
- let mut v = header2define ( " c_sdk_build_nanox.defines") ;
179
+ let mut v = header2define ( format ! ( "{}/devices/nanox/ c_sdk_build_nanox.defines", env! ( "CARGO_MANIFEST_DIR" ) ) . as_str ( ) ) ;
181
180
if env:: var_os ( "CARGO_FEATURE_NANO_NBGL" ) . is_some ( ) {
182
181
println ! ( "cargo:warning=NBGL is built" ) ;
183
182
v. push ( ( String :: from ( "HAVE_NBGL" ) , None ) ) ;
@@ -192,10 +191,8 @@ impl SDKBuilder<'_> {
192
191
v
193
192
} ,
194
193
cflags : {
195
- let mut m_path = String :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
196
- m_path. push_str ( "/c_sdk_build_nanox.cflags" ) ;
197
- let f =
198
- File :: open ( m_path) . expect ( "Failed to open c_sdk_build_nanox.cflags file" ) ;
194
+ let m_path = format ! ( "{}/devices/nanox/c_sdk_build_nanox.cflags" , env!( "CARGO_MANIFEST_DIR" ) ) ;
195
+ let f = File :: open ( m_path) . expect ( "Failed to open c_sdk_build_nanox.cflags file" ) ;
199
196
let reader = BufReader :: new ( f) ;
200
197
reader
201
198
. lines ( )
@@ -204,7 +201,7 @@ impl SDKBuilder<'_> {
204
201
} ,
205
202
glyphs_folders : Vec :: new ( ) ,
206
203
arm_libs : Default :: default ( ) ,
207
- linker_script : " nanox_layout.ld",
204
+ linker_script : format ! ( "{}/devices/nanox/ nanox_layout.ld", env! ( "CARGO_MANIFEST_DIR" ) ) ,
208
205
} ,
209
206
"stax" => Device {
210
207
name : DeviceName :: Stax ,
@@ -213,12 +210,10 @@ impl SDKBuilder<'_> {
213
210
Err ( _) => return Err ( SDKBuildError :: MissingSDKPath ) ,
214
211
} ,
215
212
target : "thumbv8m.main-none-eabi" ,
216
- defines : header2define ( " c_sdk_build_stax.defines") ,
213
+ defines : header2define ( format ! ( "{}/devices/stax/ c_sdk_build_stax.defines", env! ( "CARGO_MANIFEST_DIR" ) ) . as_str ( ) ) ,
217
214
cflags : {
218
- let mut m_path = String :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
219
- m_path. push_str ( "/c_sdk_build_stax.cflags" ) ;
220
- let f =
221
- File :: open ( m_path) . expect ( "Failed to open c_sdk_build_stax.cflags file" ) ;
215
+ let m_path = format ! ( "{}/devices/stax/c_sdk_build_stax.cflags" , env!( "CARGO_MANIFEST_DIR" ) ) ;
216
+ let f = File :: open ( m_path) . expect ( "Failed to open c_sdk_build_stax.cflags file" ) ;
222
217
let reader = BufReader :: new ( f) ;
223
218
reader
224
219
. lines ( )
@@ -227,7 +222,7 @@ impl SDKBuilder<'_> {
227
222
} ,
228
223
glyphs_folders : Vec :: new ( ) ,
229
224
arm_libs : Default :: default ( ) ,
230
- linker_script : " stax_layout.ld",
225
+ linker_script : format ! ( "{}/devices/stax/ stax_layout.ld", env! ( "CARGO_MANIFEST_DIR" ) ) ,
231
226
} ,
232
227
"flex" => Device {
233
228
name : DeviceName :: Flex ,
@@ -236,12 +231,10 @@ impl SDKBuilder<'_> {
236
231
Err ( _) => return Err ( SDKBuildError :: MissingSDKPath ) ,
237
232
} ,
238
233
target : "thumbv8m.main-none-eabi" ,
239
- defines : header2define ( " c_sdk_build_flex.defines") ,
234
+ defines : header2define ( format ! ( "{}/devices/flex/ c_sdk_build_flex.defines", env! ( "CARGO_MANIFEST_DIR" ) ) . as_str ( ) ) ,
240
235
cflags : {
241
- let mut m_path = String :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
242
- m_path. push_str ( "/c_sdk_build_flex.cflags" ) ;
243
- let f =
244
- File :: open ( m_path) . expect ( "Failed to open c_sdk_build_flex.cflags file" ) ;
236
+ let m_path = format ! ( "{}/devices/flex/c_sdk_build_flex.cflags" , env!( "CARGO_MANIFEST_DIR" ) ) ;
237
+ let f = File :: open ( m_path) . expect ( "Failed to open c_sdk_build_flex.cflags file" ) ;
245
238
let reader = BufReader :: new ( f) ;
246
239
reader
247
240
. lines ( )
@@ -250,7 +243,7 @@ impl SDKBuilder<'_> {
250
243
} ,
251
244
glyphs_folders : Vec :: new ( ) ,
252
245
arm_libs : Default :: default ( ) ,
253
- linker_script : " flex_layout.ld",
246
+ linker_script : format ! ( "{}/devices/flex/ flex_layout.ld", env! ( "CARGO_MANIFEST_DIR" ) ) ,
254
247
} ,
255
248
"apex_p" => Device {
256
249
name : DeviceName :: ApexP ,
@@ -259,12 +252,10 @@ impl SDKBuilder<'_> {
259
252
Err ( _) => return Err ( SDKBuildError :: MissingSDKPath ) ,
260
253
} ,
261
254
target : "thumbv8m.main-none-eabi" ,
262
- defines : header2define ( " c_sdk_build_apex_p.defines") ,
255
+ defines : header2define ( format ! ( "{}/devices/apex_p/ c_sdk_build_apex_p.defines", env! ( "CARGO_MANIFEST_DIR" ) ) . as_str ( ) ) ,
263
256
cflags : {
264
- let mut m_path = String :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
265
- m_path. push_str ( "/c_sdk_build_apex_p.cflags" ) ;
266
- let f =
267
- File :: open ( m_path) . expect ( "Failed to open c_sdk_build_apex_p.cflags file" ) ;
257
+ let m_path = format ! ( "{}/devices/apex_p/c_sdk_build_apex_p.cflags" , env!( "CARGO_MANIFEST_DIR" ) ) ;
258
+ let f = File :: open ( m_path) . expect ( "Failed to open c_sdk_build_apex_p.cflags file" ) ;
268
259
let reader = BufReader :: new ( f) ;
269
260
reader
270
261
. lines ( )
@@ -273,7 +264,7 @@ impl SDKBuilder<'_> {
273
264
} ,
274
265
glyphs_folders : Vec :: new ( ) ,
275
266
arm_libs : Default :: default ( ) ,
276
- linker_script : " apex_p_layout.ld",
267
+ linker_script : format ! ( "{}/devices/apex_p/ apex_p_layout.ld", env! ( "CARGO_MANIFEST_DIR" ) ) ,
277
268
} ,
278
269
_ => {
279
270
return Err ( SDKBuildError :: UnsupportedDevice ) ;
@@ -519,11 +510,11 @@ impl SDKBuilder<'_> {
519
510
// Target specific files
520
511
let csdk_target_name = self . device . name . to_string ( ) ;
521
512
let header = match self . device . name {
522
- DeviceName :: NanoSPlus => String :: from ( "c_sdk_build_nanosplus.defines" ) ,
523
- DeviceName :: NanoX => String :: from ( "c_sdk_build_nanox.defines" ) ,
524
- DeviceName :: Stax => String :: from ( "c_sdk_build_stax.defines" ) ,
525
- DeviceName :: Flex => String :: from ( "c_sdk_build_flex.defines" ) ,
526
- DeviceName :: ApexP => String :: from ( "c_sdk_build_apex_p.defines" ) ,
513
+ DeviceName :: NanoSPlus => String :: from ( "devices/nanosplus/ c_sdk_build_nanosplus.defines" ) ,
514
+ DeviceName :: NanoX => String :: from ( "devices/nanox/ c_sdk_build_nanox.defines" ) ,
515
+ DeviceName :: Stax => String :: from ( "devices/stax/ c_sdk_build_stax.defines" ) ,
516
+ DeviceName :: Flex => String :: from ( "devices/flex/ c_sdk_build_flex.defines" ) ,
517
+ DeviceName :: ApexP => String :: from ( "devices/apex_p/ c_sdk_build_apex_p.defines" ) ,
527
518
} ;
528
519
529
520
bindings = bindings. clang_arg ( format ! ( "-I{bsdk}/target/{csdk_target_name}/include/" ) ) ;
@@ -614,8 +605,8 @@ impl SDKBuilder<'_> {
614
605
println ! ( "cargo:rustc-link-search={}" , out_dir. display( ) ) ;
615
606
// copy
616
607
std:: fs:: copy (
617
- self . device . linker_script ,
618
- out_dir. join ( self . device . linker_script ) ,
608
+ self . device . linker_script . as_str ( ) ,
609
+ out_dir. join ( self . device . linker_script . split ( "/" ) . last ( ) . unwrap ( ) ) ,
619
610
)
620
611
. unwrap ( ) ;
621
612
std:: fs:: copy ( "link.ld" , out_dir. join ( "link.ld" ) ) . unwrap ( ) ;
0 commit comments