Skip to content

Commit 2aeeb0c

Browse files
authored
Merge pull request #838 from xymus/pass-sdk-name
Pass the canonical SDK name to the frontend for swiftmodule checking
2 parents 94ce9d1 + 3cd0070 commit 2aeeb0c

File tree

4 files changed

+26
-4
lines changed

4 files changed

+26
-4
lines changed

Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,8 @@ extension Driver {
291291

292292
try toolchain.addPlatformSpecificCommonFrontendOptions(commandLine: &commandLine,
293293
inputs: &inputs,
294-
frontendTargetInfo: frontendTargetInfo)
294+
frontendTargetInfo: frontendTargetInfo,
295+
driver: self)
295296
}
296297

297298
mutating func addFrontendSupplementaryOutputArguments(commandLine: inout [Job.ArgTemplate],

Sources/SwiftDriver/Toolchains/DarwinToolchain.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@ public final class DarwinToolchain: Toolchain {
339339
public func addPlatformSpecificCommonFrontendOptions(
340340
commandLine: inout [Job.ArgTemplate],
341341
inputs: inout [TypedVirtualPath],
342-
frontendTargetInfo: FrontendTargetInfo
342+
frontendTargetInfo: FrontendTargetInfo,
343+
driver: Driver
343344
) throws {
344345
guard let sdkPath = frontendTargetInfo.sdkPath?.path,
345346
let sdkInfo = getTargetSDKInfo(sdkPath: sdkPath) else { return }
@@ -351,6 +352,12 @@ public final class DarwinToolchain: Toolchain {
351352
commandLine.append(.flag("-target-variant-sdk-version"))
352353
commandLine.append(.flag(sdkInfo.sdkVersion(for: targetVariantTriple).description))
353354
}
355+
356+
if driver.isFrontendArgSupported(.targetSdkName) {
357+
commandLine.append(.flag(Option.targetSdkName.spelling))
358+
commandLine.append(.flag(sdkInfo.canonicalName))
359+
}
360+
354361
// We should be able to pass down prebuilt module dir for all other SDKs.
355362
// For macCatalyst, doing so is specifically necessary because -target-sdk-version
356363
// doesn't always match the macosx sdk version so the compiler may fail to find

Sources/SwiftDriver/Toolchains/Toolchain.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ public protocol Toolchain {
9696
func addPlatformSpecificCommonFrontendOptions(
9797
commandLine: inout [Job.ArgTemplate],
9898
inputs: inout [TypedVirtualPath],
99-
frontendTargetInfo: FrontendTargetInfo
99+
frontendTargetInfo: FrontendTargetInfo,
100+
driver: Driver
100101
) throws
101102

102103
var dummyForTestingObjectFormat: Triple.ObjectFormat {get}
@@ -220,7 +221,8 @@ extension Toolchain {
220221
public func addPlatformSpecificCommonFrontendOptions(
221222
commandLine: inout [Job.ArgTemplate],
222223
inputs: inout [TypedVirtualPath],
223-
frontendTargetInfo: FrontendTargetInfo
224+
frontendTargetInfo: FrontendTargetInfo,
225+
driver: Driver
224226
) throws {}
225227
}
226228

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3091,6 +3091,12 @@ final class SwiftDriverTests: XCTestCase {
30913091
.flag("-target-sdk-version"),
30923092
.flag("10.15.0")
30933093
]))
3094+
if driver.isFrontendArgSupported(.targetSdkName) {
3095+
XCTAssertTrue(frontendJobs[0].commandLine.contains(subsequence: [
3096+
.flag("-target-sdk-name"),
3097+
.flag("macosx10.15"),
3098+
]))
3099+
}
30943100
XCTAssertEqual(frontendJobs[1].kind, .link)
30953101
XCTAssertTrue(frontendJobs[1].commandLine.contains(subsequence: [
30963102
.flag("-platform_version"),
@@ -3141,6 +3147,12 @@ final class SwiftDriverTests: XCTestCase {
31413147
.flag("-target-variant-sdk-version"),
31423148
.flag("13.4.0")
31433149
]))
3150+
if driver.isFrontendArgSupported(.targetSdkName) {
3151+
XCTAssertTrue(frontendJobs[0].commandLine.contains(subsequence: [
3152+
.flag("-target-sdk-name"),
3153+
.flag("macosx10.15.4"),
3154+
]))
3155+
}
31443156
XCTAssertEqual(frontendJobs[1].kind, .link)
31453157
XCTAssertTrue(frontendJobs[1].commandLine.contains(subsequence: [
31463158
.flag("-platform_version"),

0 commit comments

Comments
 (0)