Skip to content

Commit 8887842

Browse files
committed
Drop unknown platforms when generating PIF
1 parent d7465ef commit 8887842

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

Sources/SwiftBuildSupport/PackagePIFBuilder+Helpers.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ extension Sequence<PackageModel.PackageCondition> {
234234
}
235235

236236
var pifPlatformsForCondition: [ProjectModel.BuildSettings.Platform] = platforms
237-
.map { ProjectModel.BuildSettings.Platform(from: $0) }
237+
.compactMap { try? ProjectModel.BuildSettings.Platform(from: $0) }
238238

239239
// Treat catalyst like macOS for backwards compatibility with older tools versions.
240240
if pifPlatformsForCondition.contains(.macOS), toolsVersion < ToolsVersion.v5_5 {
@@ -565,7 +565,9 @@ extension PackageGraph.ResolvedModule {
565565
let (platforms, configurations, _) = settingAssignment.conditions.splitIntoConcreteConditions
566566

567567
for platform in platforms {
568-
let pifPlatform = platform.map { ProjectModel.BuildSettings.Platform(from: $0) }
568+
guard let pifPlatform = platform.map({ try? ProjectModel.BuildSettings.Platform(from: $0) }) else {
569+
continue
570+
}
569571

570572
if pifDeclaration == .OTHER_LDFLAGS {
571573
var settingsByDeclaration: [ProjectModel.BuildSettings.Declaration: [String]]
@@ -962,7 +964,11 @@ extension ProjectModel.BuildSettings.MultipleValueSetting {
962964
}
963965

964966
extension ProjectModel.BuildSettings.Platform {
965-
init(from platform: PackageModel.Platform) {
967+
enum Error: Swift.Error {
968+
case unknownPlatform(String)
969+
}
970+
971+
init(from platform: PackageModel.Platform) throws {
966972
self = switch platform {
967973
case .macOS: .macOS
968974
case .macCatalyst: .macCatalyst
@@ -977,7 +983,7 @@ extension ProjectModel.BuildSettings.Platform {
977983
case .wasi: .wasi
978984
case .openbsd: .openbsd
979985
case .freebsd: .freebsd
980-
default: preconditionFailure("Unexpected platform: \(platform.name)")
986+
default: throw Error.unknownPlatform(platform.name)
981987
}
982988
}
983989
}

Sources/SwiftBuildSupport/PackagePIFBuilder.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,9 @@ public final class PackagePIFBuilder {
562562
self.delegate.configureProjectBuildSettings(&settings)
563563

564564
for (platform, platformOptions) in self.package.sdkOptions(delegate: self.delegate) {
565-
let pifPlatform = ProjectModel.BuildSettings.Platform(from: platform)
565+
guard let pifPlatform = try? ProjectModel.BuildSettings.Platform(from: platform) else {
566+
continue
567+
}
566568
settings.platformSpecificSettings[pifPlatform]![.SPECIALIZATION_SDK_OPTIONS]!
567569
.append(contentsOf: platformOptions)
568570
}
@@ -584,11 +586,11 @@ public final class PackagePIFBuilder {
584586
let arm64ePlatforms: [PackageModel.Platform] = [.iOS, .macOS, .visionOS]
585587
for arm64ePlatform in arm64ePlatforms {
586588
if self.delegate.shouldPackagesBuildForARM64e(platform: arm64ePlatform) {
587-
let pifPlatform: ProjectModel.BuildSettings.Platform = switch arm64ePlatform {
588-
case .iOS:
589-
._iOSDevice
590-
default:
591-
.init(from: arm64ePlatform)
589+
let pifPlatform: ProjectModel.BuildSettings.Platform
590+
do {
591+
pifPlatform = try .init(from: arm64ePlatform)
592+
} catch {
593+
preconditionFailure("Unhandled arm64e platform: \(error)")
592594
}
593595
settings.platformSpecificSettings[pifPlatform]![.ARCHS, default: []].append(contentsOf: ["arm64e"])
594596
}

0 commit comments

Comments
 (0)