@@ -293,26 +293,26 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
293
293
fmt .Errorf (tr ("board %s not found" ), fqbn .StringWithoutConfig ())
294
294
}
295
295
296
- buildProperties , err := board .GetBuildProperties (fqbn .Configs )
296
+ boardBuildProperties , err := board .GetBuildProperties (fqbn .Configs )
297
297
if err != nil {
298
298
return targetPackage , platformRelease , board , nil , nil ,
299
299
fmt .Errorf (tr ("getting build properties for board %[1]s: %[2]s" ), board , err )
300
300
}
301
301
302
302
// Determine the platform used for the build (in case the board refers
303
303
// to a core contained in another platform)
304
- core := buildProperties .Get ("build.core" )
304
+ core := boardBuildProperties .Get ("build.core" )
305
305
referredCore := ""
306
306
if split := strings .Split (core , ":" ); len (split ) > 1 {
307
307
core , referredCore = split [1 ], split [0 ]
308
308
}
309
- variant := buildProperties .Get ("build.variant" )
309
+ variant := boardBuildProperties .Get ("build.variant" )
310
310
referredVariant := ""
311
311
if split := strings .Split (variant , ":" ); len (split ) > 1 {
312
312
variant , referredVariant = split [1 ], split [0 ]
313
313
}
314
314
if referredCore != "" && referredVariant != "" && referredCore != referredVariant {
315
- return targetPackage , platformRelease , board , buildProperties , nil ,
315
+ return targetPackage , platformRelease , board , nil , nil ,
316
316
fmt .Errorf (tr ("'build.core' and 'build.variant' refer to different platforms: %[1]s and %[2]s" ), core + ":" + referredCore , variant + ":" + referredVariant )
317
317
}
318
318
@@ -324,26 +324,34 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
324
324
if referredPackageName != "" {
325
325
referredPackage := pme .packages [referredPackageName ]
326
326
if referredPackage == nil {
327
- return targetPackage , platformRelease , board , buildProperties , nil ,
327
+ return targetPackage , platformRelease , board , nil , nil ,
328
328
fmt .Errorf (tr ("missing package %[1]s referenced by board %[2]s" ), referredPackageName , fqbn )
329
329
}
330
330
referredPlatform := referredPackage .Platforms [fqbn .PlatformArch ]
331
331
if referredPlatform == nil {
332
- return targetPackage , platformRelease , board , buildProperties , nil ,
332
+ return targetPackage , platformRelease , board , nil , nil ,
333
333
fmt .Errorf (tr ("missing platform %[1]s:%[2]s referenced by board %[3]s" ), referredPackageName , fqbn .PlatformArch , fqbn )
334
334
}
335
335
referredPlatformRelease = pme .GetInstalledPlatformRelease (referredPlatform )
336
336
if referredPlatformRelease == nil {
337
- return targetPackage , platformRelease , board , buildProperties , nil ,
337
+ return targetPackage , platformRelease , board , nil , nil ,
338
338
fmt .Errorf (tr ("missing platform release %[1]s:%[2]s referenced by board %[3]s" ), referredPackageName , fqbn .PlatformArch , fqbn )
339
339
}
340
340
}
341
341
342
- // Runtime build properties
342
+ // Create the build properties map by overlaying the properties of the
343
+ // referenced platform propeties, the board platform properties and the
344
+ // board specific properties.
345
+ buildProperties := properties .NewMap ()
343
346
buildPlatformRelease := platformRelease
344
347
if referredCore != "" {
345
348
buildPlatformRelease = referredPlatformRelease
346
349
}
350
+ buildProperties .Merge (buildPlatformRelease .Properties )
351
+ buildProperties .Merge (platformRelease .Properties )
352
+ buildProperties .Merge (boardBuildProperties )
353
+
354
+ // Add runtime build properties
347
355
buildProperties .Merge (platformRelease .RuntimeProperties ())
348
356
buildProperties .SetPath ("build.core.path" , buildPlatformRelease .InstallDir .Join ("cores" , core ))
349
357
buildProperties .SetPath ("build.system.path" , buildPlatformRelease .InstallDir .Join ("system" ))
@@ -389,7 +397,6 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
389
397
buildProperties .Set ("software" , "ARDUINO" )
390
398
}
391
399
392
- // No errors... phew!
393
400
return targetPackage , platformRelease , board , buildProperties , buildPlatformRelease , nil
394
401
}
395
402
0 commit comments