Skip to content

Commit edea61b

Browse files
authored
Merge pull request swiftlang#1312 from compnerd/windows-options
driver: honour new Windows options
2 parents 0483c3f + b863b8c commit edea61b

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed

Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
import SwiftOptions
14+
1315
import class TSCBasic.LocalFileOutputByteStream
1416
import class TSCBasic.TerminalController
1517
import struct TSCBasic.RelativePath
@@ -138,6 +140,23 @@ extension Driver {
138140
commandLine.append(.path(VirtualPath.lookup(sdkPath)))
139141
}
140142

143+
for args: (Option, Option) in [
144+
(.visualcToolsRoot, .visualcToolsVersion),
145+
(.windowsSdkRoot, .windowsSdkVersion)
146+
] {
147+
let (rootArg, versionArg) = args
148+
if let value = parsedOptions.getLastArgument(rootArg)?.asSingle,
149+
isFrontendArgSupported(rootArg) {
150+
commandLine.appendFlag(rootArg.spelling)
151+
commandLine.appendPath(.init(value))
152+
}
153+
154+
if let value = parsedOptions.getLastArgument(versionArg)?.asSingle,
155+
isFrontendArgSupported(versionArg) {
156+
commandLine.appendFlags(versionArg.spelling, value)
157+
}
158+
}
159+
141160
try commandLine.appendAll(.I, from: &parsedOptions)
142161
try commandLine.appendAll(.F, .Fsystem, from: &parsedOptions)
143162
try commandLine.appendAll(.vfsoverlay, from: &parsedOptions)

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6844,6 +6844,99 @@ final class SwiftDriverTests: XCTestCase {
68446844
}
68456845
}
68466846
}
6847+
6848+
func testWindowsOptions() throws {
6849+
let driver =
6850+
try Driver(args: ["swiftc", "-windows-sdk-version", "10.0.17763.0", #file])
6851+
guard [
6852+
.visualcToolsRoot,
6853+
.visualcToolsVersion,
6854+
.windowsSdkRoot,
6855+
.windowsSdkVersion
6856+
].map(driver.isFrontendArgSupported).reduce(true, { $0 && $1 }) else {
6857+
return
6858+
}
6859+
6860+
do {
6861+
var driver = try Driver(args: [
6862+
"swiftc", "-target", "x86_64-unknown-windows-msvc", "-windows-sdk-root", "/SDK", #file
6863+
])
6864+
let frontend = try driver.planBuild().first!
6865+
6866+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6867+
.flag("-windows-sdk-root"),
6868+
.path(.absolute(.init("/SDK")))
6869+
]))
6870+
}
6871+
6872+
do {
6873+
var driver = try Driver(args: [
6874+
"swiftc", "-target", "x86_64-unknown-windows-msvc", "-windows-sdk-version", "10.0.17763.0", #file
6875+
])
6876+
let frontend = try driver.planBuild().first!
6877+
6878+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6879+
.flag("-windows-sdk-version"),
6880+
.flag("10.0.17763.0")
6881+
]))
6882+
}
6883+
6884+
do {
6885+
var driver = try Driver(args: [
6886+
"swiftc", "-target", "x86_64-unknown-windows-msvc", "-windows-sdk-version", "10.0.17763.0", "-windows-sdk-root", "/SDK", #file
6887+
])
6888+
let frontend = try driver.planBuild().first!
6889+
6890+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6891+
.flag("-windows-sdk-root"),
6892+
.path(.absolute(.init("/SDK")))
6893+
]))
6894+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6895+
.flag("-windows-sdk-version"),
6896+
.flag("10.0.17763.0")
6897+
]))
6898+
}
6899+
6900+
do {
6901+
var driver = try Driver(args: [
6902+
"swiftc", "-target", "x86_64-unknown-windows-msvc", "-visualc-tools-root", "/MSVC/14.34.31933", #file
6903+
])
6904+
let frontend = try driver.planBuild().first!
6905+
6906+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6907+
.flag("-visualc-tools-root"),
6908+
.path(.absolute(.init("/MSVC/14.34.31933"))),
6909+
]))
6910+
}
6911+
6912+
do {
6913+
var driver = try Driver(args: [
6914+
"swiftc", "-target", "x86_64-unknown-windows-msvc", "-visualc-tools-version", "14.34.31933", #file
6915+
])
6916+
let frontend = try driver.planBuild().first!
6917+
6918+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6919+
.flag("-visualc-tools-version"),
6920+
.flag("14.34.31933")
6921+
]))
6922+
}
6923+
6924+
do {
6925+
var driver = try Driver(args: [
6926+
"swiftc", "-target", "x86_64-unknown-windows-msvc", "-visualc-tools-root", "/MSVC", "-visualc-tools-version", "14.34.31933", #file
6927+
])
6928+
let frontend = try driver.planBuild().first!
6929+
6930+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6931+
.flag("-visualc-tools-version"),
6932+
.flag("14.34.31933")
6933+
]))
6934+
XCTAssertTrue(frontend.commandLine.contains(subsequence: [
6935+
.flag("-visualc-tools-root"),
6936+
.path(.absolute(.init("/MSVC"))),
6937+
]))
6938+
}
6939+
}
68476940
}
68486941

68496942
func assertString(

0 commit comments

Comments
 (0)