This way we can detect correctly when external code changes. For a case where this failed before, see https://github.com/JohnLato/parmake-bug . This also needs changes to: - BuildPlan.new: When determining the initially buildable modules, before we chose the ones with exactly one dependency. Now, we don't count external files into those dependencies, as they do not need to be built. - Parse: We need to run ghc -M twice: Once for getting the normal Makefile-style dependencies, and once to get *all* dependencies (using -include-pkg-deps). From their difference, we can obtain the set of external dependencies. We now also have a `Dep` type to contain these internal and external dependencies.
Edges now go directly from '.o' to '.o', but target dependencies still list interface files ('.hi') instead of the corresponding objects.