Skip to content

Commit 17a1f92

Browse files
authored
Merge pull request #790 from xymus/cleanup-emit-module
Cleanup to prepare for emit-module-separately by default
2 parents 3f23cee + cc8954e commit 17a1f92

File tree

4 files changed

+96
-64
lines changed

4 files changed

+96
-64
lines changed

Sources/SwiftDriver/Jobs/EmitModuleJob.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,15 @@ extension Driver {
3333
addSupplementalOutput(path: objcGeneratedHeaderPath, flag: "-emit-objc-header-path", type: .objcHeader)
3434
addSupplementalOutput(path: tbdPath, flag: "-emit-tbd-path", type: .tbd)
3535

36-
if isMergeModule || shouldCreateEmitModuleJob {
36+
if isMergeModule {
3737
return
3838
}
39+
40+
// Skip files created by other jobs when emitting a module and building at the same time
41+
if shouldCreateEmitModuleJob && compilerOutputType != .swiftModule {
42+
return
43+
}
44+
3945
// Add outputs that can't be merged
4046
addSupplementalOutput(path: serializedDiagnosticsFilePath, flag: "-serialize-diagnostics-path", type: .diagnostics)
4147
if let dependenciesFilePath = dependenciesFilePath {

Sources/SwiftDriver/Jobs/Planning.swift

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,6 @@ extension Driver {
141141

142142
try addPrecompileModuleDependenciesJobs(addJob: addJobBeforeCompiles)
143143
try addPrecompileBridgingHeaderJob(addJob: addJobBeforeCompiles)
144-
try addEmitModuleJob(addJobBeforeCompiles: addJobBeforeCompiles,
145-
addJobAfterCompiles: addJobAfterCompiles)
146144
let linkerInputs = try addJobsFeedingLinker(
147145
addJobBeforeCompiles: addJobBeforeCompiles,
148146
addCompileJobGroup: addCompileJobGroup,
@@ -179,12 +177,13 @@ extension Driver {
179177
)
180178
}
181179

182-
private mutating func addEmitModuleJob(addJobBeforeCompiles: (Job) -> Void, addJobAfterCompiles: (Job) -> Void) throws {
180+
private mutating func addEmitModuleJob(addJobBeforeCompiles: (Job) -> Void) throws -> Job? {
183181
if shouldCreateEmitModuleJob {
184182
let emitJob = try emitModuleJob()
185183
addJobBeforeCompiles(emitJob)
186-
try addVerifyJobs(emitModuleJob: emitJob, addJob: addJobAfterCompiles)
184+
return emitJob
187185
}
186+
return nil
188187
}
189188

190189
private mutating func addJobsFeedingLinker(
@@ -219,10 +218,32 @@ extension Driver {
219218
}
220219
}
221220

221+
// Ensure that only one job emits the module files and insert a verify swiftinterface job
222+
var jobCreatingSwiftModule: Job? = nil
223+
func addPostModuleFilesJobs(_ emitModuleJob: Job) throws {
224+
// We should only emit module files from one job
225+
assert(jobCreatingSwiftModule == nil)
226+
jobCreatingSwiftModule = emitModuleJob
227+
228+
try addVerifyJobs(emitModuleJob: emitModuleJob, addJob: addJobAfterCompiles)
229+
}
230+
231+
// Whole-module
222232
if let compileJob = try addSingleCompileJobs(addJob: addJobBeforeCompiles,
223233
addJobOutputs: addJobOutputs,
224234
emitModuleTrace: loadedModuleTracePath != nil) {
225-
try addVerifyJobs(emitModuleJob: compileJob, addJob: addJobAfterCompiles)
235+
try addPostModuleFilesJobs(compileJob)
236+
}
237+
238+
// Emit-module-separately
239+
if let emitModuleJob = try addEmitModuleJob(addJobBeforeCompiles: addJobBeforeCompiles) {
240+
try addPostModuleFilesJobs(emitModuleJob)
241+
242+
try addWrapJobOrMergeOutputs(
243+
mergeJob: emitModuleJob,
244+
debugInfo: debugInfo,
245+
addJob: addJobAfterCompiles,
246+
addLinkerInput: addLinkerInput)
226247
}
227248

228249
try addJobsForPrimaryInputs(
@@ -235,11 +256,13 @@ extension Driver {
235256
addLinkerInput: addLinkerInput,
236257
addJob: addJobAfterCompiles)
237258

259+
// Merge-module
238260
if let mergeJob = try mergeModuleJob(
239261
moduleInputs: moduleInputs,
240262
moduleInputsFromJobOutputs: moduleInputsFromJobOutputs) {
241263
addJobAfterCompiles(mergeJob)
242-
try addVerifyJobs(emitModuleJob: mergeJob, addJob: addJobAfterCompiles)
264+
try addPostModuleFilesJobs(mergeJob)
265+
243266
try addWrapJobOrMergeOutputs(
244267
mergeJob: mergeJob,
245268
debugInfo: debugInfo,
@@ -394,7 +417,8 @@ extension Driver {
394417
) throws -> Job? {
395418
guard moduleOutputInfo.output != nil,
396419
!(moduleInputs.isEmpty && moduleInputsFromJobOutputs.isEmpty),
397-
compilerMode.usesPrimaryFileInputs
420+
compilerMode.usesPrimaryFileInputs,
421+
!shouldCreateEmitModuleJob
398422
else { return nil }
399423
return try mergeModuleJob(inputs: moduleInputs, inputsFromOutputs: moduleInputsFromJobOutputs)
400424
}

Tests/SwiftDriverTests/ParsableMessageTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ final class ParsableMessageTests: XCTestCase {
123123
try withTemporaryDirectory { path in
124124
try withHijackedBufferedErrorStream(in: path) { errorBuffer in
125125
let resolver = try ArgsResolver(fileSystem: localFileSystem)
126-
var driver = try Driver(args: ["swiftc", "-emit-module", "-o", "test.swiftmodule",
126+
var driver = try Driver(args: ["swiftc", "-o", "test.o",
127127
"main.swift", "test1.swift", "test2.swift",
128128
"-enable-batch-mode", "-driver-batch-count", "1",
129129
"-working-directory", "/WorkDir"])
@@ -201,7 +201,7 @@ final class ParsableMessageTests: XCTestCase {
201201
var toolDelegate: ToolExecutionDelegate?
202202
try withHijackedBufferedErrorStream(in: path) { errorBuffer in
203203
let resolver = try ArgsResolver(fileSystem: localFileSystem)
204-
var driver = try Driver(args: ["swiftc", "-emit-module", "-o", "test.swiftmodule",
204+
var driver = try Driver(args: ["swiftc", "-o", "test.o",
205205
"main.swift", "test1.swift", "test2.swift",
206206
"-enable-batch-mode", "-driver-batch-count", "1",
207207
"-working-directory", "/WorkDir"])
@@ -278,7 +278,7 @@ final class ParsableMessageTests: XCTestCase {
278278
var toolDelegate: ToolExecutionDelegate?
279279
try withHijackedBufferedErrorStream(in: path) { errorBuffer in
280280
let resolver = try ArgsResolver(fileSystem: localFileSystem)
281-
var driver = try Driver(args: ["swiftc", "-emit-module", "-o", "test.swiftmodule",
281+
var driver = try Driver(args: ["swiftc", "-o", "test.o",
282282
"main.swift", "test1.swift", "test2.swift",
283283
"-enable-batch-mode", "-driver-batch-count", "1",
284284
"-working-directory", "/WorkDir"])

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -514,14 +514,15 @@ final class SwiftDriverTests: XCTestCase {
514514
// Forwarding of arguments.
515515
var driver2 = try Driver(args: ["swiftc", "-color-diagnostics", "foo.swift", "bar.swift", "-working-directory", "/tmp", "-api-diff-data-file", "diff.txt", "-Xfrontend", "-HI", "-no-color-diagnostics", "-g"])
516516
let plannedJobs2 = try driver2.planBuild()
517-
XCTAssert(plannedJobs2[0].commandLine.contains(Job.ArgTemplate.path(.absolute(try AbsolutePath(validating: "/tmp/diff.txt")))))
518-
XCTAssert(plannedJobs2[0].commandLine.contains(.flag("-HI")))
519-
XCTAssert(!plannedJobs2[0].commandLine.contains(.flag("-Xfrontend")))
520-
XCTAssert(plannedJobs2[0].commandLine.contains(.flag("-no-color-diagnostics")))
521-
XCTAssert(!plannedJobs2[0].commandLine.contains(.flag("-color-diagnostics")))
522-
XCTAssert(plannedJobs2[0].commandLine.contains(.flag("-target")))
523-
XCTAssert(plannedJobs2[0].commandLine.contains(.flag(driver2.targetTriple.triple)))
524-
XCTAssert(plannedJobs2[0].commandLine.contains(.flag("-enable-anonymous-context-mangled-names")))
517+
let compileJob = plannedJobs2.first(where: {$0.kind == .compile})!
518+
XCTAssert(compileJob.commandLine.contains(Job.ArgTemplate.path(.absolute(try AbsolutePath(validating: "/tmp/diff.txt")))))
519+
XCTAssert(compileJob.commandLine.contains(.flag("-HI")))
520+
XCTAssert(!compileJob.commandLine.contains(.flag("-Xfrontend")))
521+
XCTAssert(compileJob.commandLine.contains(.flag("-no-color-diagnostics")))
522+
XCTAssert(!compileJob.commandLine.contains(.flag("-color-diagnostics")))
523+
XCTAssert(compileJob.commandLine.contains(.flag("-target")))
524+
XCTAssert(compileJob.commandLine.contains(.flag(driver2.targetTriple.triple)))
525+
XCTAssert(compileJob.commandLine.contains(.flag("-enable-anonymous-context-mangled-names")))
525526

526527
var driver3 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-emit-library", "-module-name", "Test"])
527528
let plannedJobs3 = try driver3.planBuild()
@@ -757,7 +758,7 @@ final class SwiftDriverTests: XCTestCase {
757758
}
758759

759760
func testMergeModuleEmittingDependencies() throws {
760-
var driver1 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Foo", "-emit-dependencies", "-emit-module", "-serialize-diagnostics", "-driver-filelist-threshold=9999"])
761+
var driver1 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Foo", "-emit-dependencies", "-emit-module", "-serialize-diagnostics", "-driver-filelist-threshold=9999", "-no-emit-module-separately"])
761762
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
762763
XCTAssertTrue(plannedJobs[0].kind == .compile)
763764
XCTAssertTrue(plannedJobs[1].kind == .compile)
@@ -770,6 +771,15 @@ final class SwiftDriverTests: XCTestCase {
770771
XCTAssertFalse(plannedJobs[2].commandLine.contains(.flag("-serialize-diagnostics-path")))
771772
}
772773

774+
func testEmitModuleEmittingDependencies() throws {
775+
var driver1 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Foo", "-emit-dependencies", "-emit-module", "-serialize-diagnostics", "-driver-filelist-threshold=9999", "-experimental-emit-module-separately"])
776+
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
777+
XCTAssertEqual(plannedJobs.count, 1)
778+
XCTAssertTrue(plannedJobs[0].kind == .emitModule)
779+
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-dependencies-path")))
780+
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-serialize-diagnostics-path")))
781+
}
782+
773783
func testReferenceDependencies() throws {
774784
var driver = try Driver(args: ["swiftc", "foo.swift", "-incremental"])
775785
let plannedJobs = try driver.planBuild()
@@ -2112,7 +2122,7 @@ final class SwiftDriverTests: XCTestCase {
21122122

21132123
func testMergeModulesOnly() throws {
21142124
do {
2115-
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module", "-disable-bridging-pch", "-import-objc-header", "TestInputHeader.h", "-emit-dependencies", "-emit-module-source-info-path", "/foo/bar/Test.swiftsourceinfo"])
2125+
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module", "-disable-bridging-pch", "-import-objc-header", "TestInputHeader.h", "-emit-dependencies", "-emit-module-source-info-path", "/foo/bar/Test.swiftsourceinfo", "-no-emit-module-separately"])
21162126
let plannedJobs = try driver.planBuild()
21172127
XCTAssertEqual(plannedJobs.count, 3)
21182128
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .mergeModule]))
@@ -2140,7 +2150,7 @@ final class SwiftDriverTests: XCTestCase {
21402150
}
21412151

21422152
do {
2143-
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule" ])
2153+
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule", "-no-emit-module-separately"])
21442154
let plannedJobs = try driver.planBuild()
21452155
XCTAssertEqual(plannedJobs.count, 3)
21462156
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
@@ -2152,7 +2162,7 @@ final class SwiftDriverTests: XCTestCase {
21522162

21532163
do {
21542164
// Make sure the swiftdoc path is correct for a relative module
2155-
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "Test.swiftmodule" ])
2165+
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "Test.swiftmodule", "-no-emit-module-separately"])
21562166
let plannedJobs = try driver.planBuild()
21572167
XCTAssertEqual(plannedJobs.count, 3)
21582168
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
@@ -2164,7 +2174,7 @@ final class SwiftDriverTests: XCTestCase {
21642174

21652175
do {
21662176
// Make sure the swiftdoc path is correct for an inferred module
2167-
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module"])
2177+
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module", "-no-emit-module-separately"])
21682178
let plannedJobs = try driver.planBuild()
21692179
XCTAssertEqual(plannedJobs.count, 3)
21702180
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
@@ -2176,7 +2186,7 @@ final class SwiftDriverTests: XCTestCase {
21762186

21772187
do {
21782188
// -o specified
2179-
var driver = try Driver(args: ["swiftc", "-emit-module", "-o", "/tmp/test.swiftmodule", "input.swift"])
2189+
var driver = try Driver(args: ["swiftc", "-emit-module", "-o", "/tmp/test.swiftmodule", "input.swift", "-no-emit-module-separately"])
21802190
let plannedJobs = try driver.planBuild()
21812191

21822192
XCTAssertEqual(plannedJobs.count, 2)
@@ -3370,7 +3380,7 @@ final class SwiftDriverTests: XCTestCase {
33703380
// Reset the temporary store to ensure predictable results.
33713381
VirtualPath.resetTemporaryFileStore()
33723382
var driver = try Driver(args: [
3373-
"swiftc", "-emit-executable", "test.swift", "-emit-module", "-avoid-emit-module-source-info"
3383+
"swiftc", "-emit-executable", "test.swift", "-emit-module", "-avoid-emit-module-source-info", "-experimental-emit-module-separately"
33743384
])
33753385
let plannedJobs = try driver.planBuild()
33763386

@@ -3383,25 +3393,21 @@ final class SwiftDriverTests: XCTestCase {
33833393
XCTAssertEqual(output,
33843394
"""
33853395
digraph Jobs {
3386-
"compile (swift-frontend)" [style=bold];
3396+
"emitModule (swift-frontend)" [style=bold];
33873397
"test.swift" [fontsize=12];
3398+
"test.swift" -> "emitModule (swift-frontend)" [color=blue];
3399+
"test.swiftmodule" [fontsize=12];
3400+
"emitModule (swift-frontend)" -> "test.swiftmodule" [color=green];
3401+
"test.swiftdoc" [fontsize=12];
3402+
"emitModule (swift-frontend)" -> "test.swiftdoc" [color=green];
3403+
"compile (swift-frontend)" [style=bold];
33883404
"test.swift" -> "compile (swift-frontend)" [color=blue];
33893405
"test-1.o" [fontsize=12];
33903406
"compile (swift-frontend)" -> "test-1.o" [color=green];
3391-
"test-1.swiftmodule" [fontsize=12];
3392-
"compile (swift-frontend)" -> "test-1.swiftmodule" [color=green];
3393-
"test-1.swiftdoc" [fontsize=12];
3394-
"compile (swift-frontend)" -> "test-1.swiftdoc" [color=green];
33953407
"autolinkExtract (swift-autolink-extract)" [style=bold];
33963408
"test-1.o" -> "autolinkExtract (swift-autolink-extract)" [color=blue];
33973409
"test-2.autolink" [fontsize=12];
33983410
"autolinkExtract (swift-autolink-extract)" -> "test-2.autolink" [color=green];
3399-
"mergeModule (swift-frontend)" [style=bold];
3400-
"test-1.swiftmodule" -> "mergeModule (swift-frontend)" [color=blue];
3401-
"test.swiftmodule" [fontsize=12];
3402-
"mergeModule (swift-frontend)" -> "test.swiftmodule" [color=green];
3403-
"test.swiftdoc" [fontsize=12];
3404-
"mergeModule (swift-frontend)" -> "test.swiftdoc" [color=green];
34053411
"link (clang)" [style=bold];
34063412
"test-1.o" -> "link (clang)" [color=blue];
34073413
"test-2.autolink" -> "link (clang)" [color=blue];
@@ -3414,21 +3420,17 @@ final class SwiftDriverTests: XCTestCase {
34143420
XCTAssertEqual(output,
34153421
"""
34163422
digraph Jobs {
3417-
"compile (swift-frontend)" [style=bold];
3423+
"emitModule (swift-frontend)" [style=bold];
34183424
"test.swift" [fontsize=12];
3425+
"test.swift" -> "emitModule (swift-frontend)" [color=blue];
3426+
"test.swiftmodule" [fontsize=12];
3427+
"emitModule (swift-frontend)" -> "test.swiftmodule" [color=green];
3428+
"test.swiftdoc" [fontsize=12];
3429+
"emitModule (swift-frontend)" -> "test.swiftdoc" [color=green];
3430+
"compile (swift-frontend)" [style=bold];
34193431
"test.swift" -> "compile (swift-frontend)" [color=blue];
34203432
"test-1.o" [fontsize=12];
34213433
"compile (swift-frontend)" -> "test-1.o" [color=green];
3422-
"test-1.swiftmodule" [fontsize=12];
3423-
"compile (swift-frontend)" -> "test-1.swiftmodule" [color=green];
3424-
"test-1.swiftdoc" [fontsize=12];
3425-
"compile (swift-frontend)" -> "test-1.swiftdoc" [color=green];
3426-
"mergeModule (swift-frontend)" [style=bold];
3427-
"test-1.swiftmodule" -> "mergeModule (swift-frontend)" [color=blue];
3428-
"test.swiftmodule" [fontsize=12];
3429-
"mergeModule (swift-frontend)" -> "test.swiftmodule" [color=green];
3430-
"test.swiftdoc" [fontsize=12];
3431-
"mergeModule (swift-frontend)" -> "test.swiftdoc" [color=green];
34323434
"link (\(dynamicLinker))" [style=bold];
34333435
"test-1.o" -> "link (\(dynamicLinker))" [color=blue];
34343436
"test" [fontsize=12];
@@ -4269,7 +4271,7 @@ final class SwiftDriverTests: XCTestCase {
42694271

42704272
// Ensure the merge-module step is not passed the precompiled header
42714273
do {
4272-
var driver = try Driver(args: ["swiftc", "-emit-module", "-import-objc-header", "header.h", "foo.swift"])
4274+
var driver = try Driver(args: ["swiftc", "-emit-module", "-import-objc-header", "header.h", "foo.swift", "-no-emit-module-separately"])
42734275
let plannedJobs = try driver.planBuild()
42744276
XCTAssertEqual(plannedJobs.count, 3)
42754277

@@ -4409,20 +4411,20 @@ final class SwiftDriverTests: XCTestCase {
44094411
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
44104412
XCTAssertEqual(plannedJobs.count, 3)
44114413

4412-
XCTAssertEqual(plannedJobs[0].kind, .compile)
4413-
XCTAssertEqual(plannedJobs[0].inputs.count, 1)
4414-
XCTAssertEqual(plannedJobs[0].inputs[0].file, .relative(RelativePath("embed-bitcode.swift")))
4415-
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
4416-
XCTAssertTrue(matchTemporary(plannedJobs[0].outputs[0].file, "embed-bitcode.bc"))
4417-
XCTAssertTrue(matchTemporary(plannedJobs[0].outputs[1].file, "embed-bitcode.swiftmodule"))
4418-
XCTAssertTrue(matchTemporary(plannedJobs[0].outputs[2].file, "embed-bitcode.swiftdoc"))
4419-
XCTAssertTrue(matchTemporary(plannedJobs[0].outputs[3].file, "embed-bitcode.swiftsourceinfo"))
4420-
4421-
XCTAssertEqual(plannedJobs[1].kind, .backend)
4422-
XCTAssertEqual(plannedJobs[1].inputs.count, 1)
4423-
XCTAssertTrue(matchTemporary(plannedJobs[1].inputs[0].file, "embed-bitcode.bc"))
4424-
XCTAssertEqual(plannedJobs[1].outputs.count, 1)
4425-
XCTAssertEqual(plannedJobs[1].outputs[0].file, .relative(RelativePath("embed-bitcode.o")))
4414+
let compileJob = plannedJobs.first(where: {$0.kind == .compile})!
4415+
XCTAssertEqual(compileJob.inputs.count, 1)
4416+
XCTAssertEqual(compileJob.inputs[0].file, .relative(RelativePath("embed-bitcode.swift")))
4417+
XCTAssertEqual(compileJob.outputs.count, 4)
4418+
XCTAssertTrue(matchTemporary(compileJob.outputs[0].file, "embed-bitcode.bc"))
4419+
XCTAssertTrue(matchTemporary(compileJob.outputs[1].file, "embed-bitcode.swiftmodule"))
4420+
XCTAssertTrue(matchTemporary(compileJob.outputs[2].file, "embed-bitcode.swiftdoc"))
4421+
XCTAssertTrue(matchTemporary(compileJob.outputs[3].file, "embed-bitcode.swiftsourceinfo"))
4422+
4423+
let backendJob = plannedJobs.first(where: {$0.kind == .backend})!
4424+
XCTAssertEqual(backendJob.inputs.count, 1)
4425+
XCTAssertTrue(matchTemporary(backendJob.inputs[0].file, "embed-bitcode.bc"))
4426+
XCTAssertEqual(backendJob.outputs.count, 1)
4427+
XCTAssertEqual(backendJob.outputs[0].file, .relative(RelativePath("embed-bitcode.o")))
44264428

44274429
XCTAssertEqual(plannedJobs[2].kind, .mergeModule)
44284430
XCTAssertEqual(plannedJobs[2].inputs.count, 1)
@@ -4871,7 +4873,7 @@ final class SwiftDriverTests: XCTestCase {
48714873

48724874
func testFilelist() throws {
48734875
do {
4874-
var driver = try Driver(args: ["swiftc", "-emit-module", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0"])
4876+
var driver = try Driver(args: ["swiftc", "-emit-module", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-no-emit-module-separately"])
48754877
let plannedJobs = try driver.planBuild()
48764878

48774879
let jobA = plannedJobs[0]

0 commit comments

Comments
 (0)