19
19
import subprocess
20
20
import sys
21
21
import shutil
22
+ from argparse import ArgumentParser
22
23
23
24
ROOT = os .path .abspath (os .path .join (os .path .dirname (__file__ ), os .pardir , os .pardir ))
24
25
sys .path .insert (0 , ROOT )
@@ -41,14 +42,10 @@ def _psa_backend(target_name):
41
42
42
43
43
44
def get_mbed_official_psa_release ():
44
- psa_targets_release_dict = {
45
- 'TFM' : [],
46
- 'MBED_SPM' : []
47
- }
48
-
45
+ psa_targets_release_list = []
49
46
psa_secure_targets = [t for t in TARGET_NAMES if Target .get_target (t ).is_PSA_secure_target ]
50
47
for t in psa_secure_targets :
51
- psa_targets_release_dict [ _psa_backend ( t )] .append (
48
+ psa_targets_release_list .append (
52
49
tuple (
53
50
[
54
51
TARGET_MAP [t ].name ,
@@ -57,7 +54,7 @@ def get_mbed_official_psa_release():
57
54
)
58
55
)
59
56
60
- return psa_targets_release_dict
57
+ return psa_targets_release_list
61
58
62
59
63
60
def create_mbed_ignore (build_dir ):
@@ -119,20 +116,47 @@ def build_tfm_platform(target, toolchain):
119
116
])
120
117
121
118
119
+ def build_psa_platform (target , toolchain ):
120
+ if _psa_backend (options .mcu ) is 'TFM' :
121
+ build_tfm_platform (target , toolchain )
122
+ else :
123
+ build_mbed_spm_platform (target , toolchain )
124
+
125
+
126
+ def get_parser ():
127
+ parser = ArgumentParser ()
128
+ parser .add_argument ("-m" , "--mcu" ,
129
+ help = "build for the given MCU" ,
130
+ default = '*' ,
131
+ metavar = "MCU" )
132
+
133
+ return parser
134
+
135
+
136
+ def filter_target (mcu ):
137
+ def filter_func (t ):
138
+ return t [0 ] == mcu
139
+
140
+ return filter_func
141
+
142
+
122
143
def main ():
144
+ parser = get_parser ()
145
+ options = parser .parse_args ()
123
146
build_dir = os .path .join (ROOT , 'BUILD' )
124
147
if os .path .exists (build_dir ):
125
148
shutil .rmtree (build_dir )
126
149
127
150
os .makedirs (build_dir )
128
151
create_mbed_ignore (build_dir )
152
+ target_filter_function = None
153
+ psa_platforms_list = get_mbed_official_psa_release ()
129
154
130
- psa_platforms_dict = get_mbed_official_psa_release ()
131
- for target , toolchain in psa_platforms_dict ['MBED_SPM' ]:
132
- build_mbed_spm_platform (target , toolchain )
155
+ if options .mcu is not '*' :
156
+ target_filter_function = filter_target (options .mcu )
133
157
134
- for target , toolchain in psa_platforms_dict [ 'TFM' ] :
135
- build_tfm_platform (target , toolchain )
158
+ for target , toolchain in filter ( target_filter_function , psa_platforms_list ) :
159
+ build_psa_platform (target , toolchain )
136
160
137
161
138
162
if __name__ == '__main__' :
0 commit comments