@@ -316,12 +316,9 @@ extension LLBuildManifestBuilder {
316
316
ResolvedTarget . Dependency. target ( $0, conditions: [ ] )
317
317
}
318
318
let allPackageDependencies = try topologicalSort ( nodes, successors: { $0. dependencies } )
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 = [ : ]
319
+ // Instantiate the inter-module dependency oracle which will cache commonly-scanned
320
+ // modules across targets' Driver instances.
321
+ let dependencyOracle = InterModuleDependencyOracle ( )
325
322
326
323
// Create commands for all target descriptions in the plan.
327
324
for dependency in allPackageDependencies. reversed ( ) {
@@ -349,7 +346,7 @@ extension LLBuildManifestBuilder {
349
346
switch description {
350
347
case . swift( let desc) :
351
348
try self . createExplicitSwiftTargetCompileCommand ( description: desc,
352
- discoveredModulesMap : & discoveredModulesMap )
349
+ dependencyOracle : dependencyOracle )
353
350
case . clang( let desc) :
354
351
try self . createClangCompileCommand ( desc)
355
352
}
@@ -358,7 +355,7 @@ extension LLBuildManifestBuilder {
358
355
359
356
private func createExplicitSwiftTargetCompileCommand(
360
357
description: SwiftTargetBuildDescription ,
361
- discoveredModulesMap : inout SwiftDriver . ModuleInfoMap
358
+ dependencyOracle : InterModuleDependencyOracle
362
359
) throws {
363
360
// Inputs.
364
361
let inputs = try self . computeSwiftCompileCmdInputs ( description)
@@ -370,7 +367,7 @@ extension LLBuildManifestBuilder {
370
367
371
368
// Commands.
372
369
try addExplicitBuildSwiftCmds ( description, inputs: inputs,
373
- discoveredModulesMap : & discoveredModulesMap )
370
+ dependencyOracle : dependencyOracle )
374
371
375
372
self . addTargetCmd ( description, cmdOutputs: cmdOutputs)
376
373
self . addModuleWrapCmd ( description)
@@ -379,7 +376,7 @@ extension LLBuildManifestBuilder {
379
376
private func addExplicitBuildSwiftCmds(
380
377
_ targetDescription: SwiftTargetBuildDescription ,
381
378
inputs: [ Node ] ,
382
- discoveredModulesMap : inout SwiftDriver . ModuleInfoMap
379
+ dependencyOracle : InterModuleDependencyOracle
383
380
) throws {
384
381
// Pass the driver its external dependencies (target dependencies)
385
382
var dependencyModulePathMap : SwiftDriver . ExternalTargetModulePathMap = [ : ]
@@ -398,18 +395,9 @@ extension LLBuildManifestBuilder {
398
395
env: ProcessEnv . vars)
399
396
var driver = try Driver ( args: commandLine, fileSystem: targetDescription. fs,
400
397
executor: executor,
401
- externalBuildArtifacts : ( dependencyModulePathMap, discoveredModulesMap ) )
402
-
398
+ externalTargetModulePathMap : dependencyModulePathMap,
399
+ interModuleDependencyOracle : dependencyOracle )
403
400
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
401
try addSwiftDriverJobs ( for: targetDescription, jobs: jobs, inputs: inputs, resolver: resolver,
414
402
isMainModule: { driver. isExplicitMainModuleJob ( job: $0) } )
415
403
}
0 commit comments