@@ -39,6 +39,9 @@ public struct ResolvedProduct: Hashable {
3939    /// The list of platforms that are supported by this product.
4040    public  let  supportedPlatforms :  [ SupportedPlatform ] 
4141
42+     /// Triple for which this resolved product should be compiled for.
43+     public  let  buildTriple :  BuildTriple 
44+ 
4245    public  let  platformVersionProvider :  PlatformVersionProvider 
4346
4447    /// The main executable target of product.
@@ -60,11 +63,24 @@ public struct ResolvedProduct: Hashable {
6063
6164    public  init ( product:  Product ,  targets:  [ ResolvedTarget ] )  { 
6265        assert ( product. targets. count ==  targets. count && product. targets. map ( \. name)  ==  targets. map ( \. name) ) 
63-         let  ( supportedPlatforms,  platformVersionProvider)  =  Self . computePlatforms ( targets:  targets) 
6466        let  defaultLocalization  =  targets. first? . defaultLocalization
65-         
67+ 
68+         let  processedTargets :  [ ResolvedTarget ] 
69+         if  product. type ==  . macro || product. type ==  . plugin { 
70+             self . buildTriple =  . buildTools
71+             processedTargets =  targets. map ( \. buildToolsTarget) 
72+         }  else  { 
73+             self . buildTriple =  . buildProducts
74+             processedTargets =  targets
75+         } 
76+ 
6677        self . underlying =  product
67-         self . targets =  targets
78+         self . targets =  processedTargets
79+ 
80+         let  ( supportedPlatforms,  platformVersionProvider)  =  Self . computePlatforms ( targets:  targets) 
81+         self . supportedPlatforms =  supportedPlatforms
82+         self . platformVersionProvider =  platformVersionProvider
83+         
6884        self . testEntryPointTarget =  product. testEntryPointPath. map  {  testEntryPointPath in 
6985            // Create an executable resolved target with the entry point file, adding product's targets as dependencies.
7086            let  dependencies :  [ Target . Dependency ]  =  product. targets. map  {  . target( $0,  conditions:  [ ] )  } 
@@ -88,8 +104,6 @@ public struct ResolvedProduct: Hashable {
88104        // defaultLocalization is currently shared across the entire package
89105        // this may need to be enhanced if / when we support localization per target or product
90106        self . defaultLocalization =  defaultLocalization
91-         self . supportedPlatforms =  supportedPlatforms
92-         self . platformVersionProvider =  platformVersionProvider
93107    } 
94108
95109    /// True if this product contains Swift targets.
0 commit comments