Build systems that know when to recompile -- revised

Hi,

I think that if you do not want to split your module in two files, one for the interface and one for the submodule with the implementation, you should always recompile all the files that depend on the original module. Personally, I work out the dependencies in a makefile at the beginning. If the dependencies are too intricate to figure them out by hand, then my impression is that the architecture is likely to get out of hand. As I see it, module interdependencies should be written down explicitly anyhow.

If you are changing the interface of a module procedure, I think it is reasonable to expect that the linker complains if you have not recompiled the files that use that procedure, even if the parameters in the caller did not change. In fact, I see this as a feature, a way to avoid subtle bugs.