automake-1.16: Dependency Tracking
2.2.12 Automatic Dependency Tracking
------------------------------------
Dependency tracking is performed as a side-effect of compilation. Each
time the build system compiles a source file, it computes its list of
dependencies (in C these are the header files included by the source
being compiled). Later, any time ‘make’ is run and a dependency appears
to have changed, the dependent files will be rebuilt.
Automake generates code for automatic dependency tracking by default,
unless the developer chooses to override it; for more information, ⇒
Dependencies.
When ‘configure’ is executed, you can see it probing each compiler
for the dependency mechanism it supports (several mechanisms can be
used):
~/amhello-1.0 % ./configure --prefix /usr
...
checking dependency style of gcc... gcc3
...
Because dependencies are only computed as a side-effect of the
compilation, no dependency information exists the first time a package
is built. This is OK because all the files need to be built anyway:
‘make’ does not have to decide which files need to be rebuilt. In fact,
dependency tracking is completely useless for one-time builds and there
is a ‘configure’ option to disable this:
‘--disable-dependency-tracking’
Speed up one-time builds.
Some compilers do not offer any practical way to derive the list of
dependencies as a side-effect of the compilation, requiring a separate
run (maybe of another tool) to compute these dependencies. The
performance penalty implied by these methods is important enough to
disable them by default. The option ‘--enable-dependency-tracking’ must
be passed to ‘configure’ to activate them.
‘--enable-dependency-tracking’
Do not reject slow dependency extractors.
⇒Dependency Tracking Evolution (automake-history)Dependency
Tracking Evolution, for some discussion about the different dependency
tracking schemes used by Automake over the years.