@@ -293,26 +293,26 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
293293 fmt .Errorf (tr ("board %s not found" ), fqbn .StringWithoutConfig ())
294294 }
295295
296- buildProperties , err := board .GetBuildProperties (fqbn .Configs )
296+ boardBuildProperties , err := board .GetBuildProperties (fqbn .Configs )
297297 if err != nil {
298298 return targetPackage , platformRelease , board , nil , nil ,
299299 fmt .Errorf (tr ("getting build properties for board %[1]s: %[2]s" ), board , err )
300300 }
301301
302302 // Determine the platform used for the build (in case the board refers
303303 // to a core contained in another platform)
304- core := buildProperties .Get ("build.core" )
304+ core := boardBuildProperties .Get ("build.core" )
305305 referredCore := ""
306306 if split := strings .Split (core , ":" ); len (split ) > 1 {
307307 core , referredCore = split [1 ], split [0 ]
308308 }
309- variant := buildProperties .Get ("build.variant" )
309+ variant := boardBuildProperties .Get ("build.variant" )
310310 referredVariant := ""
311311 if split := strings .Split (variant , ":" ); len (split ) > 1 {
312312 variant , referredVariant = split [1 ], split [0 ]
313313 }
314314 if referredCore != "" && referredVariant != "" && referredCore != referredVariant {
315- return targetPackage , platformRelease , board , buildProperties , nil ,
315+ return targetPackage , platformRelease , board , nil , nil ,
316316 fmt .Errorf (tr ("'build.core' and 'build.variant' refer to different platforms: %[1]s and %[2]s" ), core + ":" + referredCore , variant + ":" + referredVariant )
317317 }
318318
@@ -324,26 +324,34 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
324324 if referredPackageName != "" {
325325 referredPackage := pme .packages [referredPackageName ]
326326 if referredPackage == nil {
327- return targetPackage , platformRelease , board , buildProperties , nil ,
327+ return targetPackage , platformRelease , board , nil , nil ,
328328 fmt .Errorf (tr ("missing package %[1]s referenced by board %[2]s" ), referredPackageName , fqbn )
329329 }
330330 referredPlatform := referredPackage .Platforms [fqbn .PlatformArch ]
331331 if referredPlatform == nil {
332- return targetPackage , platformRelease , board , buildProperties , nil ,
332+ return targetPackage , platformRelease , board , nil , nil ,
333333 fmt .Errorf (tr ("missing platform %[1]s:%[2]s referenced by board %[3]s" ), referredPackageName , fqbn .PlatformArch , fqbn )
334334 }
335335 referredPlatformRelease = pme .GetInstalledPlatformRelease (referredPlatform )
336336 if referredPlatformRelease == nil {
337- return targetPackage , platformRelease , board , buildProperties , nil ,
337+ return targetPackage , platformRelease , board , nil , nil ,
338338 fmt .Errorf (tr ("missing platform release %[1]s:%[2]s referenced by board %[3]s" ), referredPackageName , fqbn .PlatformArch , fqbn )
339339 }
340340 }
341341
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 ()
343346 buildPlatformRelease := platformRelease
344347 if referredCore != "" {
345348 buildPlatformRelease = referredPlatformRelease
346349 }
350+ buildProperties .Merge (buildPlatformRelease .Properties )
351+ buildProperties .Merge (platformRelease .Properties )
352+ buildProperties .Merge (boardBuildProperties )
353+
354+ // Add runtime build properties
347355 buildProperties .Merge (platformRelease .RuntimeProperties ())
348356 buildProperties .SetPath ("build.core.path" , buildPlatformRelease .InstallDir .Join ("cores" , core ))
349357 buildProperties .SetPath ("build.system.path" , buildPlatformRelease .InstallDir .Join ("system" ))
@@ -389,7 +397,6 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
389397 buildProperties .Set ("software" , "ARDUINO" )
390398 }
391399
392- // No errors... phew!
393400 return targetPackage , platformRelease , board , buildProperties , buildPlatformRelease , nil
394401}
395402
0 commit comments