Subject: Re: why make cleans for header changes
From: Paul Rohr (paul@abisource.com)
Date: Thu Mar 09 2000 - 12:27:35 CST
At 10:02 PM 3/8/00 -0600, Justin Bradford wrote:
>On Thu, 9 Mar 2000, Aaron Lehmann wrote:
>> P.S. Why does Abi's build system require make cleans? Autoconf seems to
>> work fine when header files are changed. Does autoconf work on all of the
>> [non-MacOS] platforms you are targeting? I really don't like autoconf but
>> it really beats making clean every time you want to make a small change to
>> a header.
This is a FAQ.  AFAIK, the current build system for the abi tree depends 
only on gmake and bash, both of which are widely available, and sufficiently 
well-understood, tools.  To date, we've tried to to radically minimize our 
dependencies on autoconf.  (It is used to generate a few header files in 
required libraries, but even that hasn't been problem-free.)
More specifically, we've had no volunteers who've successfully figured out:
  (a) what it takes to get autoconf working well on non-Unix platforms, and 
  (b) how to completely replace our diving make system with autoconf.  
Since having a single shared build system for all platforms is a very Good 
Thing, autoconf fans are thus stuck with our current build environment.  
(I'm not an autoconf fan, but anyone who solves both of those problems would 
definitely get my attention.)
As Justin points out, another option would be to add header dependencies to 
the makefiles... 
>That, however, would be a massively huge nightmare to try to maintain
>(unless it was automated) and it's just easier to make clean.
>
>Nice development environments figure out header dependencies for you,
>automatically. 
Absolutely.  Unfortunately, the way most development environments do this is 
to maintain their own project file format to help them "figure out" those 
dependencies.  Anyone doing single-platform development with a limited tool 
chain would be *nuts* not to take advantage of features like this.  
However, in our case, it's just not worth introducing a bunch of 
separately-maintained platform-specific project files.  As Justin points 
out, make clean is just easier. 
Paul
PS:  Call me a big dreamer, but presumably someone could write a reliable 
static tree analysis tool (called, say, checkdep.py) which scanned makefiles 
and the associated code to automatically generate the required header 
dependencies which would need to be added to each such makefile.  
I really don't think it'd be worth the bother, but you never know...
This archive was generated by hypermail 2b25 : Thu Mar 09 2000 - 12:22:05 CST