@@ -60,7 +60,7 @@ def _psa_backend(target):
60
60
return 'TFM' if 'TFM' in Target .get_target (target ).labels else 'MBED_SPM'
61
61
62
62
63
- def _get_target_info (target ):
63
+ def _get_target_info (target , toolchain ):
64
64
"""
65
65
Creates a PSA target tuple with default toolchain and
66
66
artifact delivery directory.
@@ -74,7 +74,12 @@ def _get_target_info(target):
74
74
if not os .path .exists (delivery_dir ):
75
75
raise Exception ("{} does not have delivery_dir" .format (target ))
76
76
77
- return tuple ([TARGET_MAP [target ].name ,
77
+ if toolchain :
78
+ return tuple ([TARGET_MAP [target ].name ,
79
+ toolchain ,
80
+ delivery_dir ])
81
+ else :
82
+ return tuple ([TARGET_MAP [target ].name ,
78
83
TARGET_MAP [target ].default_toolchain ,
79
84
delivery_dir ])
80
85
@@ -105,7 +110,7 @@ def verbose_check_call(cmd, check_call=True):
105
110
return subprocess .call (cmd , stdout = subprocess_output , stderr = subprocess_err )
106
111
107
112
108
- def get_mbed_official_psa_release (target = None ):
113
+ def get_mbed_official_psa_release (target = None , toolchain = None ):
109
114
"""
110
115
Creates a list of PSA targets with default toolchain and
111
116
artifact delivery directory.
@@ -117,9 +122,9 @@ def get_mbed_official_psa_release(target=None):
117
122
logger .debug ("Found the following PSA targets: {}" .format (
118
123
', ' .join (psa_secure_targets )))
119
124
if target is not None :
120
- return [_get_target_info (target )]
125
+ return [_get_target_info (target , toolchain )]
121
126
122
- return [_get_target_info (t ) for t in psa_secure_targets ]
127
+ return [_get_target_info (t , toolchain ) for t in psa_secure_targets ]
123
128
124
129
125
130
def create_mbed_ignore (build_dir ):
@@ -142,6 +147,11 @@ def build_tests(target, toolchain, profile, args):
142
147
:param profile: build profile.
143
148
:param args: list of extra arguments.
144
149
"""
150
+ build_dir = os .path .join (ROOT , 'BUILD' , 'tests' , target )
151
+ if os .path .exists (build_dir ):
152
+ logger .info ("BUILD directory deleted: {}" .format (build_dir ))
153
+ shutil .rmtree (build_dir )
154
+
145
155
for test in PSA_TESTS .keys ():
146
156
logger .info (
147
157
"Building tests image({}) for {} using {} with {} profile" .format (
@@ -182,6 +192,11 @@ def build_default_image(target, toolchain, profile, args):
182
192
logger .info ("Building default image for {} using {} with {} profile" .format (
183
193
target , toolchain , profile ))
184
194
195
+ build_dir = os .path .join (ROOT , 'BUILD' , target )
196
+ if os .path .exists (build_dir ):
197
+ logger .info ("BUILD directory deleted: {}" .format (build_dir ))
198
+ shutil .rmtree (build_dir )
199
+
185
200
cmd = [
186
201
sys .executable , MAKE_PY_LOCATTION ,
187
202
'-t' , toolchain ,
@@ -200,7 +215,7 @@ def build_default_image(target, toolchain, profile, args):
200
215
"Finished building default image for {} successfully" .format (target ))
201
216
202
217
203
- def commit_binaries (target , delivery_dir ):
218
+ def commit_binaries (target , delivery_dir , toolchain ):
204
219
"""
205
220
Commits changes in secure binaries.
206
221
@@ -222,8 +237,8 @@ def commit_binaries(target, delivery_dir):
222
237
'add' , os .path .relpath (delivery_dir , ROOT )])
223
238
224
239
logger .info ("Committing images for {}" .format (target ))
225
- commit_message = '--message="Update secure binaries for {}"' . format (
226
- target )
240
+ commit_message = '--message="Update secure binaries for %s (%s)"' % (
241
+ target , toolchain )
227
242
verbose_check_call ([
228
243
'git' ,
229
244
'-C' , ROOT ,
@@ -252,7 +267,7 @@ def build_psa_platform(target, toolchain, delivery_dir, debug, git_commit,
252
267
253
268
build_default_image (target , toolchain , profile , args )
254
269
if git_commit :
255
- commit_binaries (target , delivery_dir )
270
+ commit_binaries (target , delivery_dir , toolchain )
256
271
257
272
258
273
def get_parser ():
@@ -263,6 +278,10 @@ def get_parser():
263
278
choices = _get_psa_secure_targets_list (),
264
279
metavar = "MCU" )
265
280
281
+ parser .add_argument ("-t" , "--tc" ,
282
+ help = "build for the given tool chain (default is default_toolchain)" ,
283
+ default = None )
284
+
266
285
parser .add_argument ("-d" , "--debug" ,
267
286
help = "set build profile to debug" ,
268
287
action = "store_true" ,
@@ -298,16 +317,10 @@ def get_parser():
298
317
299
318
300
319
def prep_build_dir ():
301
- """
302
- Creates a clean BUILD directory
303
- """
304
320
build_dir = os .path .join (ROOT , 'BUILD' )
305
- if os .path .exists (build_dir ):
306
- logger .debug ("BUILD directory already exists... Deleting" )
307
- shutil .rmtree (build_dir )
308
-
309
- os .makedirs (build_dir )
310
- logger .info ("BUILD directory created in {}" .format (build_dir ))
321
+ if not os .path .exists (build_dir ):
322
+ logger .info ("BUILD directory created in {}" .format (build_dir ))
323
+ os .makedirs (build_dir )
311
324
create_mbed_ignore (build_dir )
312
325
313
326
@@ -326,7 +339,7 @@ def main():
326
339
return
327
340
328
341
prep_build_dir ()
329
- psa_platforms_list = get_mbed_official_psa_release (options .mcu )
342
+ psa_platforms_list = get_mbed_official_psa_release (options .mcu , options . tc )
330
343
logger .info ("Building the following platforms: {}" .format (
331
344
', ' .join ([t [0 ] for t in psa_platforms_list ])))
332
345
0 commit comments