2.4 Techniques for Computing Dependencies
There are actually several ways for a build tool like Automake to
cause tools to generate dependencies.
- makedepend
- This was a commonly-used method in the past. The idea is to run a
special program over the source and have it generate dependency
information. Traditional implementations of makedepend are
not completely precise; ordinarily they were conservative and
discovered too many dependencies.
- The tool
- An obvious way to generate dependencies is to simply write the tool so
that it can generate the information needed by the build tool. This is
also the most portable method. Many compilers have an option to
generate dependencies. Unfortunately, not all tools provide such an
option.
- The file system
- It is possible to write a special file system that tracks opens,
reads, writes, etc, and then feed this information back to the build
tool. clearmake does this. This is a very powerful
technique, as it doesn't require cooperation from the
tool. Unfortunately it is also very difficult to implement and also
not practical in the general case.
LD_PRELOAD
- Rather than use the file system, one could write a special library to
intercept
open
and other syscalls. This technique is also quite
powerful, but unfortunately it is not portable enough for use in
automake.