@@ -304,9 +304,21 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
304
304
if split := strings .Split (core , ":" ); len (split ) > 1 {
305
305
core , referredCore = split [1 ], split [0 ]
306
306
}
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
+ }
307
316
308
317
var referredPlatformRelease * cores.PlatformRelease
309
318
referredPackageName := referredCore
319
+ if referredPackageName == "" {
320
+ referredPackageName = referredVariant
321
+ }
310
322
if referredPackageName != "" {
311
323
referredPackage := pme .packages [referredPackageName ]
312
324
if referredPackage == nil {
@@ -336,6 +348,16 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
336
348
for _ , tool := range pme .GetAllInstalledToolsReleases () {
337
349
buildProperties .Merge (tool .RuntimeProperties ())
338
350
}
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
+
339
361
requiredTools , err := pme .FindToolsRequiredForBuild (platformRelease , buildPlatformRelease )
340
362
if err != nil {
341
363
return targetPackage , platformRelease , board , buildProperties , buildPlatformRelease , err
0 commit comments