Skip to content

Commit 768e97f

Browse files
committed
[Explicit Moduel Builds] Adapt to swift-driver's InterModuleDependencyOracle API for cross-target dependency tracking
1 parent ec407ac commit 768e97f

File tree

1 file changed

+11
-20
lines changed

1 file changed

+11
-20
lines changed

Sources/Build/ManifestBuilder.swift

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -317,11 +317,11 @@ 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(fileSystem: localFileSystem,
323+
toolchainPath:
324+
AbsolutePath("/Volumes/Data/GHWorkspace2/build/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64"))
325325

326326
// Create commands for all target descriptions in the plan.
327327
for dependency in allPackageDependencies.reversed() {
@@ -349,7 +349,7 @@ extension LLBuildManifestBuilder {
349349
switch description {
350350
case .swift(let desc):
351351
try self.createExplicitSwiftTargetCompileCommand(description: desc,
352-
discoveredModulesMap: &discoveredModulesMap)
352+
dependencyOracle: dependencyOracle)
353353
case .clang(let desc):
354354
try self.createClangCompileCommand(desc)
355355
}
@@ -358,7 +358,7 @@ extension LLBuildManifestBuilder {
358358

359359
private func createExplicitSwiftTargetCompileCommand(
360360
description: SwiftTargetBuildDescription,
361-
discoveredModulesMap: inout SwiftDriver.ModuleInfoMap
361+
dependencyOracle: InterModuleDependencyOracle
362362
) throws {
363363
// Inputs.
364364
let inputs = try self.computeSwiftCompileCmdInputs(description)
@@ -370,7 +370,7 @@ extension LLBuildManifestBuilder {
370370

371371
// Commands.
372372
try addExplicitBuildSwiftCmds(description, inputs: inputs,
373-
discoveredModulesMap: &discoveredModulesMap)
373+
dependencyOracle: dependencyOracle)
374374

375375
self.addTargetCmd(description, cmdOutputs: cmdOutputs)
376376
self.addModuleWrapCmd(description)
@@ -379,7 +379,7 @@ extension LLBuildManifestBuilder {
379379
private func addExplicitBuildSwiftCmds(
380380
_ targetDescription: SwiftTargetBuildDescription,
381381
inputs: [Node],
382-
discoveredModulesMap: inout SwiftDriver.ModuleInfoMap
382+
dependencyOracle: InterModuleDependencyOracle
383383
) throws {
384384
// Pass the driver its external dependencies (target dependencies)
385385
var dependencyModulePathMap: SwiftDriver.ExternalTargetModulePathMap = [:]
@@ -398,18 +398,9 @@ extension LLBuildManifestBuilder {
398398
env: ProcessEnv.vars)
399399
var driver = try Driver(args: commandLine, fileSystem: targetDescription.fs,
400400
executor: executor,
401-
externalBuildArtifacts: (dependencyModulePathMap, discoveredModulesMap))
402-
401+
externalTargetModulePathMap: dependencyModulePathMap,
402+
interModuleDependencyOracle: dependencyOracle)
403403
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-
413404
try addSwiftDriverJobs(for: targetDescription, jobs: jobs, inputs: inputs, resolver: resolver,
414405
isMainModule: { driver.isExplicitMainModuleJob(job: $0)})
415406
}

0 commit comments

Comments
 (0)