@@ -317,11 +317,11 @@ 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 ( fileSystem : localFileSystem ,
323
+ toolchainPath :
324
+ AbsolutePath ( " /Volumes/Data/GHWorkspace2/build/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64 " ) )
325
325
326
326
// Create commands for all target descriptions in the plan.
327
327
for dependency in allPackageDependencies. reversed ( ) {
@@ -349,7 +349,7 @@ extension LLBuildManifestBuilder {
349
349
switch description {
350
350
case . swift( let desc) :
351
351
try self . createExplicitSwiftTargetCompileCommand ( description: desc,
352
- discoveredModulesMap : & discoveredModulesMap )
352
+ dependencyOracle : dependencyOracle )
353
353
case . clang( let desc) :
354
354
try self . createClangCompileCommand ( desc)
355
355
}
@@ -358,7 +358,7 @@ extension LLBuildManifestBuilder {
358
358
359
359
private func createExplicitSwiftTargetCompileCommand(
360
360
description: SwiftTargetBuildDescription ,
361
- discoveredModulesMap : inout SwiftDriver . ModuleInfoMap
361
+ dependencyOracle : InterModuleDependencyOracle
362
362
) throws {
363
363
// Inputs.
364
364
let inputs = try self . computeSwiftCompileCmdInputs ( description)
@@ -370,7 +370,7 @@ extension LLBuildManifestBuilder {
370
370
371
371
// Commands.
372
372
try addExplicitBuildSwiftCmds ( description, inputs: inputs,
373
- discoveredModulesMap : & discoveredModulesMap )
373
+ dependencyOracle : dependencyOracle )
374
374
375
375
self . addTargetCmd ( description, cmdOutputs: cmdOutputs)
376
376
self . addModuleWrapCmd ( description)
@@ -379,7 +379,7 @@ extension LLBuildManifestBuilder {
379
379
private func addExplicitBuildSwiftCmds(
380
380
_ targetDescription: SwiftTargetBuildDescription ,
381
381
inputs: [ Node ] ,
382
- discoveredModulesMap : inout SwiftDriver . ModuleInfoMap
382
+ dependencyOracle : InterModuleDependencyOracle
383
383
) throws {
384
384
// Pass the driver its external dependencies (target dependencies)
385
385
var dependencyModulePathMap : SwiftDriver . ExternalTargetModulePathMap = [ : ]
@@ -398,18 +398,9 @@ extension LLBuildManifestBuilder {
398
398
env: ProcessEnv . vars)
399
399
var driver = try Driver ( args: commandLine, fileSystem: targetDescription. fs,
400
400
executor: executor,
401
- externalBuildArtifacts : ( dependencyModulePathMap, discoveredModulesMap ) )
402
-
401
+ externalTargetModulePathMap : dependencyModulePathMap,
402
+ interModuleDependencyOracle : dependencyOracle )
403
403
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
404
try addSwiftDriverJobs ( for: targetDescription, jobs: jobs, inputs: inputs, resolver: resolver,
414
405
isMainModule: { driver. isExplicitMainModuleJob ( job: $0) } )
415
406
}
0 commit comments