Skip to content

Commit 4077fd0

Browse files
authored
Merge pull request #908 from nkcsgexi/env-var-flags
Allow users to specify additional driver flags via env var
2 parents 1dbe411 + 7587944 commit 4077fd0

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

Sources/SwiftDriver/Driver/Driver.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,8 +468,12 @@ public struct Driver {
468468
if case .subcommand = try Self.invocationRunMode(forArgs: args).mode {
469469
throw Error.subcommandPassedToDriver
470470
}
471+
var args = args
472+
if let additional = env["ADDITIONAL_SWIFT_DRIVER_FLAGS"] {
473+
args.append(contentsOf: additional.components(separatedBy: " "))
474+
}
471475

472-
var args = try Self.expandResponseFiles(args, fileSystem: fileSystem, diagnosticsEngine: self.diagnosticEngine)
476+
args = try Self.expandResponseFiles(args, fileSystem: fileSystem, diagnosticsEngine: self.diagnosticEngine)
473477

474478
self.driverKind = try Self.determineDriverKind(args: &args)
475479
self.optionTable = OptionTable()

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,6 +2032,17 @@ final class SwiftDriverTests: XCTestCase {
20322032
}
20332033
}
20342034

2035+
func testADDITIONAL_SWIFT_DRIVER_FLAGS() throws {
2036+
var env = ProcessEnv.vars
2037+
env["ADDITIONAL_SWIFT_DRIVER_FLAGS"] = "-Xfrontend -unknown1 -Xfrontend -unknown2"
2038+
var driver = try Driver(args: ["swiftc", "foo.swift", "-module-name", "Test"], env: env)
2039+
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2040+
XCTAssertEqual(plannedJobs.count, 2)
2041+
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-unknown1")))
2042+
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-unknown2")))
2043+
XCTAssertTrue(plannedJobs[1].kind == .link)
2044+
}
2045+
20352046
func testBatchModeCompiles() throws {
20362047
do {
20372048
var driver1 = try Driver(args: ["swiftc", "foo1.swift", "bar1.swift", "foo2.swift", "bar2.swift", "foo3.swift", "bar3.swift", "foo4.swift", "bar4.swift", "foo5.swift", "bar5.swift", "wibble.swift", "-module-name", "Test", "-enable-batch-mode", "-driver-batch-count", "3"])

0 commit comments

Comments
 (0)