9
9
# PlatformIO specific
10
10
Import ("env" )
11
11
12
+ CONFIG = ConfigParser ()
13
+ CONFIG .read (env .subst ("$PROJECT_CONFIG" ))
12
14
MOD_PRELUDE = """
13
15
#![allow(dead_code)]
14
16
#![allow(non_camel_case_types)]
43
45
"""
44
46
45
47
def get_rust_headers ():
46
- config = ConfigParser ()
47
- config .read (env .subst ("$PROJECT_CONFIG" ))
48
-
49
48
try :
50
- headers_to_process_str = config .get (env .subst ("env:$PIOENV" ), "rust_headers" )
49
+ headers_to_process_str = CONFIG .get (env .subst ("env:$PIOENV" ), "rust_headers" )
51
50
except NoOptionError :
52
51
return []
53
52
@@ -95,6 +94,8 @@ def get_rust_headers():
95
94
def ignore_main_cpp (node ):
96
95
defines = env .subst ("$_CPPDEFFLAGS" ).replace ("\\ \" " , "\" " )
97
96
sysroot = popen (env .subst ("$CC -print-sysroot" )).read ().strip ()
97
+ target = CONFIG .get (env .subst ("env:$PIOENV" ), "rust_target" ).strip ()
98
+
98
99
mod_rs = open (env .subst ("$PROJECT_SRC_DIR/platformio/mod.rs" ), "w" )
99
100
mod_rs .write (MOD_PRELUDE )
100
101
@@ -127,7 +128,7 @@ def ignore_main_cpp(node):
127
128
name = name ,
128
129
header = h ,
129
130
sysroot = sysroot ,
130
- target = "thumbv7em-none-eabihf" ,
131
+ target = target ,
131
132
defines = defines ))
132
133
133
134
# As the preprocessor does not have any idea abut namespaces, we can re-export all the functions safely
@@ -137,8 +138,8 @@ def ignore_main_cpp(node):
137
138
""" .format (name = name [:- 3 ])) # Remove .rs extension
138
139
139
140
mod_rs .close ()
140
- env .Execute ("cargo build --release -- target=thumbv7em-none-eabihf -v" )
141
- env .Append (PIOBUILDFILES = ["$PROJECT_DIR/target/thumbv7em-none-eabihf /release/deps/firmware-platformio.o" ])
141
+ env .Execute ("cargo build --release -v -- target=" + target )
142
+ env .Append (PIOBUILDFILES = ["$PROJECT_DIR/target/" + target + " /release/deps/firmware-platformio.o" ])
142
143
143
144
return None
144
145
0 commit comments