Skip to content

Commit 4b1051e

Browse files
committed
[Explicit Moduel Builds] Adapt to swift-driver's InterModuleDependencyOracle API for cross-target dependency tracking
1 parent 0e0964a commit 4b1051e

File tree

1 file changed

+9
-20
lines changed

1 file changed

+9
-20
lines changed

Sources/Build/ManifestBuilder.swift

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -317,11 +317,9 @@ extension LLBuildManifestBuilder {
317317
}
318318
let allPackageDependencies = try topologicalSort(nodes, successors: { $0.dependencies })
319319

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()
325323

326324
// Create commands for all target descriptions in the plan.
327325
for dependency in allPackageDependencies.reversed() {
@@ -349,7 +347,7 @@ extension LLBuildManifestBuilder {
349347
switch description {
350348
case .swift(let desc):
351349
try self.createExplicitSwiftTargetCompileCommand(description: desc,
352-
discoveredModulesMap: &discoveredModulesMap)
350+
dependencyOracle: dependencyOracle)
353351
case .clang(let desc):
354352
try self.createClangCompileCommand(desc)
355353
}
@@ -358,7 +356,7 @@ extension LLBuildManifestBuilder {
358356

359357
private func createExplicitSwiftTargetCompileCommand(
360358
description: SwiftTargetBuildDescription,
361-
discoveredModulesMap: inout SwiftDriver.ModuleInfoMap
359+
dependencyOracle: InterModuleDependencyOracle
362360
) throws {
363361
// Inputs.
364362
let inputs = try self.computeSwiftCompileCmdInputs(description)
@@ -370,7 +368,7 @@ extension LLBuildManifestBuilder {
370368

371369
// Commands.
372370
try addExplicitBuildSwiftCmds(description, inputs: inputs,
373-
discoveredModulesMap: &discoveredModulesMap)
371+
dependencyOracle: dependencyOracle)
374372

375373
self.addTargetCmd(description, cmdOutputs: cmdOutputs)
376374
self.addModuleWrapCmd(description)
@@ -379,7 +377,7 @@ extension LLBuildManifestBuilder {
379377
private func addExplicitBuildSwiftCmds(
380378
_ targetDescription: SwiftTargetBuildDescription,
381379
inputs: [Node],
382-
discoveredModulesMap: inout SwiftDriver.ModuleInfoMap
380+
dependencyOracle: InterModuleDependencyOracle
383381
) throws {
384382
// Pass the driver its external dependencies (target dependencies)
385383
var dependencyModulePathMap: SwiftDriver.ExternalTargetModulePathMap = [:]
@@ -398,18 +396,9 @@ extension LLBuildManifestBuilder {
398396
env: ProcessEnv.vars)
399397
var driver = try Driver(args: commandLine, fileSystem: targetDescription.fs,
400398
executor: executor,
401-
externalBuildArtifacts: (dependencyModulePathMap, discoveredModulesMap))
402-
399+
externalTargetModulePathMap: dependencyModulePathMap,
400+
interModuleDependencyOracle: dependencyOracle)
403401
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-
413402
try addSwiftDriverJobs(for: targetDescription, jobs: jobs, inputs: inputs, resolver: resolver,
414403
isMainModule: { driver.isExplicitMainModuleJob(job: $0)})
415404
}

0 commit comments

Comments
 (0)