Re: why make cleans for header changes


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