help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: build system rules & algorithms


From: Sam Ravnborg
Subject: Re: build system rules & algorithms
Date: Thu, 18 Jun 2009 21:04:25 +0200
User-agent: Mutt/1.4.2.1i

On Thu, Jun 18, 2009 at 12:43:41PM -0600, Tom Tromey wrote:
> >>>>> "Stephan" == Stephan Beal <address@hidden> writes:
> 
> Replying to a semi-old thread...
> 
> Stephan> Also my opinion. On a related note, my major gripe with Alpha builds:
> Stephan> i come from the school of thought which (strongly) believes that a
> Stephan> change to a Makefile requires a rebuild of all targets controlled by
> Stephan> the Makefile, for the simple reason that the Makefile controls all
> Stephan> options sent to the compiler. If the Makefile changes, compile
> Stephan> flags/options might have changed, and not doing a full rebuild can
> Stephan> lead to difficult-to-find bugs which mysteriously disappear when 
> "make
> Stephan> clean; make all" is run (because a -DFOO=3 was changed to -DFOO=4). 
> In
> Stephan> an Alpha build this school of thought suffers considerably unless the
> Stephan> whole project builds in a trivial amount of time (say, less than 10
> Stephan> seconds).
> 
> I don't think this is really an alpha/beta distinction, but instead
> another axis, which is what is considered a dependency.
> 
> Checking dependencies on command text is possible, as is checking
> dependencies using file contents (as opposed to timestamps).

In the linux kernel the following will trigger a rebuild:
- prerequisites missing/out-dated
- command change
- change in command line options (changing order does not trigger a rebuild)
- change of a CONFIG_* option used by a file or one of the prerequisites

We do all this with a small helper program and some non-trivial gmake
file syntax. But it is doable.

I consider it a bug if anyone can prove that a make clean; make solves
an issue when dealing with the kernel.
We have had issues but in general people rely on this in their
everyday use.
The kernel does not fit the "less than 10 seconds"...

        Sam




reply via email to

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