Skip to content

Commit 27996b8

Browse files
authored
Rename ResolvedTarget to ResolvedModule (#7459)
### Motivation: With host/target triples separation in the SwiftPM codebase, it gets very confusing whether at a given moment "target" refers to a module, a triple, or a low level build system target. ### Modifications: Renamed `ResolvedTarget` to `ResolvedModule`. Added a deprecated `typealias ResolvedTarget = ResolvedModule` to allow graceful migration for users of this type. ### Result: Confusion between target triples and package targets is reduced. This has no impact on how these concepts are named in user-visible APIs like `PackageDescription` and `PackagePlugin`, target there can stay as "target" for as long as needed. Remaining internal uses of "target" outside of "target triple" context, like `*TargetBuildDescription` will be renamed in future PRs.
1 parent 1c68e6c commit 27996b8

28 files changed

+132
-126
lines changed

Sources/Build/BuildDescription/ClangTargetBuildDescription.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import PackageGraph
1515
import PackageLoading
1616
import PackageModel
1717
import struct PackageGraph.ModulesGraph
18-
import struct PackageGraph.ResolvedTarget
18+
import struct PackageGraph.ResolvedModule
1919
import struct SPMBuildCore.BuildParameters
2020
import struct SPMBuildCore.BuildToolPluginInvocationResult
2121
import struct SPMBuildCore.PrebuildCommandResult
@@ -28,7 +28,7 @@ package final class ClangTargetBuildDescription {
2828
package let package: ResolvedPackage
2929

3030
/// The target described by this target.
31-
package let target: ResolvedTarget
31+
package let target: ResolvedModule
3232

3333
/// The underlying clang target.
3434
package let clangTarget: ClangTarget
@@ -114,7 +114,7 @@ package final class ClangTargetBuildDescription {
114114
/// Create a new target description with target and build parameters.
115115
init(
116116
package: ResolvedPackage,
117-
target: ResolvedTarget,
117+
target: ResolvedModule,
118118
toolsVersion: ToolsVersion,
119119
additionalFileRules: [FileRuleDescription] = [],
120120
buildParameters: BuildParameters,

Sources/Build/BuildDescription/PluginDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ package final class PluginDescription: Codable {
4343
/// Initialize a new plugin target description. The target is expected to be
4444
/// a `PluginTarget`.
4545
init(
46-
target: ResolvedTarget,
46+
target: ResolvedModule,
4747
products: [ResolvedProduct],
4848
package: ResolvedPackage,
4949
toolsVersion: ToolsVersion,

Sources/Build/BuildDescription/ProductBuildDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ package final class ProductBuildDescription: SPMBuildCore.ProductBuildDescriptio
4949
var additionalFlags: [String] = []
5050

5151
/// The list of targets that are going to be linked statically in this product.
52-
var staticTargets: [ResolvedTarget] = []
52+
var staticTargets: [ResolvedModule] = []
5353

5454
/// The list of Swift modules that should be passed to the linker. This is required for debugging to work.
5555
var swiftASTs: SortedArray<AbsolutePath> = .init()

Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ package final class SwiftTargetBuildDescription {
3333
package let package: ResolvedPackage
3434

3535
/// The target described by this target.
36-
package let target: ResolvedTarget
36+
package let target: ResolvedModule
3737

3838
private let swiftTarget: SwiftTarget
3939

@@ -248,7 +248,7 @@ package final class SwiftTargetBuildDescription {
248248
/// Create a new target description with target and build parameters.
249249
init(
250250
package: ResolvedPackage,
251-
target: ResolvedTarget,
251+
target: ResolvedModule,
252252
toolsVersion: ToolsVersion,
253253
additionalFileRules: [FileRuleDescription] = [],
254254
buildParameters: BuildParameters,

Sources/Build/BuildDescription/TargetBuildDescription.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Basics
14-
import struct PackageGraph.ResolvedTarget
14+
import struct PackageGraph.ResolvedModule
1515
import struct PackageModel.Resource
1616
import struct PackageModel.ToolsVersion
1717
import struct SPMBuildCore.BuildToolPluginInvocationResult
@@ -61,7 +61,7 @@ package enum TargetBuildDescription {
6161
}
6262
}
6363

64-
var target: ResolvedTarget {
64+
var target: ResolvedModule {
6565
switch self {
6666
case .swift(let target):
6767
return target.target

Sources/Build/BuildManifest/LLBuildManifestBuilder+Clang.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import struct LLBuildManifest.Node
1414
import struct Basics.AbsolutePath
1515
import struct Basics.InternalError
1616
import class Basics.ObservabilityScope
17-
import struct PackageGraph.ResolvedTarget
17+
import struct PackageGraph.ResolvedModule
1818
import PackageModel
1919

2020
extension LLBuildManifestBuilder {
@@ -32,7 +32,7 @@ extension LLBuildManifestBuilder {
3232
inputs.append(resourcesNode)
3333
}
3434

35-
func addStaticTargetInputs(_ target: ResolvedTarget) {
35+
func addStaticTargetInputs(_ target: ResolvedModule) {
3636
if case .swift(let desc)? = self.plan.targetMap[target.id], target.type == .library {
3737
inputs.append(file: desc.moduleOutputPath)
3838
}

Sources/Build/BuildManifest/LLBuildManifestBuilder+Swift.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import struct Basics.TSCAbsolutePath
1717
import struct LLBuildManifest.Node
1818
import struct LLBuildManifest.LLBuildManifest
1919
import struct SPMBuildCore.BuildParameters
20-
import struct PackageGraph.ResolvedTarget
20+
import struct PackageGraph.ResolvedModule
2121
import protocol TSCBasic.FileSystem
2222
import enum TSCBasic.ProcessEnv
2323
import func TSCBasic.topologicalSort
@@ -191,9 +191,9 @@ extension LLBuildManifestBuilder {
191191
package func addTargetsToExplicitBuildManifest() throws {
192192
// Sort the product targets in topological order in order to collect and "bubble up"
193193
// their respective dependency graphs to the depending targets.
194-
let nodes: [ResolvedTarget.Dependency] = try self.plan.targetMap.keys.compactMap {
194+
let nodes: [ResolvedModule.Dependency] = try self.plan.targetMap.keys.compactMap {
195195
guard let target = self.plan.graph.allTargets[$0] else { throw InternalError("unknown target \($0)") }
196-
return ResolvedTarget.Dependency.target(target, conditions: [])
196+
return ResolvedModule.Dependency.target(target, conditions: [])
197197
}
198198
let allPackageDependencies = try topologicalSort(nodes, successors: { $0.dependencies })
199199
// Instantiate the inter-module dependency oracle which will cache commonly-scanned
@@ -415,7 +415,7 @@ extension LLBuildManifestBuilder {
415415
inputs.append(resourcesNode)
416416
}
417417

418-
func addStaticTargetInputs(_ target: ResolvedTarget) throws {
418+
func addStaticTargetInputs(_ target: ResolvedModule) throws {
419419
// Ignore C Modules.
420420
if target.underlying is SystemLibraryTarget { return }
421421
// Ignore Binary Modules.

Sources/Build/BuildManifest/LLBuildManifestBuilder.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ extension TargetBuildDescription {
316316
}
317317
}
318318

319-
extension ResolvedTarget {
319+
extension ResolvedModule {
320320
package func getCommandName(config: String) -> String {
321321
"C." + self.getLLBuildTargetName(config: config)
322322
}

Sources/Build/BuildOperation.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,8 @@ package final class BuildOperation: PackageStructureDelegate, SPMBuildCore.Build
535535
private func plan(subset: BuildSubset? = nil) throws -> (description: BuildDescription, manifest: LLBuildManifest) {
536536
// Load the package graph.
537537
let graph = try getPackageGraph()
538-
let buildToolPluginInvocationResults: [ResolvedTarget.ID: (target: ResolvedTarget, results: [BuildToolPluginInvocationResult])]
539-
let prebuildCommandResults: [ResolvedTarget.ID: [PrebuildCommandResult]]
538+
let buildToolPluginInvocationResults: [ResolvedModule.ID: (target: ResolvedModule, results: [BuildToolPluginInvocationResult])]
539+
let prebuildCommandResults: [ResolvedModule.ID: [PrebuildCommandResult]]
540540
// Invoke any build tool plugins in the graph to generate prebuild commands and build commands.
541541
if let pluginConfiguration, !self.productsBuildParameters.shouldSkipBuilding {
542542
// Hacky workaround for rdar://120560817, but it replicates precisely enough the original behavior before
@@ -879,7 +879,7 @@ extension BuildDescription {
879879
}
880880

881881
extension BuildSubset {
882-
func recursiveDependencies(for graph: ModulesGraph, observabilityScope: ObservabilityScope) throws -> [ResolvedTarget]? {
882+
func recursiveDependencies(for graph: ModulesGraph, observabilityScope: ObservabilityScope) throws -> [ResolvedModule]? {
883883
switch self {
884884
case .allIncludingTests:
885885
return Array(graph.reachableTargets)

Sources/Build/BuildPlan/BuildPlan+Product.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import struct Basics.AbsolutePath
1414
import struct Basics.Triple
1515
import struct Basics.InternalError
1616
import struct PackageGraph.ResolvedProduct
17-
import struct PackageGraph.ResolvedTarget
17+
import struct PackageGraph.ResolvedModule
1818
import class PackageModel.BinaryTarget
1919
import class PackageModel.ClangTarget
2020

@@ -124,8 +124,8 @@ extension BuildPlan {
124124
buildParameters: BuildParameters
125125
) throws -> (
126126
dylibs: [ResolvedProduct],
127-
staticTargets: [ResolvedTarget],
128-
systemModules: [ResolvedTarget],
127+
staticTargets: [ResolvedModule],
128+
systemModules: [ResolvedModule],
129129
libraryBinaryPaths: Set<AbsolutePath>,
130130
availableTools: [String: AbsolutePath]
131131
) {
@@ -160,7 +160,7 @@ extension BuildPlan {
160160
}
161161

162162
// Sort the product targets in topological order.
163-
let nodes: [ResolvedTarget.Dependency] = product.targets.map { .target($0, conditions: []) }
163+
let nodes: [ResolvedModule.Dependency] = product.targets.map { .target($0, conditions: []) }
164164
let allTargets = try topologicalSort(nodes, successors: { dependency in
165165
switch dependency {
166166
// Include all the dependencies of a target.
@@ -185,7 +185,7 @@ extension BuildPlan {
185185
return []
186186
}
187187

188-
let productDependencies: [ResolvedTarget.Dependency] = product.targets.map { .target($0, conditions: []) }
188+
let productDependencies: [ResolvedModule.Dependency] = product.targets.map { .target($0, conditions: []) }
189189
switch product.type {
190190
case .library(.automatic), .library(.static):
191191
return productDependencies
@@ -201,8 +201,8 @@ extension BuildPlan {
201201

202202
// Create empty arrays to collect our results.
203203
var linkLibraries = [ResolvedProduct]()
204-
var staticTargets = [ResolvedTarget]()
205-
var systemModules = [ResolvedTarget]()
204+
var staticTargets = [ResolvedModule]()
205+
var systemModules = [ResolvedModule]()
206206
var libraryBinaryPaths: Set<AbsolutePath> = []
207207
var availableTools = [String: AbsolutePath]()
208208

Sources/Build/BuildPlan/BuildPlan+Test.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import struct LLBuildManifest.TestDiscoveryTool
1717
import struct LLBuildManifest.TestEntryPointTool
1818
import struct PackageGraph.ModulesGraph
1919
import struct PackageGraph.ResolvedProduct
20-
import struct PackageGraph.ResolvedTarget
20+
import struct PackageGraph.ResolvedModule
2121
import struct PackageModel.Sources
2222
import class PackageModel.SwiftTarget
2323
import class PackageModel.Target
@@ -66,7 +66,7 @@ extension BuildPlan {
6666
}
6767

6868
/// Generates test discovery targets, which contain derived sources listing the discovered tests.
69-
func generateDiscoveryTargets() throws -> (target: SwiftTarget, resolved: ResolvedTarget, buildDescription: SwiftTargetBuildDescription) {
69+
func generateDiscoveryTargets() throws -> (target: SwiftTarget, resolved: ResolvedModule, buildDescription: SwiftTargetBuildDescription) {
7070
let discoveryTargetName = "\(package.manifest.displayName)PackageDiscoveredTests"
7171
let discoveryDerivedDir = buildParameters.buildPath.appending(components: "\(discoveryTargetName).derived")
7272
let discoveryMainFile = discoveryDerivedDir.appending(component: TestDiscoveryTool.mainFileName)
@@ -84,7 +84,7 @@ extension BuildPlan {
8484
packageAccess: true, // test target is allowed access to package decls by default
8585
testDiscoverySrc: Sources(paths: discoveryPaths, root: discoveryDerivedDir)
8686
)
87-
let discoveryResolvedTarget = ResolvedTarget(
87+
let discoveryResolvedTarget = ResolvedModule(
8888
packageIdentity: testProduct.packageIdentity,
8989
underlying: discoveryTarget,
9090
dependencies: testProduct.targets.map { .target($0, conditions: []) },
@@ -110,7 +110,7 @@ extension BuildPlan {
110110
/// point API and leverages the test discovery target to reference which tests to run.
111111
func generateSynthesizedEntryPointTarget(
112112
swiftTargetDependencies: [Target.Dependency],
113-
resolvedTargetDependencies: [ResolvedTarget.Dependency]
113+
resolvedTargetDependencies: [ResolvedModule.Dependency]
114114
) throws -> SwiftTargetBuildDescription {
115115
let entryPointDerivedDir = buildParameters.buildPath.appending(components: "\(testProduct.name).derived")
116116
let entryPointMainFileName = TestEntryPointTool.mainFileName(for: buildParameters.testingParameters.library)
@@ -124,7 +124,7 @@ extension BuildPlan {
124124
packageAccess: true, // test target is allowed access to package decls
125125
testEntryPointSources: entryPointSources
126126
)
127-
let entryPointResolvedTarget = ResolvedTarget(
127+
let entryPointResolvedTarget = ResolvedModule(
128128
packageIdentity: testProduct.packageIdentity,
129129
underlying: entryPointTarget,
130130
dependencies: testProduct.targets.map { .target($0, conditions: []) } + resolvedTargetDependencies,
@@ -144,9 +144,9 @@ extension BuildPlan {
144144
)
145145
}
146146

147-
let discoveryTargets: (target: SwiftTarget, resolved: ResolvedTarget, buildDescription: SwiftTargetBuildDescription)?
147+
let discoveryTargets: (target: SwiftTarget, resolved: ResolvedModule, buildDescription: SwiftTargetBuildDescription)?
148148
let swiftTargetDependencies: [Target.Dependency]
149-
let resolvedTargetDependencies: [ResolvedTarget.Dependency]
149+
let resolvedTargetDependencies: [ResolvedModule.Dependency]
150150

151151
switch buildParameters.testingParameters.library {
152152
case .xctest:
@@ -169,7 +169,7 @@ extension BuildPlan {
169169
packageAccess: entryPointResolvedTarget.packageAccess,
170170
testEntryPointSources: entryPointResolvedTarget.underlying.sources
171171
)
172-
let entryPointResolvedTarget = ResolvedTarget(
172+
let entryPointResolvedTarget = ResolvedModule(
173173
packageIdentity: testProduct.packageIdentity,
174174
underlying: entryPointTarget,
175175
dependencies: entryPointResolvedTarget.dependencies + resolvedTargetDependencies,

Sources/Build/BuildPlan/BuildPlan.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ extension BuildParameters {
103103
}
104104

105105
/// Returns the compiler arguments for the index store, if enabled.
106-
func indexStoreArguments(for target: ResolvedTarget) -> [String] {
106+
func indexStoreArguments(for target: ResolvedModule) -> [String] {
107107
let addIndexStoreArguments: Bool
108108
switch indexStoreMode {
109109
case .on:
@@ -128,7 +128,7 @@ extension BuildParameters {
128128
}
129129

130130
/// Computes the target triple arguments for a given resolved target.
131-
package func targetTripleArgs(for target: ResolvedTarget) throws -> [String] {
131+
package func targetTripleArgs(for target: ResolvedModule) throws -> [String] {
132132
var args = ["-target"]
133133

134134
// Compute the triple string for Darwin platform using the platform version.
@@ -144,7 +144,7 @@ extension BuildParameters {
144144

145145
/// Computes the linker flags to use in order to rename a module-named main function to 'main' for the target
146146
/// platform, or nil if the linker doesn't support it for the platform.
147-
func linkerFlagsForRenamingMainFunction(of target: ResolvedTarget) -> [String]? {
147+
func linkerFlagsForRenamingMainFunction(of target: ResolvedModule) -> [String]? {
148148
let args: [String]
149149
if self.triple.isApple() {
150150
args = ["-alias", "_\(target.c99name)_main", "_main"]
@@ -157,7 +157,7 @@ extension BuildParameters {
157157
}
158158

159159
/// Returns the scoped view of build settings for a given target.
160-
func createScope(for target: ResolvedTarget) -> BuildSettings.Scope {
160+
func createScope(for target: ResolvedModule) -> BuildSettings.Scope {
161161
BuildSettings.Scope(target.underlying.buildSettings, environment: buildEnvironment)
162162
}
163163
}
@@ -186,7 +186,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
186186
public let toolsBuildParameters: BuildParameters
187187

188188
/// Triple for which this target is compiled.
189-
private func buildTriple(for target: ResolvedTarget) -> Basics.Triple {
189+
private func buildTriple(for target: ResolvedModule) -> Basics.Triple {
190190
self.buildParameters(for: target).triple
191191
}
192192

@@ -199,7 +199,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
199199
package let graph: ModulesGraph
200200

201201
/// The target build description map.
202-
package let targetMap: [ResolvedTarget.ID: TargetBuildDescription]
202+
package let targetMap: [ResolvedModule.ID: TargetBuildDescription]
203203

204204
/// The product build description map.
205205
package let productMap: [ResolvedProduct.ID: ProductBuildDescription]
@@ -219,13 +219,13 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
219219
}
220220

221221
/// The results of invoking any build tool plugins used by targets in this build.
222-
package let buildToolPluginInvocationResults: [ResolvedTarget.ID: [BuildToolPluginInvocationResult]]
222+
package let buildToolPluginInvocationResults: [ResolvedModule.ID: [BuildToolPluginInvocationResult]]
223223

224224
/// The results of running any prebuild commands for the targets in this build. This includes any derived
225225
/// source files as well as directories to which any changes should cause us to reevaluate the build plan.
226-
package let prebuildCommandResults: [ResolvedTarget.ID: [PrebuildCommandResult]]
226+
package let prebuildCommandResults: [ResolvedModule.ID: [PrebuildCommandResult]]
227227

228-
package private(set) var derivedTestTargetsMap: [ResolvedProduct.ID: [ResolvedTarget]] = [:]
228+
package private(set) var derivedTestTargetsMap: [ResolvedProduct.ID: [ResolvedModule]] = [:]
229229

230230
/// Cache for pkgConfig flags.
231231
private var pkgConfigCache = [SystemLibraryTarget: (cFlags: [String], libs: [String])]()
@@ -273,8 +273,8 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
273273
toolsBuildParameters: BuildParameters,
274274
graph: ModulesGraph,
275275
additionalFileRules: [FileRuleDescription] = [],
276-
buildToolPluginInvocationResults: [ResolvedTarget.ID: [BuildToolPluginInvocationResult]] = [:],
277-
prebuildCommandResults: [ResolvedTarget.ID: [PrebuildCommandResult]] = [:],
276+
buildToolPluginInvocationResults: [ResolvedModule.ID: [BuildToolPluginInvocationResult]] = [:],
277+
prebuildCommandResults: [ResolvedModule.ID: [PrebuildCommandResult]] = [:],
278278
disableSandbox: Bool = false,
279279
fileSystem: any FileSystem,
280280
observabilityScope: ObservabilityScope
@@ -315,7 +315,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
315315
))
316316
}
317317
let macroProductsByTarget = productMap.values.filter { $0.product.type == .macro }
318-
.reduce(into: [ResolvedTarget.ID: ResolvedProduct]()) {
318+
.reduce(into: [ResolvedModule.ID: ResolvedProduct]()) {
319319
if let target = $1.product.targets.first {
320320
$0[target.id] = $1.product
321321
}
@@ -325,7 +325,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
325325
// Plugin targets are noted, since they need to be compiled, but they do
326326
// not get directly incorporated into the build description that will be
327327
// given to LLBuild.
328-
var targetMap = [ResolvedTarget.ID: TargetBuildDescription]()
328+
var targetMap = [ResolvedModule.ID: TargetBuildDescription]()
329329
var pluginDescriptions = [PluginDescription]()
330330
var shouldGenerateTestObservation = true
331331
for target in graph.allTargets.sorted(by: { $0.name < $1.name }) {
@@ -473,7 +473,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
473473

474474
static func validateDeploymentVersionOfProductDependency(
475475
product: ResolvedProduct,
476-
forTarget target: ResolvedTarget,
476+
forTarget target: ResolvedModule,
477477
buildEnvironment: BuildEnvironment,
478478
observabilityScope: ObservabilityScope
479479
) throws {
@@ -661,7 +661,7 @@ extension Basics.Diagnostic {
661661
}
662662

663663
static func productRequiresHigherPlatformVersion(
664-
target: ResolvedTarget,
664+
target: ResolvedModule,
665665
targetPlatform: SupportedPlatform,
666666
product: String,
667667
productPlatform: SupportedPlatform
@@ -693,7 +693,7 @@ extension BuildParameters {
693693
/// Generate the resource bundle Info.plist.
694694
func generateResourceInfoPlist(
695695
fileSystem: FileSystem,
696-
target: ResolvedTarget,
696+
target: ResolvedModule,
697697
path: AbsolutePath
698698
) throws -> Bool {
699699
guard let defaultLocalization = target.defaultLocalization else {

0 commit comments

Comments
 (0)