[bug #20501] MAKEFLAGS += -rR doesn't turn off default suffix rules, variables

2008-01-23 Thread Hendrik de Goede

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

2008-01-23 Thread Dave Korn

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

2008-01-23 Thread Hendrik de Goede

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

2008-01-23 Thread Dave Korn

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

2008-01-23 Thread Philip Guenther
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

2008-01-23 Thread Hendrik de Goede
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

2008-01-23 Thread Lorenzo CIAMPOLINI

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

2008-01-23 Thread Dave Korn
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

2008-01-23 Thread Boris Kolpackov

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