[Top][All Lists]
[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