Skip to content

Commit dcd36c5

Browse files
committed
[Build] Remove the need to reference tools build parameters in swift targets
Pass macros associated with a particular swift target as a list of build descriptions. That was the only users of `tools` build parameters that are now obsolete.
1 parent 8676d94 commit dcd36c5

File tree

4 files changed

+16
-18
lines changed

4 files changed

+16
-18
lines changed

Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ public final class SwiftTargetBuildDescription {
4646
/// The build parameters for this target.
4747
let defaultBuildParameters: BuildParameters
4848

49-
/// The build parameters for build tools.
50-
let toolsBuildParameters: BuildParameters
51-
5249
/// Path to the temporary directory for this target.
5350
let tempsPath: AbsolutePath
5451

@@ -235,7 +232,7 @@ public final class SwiftTargetBuildDescription {
235232
public let prebuildCommandResults: [PrebuildCommandResult]
236233

237234
/// Any macro products that this target requires to build.
238-
public let requiredMacroProducts: [ResolvedProduct]
235+
public let requiredMacroProducts: [ProductBuildDescription]
239236

240237
/// ObservabilityScope with which to emit diagnostics
241238
private let observabilityScope: ObservabilityScope
@@ -253,10 +250,9 @@ public final class SwiftTargetBuildDescription {
253250
toolsVersion: ToolsVersion,
254251
additionalFileRules: [FileRuleDescription] = [],
255252
destinationBuildParameters: BuildParameters,
256-
toolsBuildParameters: BuildParameters,
257253
buildToolPluginInvocationResults: [BuildToolPluginInvocationResult] = [],
258254
prebuildCommandResults: [PrebuildCommandResult] = [],
259-
requiredMacroProducts: [ResolvedProduct] = [],
255+
requiredMacroProducts: [ProductBuildDescription] = [],
260256
testTargetRole: TestTargetRole? = nil,
261257
shouldGenerateTestObservation: Bool = false,
262258
shouldDisableSandbox: Bool,
@@ -272,7 +268,6 @@ public final class SwiftTargetBuildDescription {
272268
self.target = target
273269
self.toolsVersion = toolsVersion
274270
self.defaultBuildParameters = destinationBuildParameters
275-
self.toolsBuildParameters = toolsBuildParameters
276271

277272
// Unless mentioned explicitly, use the target type to determine if this is a test target.
278273
if let testTargetRole {
@@ -439,15 +434,15 @@ public final class SwiftTargetBuildDescription {
439434

440435
#if BUILD_MACROS_AS_DYLIBS
441436
self.requiredMacroProducts.forEach { macro in
442-
args += ["-Xfrontend", "-load-plugin-library", "-Xfrontend", self.toolsBuildParameters.binaryPath(for: macro).pathString]
437+
args += ["-Xfrontend", "-load-plugin-library", "-Xfrontend", macro.binaryPath.pathString]
443438
}
444439
#else
445440
try self.requiredMacroProducts.forEach { macro in
446-
if let macroTarget = macro.targets.first {
447-
let executablePath = try self.toolsBuildParameters.binaryPath(for: macro).pathString
441+
if let macroTarget = macro.product.targets.first {
442+
let executablePath = try macro.binaryPath.pathString
448443
args += ["-Xfrontend", "-load-plugin-executable", "-Xfrontend", "\(executablePath)#\(macroTarget.c99name)"]
449444
} else {
450-
throw InternalError("macro product \(macro.name) has no targets") // earlier validation should normally catch this
445+
throw InternalError("macro product \(macro.product.name) has no targets") // earlier validation should normally catch this
451446
}
452447
}
453448
#endif

Sources/Build/BuildManifest/LLBuildManifestBuilder+Swift.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ extension LLBuildManifestBuilder {
486486

487487
// Depend on any required macro product's output.
488488
try target.requiredMacroProducts.forEach { macro in
489-
try inputs.append(.virtual(macro.getLLBuildTargetName(buildParameters: target.defaultBuildParameters)))
489+
try inputs.append(.virtual(macro.getLLBuildTargetName()))
490490
}
491491

492492
return inputs + additionalInputs

Sources/Build/BuildPlan/BuildPlan+Test.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ extension BuildPlan {
107107
target: discoveryResolvedTarget,
108108
toolsVersion: toolsVersion,
109109
destinationBuildParameters: discoveryTargetBuildParameters,
110-
toolsBuildParameters: toolsBuildParameters,
111110
testTargetRole: .discovery,
112111
shouldDisableSandbox: shouldDisableSandbox,
113112
fileSystem: fileSystem,
@@ -157,7 +156,6 @@ extension BuildPlan {
157156
target: entryPointResolvedTarget,
158157
toolsVersion: toolsVersion,
159158
destinationBuildParameters: entryPointBuildParameters,
160-
toolsBuildParameters: toolsBuildParameters,
161159
testTargetRole: .entryPoint(isSynthesized: true),
162160
shouldDisableSandbox: shouldDisableSandbox,
163161
fileSystem: fileSystem,
@@ -203,7 +201,6 @@ extension BuildPlan {
203201
target: entryPointResolvedTarget,
204202
toolsVersion: toolsVersion,
205203
destinationBuildParameters: destinationBuildParameters,
206-
toolsBuildParameters: toolsBuildParameters,
207204
testTargetRole: .entryPoint(isSynthesized: false),
208205
shouldDisableSandbox: shouldDisableSandbox,
209206
fileSystem: fileSystem,
@@ -226,7 +223,6 @@ extension BuildPlan {
226223
target: entryPointResolvedTarget,
227224
toolsVersion: toolsVersion,
228225
destinationBuildParameters: destinationBuildParameters,
229-
toolsBuildParameters: toolsBuildParameters,
230226
testTargetRole: .entryPoint(isSynthesized: false),
231227
shouldDisableSandbox: shouldDisableSandbox,
232228
fileSystem: fileSystem,

Sources/Build/BuildPlan/BuildPlan.swift

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,15 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
358358

359359
let requiredMacroProducts = try target.recursiveTargetDependencies()
360360
.filter { $0.underlying.type == .macro }
361-
.compactMap { macroProductsByTarget[$0.id] }
361+
.compactMap {
362+
guard let product = macroProductsByTarget[$0.id],
363+
let description = productMap[product.id] else
364+
{
365+
throw InternalError("macro product not found for \($0)")
366+
}
367+
368+
return description.buildDescription
369+
}
362370

363371
var generateTestObservation = false
364372
if target.type == .test && shouldGenerateTestObservation {
@@ -373,7 +381,6 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
373381
toolsVersion: toolsVersion,
374382
additionalFileRules: additionalFileRules,
375383
destinationBuildParameters: buildParameters,
376-
toolsBuildParameters: toolsBuildParameters,
377384
buildToolPluginInvocationResults: buildToolPluginInvocationResults[target.id] ?? [],
378385
prebuildCommandResults: prebuildCommandResults[target.id] ?? [],
379386
requiredMacroProducts: requiredMacroProducts,

0 commit comments

Comments
 (0)