@@ -317,11 +317,9 @@ extension LLBuildManifestBuilder {
317
317
}
318
318
let allPackageDependencies = try topologicalSort ( nodes, successors: { $0. dependencies } )
319
319
320
- // All modules discovered so far as a part of this package manifest.
321
- // This includes modules that correspond to the package's own targets, package dependency
322
- // targets, and modules that are discovered as dependencies of the above in individual
323
- // dependency scanning actions
324
- var discoveredModulesMap : SwiftDriver . ModuleInfoMap = [ : ]
320
+ // Instantiate the inter-module dependency oracle which will cache commonly-scanned
321
+ // modules across targets' Driver instances.
322
+ let dependencyOracle = try InterModuleDependencyOracle ( )
325
323
326
324
// Create commands for all target descriptions in the plan.
327
325
for dependency in allPackageDependencies. reversed ( ) {
@@ -349,7 +347,7 @@ extension LLBuildManifestBuilder {
349
347
switch description {
350
348
case . swift( let desc) :
351
349
try self . createExplicitSwiftTargetCompileCommand ( description: desc,
352
- discoveredModulesMap : & discoveredModulesMap )
350
+ dependencyOracle : dependencyOracle )
353
351
case . clang( let desc) :
354
352
try self . createClangCompileCommand ( desc)
355
353
}
@@ -358,7 +356,7 @@ extension LLBuildManifestBuilder {
358
356
359
357
private func createExplicitSwiftTargetCompileCommand(
360
358
description: SwiftTargetBuildDescription ,
361
- discoveredModulesMap : inout SwiftDriver . ModuleInfoMap
359
+ dependencyOracle : InterModuleDependencyOracle
362
360
) throws {
363
361
// Inputs.
364
362
let inputs = try self . computeSwiftCompileCmdInputs ( description)
@@ -370,7 +368,7 @@ extension LLBuildManifestBuilder {
370
368
371
369
// Commands.
372
370
try addExplicitBuildSwiftCmds ( description, inputs: inputs,
373
- discoveredModulesMap : & discoveredModulesMap )
371
+ dependencyOracle : dependencyOracle )
374
372
375
373
self . addTargetCmd ( description, cmdOutputs: cmdOutputs)
376
374
self . addModuleWrapCmd ( description)
@@ -379,7 +377,7 @@ extension LLBuildManifestBuilder {
379
377
private func addExplicitBuildSwiftCmds(
380
378
_ targetDescription: SwiftTargetBuildDescription ,
381
379
inputs: [ Node ] ,
382
- discoveredModulesMap : inout SwiftDriver . ModuleInfoMap
380
+ dependencyOracle : InterModuleDependencyOracle
383
381
) throws {
384
382
// Pass the driver its external dependencies (target dependencies)
385
383
var dependencyModulePathMap : SwiftDriver . ExternalTargetModulePathMap = [ : ]
@@ -398,18 +396,9 @@ extension LLBuildManifestBuilder {
398
396
env: ProcessEnv . vars)
399
397
var driver = try Driver ( args: commandLine, fileSystem: targetDescription. fs,
400
398
executor: executor,
401
- externalBuildArtifacts : ( dependencyModulePathMap, discoveredModulesMap ) )
402
-
399
+ externalTargetModulePathMap : dependencyModulePathMap,
400
+ interModuleDependencyOracle : dependencyOracle )
403
401
let jobs = try driver. planBuild ( )
404
-
405
- // Save the path to the target's module to be used by its dependents
406
- // Save the dependency graph of this target to be used by its dependents
407
- guard let dependencyGraph = driver. interModuleDependencyGraph else {
408
- throw InternalError ( " Expected module dependency graph for target: \( targetDescription) " )
409
- }
410
- try InterModuleDependencyGraph . mergeModules ( from: dependencyGraph,
411
- into: & discoveredModulesMap)
412
-
413
402
try addSwiftDriverJobs ( for: targetDescription, jobs: jobs, inputs: inputs, resolver: resolver,
414
403
isMainModule: { driver. isExplicitMainModuleJob ( job: $0) } )
415
404
}
0 commit comments