Change the Makefile to rebuild proto.h as necessary -- note that this
authorMartin Pool <mbp@samba.org>
Tue, 19 Mar 2002 07:26:18 +0000 (07:26 +0000)
committerMartin Pool <mbp@samba.org>
Tue, 19 Mar 2002 07:26:18 +0000 (07:26 +0000)
commit8a61a810e5a29050b0cf242d317c7cc00329517b
tree0338bb55ed5a9cb2280ac41ff5723ad9b9138940
parentf4f23fad6099143ec26550afc67655390070ceb8
Change the Makefile to rebuild proto.h as necessary -- note that this
does not imply that all source will be rebuilt when prototypes change,
merely that the prototypes will be updated.

make proto, clean, delheaders, headers, etc all behave equivalently to
before.

  Intended new behaviour for proto.h, whenever source is being
  compiled:

  If proto.h does not exist, it is built.

  If any source files have changed since proto.h was last checked
  (.proto.check), then proto.h is checked.  If there are no actual
  changes since last time, its mtime is not changed, but we do
  remember the time at which it was checked.

  Whenever we try to build a .o, we need to check the headers are up
  to date.  However, rebuilding the prototypes does not imply
  rebuilding all object files.

  Also to allow people to build on machines without Awk, we never try
  to use it unless a source file has changed.  I guess if we wanted,
  we could have lack of Awk only cause a warning, not failure.

The point of all of this is to be easier on people who don't
understand or forget to type "make proto", and to reduce the chance of
build breakage by having prototypes out of sync.

I also rolled back JF's changes to put proto.h into builddir rather
than srcdir.  There are good arguments in both directions, but since
we keep proto.h in CVS, it seems important that the up-to-date copy by
in srcdir where it can be checked back in.  If people are fussed about
having srcdir be readonly you could change this -- but since proto.h
is only rebuilt when there are changes, it's not a big deal.

I also fixed an apparent race condition in "make headers" that would
make it unsafe if you did 'make -j2', and made 'make clean' not kill
proto.h, since people may not be able to rebuild it.

I reckon there's nothing gnumake-specific here but we shall see.

I also have this great idea about rewriting libtool in C++...
source/Makefile.in