./configure should do everything needed; the only time you should
ever have to use Autostuff is if you try to extend or alter
the configuration---i.e. you're developing the program, and you
need to detect additional things. Say you add networking support
and you want configure to detect some facts about the network API's.
The problem is that Autotools based projects get clever in their
Makefiles: they have make rules which look at the timestamps of
the Autotools-related files themselves and try to trigger rebuilds of
that material based on the timestamps.
"Oh look, your
configure.ac has a newer timestamp than configure;
we must run autoconf to regenerate configure; and then of course
we must re-run configure; and only then we can build this program."
I suspect that the Autotools must themselves be adding these stupid
rules to the makefiles; nobody in their right mind would do this to
themselves or their downstream users.
There is no need for an incremental build to notice that configure
has to be rebuilt. Or if so, it can just print a warning.
Here would be a good way to handle it: have a "touch" target which
just updates the timestamps of the annoying files.
# Fantasy ... not actual:
$ make
Oops: your configure is out of date w.r.t
configure.ac.
If configure really needs to be rebuilt type: "make reconfig".
You're gonna need Autotools installed for this!
If this is a false situation due to just timestamps, type "make touch"
to fix the timestamps, then "make".
$ make touch
touch configure # now newer than
configure.ac
$ make
# No complaints ...
When you do run autotools to regenerate stuff, it is risky, because the
version might not match. You will notice that even though you haven't
touched
configure.ac, for instance, when you run autoconf, it generates
a huge number of diffs in the configure script, because your autoconf
from the one the program's upstream maintainer used to produce the
shipping configure script. That introduces a risk! How do you know that
the wildly different configure script isn't doing something differently
which affects the program. Sure the program is the same foo-1.14.5,
on the same Frobozz Linux distribution that the author is using;
but the configure script is totally different; thus it is not exactly
the same program.