On 26 Sep 2002, Tom Hughes wrote:

>         Andy Dougherty <[EMAIL PROTECTED]> wrote:
> 
> > > The problem here is that the rule in the Makefile that causes it to
> > > rerun Configure.pl if any of the Configure.pl generated files is out
> > > of date clashes with the recently introduced edit to stop Configure.pl
> > > updating a file that hasn't actually changed.
> > 
> > I think that the 'recently-introduced-edit' is wrong.  Make's dependency
> > system requires that the stated commands actually bring something
> > up-to-date.
> 
> On the other hand, without that edit it winds up rebuilding everything
> every time you run Configure, even if it doesn't have to...

Yes.  That is correct expected 'make' behavior (assuming the dependencies
are correctly listed).  By analogy, a Makefile can also assume that
        cc -c foo.c
will re-run the compiler, not just run it only if the compiler decides the
output will change in some significant way.

Yes, I know that's often annoying.  I often change things where I *know*
that not everything needs to be rebuilt.  In those cases, I don't rely on
'make' to get it right.  I manually get it right -- either by running a
shell script to rebuild just what needs to be rebuilt, or by judicious use
of 'touch' to pretend I rebuilt everything, or by use of cccache to speed
up rebuilds, or by some other trick.

These are, of course, obvious tricks, and I sometimes wish I didn't have
to do them.  However, the alternative is to have incorrect dependencies in
the Makefile and rely on manually rebuilding everything that needs to be
rebuilt.  I don't think that's a good plan.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to