bug-make
[Top][All Lists]
Advanced

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

Re: [bug #30381] Don't avoid implicit rule recursion quite so soon.


From: Reinier Post
Subject: Re: [bug #30381] Don't avoid implicit rule recursion quite so soon.
Date: Thu, 11 Apr 2013 12:02:21 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Sat Apr  6 13:37:58 2013, address@hidden (Paul D. Smith)
wrote:
> Follow-up Comment #14, bug #30381 (project make):
> 
> I don't think it's correct to implement this feature using a
> command-line option.  Makefiles need to be written in a certain way
> to use this feature and if they are written that way, then you must
> have the feature enabled or the build will fail.  And vice versa.

A fair desciption, but only to make users who were already aware of
the limitation that this feature removes.  I wonder how many make
users fall into that category.  I used make (on and off) for 20 years
without being aware of this limitation and discovered it only after a
painful debugging process.

Using -j also requires one's Makefiles to be written in a certain
way. The main difference is that with -j, that 'certain' way isn't so
easy to characterize.

The reason I chose a command line option was my conviction that
applying it isn't expected to break any existing Makefiles.

You argue the feature should instead be treated like, say,
secondary expansion.  But how do I specify a numerical limit
with a special target?

> For situations like that we don't want to force the user to have to
> specify options on the command line: these options need to be set
> within the makefile so the makefile author controls them.  Also
> it's not clear that having the flag on the command line, where it
> will be passed recursively to sub-makes, won't break those
> sub-makes in some situations.

The only makefiles that will break are those that at present
rely on *failing* to apply an implicit rule due to not being able to
use the same rule twice in the same chain, *and subsequently
succeeding* in some other way.  I'm not quite sure how that could
happen in the first place, let alone how it would be applied as a
feature when writing Makefiles.  Shouldn't it at least be flagged
with a warning when it occurs?

And again, the same consideration applies to -j.

There is a special target, .NOTPARALLEL, to override -j.
Won't it be more natural to add such a target,
.NOCHAINRULEREUSE or .CHAINRULEREUSE, in addition to -M?

-- 
Reinier



reply via email to

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