[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Description
The bugs associated with ‘make dist’, over time, became a real
problem. Packages using Automake were being built on a large number
of platforms, and were becoming increasingly complex. Broken
dependencies were distributed in “portable” ‘Makefile.in’s,
leading to user complaints. Also, the requirement for gcc
and GNU make
was a constant source of bug reports. The next
implementation of dependency tracking aimed to remove these problems.
We realized that the only truly reliable way to automatically track dependencies was to do it when the package itself was built. This meant discovering a method portable to any version of make and any compiler. Also, we wanted to preserve what we saw as the best point of the second implementation: dependency computation as a side effect of compilation.
In the end we found that most modern make implementations support some
form of include directive. Also, we wrote a wrapper script that let
us abstract away differences between dependency tracking methods for
compilers. For instance, some compilers cannot generate dependencies
as a side effect of compilation. In this case we simply have the
script run the compiler twice. Currently our wrapper script
(depcomp
) knows about twelve different compilers (including
a "compiler" that simply invokes makedepend
and then the
real compiler, which is assumed to be a standard Unix-like C compiler
with no way to do dependency tracking).