[Top][All Lists]

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

RE: this is embarrasing... prerequisiste gets updated, but make still sa

From: Paul Smith
Subject: RE: this is embarrasing... prerequisiste gets updated, but make still says it is older than target
Date: Mon, 02 Apr 2012 08:38:11 -0400

On Mon, 2012-04-02 at 05:20 -0700, Mark Galeck (CW) wrote:
> >However the above pseudo-code is nonsensical; you obviously have some
> esoteric behavior you're trying to encode here but without knowing the
> I believe by "nonsensical" you mean, "does not follow Paul's rules of
> makefiles".

I meant, as written it doesn't have any point.  Obviously your real
makefile has a reason for doing what it's doing but that reason is not
reflected here so we can't say more about it.

> Same behaviour as before.  If foobar is newer than foobar1, then >make
> foobar, updates only foobar1 but not foobar.  
> .PHONY: phony
> foobar: foobar1
>       touch $@
> foobar1: | resources
>       touch $@
> resources: phony 
>       touch foobar1
>       touch $@

This is not different.  The order-only prerequisite means that the
"resources" target is not considered by make when it decides whether or
not to rebuild foobar1.  So make never tries to rebuild 'foobar1' (you
can see this in the output).

Because make never needs to rebuild foobar1 (it already exists and it
has no normal prerequisites, so it will never actually be rebuilt) and
make knows of no other way the foobar1 timestamp can be updated, it
assumes that foobar1 hasn't been changed since the first time make saw
it.  And the first time make saw it, the timestamp on foobar1 was older
than the one on foobar.  Hence, nothing needs to be done for foobar.

 Paul D. Smith <address@hidden>          Find some GNU make tips at:            
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

reply via email to

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