>>>>> "Tom" == Tom Tromey <[EMAIL PROTECTED]> writes:

Martin> It's true.  But all C source files should #include <config.h>,
Martin> and other files will often be architecture-independent files
Martin> like lex&yacc files.

Tom> That's true for XEmacs, maybe, but it isn't true for the world.  For
Tom> instance, some people don't use AC_CONFIG_HEADER.  Or, more
Tom> compellingly, Java programs compiled with gcj generally won't rely on
Tom> config.h or any other configure-generated file -- but will still leave
Tom> objects lying in the build tree (see libgcj for an example where the
Tom> majority of actual object files are not affected by configure's
Tom> output).

Tom> Basically, the user really does have to run "make distclean" between
Tom> configures on different machines.  It can work sometimes, for some
Tom> packages, but that is by no means universal.  Users who rely on this
Tom> are just doing the wrong thing.

Users who aren't totally paranoid are doing the wrong thing.  Running
"make distclean" isn't paranoid enough - it involves trusting the
maintainer.  The thing most likely to work, and the only thing I do
when building Other People's Packages

rm -rf foo-1.9
tar xzf foo-1.9.tar.gz
cd foo-1.9
configure
make
make install

But well-written packages should aspire to help even non-paranoid
users.  Good packages provide a `distclean' target.  I also think good
packages should be written in such a way that reconfiguring forces a
rebuild of all architecture-dependent files.  In fact, the Makefiles
are likely to be generated by configure, and to be really safe, object
files should be rebuilt, so maybe *.o should depend on the Makefile
that builds them.

I agree that this is a level of quality that most packages won't
achieve - there are more important things in the free software world
to fix.  But it would be a good public service if someone decided to
fix up all the GNU packages purely from the point of view of good
configure/Makefile hygiene.  AFAIK, no one has ever decided to do
global code maintenance across all GNU packages.

Martin

Reply via email to