bug-make
[Top][All Lists]
Advanced

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

Re: [bug #20501] "MAKEFLAGS += -rR" doesn't turn off default suffix rule


From: Hendrik de Goede
Subject: Re: [bug #20501] "MAKEFLAGS += -rR" doesn't turn off default suffix rules, variables
Date: Wed, 23 Jan 2008 15:08:19 +0100

I see the problem, however I think the solution is 'rather' simple.
The MAKEFLAGS -r should be specified before any rule, and -R unsets
all defaults still set.

If this is unwanted, and for some reason these 2 flags won't be
supported from inside a Makefile, I would at least like the
possibility to specify alternate default values.
Maybe having 'CC?=gcc' also set CC if it only has a default value?

p.s. Shouldn't these comments be made in the case?


2008/1/23, Philip Guenther <address@hidden>:
> On Jan 23, 2008 4:33 AM, Hendrik de Goede wrote:
> > To quote the make 3.81 documentation 'You can also set MAKEFLAGS in a
> > makefile, to specify additional flags that should also be in effect for that
> > makefile', in the same chapter you specified.
>
> Unfortunately, it's not clear how "MAKEFLAGS += -R" can be made to
> work as desired, as the built-in variables are set before the user's
> makefile is parsed.  For example, what's it suppose to do with this
> Makefile:
>
> all: foo-$(shell echo $(RM))
> foo-rm:
>     @echo rm
> foo-:
>     @echo nothing
> ifdef RM
> MAKEFLAGS += -R
> endif
>
> Does the MAKEFLAGS setting force a reexec?  To give the 'all' target
> the 'correct' prereq list would require that.  Hmm, what if you
> _remove_ -R from MAKEFLAGS?
>
> Or maybe I'm over analyzing.  What if the effect of adding -R to
> MAKEFLAGS was that make immediately unset all variables whose origin
> is 'default'?
>
>
> Hmm, the operation of the -r option (which is implied by -R, yes) is
> actually worse, as there's no way to remove a rule from make's memory.
>  Then again, is there any way to detect that a rule exists from inside
> a Makefile?  If not, then make could delay the addition of the
> implicit rules until the makefile is completely parsed, albeit with
> some ugly complexity to do the "insert these as if they had occurred
> before all other rules" effect.  E.g., if the makefile has this:
> %:: %,v
> then the RCS checkout rule has to remain canceled.
>
>
> That's looking line a ton of complexity to achieve logical
> completeness.  Even though the main project I have builds slightly
> faster (and just as correctly) when the -R option is given, I don't
> find myself worrying about it.  I would much rather have GNU make
> behave like it does than have it handle MAKEFLAGS+=-Rr as I suggested
> above at the cost of new, subtle processing bugs.  As cute as being
> able to set -R from inside the makefile is, I just don't see it as a
> feature that's worth introducing *any* bugs over.
>
> I vote that Paul just change the info pages to document the current behavior.
>
>
> Philip Guenther
>




reply via email to

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