[Explicit Module Builds][Incremental Builds] Only re-build module dependencies which have changed or whose dependencies have changed. #1413
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Up until now, incremental explicit builds behaved on an all-or-nothing basis: if any of the dependencies have changed, or new dependencies were added, then the driver launches a full dependency scan, followed by re-building all dependency modules.
Now, instead, we take a fine-grained approach to rebuilding module dependencies. The overall incremental build flow w.r.t. explicit module dependencies is now as-follows:
(Note: that we do not need to concern ourselves with changes to the compile command of a given module changing from the prior build - if that happened, then the module output path will have changed to reflect the change in the context hash, and expected output will be missing at the new expected path.)
Resolves rdar://113638007