SE-0303: Package Manager Extensible Build Tools

Does the current design require every build tool to learn to conditionally write out their outputs only when they have changed? Or does SwiftPM/Xcode already has file contents vs. us modification times to decide what to rebuild?

Since the current design exposes all files as inputs, it seems like the tools would get run for every build if any file was edited, and if they then generate the exact same thing, this could cascade into causing all the generated sources to be compiled again.