Skip to content

Commit 63688ac

Browse files
committed
Simplify some code by introducing an enum for SDK platform kind. NFC
1 parent 54450a7 commit 63688ac

File tree

2 files changed

+23
-22
lines changed

2 files changed

+23
-22
lines changed

Sources/SwiftDriver/Jobs/PrebuiltModulesJob.swift

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -233,35 +233,22 @@ public struct SDKPrebuiltModuleInputsCollector {
233233

234234
// Returns a target triple that's proper to use with the given SDK path.
235235
public var targetTriple: String {
236-
let canonicalName = sdkInfo.canonicalName
237-
func extractVersion(_ platform: String) -> Substring? {
238-
if canonicalName.starts(with: platform) {
239-
let versionStartIndex = canonicalName.index(canonicalName.startIndex,
240-
offsetBy: platform.count)
241-
let delimiterRange = canonicalName.range(of: "internal", options: .backwards)
242-
let versionEndIndex = delimiterRange == nil ? canonicalName.endIndex : delimiterRange!.lowerBound
243-
return canonicalName[versionStartIndex..<versionEndIndex]
244-
}
245-
return nil
246-
}
247-
248-
if let version = extractVersion("macosx") {
236+
let version = sdkInfo.versionString
237+
switch sdkInfo.platformKind {
238+
case .macosx:
249239
return "arm64-apple-macosx\(version)"
250-
} else if let version = extractVersion("iphoneos") {
240+
case .iphoneos:
251241
return "arm64-apple-ios\(version)"
252-
} else if let version = extractVersion("iphonesimulator") {
242+
case .iphonesimulator:
253243
return "arm64-apple-ios\(version)-simulator"
254-
} else if let version = extractVersion("watchos") {
244+
case .watchos:
255245
return "armv7k-apple-watchos\(version)"
256-
} else if let version = extractVersion("watchsimulator") {
246+
case .watchsimulator:
257247
return "arm64-apple-watchos\(version)-simulator"
258-
} else if let version = extractVersion("appletvos") {
248+
case .appletvos:
259249
return "arm64-apple-tvos\(version)"
260-
} else if let version = extractVersion("appletvsimulator") {
250+
case .appletvsimulator:
261251
return "arm64-apple-tvos\(version)-simulator"
262-
} else {
263-
diagEngine.emit(error: "unhandled platform name: \(canonicalName)")
264-
return ""
265252
}
266253
}
267254

Sources/SwiftDriver/Toolchains/DarwinToolchain.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,16 @@ public final class DarwinToolchain: Toolchain {
240240
case canonicalName = "CanonicalName"
241241
}
242242

243+
public enum SDKPlatformKind: String {
244+
case macosx
245+
case iphoneos
246+
case iphonesimulator
247+
case watchos
248+
case watchsimulator
249+
case appletvos
250+
case appletvsimulator
251+
}
252+
243253
struct VersionMap: Decodable {
244254
private enum CodingKeys: String, CodingKey {
245255
case macOSToCatalystMapping = "macOS_iOSMac"
@@ -269,6 +279,7 @@ public final class DarwinToolchain: Toolchain {
269279
}
270280
}
271281
public let versionString: String
282+
public let platformKind: SDKPlatformKind
272283
private var version: Version
273284
private var versionMap: VersionMap
274285
let canonicalName: String
@@ -277,6 +288,8 @@ public final class DarwinToolchain: Toolchain {
277288

278289
self.versionString = try keyedContainer.decode(String.self, forKey: .version)
279290
self.canonicalName = try keyedContainer.decode(String.self, forKey: .canonicalName)
291+
assert(canonicalName.hasSuffix(versionString))
292+
self.platformKind = SDKPlatformKind(rawValue: String(canonicalName.prefix(canonicalName.count - versionString.count)))!
280293
guard let version = try? Version(versionString: versionString, usesLenientParsing: true) else {
281294
throw DecodingError.dataCorruptedError(forKey: .version,
282295
in: keyedContainer,
@@ -290,6 +303,7 @@ public final class DarwinToolchain: Toolchain {
290303
}
291304
}
292305

306+
293307
func sdkVersion(for triple: Triple) -> Version {
294308
if triple.isMacCatalyst {
295309
// For the Mac Catalyst environment, we have a macOS SDK with a macOS

0 commit comments

Comments
 (0)