@@ -304,9 +304,21 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
304304 if split := strings .Split (core , ":" ); len (split ) > 1 {
305305 core , referredCore = split [1 ], split [0 ]
306306 }
307+ variant := buildProperties .Get ("build.variant" )
308+ referredVariant := ""
309+ if split := strings .Split (variant , ":" ); len (split ) > 1 {
310+ variant , referredVariant = split [1 ], split [0 ]
311+ }
312+ if referredCore != "" && referredVariant != "" && referredCore != referredVariant {
313+ return targetPackage , platformRelease , board , buildProperties , nil ,
314+ fmt .Errorf (tr ("'build.core' and 'build.variant' refer to different platforms: %[1]s and %[2]s" ), core + ":" + referredCore , variant + ":" + referredVariant )
315+ }
307316
308317 var referredPlatformRelease * cores.PlatformRelease
309318 referredPackageName := referredCore
319+ if referredPackageName == "" {
320+ referredPackageName = referredVariant
321+ }
310322 if referredPackageName != "" {
311323 referredPackage := pme .packages [referredPackageName ]
312324 if referredPackage == nil {
@@ -336,6 +348,16 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
336348 for _ , tool := range pme .GetAllInstalledToolsReleases () {
337349 buildProperties .Merge (tool .RuntimeProperties ())
338350 }
351+
352+ buildProperties .Set ("build.variant.path" , "" )
353+ if variant != "" {
354+ variantPlatformRelease := platformRelease
355+ if referredVariant != "" {
356+ variantPlatformRelease = referredPlatformRelease
357+ }
358+ buildProperties .SetPath ("build.variant.path" , variantPlatformRelease .InstallDir .Join ("variants" , variant ))
359+ }
360+
339361 requiredTools , err := pme .FindToolsRequiredForBuild (platformRelease , buildPlatformRelease )
340362 if err != nil {
341363 return targetPackage , platformRelease , board , buildProperties , buildPlatformRelease , err
0 commit comments