Skip to content

Commit c8d439a

Browse files
authored
Switch to ProjectModel API in the new SwiftBuildSupport PIF builder (#8441)
### Motivation: The goal is to adopt the new `SwiftBuild.ProjectModel` API. This new API provides a *typesafer* and *modern* way of building PIFs programmatically. This continues the work I started in PR #8405, introducing now our new PIF builder for packages. ### Modifications: Replaces all `SwiftBuild.PIF` (aka, `SWBProjectModel.PIF`) API usage, in `PackagePIFBuilder`, with the new `SwiftBuild.ProjectModel` API instead. ### Result: `PackagePIFBuilder` is now modernized... but still not actually used. This will come in my next pull request. Tracked by rdar://147526957.
1 parent a0fbf35 commit c8d439a

7 files changed

+1028
-766
lines changed

Diff for: Sources/SwiftBuildSupport/PIFBuilder.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -1641,7 +1641,7 @@ private struct PIFBuildSettingAssignment {
16411641
let platforms: [PIF.BuildSettings.Platform]?
16421642
}
16431643

1644-
extension BuildSettings.AssignmentTable {
1644+
extension PackageModel.BuildSettings.AssignmentTable {
16451645
fileprivate var pifAssignments: [PIF.BuildSettings.MultipleValueSetting: [PIFBuildSettingAssignment]] {
16461646
var pifAssignments: [PIF.BuildSettings.MultipleValueSetting: [PIFBuildSettingAssignment]] = [:]
16471647

@@ -1679,7 +1679,7 @@ extension BuildSettings.AssignmentTable {
16791679
}
16801680
}
16811681

1682-
extension BuildSettings.Assignment {
1682+
extension PackageModel.BuildSettings.Assignment {
16831683
fileprivate var configurations: [BuildConfiguration] {
16841684
if let configurationCondition = conditions.lazy.compactMap(\.configurationCondition).first {
16851685
[configurationCondition.configuration]
@@ -1866,7 +1866,7 @@ extension PIF.BuildSettings {
18661866
.filter { isSupportedVersion($0) }.map(\.description)
18671867
}
18681868

1869-
func computeEffectiveTargetVersion(for assignment: BuildSettings.Assignment) throws -> String {
1869+
func computeEffectiveTargetVersion(for assignment: PackageModel.BuildSettings.Assignment) throws -> String {
18701870
let versions = assignment.values.compactMap { SwiftLanguageVersion(string: $0) }
18711871
if let effectiveVersion = computeEffectiveSwiftVersions(for: versions).last {
18721872
return effectiveVersion

Diff for: Sources/SwiftBuildSupport/PackagePIFBuilder+Helpers.swift

+159-136
Large diffs are not rendered by default.

Diff for: Sources/SwiftBuildSupport/PackagePIFBuilder+Plugins.swift

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ import enum Basics.Sandbox
1818
import struct Basics.SourceControlURL
1919

2020
#if canImport(SwiftBuild)
21-
import enum SwiftBuild.PIF
2221

23-
extension PIFPackageBuilder {
22+
import enum SwiftBuild.ProjectModel
23+
24+
extension PackagePIFBuilder {
2425
/// Contains all of the information resulting from applying a build tool plugin to a package target thats affect how
2526
/// a target is built.
2627
///

Diff for: Sources/SwiftBuildSupport/PackagePIFBuilder.swift

+121-105
Large diffs are not rendered by default.

Diff for: Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Modules.swift

+250-194
Large diffs are not rendered by default.

Diff for: Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Products.swift

+329-227
Large diffs are not rendered by default.

Diff for: Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift

+163-99
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)