[bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
Follow-up Comment #1, bug #20501 (project make): I'm using GNU make 3.81 through cygwin on Windows XP. The -rR flags are not the only ones not working as expected (expected by me at least), the option -S doesn't work as well. However, when running a subsequent call from the Makefile, they all work just fine. The flags '--no-print-directory', '-s' and '--warn-undefined-variables' function properly immediately. The main problem I'm having with this is that we use various .mk files which can be included from the Makefile. I want to set defaults for the programs, flags and such (like CC ?= gcc) in those .mk files. But this 'bug' prevents me from doing so, as CC already gets a default value. ___ Reply to this item at: http://savannah.gnu.org/bugs/?20501 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
[bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
Follow-up Comment #2, bug #20501 (project make): As far as I can see this is not a bug, this is make performing exactly as described in the manual. MAKEFLAGS is not a live way of controlling a running make's behaviour, it is used solely for the purpose of passing down to a recursive invocation of make; that is why you find they work when you run a subsequent call from the makefile, by which I think you mean a recursive submake invocation. Please review the make documentation, 5.7.3 Communicating Options to a Sub-`make', and verify whether you really have a bug here or not. http://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html#Options_002fRecursion cheers, DaveK ___ Reply to this item at: http://savannah.gnu.org/bugs/?20501 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
[bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
Follow-up Comment #3, bug #20501 (project make): I think it is a bug. 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. p.s. Indeed, I meant the recursive submake invocation. ___ Reply to this item at: http://savannah.gnu.org/bugs/?20501 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
[bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
Follow-up Comment #4, bug #20501 (project make): I'm sorry, I missed that! I think you're right; it is a bug. ___ Reply to this item at: http://savannah.gnu.org/bugs/?20501 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
Re: [bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
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 ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
Re: [bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
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 [EMAIL PROTECTED]: 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 ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
Typo in GNU make book
Hi, Dunno if the address is correct, I have the pdf of GNU make by Stallman, McGrath, Smith, the July 2002 edition, I have a feeling taht at page 75 there is a bug in the define PROGRAM_template, instead of $$($(1)_OBJ) should be $$($(1)_OBJS) Best regards and thanks for ur work, Lorenzo -- Lorenzo Ciampolini, PhD, TCAD Engineer FTM/Crolles Site/Technology Modeling STMicroelectronics 850 rue Jean Monnet 38926 CROLLES FRANCE Tel.+33 (0) 476 925935 Fax +33 (0) 476 925732 ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
RE: Typo in GNU make book
On 23 January 2008 17:01, Lorenzo CIAMPOLINI wrote: Hi, Dunno if the address is correct, I have the pdf of GNU make by Stallman, McGrath, Smith, the July 2002 edition, I have a feeling taht at page 75 there is a bug in the define PROGRAM_template, instead of $$($(1)_OBJ) should be $$($(1)_OBJS) That seems to already be fixed in the make documentation at source: http://www.gnu.org/software/make/manual/html_node/Eval-Function.html#Eval-Function If you'd like an updated pdf, you can download one from http://www.gnu.org/software/make/manual/make.pdf cheers, DaveK -- Can't think of a witty .sigline today ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make
[bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables
Follow-up Comment #6, bug #20501 (project make): Actually adding -r to MAKEFLAGS does work. It just that -p still prints the rules as if they were there. I use the following makefile fragment in our build system to get rid of all built-in (suffix and pattern) rules: # Remove all built-in rules. # .SUFFIXES: ifeq ($(filter -r,$(MAKEFLAGS)),) MAKEFLAGS += -r endif There was a thread on one of the GNU make mailing lists about this interesting behavior some time ago. As for adding -R, I think it is quite obvious why it does not work: make sets built-in variables before it starts reading makefiles. Boris ___ Reply to this item at: http://savannah.gnu.org/bugs/?20501 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make