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 >