Complete.Org: Mailing Lists: Archives: freeciv-dev: January 2000:
[Freeciv-Dev] spurious modifications of config.h (PR#222)
Home

[Freeciv-Dev] spurious modifications of config.h (PR#222)

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx
Cc: bugs@xxxxxxxxxxxxxxxxxxx
Subject: [Freeciv-Dev] spurious modifications of config.h (PR#222)
From: David Pfitzner <dwp@xxxxxxxxxxxxxx>
Date: Sun, 2 Jan 2000 02:44:03 -0800 (PST)

(For cvs version Sun Jan  2 10:19:15 UTC 2000.)

I was seeing some strange compliation behaviour, with lots of 
unnecessary re-compilations, and wondered if it was some wierd 
y2k bug in configure or make, but it turned out to be a 
garden-variety bug...

The problem occurs if eg the configure script has changed 
(eg, from 'cvs up') and you do a make without manually re-running
configure.  In this case the make will re-run configure for you
(with command-line params from previous invocation etc) so that 
everything should be ok.  But it does it in a special way, using 
configure with '--no-create --no-recursion' at the top level, and 
then eg
  cd .. \
  && CONFIG_FILES=ai/Makefile CONFIG_HEADERS= /bin/sh ./config.status
at lower levels to generate updated Makefiles in each dir.
(Why I don't know, would have to ask automake gurus.)

The problem is that each time config.status is run from lower 
level directories a line 
   #undef HAVE_SYS_UIO_H
is appended to config.h, so that multiple duplicate lines of
this build up (and incidently are wrong, since I do have sys/uio.h), 
but worse, the timestamp on config.h is updated, so re-running make 
will have to re-compile everything which depends on config.h.  

This line in config.h is due to the line
    AC_OUTPUT_COMMANDS([echo "#undef HAVE_SYS_UIO_H" >> config.h])
in configure.in, which it appears is only intended to fix brokeness 
on BeOS.  But apparently autoconf actually just puts all 
AC_OUTPUT_COMMANDS() into configure, and they run unconditionally 
every time config.status is run.  (This is similar to a previous 
problem (now fixed) with adjusting po/Makefile to notice Q_() 
qualifier.)

A temporarly fix would be to get rid of that line in configure.in;
I'm not sure what a correct fix which does the right thing on
BeOS would be.

-- David







[Prev in Thread] Current Thread [Next in Thread]