help-make
[Top][All Lists]
Advanced

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

RE: Trying to get rid of one redundand rule


From: Paul D. Smith
Subject: RE: Trying to get rid of one redundand rule
Date: Wed, 15 Jun 2005 10:12:11 -0400

%% <address@hidden> writes:

  af> yes, the funny thing is that when I run "gmake" twice,
  af> then the first invocation fails with

  af> but the second gmake run succeeds:

That's because the second time, the directory already exists.

  af> I have modified the dir creation to your suggestion

  af> __dummy := $(shell mkdir -p $(BLDDIR))

  af> and now it works in one pass, thank you (but still looks 
  af> strange to me, sorry. I don't understand what is wrong with

  af>   $(OBJECTS): $(BLDDIR)/stamp
 
  af> and why would it break parallel builds.)

That line won't, but that's not what you wrote in your last message:
there you had this line:

 > $(OBJECT): $(BLDDIR)/stamp $(BLDDIR)/rcomp.hpp

and _that_ is not parallel-safe (unless you add some other rules).
Basically, if you're going to be creating a directory using rules like
this then you must ensure that EVERY target that needs that directory to
exist depends on that stamp file.  You can't rely on ordering of targets
within a prerequisite list to be sure the directory is created first.


Anyway, the reason this doesn't work the first time is, as I mentioned
before, due to a misbehavior (I don't call it a bug because the behavior
was intentionally implemented, not by accident) in GNU make that has
been fixed for the next release.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "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]