help-make
[Top][All Lists]
Advanced

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

Re: build system rules & algorithms


From: Mike Shal
Subject: Re: build system rules & algorithms
Date: Wed, 10 Jun 2009 22:44:21 -0400

On 6/10/09, Stephan Beal <address@hidden> wrote:
> Also my opinion. On a related note, my major gripe with Alpha builds:
>  i come from the school of thought which (strongly) believes that a
>  change to a Makefile requires a rebuild of all targets controlled by
>  the Makefile, for the simple reason that the Makefile controls all
>  options sent to the compiler. If the Makefile changes, compile
>  flags/options might have changed, and not doing a full rebuild can
>  lead to difficult-to-find bugs which mysteriously disappear when "make
>  clean; make all" is run (because a -DFOO=3 was changed to -DFOO=4). In
>  an Alpha build this school of thought suffers considerably unless the
>  whole project builds in a trivial amount of time (say, less than 10
>  seconds).

I definitely agree that changing command lines need to be taken into
account. Though, I also think it is important to support renaming or
removing files and targets. In my experience, I've not come across a
make setup that can handle these cases properly.

>  While RMCH makes some interesting points, i'm of the opinion that a
>  properly constructed recursive make is still the best general-purpose
>  way to structure most trees. (Let's not forget that "general purpose"
>  anything will always outperform specialized solutions for particular
>  cases.) Once a top-level build is done, subdirs can be built very
>  quickly, and trees can (in my experience) be structured so that the
>  build makes it impossible to have circular references between modules
>  in the source tree (as they are as problematic to the build process as
>  they are philosophically troubling). i'll spare you all my long-winded
>  evangelism, but this topic is one i can certainly go on about for a
>  while.

The issue I always run into these setups is I never know which subdirs
I need to cd to in order to run make (and still get a correctly
running program). Although I may be able to do that for projects I
write, I'm lost if I try to do that with another project, like if I
want to test a patch against wine or firefox. If you have a good
solution for that, I'd like to know!

-Mike




reply via email to

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