Skip to content

Commit dc34427

Browse files
committed
[BuildPlan] Make build descriptions identifiable just like Resolved{Product, Module}
1 parent 6481220 commit dc34427

File tree

4 files changed

+46
-0
lines changed

4 files changed

+46
-0
lines changed

Sources/Build/BuildDescription/ClangModuleBuildDescription.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public final class ClangModuleBuildDescription {
4242
/// The build parameters.
4343
let buildParameters: BuildParameters
4444

45+
/// The destination for while this module is built.
46+
public var destination: BuildParameters.Destination {
47+
self.buildParameters.destination
48+
}
49+
4550
/// The build environment.
4651
var buildEnvironment: BuildEnvironment {
4752
buildParameters.buildEnvironment

Sources/Build/BuildDescription/ModuleBuildDescription.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,15 @@ public enum ModuleBuildDescription: SPMBuildCore.ModuleBuildDescription {
121121
}
122122
}
123123

124+
var destination: BuildParameters.Destination {
125+
switch self {
126+
case .swift(let buildDescription):
127+
buildDescription.destination
128+
case .clang(let buildDescription):
129+
buildDescription.destination
130+
}
131+
}
132+
124133
var toolsVersion: ToolsVersion {
125134
switch self {
126135
case .swift(let buildDescription):
@@ -139,3 +148,14 @@ public enum ModuleBuildDescription: SPMBuildCore.ModuleBuildDescription {
139148
}
140149
}
141150
}
151+
152+
extension ModuleBuildDescription: Identifiable {
153+
public struct ID: Hashable {
154+
let moduleID: ResolvedModule.ID
155+
let destination: BuildParameters.Destination
156+
}
157+
158+
public var id: ID {
159+
ID(moduleID: self.module.id, destination: self.destination)
160+
}
161+
}

Sources/Build/BuildDescription/ProductBuildDescription.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public final class ProductBuildDescription: SPMBuildCore.ProductBuildDescription
3737
/// The build parameters.
3838
public let buildParameters: BuildParameters
3939

40+
/// The destination for while this product is built.
41+
public var destination: BuildParameters.Destination {
42+
self.buildParameters.destination
43+
}
44+
4045
/// All object files to link into this product.
4146
///
4247
// Computed during build planning.
@@ -397,6 +402,17 @@ public final class ProductBuildDescription: SPMBuildCore.ProductBuildDescription
397402
}
398403
}
399404

405+
extension ProductBuildDescription: Identifiable {
406+
public struct ID: Hashable {
407+
let productID: ResolvedProduct.ID
408+
let destination: BuildParameters.Destination
409+
}
410+
411+
public var id: ID {
412+
ID(productID: self.product.id, destination: self.destination)
413+
}
414+
}
415+
400416
extension SortedArray where Element == AbsolutePath {
401417
public static func +=<S: Sequence>(lhs: inout SortedArray, rhs: S) where S.Iterator.Element == AbsolutePath {
402418
lhs.insert(contentsOf: rhs)

Sources/Build/BuildDescription/SwiftModuleBuildDescription.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public final class SwiftModuleBuildDescription {
4949
/// The build parameters for this target.
5050
let buildParameters: BuildParameters
5151

52+
/// The destination for while this module is built.
53+
public var destination: BuildParameters.Destination {
54+
self.buildParameters.destination
55+
}
56+
5257
/// The build parameters for the macro dependencies of this target.
5358
let macroBuildParameters: BuildParameters
5459

0 commit comments

Comments
 (0)