[bug #18617] Better debugging facilities: tracing rule invocation.

2008-09-17 Thread Dave Korn

Follow-up Comment #5, bug #18617 (project make):

I would like to draw the attention of everyone in this thread to

http://bashdb.sourceforge.net/remake/
Remake - GNU Make with comprehensible tracing and a debugger

I find it an invaluable enhancement to make when debugging complex makefiles
full of generated code.  Give it a try: you won't look back once you've
discovered how much easier life is when you can single-step through the source
of a makefile, set breakpoints, inspect variables and see the return values
from called functions.


Stefano:

It doesn't tell which the implicit rule is, are you sure?  The trace shows

 Trying implicit prerequisite `assert.cxx'.
 Found an implicit rule for 

`/home/stefano/src/reilabs/flash2sip/contrib/src/ptlib_2.2.1/lib/obj_linux_x86_r/assert.o'.

Therefore the implicit rule it is referring to must be of the form

%.o: %.cxx 

mustn't it?



___

Reply to this item at:

  http://savannah.gnu.org/bugs/?18617

___
  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: make-3.81: bug-report: function abspath works incorrectly onwidows

2008-06-26 Thread Dave Korn
Vitaly Murashev wrote on 26 June 2008 11:45:

  . It doesn't produce fully qualified file names from drive-relative
names such as d:foo/bar.
 
 Not really. My patch produces the same output for d:foo/bar
 and for d:/foo/bar, the result is d:/foo/bar

  That's a mistake, because the two are not the same.

  The path d:foo/bar without a slash after the colon means foo/bar
relative to the current working directory on the D: drive.  Unless your
working directory is the root dir, that's not the same thing as
d:/foo/bar.

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


RE: Makefile doesnt stop for non zero error codes

2008-06-25 Thread Dave Korn
Murali Krishna wrote on 25 June 2008 07:38:

 Hi
 
 I am working in a makefile issue where the makefile doesn't stop
 compilation even after it encounters the error in the cpp file. 
 
 The make continues with next rule even though the earlier rule gives the
 non zero exit status. What could be the possible cause for this scenario? 

  There's a bug on line 278 of your makefile.  You just need to fix it and
everything will work fine.



.  


.  


.  





  Nahh, seriously, an example or some details would be nice.  Did you use
-k when invoking make?  Are the command-lines prefixed with - to
suppress errors?  Are you mistaken about whether the earlier rule actually
does return non-zero status?  It's pretty hard to diagnose a problem when
the only information you give is It doesn't work - why?!  Can you show us
an example, with the relevant lines of your makefile and the output you see
in your shell when building?

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


RE: Reg Make build on LINUX

2008-05-23 Thread Dave Korn
A, Sravanthi wrote on 23 May 2008 12:14:

 Hi team,
 
 Iam trying to build my application using make on Linux server. But my
 build doesn't stop after first error. I tried -S options  but doesn't
 seems to help.

  The top-level makefile might be invoking the sub-makes using - at the
start of the commandline to suppress errors?  See the Errors in Commands
section of the man/info page.


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 #23273] Please include xkcd easteregg

2008-05-17 Thread Dave Korn

Follow-up Comment #1, bug #23273 (project make):

+1 funny.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?23273

___
  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: eval and if-blocks incompatible on i386-pc-linux-gnu

2008-04-23 Thread Dave Korn
Paul Smith wrote:

 On Wed, 2008-04-23 at 17:11 +0200, Arthur Carlson wrote:
 $ make SWITCH=on a
 
 makefile:10: *** missing `endif'. Stop.
 
 This is a bug in GNU make 3.80.  You should upgrade to 3.81.

  Interesting factoid: This bug is[*] also fixed (or perhaps was never
exposed) in remake[**], which is still based on the 3.80 sources.  So if you
wanted a working make that could handle the syntax shown, but don't want any
of the backwardly-incompatible changes in behaviour that were introduced in
3.81 relative to 3.80[***], installing remake would be a suitable workaround.

cheers,
  DaveK

[*]   - At least, as far as I have seen, the symptoms do not manifest; I have
not been through the source code to try and understand for absolutely certain
why not.
[**]  - http://bashdb.sourceforge.net/remake/
[***] - I forget exactly what the incompatible changes were, but I'm fairly
sure there were one or two.  They're listed in the NEWS file.  They may not
matter to you for your purposes, in which case this whole email is moot.
-- 
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 #22434] Consider a dependancy as target file and try to make the file

2008-02-27 Thread Dave Korn

Follow-up Comment #3, bug #22434 (project make):

Your testcase is way too complex to be convenient - it would be more helpful
if you could make a self-contained example, rather than requiring people to
install Hg and then clone your repository and then autoconf a makefile and
only /then/ be able to even /start/ looking at the problem.

So this is only a guess, but it sounds like you've missed or misread the part
of the manual that explains that all dependencies are always supposed to be
prerequisites, and if you just want a goal as a dependency that doesn't make a
target file of the same name, you have to list it as a .PHONY target.  Are you
simply missing a .PHONY declaration to tell make that Pokme isn't the name
of a real output file?

___

Reply to this item at:

  http://savannah.gnu.org/bugs/?22434

___
  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 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: 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


RE: make multiple buffer overflow

2007-12-06 Thread Dave Korn
On 06 December 2007 05:09, laurent gaffie wrote:

 Application: Make = 3.81
 Web Site: http://savannah.gnu.org/projects/make/ 
 http://www.gnu.org/software/make/ 
 Platform: Unix
 Bug:multiple buffer overflow

 Proof of concept example :
 make `perl -e 'printAx4096'` //***
 make -f `perl -e 'printAx4096'`
 make -j `perl -e 'printAx4096'`
 make -i `perl -e 'printAx4096'`
 make -l `perl -e 'printAx4096'`
 
 *** depending the case , you'll need to change  the value ,  for a couple
 of more  A , playing by  hundred should be good to make sure you trigger it 

  I couldn't reproduce any of these, on either Linux or Cygwin, on 3.80 or
3.81 (although I didn't try absolutely every possible combination there).  I
get lots of stat: AA[...]: File name too long and No rule to make
target `A[..]' messages instead.


 [EMAIL PROTECTED]:~# gdb make
 GNU gdb 6.6-debian
 Copyright (C) 2006 Free Software Foundation, Inc.

  Is it possible that debian's distro has a customised version of make?  Did
you build make from CVS sources or tarballs?  I see you've got no stack
backtrace in your debug output, if you did build your own you'd get symbol
info.


 (gdb) run `perl -e 'printAx4296'`//my GCC version have a protection for
 stack smashing then 200 chars more , and we trigger it 

  Hmm, perhaps the stack smashing protection is generating a false positive?
I guess this implies that you /are/ building make from sources, yes?

 Starting program: /usr/bin/make `perl -e 'printAx4296'`
 (no debugging symbols found)
 (no debugging symbols found)
 (no debugging symbols found)
 (no debugging symbols found)
 (no debugging symbols found)
 [Thread debugging using libthread_db enabled]
 [New Thread -1209637200 (LWP 1246)]
 make: stat: AAA
 A.AA

  That's the kind of message I see from make...

 Program received signal SIGSEGV, Segmentation fault.

... but I don't get a SEGV.  Can you try it again without stack protection?

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 #21661] Make expands command-line variable defnitions after/during every command invocation

2007-11-28 Thread Dave Korn

Follow-up Comment #1, bug #21661 (project make):

As far as I can see, this is the expected and as-intended behaviour.  Try

make 'var:=$(warning hello)'

instead, and refresh your memory on the difference between immediate and
deferred expansion.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?21661

___
  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: make 3.81: showing time differences

2007-10-28 Thread Dave Korn
On 27 October 2007 22:21, Bruno Haible wrote:

 Hi,
 
 With GNU make 3.81 the following warnings were seen:
 
 make[5]: Warning: File `.deps/test-xvasprintf.Po' has modification time
 4.8e+02 s in the future make[2]: Warning: File `Makefile' has modification
 time 1.1e+02 s in the future 
 make[1]: Warning: File `Makefile' has modification time 95 s in the future
 
 The notation 4.8e+02 s is a quite obfuscated way to express 4 minutes.

  Well, yes, since it's actually 8 minutes    :-)

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


RE: prorex-1.3 make bug

2007-10-19 Thread Dave Korn
On 19 October 2007 11:52, Jon Grant wrote:

 Hi,
 
 [...]
 /usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld:
 prorex.o: relocation R_X86_64_32 against `a local symbol' can not be
 used when making a shared object; recompile with -fPIC
 prorex.o: could not read symbols: Bad value
 collect2: ld returned 1 exit status
 make: *** [libprorex.so] Error 1
 
 That isn't an issue with Make. There is a linker error, re-read the
 message you quoted above and you ill see it tells you what the problem
 is and how to fix it! Always read things thoughtful before posting to
 mailing lists ;) If that doesnt fix it, contact the libprorex developers
 who provided you with the source code.

  It could also be worth asking about on the binutils list.

  I *think* (but am not sure) that it's to do with linking mixed -fPIC and 
non-fPIC code, perhaps libprorex.so wasn't compiled with it?  Or perhaps it's 
something from libgcc that needs multilibbing against fPIC.  Binutils list 
ought to be able to help.


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


RE: Switching from CVS to GIT

2007-10-18 Thread Dave Korn
On 18 October 2007 07:13, Jim Meyering wrote:

 Paul Smith [EMAIL PROTECTED] wrote:
 I'm considering switching from CVS to another form of SCM.  Currently, ...
 It seems like GIT is where the mindshare is these days, plus a number of
 the other autotools projects have already migrated (or are in the middle
 of migrating) to GIT, so that's what I'd go with.
 ...
 Congratulations! :-)
 
 I don't really know what the current state-of-the-art is WRT GIT on
 non-POSIX systems, so... please give me your opinions on this change.
 
 I heard it was usable months ago, but less efficient than
 on Unix-based systems.

  http://cygwin.com/acronyms/#YSHFRTT!


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


[PATCH] Extend --debug with option to trace parsing.

2007-09-02 Thread Dave Korn

Hi!

  It can be really tricky debugging a complex makefile that's full of function
calls and evals, so here's a patch that adds lots of debugging output from the
parser.  You get to see exactly what the parser's seeing and what it thinks
it's doing about it.

2007-09-02  Dave Korn  [EMAIL PROTECTED]

* doc/make.texi:  Documented new 'p' option letter to '--debug='.
* debug.h (DB_PARSER):  New debug flag bit.
* main.c (decode_debug_flags):  Let 'p' set DB_PARSER in db_level.
* read.c (eval):  Added a whole lot of debug under DB_PARSER.

cheers,
  DaveK
-- 
Can't think of a witty .sigline today


make-debug-parser-patch.diff
Description: Binary data
___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


RE: [PATCH] Implement verbatim export.

2007-08-21 Thread Dave Korn
On 21 August 2007 13:39, Paul Smith wrote:

 On Mon, 2007-08-20 at 18:59 +0100, Dave Korn wrote:
 As discussed last week, and ported to CVS head from our own internal
 build over the weekend, here's a patch that implements verbatim export
 of makefile variables to subprocesses.  This is particularly handy for
 anything with a dollar sign in it!
 
 I'll have to think about this; it seems like a lot of change for
 something that very few people have ever asked for.  Also, there are at
 least two ways to share variable values with other instances of make
 that I don't think have the issue you're having: one is to pass the
 value via the command line instead of through the environment (where you
 can use $(value ...)) and the other is to put it into a makefile that is
 included by the different instances of make.
 
 What do you think about those?


  Both valid, but I think they're less convenient.  With the first method, you
either have to enumerate all the functions explicitly, or follow a naming
convention that lets you grep them out of .VARIABLES and automatically add them
to the submake command line.  You're also likely to run into shell quoting
complications.  I would have said that big command lines are a problem in
themselves, but then again I think on most systems there's a limit on the total
of (commandline length + environment size) anyway, so that's no different.

  The second one works too, but in my case I didn't want to hard-code an 
explicit
full or relative path to the library file, because I don't want stuff lower in
the hierarchy to know about what's going on further up.  For my money, the ideal
solution was for the top-level makefile to include the library, and for it to
then be available to everything below.  I expected export to do this for me and
found it not in accordance with my particular definition of least surprise when
the exported functions ended up in the submake but were mangled!  After all, 
when
you use export in a shell, what you see in the sub-shell is exactly what you
exported.

  It's subjective of course, but speaking as someone who does an awful lot of
maintenance programming myself, I think the patch isn't really a lot of 
change.
I added a stanza in snap_deps that follows an existing pattern and is obviously
correct.  I added a third state to export_all_vars and ensured I fixed every
reference.  I added or verbatim to the condition that detects the export
directive and a simple ternary operator to the assignments.  Most of this is
mechanical.  The only tricky bit is the evaluation of do_verbose I think, and I
think it's right the way I've written it.  I'm pretty sure that in the absence 
of
the verbatim keyword, the existing behaviour is exactly preserved, and I don't
think the syntax is terribly likely to clash with anyone's existing makefiles (I
know you *can* have variable names like 'vebatimSPACEfoo', but I bet it 
doesn't
happen much in practice).

  It's a nice feature, it fits very well with what make already does and makes 
it
more orthogonal and complete, it facilitates good architecture and style, and it
matches the intuitive expectations that anyone from a posix background will have
about what it means to export a variable.  I'd already written the code for my
own internal purposes so it was no trouble to offer it back upstream - and it's
always nice to avoid forks, in general.



  Any of the lurkers round here have opinions?  


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


[PATCH] Implement verbatim export.

2007-08-20 Thread Dave Korn


Hi Paul, and whoever else may be listening.

  As discussed last week, and ported to CVS head from our own internal build 
over
the weekend, here's a patch that implements verbatim export of makefile 
variables
to subprocesses.  This is particularly handy for anything with a dollar sign in
it!

  ChangeLog, full documentation and even a testcase included!  Buy one, get two
free!  Hurry, this offer cannot last!  goes for a little lie down



* file.c (snap_deps):  Also check for .EXPORT_ALL_VARIABLES_VERBATIM
pseudo-target, and set export_all_variables accordingly.
* read.c (eval):  Accept 'verbatim' keyword as well as 'export' and
set either export_all_variables or the new variable's export type
accordingly.  Use correct enumerated type to clear export_all_variables
when unexporting.
* variable.c (export_all_variables):  Change type to enum export_all.
(target_environment):  Handle new enumerated values for variable_export
and export_all_variables.  Export variables without expanding values
when verbatim export requested.
* variable.h (enum export_all):  Enumeration for export_all_variables,
as it is now tri-state rather than boolean.
(struct variable):  Add new enumerated value to enum variable_export
for verbatim export, and extend size of bitfield by one bit so all new
values still fit.
(export_all_variables):  Change type of declaration to enum export_all.
* doc/make.texi:  Extend Variables/Recursion node to document verbatim
export.  Document new .EXPORT_ALL_VARIABLES_VERBATIM pseudo-target.
* tests/scripts/features/verbatim:  New testcase for verbatim export.





cheers,
  DaveK
-- 
Can't think of a witty .sigline today


verbatim-export-patch-full-ported.diff
Description: Binary data


verbatim
Description: Binary data
___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


RE: gnumake[1]: execvp: /bin/sh: The parameter or environmentlists are too long

2007-08-15 Thread Dave Korn
On 15 August 2007 04:59, Paul Smith wrote:

 On Sun, 2007-08-12 at 22:31 -0400, Kothanda_Sathya wrote:
 How it looks on our GNUmakefile, if sources specified within the limit
 around 450, this error occurs otherwise it reports error the parameter
 or environment list are too long.
 
 The maximum size of the environment for a new process (which includes
 not only the environment variables but also the command line arguments)
 is a limit set by the operating system (the kernel).  It has nothing to
 do with GNU make and there is no possible way that GNU make can increase
 that limit: it's not modifiable from user space (in fact typically it
 can't be modified except by recompiling the kernel).


  I came up with an idea that solves some cases of this problem:
http://lists.gnu.org/archive/html/help-make/2007-03/msg00011.html

  Could dust off the patch and rework it against current cvs if anyone cares.


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


RE: Single-suffix rules broken?

2007-08-14 Thread Dave Korn
On 12 August 2007 15:07, Ludovic Courtes wrote:


 Am I missing something 

  The fact that you already sent this yesterday and it already got answered
two hours before you resent it?  Did the first answer fall in your spam bin
maybe?



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


RE: problem with GNU make configure

2007-08-05 Thread Dave Korn
On 04 August 2007 00:08, Christopher Faylor wrote:

 On Sat, Aug 04, 2007 at 01:08:54AM +0300, Eli Zaretskii wrote:
 Date: Fri, 3 Aug 2007 14:55:15 -0700 (PDT)
 From: [EMAIL PROTECTED]
 
 oops, here is the attached console capture
 
 It's much better to send this as plain text (you can capture it with
 `tee' or even by copying and pasting the contents into your mailer).
 
 My crystal ball says that somehow the configure script god DOS-style
 CR-LF line endings, which make Cygwin Bash barf.
 
 That's right.  That is exactly the problem.  Use u2d to fix it.

  You mean 'd2u'.
 
 This is not a GNU make problem.

  Nik, did you use winzip or some similar windows gui to unpack the make
sources?  If you did, don't, they often 'helpfully' convert lineendings; use
the cygwin command-line tar.

  The other possibility is that you've installed cygwin with dos-mode line
endings when you used setup.exe.  That can be switched back by rerunning
setup.exe.

  If you need more help, come and post over on the cygwin mailing list and
we'll sort it out there.  See the list page for archive, (un)subscribe and
posting details.

http://cygwin.com/cygwin/lists.html#cygwin


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


RE: $(and) and $(or) not working

2007-05-16 Thread Dave Korn
On 16 May 2007 16:22, Noel Yap wrote:

 I'm using the following:
 
 yapn:[EMAIL PROTECTED]:~/proj/aoeu make --version
 GNU Make 3.81beta4

  Note the beta tag.

 And the $(and) and $(or) functions always return empty.  Has anyone
 else experienced this?

  Probably means they weren't yet implemented at the time the beta was
released.  To find out for sure, try using the --warn-undefined-variables
option; if the built-ins aren't implemented, those will just look like
variable references to empty vars.


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


RE: GNU Make: A Program for Directing Recompilation, GNU make Version 3.81, April 2006 Documentation

2007-05-06 Thread Dave Korn
On 06 May 2007 14:50, Bob wrote:

 Some documentation issues for GNU Make: A Program for Directing
 Recompilation, GNU make Version 3.81, April 2006.
 
 1) On page 34, Section 4.8 Special Built-in Target Names, there's
 repeated text. The text under .SUFFIXES is also the second paragraph
 under .SECONDEXPANSION.

  So it is!

 2) On page 87, Section 8.8 The eval Function, there's a problem with the
 code example if make clean is issued, because the $(ALL_OBJS) variable
 in the rm command under clean, won't be initialized (and I'm curious how
 you'd do it).

  ALL_OBJS is /always/ initialised.  The foreach always runs, the ALL_OBJS+=
statements generated by the call PROGRAM_template are always eval'd, where do
you see a problem?

 3) On page 106, Section 10.3 Variables Used by Implicit Rules, there's
 repeated text. The CO entry is repeated twice, once after CC and another
 time after CXX.

  Yep, it sure is.
 
 4) A general recommendation, when lists are given, such as on page 106,
 Section 10.3, and the order of the entries is arbitrary, sort them in
 alphabetic sequence.

  Well, they aren't entirely arbitrary, they're roughly grouped into similar
functionality:

(binutils AR, AS)
(compiler CC, CXX, CPP, FC)
(rcs CO, GET)
(parsing LEX, YACC, LINT)
(couple more less-used complers M2C, PC)
(docs build tools MAKEINFO, TEX, TEXI2DVI, WEAVE, CWEAVE, TANGLE, CTANGLE)
(misc RM)

..with CO doubled and slightly misplaced.  In that particular case, straight
alpha order would scatter related things all over the place.  I'd suggest that
for this one, we move the CO entry so it's just before GET (kill the dup), and
perhaps bring M2C and PC back up to join the other language compilers.

  Attached patch does just that, and fixes 1) as well.


cheers,
  DaveK
-- 
Can't think of a witty .sigline today


docs-patch.diff
Description: Binary data
___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #16389] Defaults for Objective-C

2007-04-20 Thread Dave Korn

Follow-up Comment #5, bug #16389 (project make):

 why not just add the rules into your makefile if you need them?

  Not easy to do if you're talking about a large number of projects.

 I do realize this means that any makefile that uses objective-C
 needs to be changed, but the same is true for any number of 
 other languages that make doesn't provide default rules for.

  Obj-C is provided by GNU CC.  It makes sense for GNU Make to provide
builtin support for the entire family of languages supported by GNU CC.

 Further, even if we do change this for the next release of GNU
 make that won't be out for some months, then it will be many
 months more before that version is considered wide spread 

  That's a problem for end users and distro creators, not for the GNU Make
maintainer; they can all deal with it however they wish, but adding the patch
gives them the option.

 And finally, of course, requiring default rules just means
 makefiles are even more tightly tied to GNU make 

  I don't think this is a real problem either.  Anyone who is building ObjC
is almost certainly using Gnu Make.  After all, this would be a reason to
remove all the string functions and other GNU-specific features, but in fact,
it is not GNU Make's purpose to be a subset of all other make implementations;
it intends to be standardised enough to correctly process non-GNU makefiles,
while adding enhancements useful to support the technical and political goals
of the GNU project.

  I vote for acceptance.

___

Reply to this item at:

  http://savannah.gnu.org/bugs/?16389

___
  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: Ping Re: @file response file support for make

2007-03-18 Thread Dave Korn
On 18 March 2007 20:49, Joseph S. Myers wrote:

 Ping.  Any views on this patch or the principle of this feature
 http://lists.gnu.org/archive/html/bug-make/2006-09/msg8.html?
 

  I think it's eminently sensible.  The @-file is increasingly a standard
convention.


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


RE: BUG while running the make file

2007-02-07 Thread Dave Korn
On 07 February 2007 18:11, Eli Zaretskii wrote:

 Date: Wed, 7 Feb 2007 11:51:56 -0500
 From: Raheja, Himanshu [EMAIL PROTECTED]
 
 gcc -I.. -I. -I./include -I./common -D_FILE_OFFSET_BITS=64
 -I/usr/include -g -W -Wall -Werror -Wno-unused -g -O2
 -D_FILE_OFFSET_BITS=64 -g -W -Wall -Werror -Wno-unused -DHAVE_CONFIG_H
 -c ./common/linksupport.c -o linksupport.o
 
 /tmp/ccsjrIuh.s: Assembler messages:
 
 /tmp/ccsjrIuh.s:1368: Error: Incorrect register `%rax' used with `l' suffix
 
 /tmp/ccsjrIuh.s:1617: Error: Incorrect register `%rax' used with `l' suffix
 
 make[1]: *** [linksupport.lo] Error 1
 
 This has nothing to do with Make: the error message comes from the
 assembler invoked by the compiler (GCC).  So either your compiler is
 misconfigured, or maybe linksupport.c has some invalid inline assembly
 in it.  

  Or perhaps more likely, there's a version mismatch with the binutils.
Himanshu, are you using a recent gcc (4.x.x) with an old (2.16 or less)
binutils?  Or maybe an old gcc with a more recent binutils?


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


RE: BUG while running the make file

2007-02-07 Thread Dave Korn
On 07 February 2007 18:44, Raheja, Himanshu wrote:

 Hi Folks,
 
 I was able to resolve that issue by googling:
 
 When I ran ./configure CFLAGS=-m32 LDFLAGS=-m32
 
 And after that make install was working fine.
 But I am not sure why this was happening.

  Probably because your compiler is a recent one, and defaults to compiling
64-bit code, but your binutils are slightly out of date and have bugs trying
to assemble the 64-bit code.  The -m32 flag that you have found out to use
makes sure the compiler still generates 32-bit code, which the binutils do not
have any problem with.  So you end up with a 32-bit executable.  (It might be
possible to upgrade your binutils and get the build to work for 64 bits, and
the resulting executable might run faster, but it's not something to try
unless you were confident with upgrading packages and knew how to revert to
the old one if something went wrong.)


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


RE: BUG while running the make file

2007-02-07 Thread Dave Korn
On 07 February 2007 21:02, Raheja, Himanshu wrote:

 
 Kindly help and suggest what could be done.

  You'll have to contact a mailing list relating to LPRng for this kind of
in-depth advice; it's way out of our scope here.  Sorry!

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


RE: not able start Dansguardian service

2007-01-30 Thread Dave Korn
On 30 January 2007 17:06, Martin Dorey wrote:

 From the evidence you have provided, it looks like you have a
 pre-installed version of dansguardian that isn't working and that you've
 successfully configured but not tried to build or install a version of
 dansguardian from source.  If I were you, I'd be looking in
 /var/log/messages or /var/log/syslog for any error message produced when
 you try to start the dansguardian service, then googling for help with
 that.  This mailing list won't be able to help you.  This mailing list
 is for bugs in the make program.  There's no evidence of such a bug
 here.

  Perhaps all that Prakash is missing is to run make all; make install in
the source directory after having run the configure command.  If not, Prakash,
you will need to find a mailing list for questions about dansguardian.


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 #18872] problem colon after drive letter in prerequisite

2007-01-29 Thread Dave Korn

Follow-up Comment #3, bug #18872 (project make):

I'm fairly confident that cygwin's GCC will only generate dos-style paths in
the output dependency files if you pass it in dos-style paths on the
commandline or in #include statements.

  If it were to do so for any other reason, that would indeed be a bug, and
I'd be very glad to see a testcase posted to the cygwin mailing list.

  cheers, 
DaveK



___

Reply to this item at:

  http://savannah.gnu.org/bugs/?18872

___
  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: make igores options, switches and targets

2007-01-19 Thread Dave Korn
On 19 January 2007 11:57, James Coleman wrote:


 Is your make aliased to something else or is it a script ?
 And if it is invoked from sh is the same make invoked?
 Could there be any environment difference causing the problem?
   which make
   sh -c 'which make'
   ls -al `which make`
   alias |grep make
   sh -c 'alias |grep make'
 
 Looking for things like that might be worthwhile.

  You can use the 'which' shell builtin, it tells you at once and saves you
having to search it out:

/artimi/software/firmware $ type make
make is /artimi/tools/cygwin/bin/make
/artimi/software/firmware $ type type
type is a shell builtin
/artimi/software/firmware $ type cls
cls is aliased to `cmd /c cls'
/artimi/software/firmware $ sh -c 'type make'
make is /artimi/tools/cygwin/bin/make
/artimi/software/firmware $ sh -c 'type type'
type is a shell builtin
/artimi/software/firmware $ sh -c 'type cls'
sh: line 0: type: cls: not found
/artimi/software/firmware $

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


RE: [bug #18517] Compilation error in find_directory() in dir.c onWindows platforms

2006-12-13 Thread Dave Korn
On 13 December 2006 16:58, Martin Dorey wrote:

 p[-1] = '\0';
 
 What makes you think this is a compilation error?  Do you have a
 compiler error message for us?

  Did you miss the fact that p is const?


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


RE: problems with Net-PCap

2006-12-05 Thread Dave Korn
On 04 December 2006 23:35, sofia wrote:

 Hello,
 
 I'm trying to install the packages Net-Pcap0.14 but it's impossible to
 do make,it reports:
 
 /usr/bin/ld: /usr/local/lib/libpcap.a(pcap-linux.o): no se puede usar la
 reubicación R_X86_64_32 contra `a local symbol' cuando se hace un objeto
 compartido; recompile con -fPIC

  One cannot use the relocation R_X86_64_32 against a local symbol when one is 
making a segmented object; recompile with -fPIC.

 /usr/local/lib/libpcap.a: no se puede leer símbolos: Valor erróneo
 collect2: ld returned 1 exit status
 make: *** [blib/arch/auto/Net/Pcap/Pcap.so] Error 1
 
 I have tried with -fPIC and with several options(-k,-i,-B..) but it
 always happens the same.

  No hay problema con 'make'; el problema se queda entre los binutils.  
Pregunté a la lista [EMAIL PROTECTED].


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 #18335] Addition of $(math ...) functions

2006-11-21 Thread Dave Korn

Follow-up Comment #2, bug #18335 (project make):

Oh, BTW, I would suggest ...

 $(math $(VAL)+($(FOO)/4)) 

... that a lisp-like (non-reverse Polish) notation might be more consistent
with the general style of make here:

$(plus $(VAL),$(divide $(FOO),4))

cheers,
  DaveK


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?18335

___
  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: Cygwin make thinks a statement can be neither true nor false....

2004-04-21 Thread Dave Korn
 -Original Message-
 From: Paul Smith On Behalf Of Paul D. Smith
 Sent: 20 April 2004 19:35
 To: Dave Korn

 %% Dave Korn http://cygwin.com/acronyms/#PCYMTNQREAIYR writes:
 
   dk [ This is getting off topic for the cygwin list, 

 I'll leave it here for now but I'm happy to remove cygwin if 
 folks would  like.

  Nobody's complained yet, but me likewise: if anyone wants this thread off
the cygwin list, just ask.

[ about --warn-undefined-variables ]

 The problem is that in many makefiles you tend to get a lot of false
 positives.
 
 For example, many makefiles leave certain variables to be set by the
 user, like CPPFLAGS or CFLAGS.  If you do that in your makefiles, and
 the user has no reason to set them, then you'll get lots o' warnings.
 
 You can work around this with various GNU make-specific fanciness, but
 most developers don't bother.
 
   dk BTW, did I discuss the difficulty in determining whether a
   dk variable is undefined or empty?
 
 Not with me... to tell the difference you have to use the 
 $(origin ...)
 function and test if the value is undefined.
 
 Annoying but... possible! :).

  Hmm.  So might there be call for a variant of --warn-undefined-variables
that only warns about those for which $(origin ..) returns undefined?  That
way makefiles could supply empty-but-overrideable definitions of CFLAGS etc,
and everyone's happy... I think?

   dk ifne ($(VARIABLE), anything)
 
 So, this is a syntax error: it should be ifneq.

  D'oh and double d'oh!  That has to be the worst cognitive blind spot I've
experienced in years.  I've spent ages and ages reading through the info
docs in the past couple of days and *every*single*time* I've misread the
conditional as ifne rather than ifneq.  Boy, do I look stupid!

 Make parses makefiles line-by-line, and it categorizes each 
 line as one of three things (four things for GNU make): 

[...snip...]

 If none of the above applies (and in GNU make, if it's not a
 preprocessor line), then make doesn't have any idea what the heck the
 line is, so it says:
 
 missing separator
 
 which means, I couldn't find any of the tokens that allow me 
 to classify
 this line as one of the three (or four) things I know about, 
 so ... eh?

  BINGO!  The $(SMALL_CURRENCY_UNIT) finally drops!

  I think 90% of the problems I have grokking makefile parsing is that I've
been working on the assumption that it had a full parser, with a lexer and a
stream of tokens and something vaguely bison/yacc like.  For instance, I was
about to ask, given that you can have a colon as a char in a variable name,
how does make know whether VAR:=stuff means to assign 'stuff' to VAR
immediately, or do a deferred assign of 'stuff' to 'VAR:'.  Your explanation
suddenly makes lots of things clear, and I think it should probably be added
to the documentation.  Thank you SO much!

   dk I'd just like to point out that it isn't only $shell that is
   dk affected: $error and $warning are also affected.  I also notice
   dk that it works fine if you escape the semicolon:
 
 Right.  This is a parser bug, pure and simple.  Except, not so simple
 because the parser has to do the proper matching to realize 
 that the ;
 is part of a variable or function content.
 
 As gross as the syntax is, the make parser has to be equally quirky in
 order to handle it :-/.

  Yeh.  I wonder if it would be possible to build a proper parser, using
lexx/yacc/bison/whatever.  But I guess it would be very hard to guarantee
that it behaved in the same way as the original one for backward
compatibility purposes.


cheers, 
  DaveK
-- 
Can't think of a witty .sigline today



___
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make


RE: Cygwin make thinks a statement can be neither true nor false....

2004-04-20 Thread Dave Korn
 -Original Message-
 From: cygwin-owner On Behalf Of Ross Ridge
 Sent: 20 April 2004 02:41

[  Cc'd to the gmake bug reporting list; the actual bug report is at the end
of this post, and is not what the topic of this thread was originally about.
]

   Possibly a bug in make, as I'd expect it to complain
 about an undefined function named error:. 
 
 I would've expected it to complain about a bad substition reference,
 ie. it's missing an =.

  Or at least do anything, rather than nothing!

  Similar constructs are also silently ignored:
 
   $(foo This isn't a valid make function)
   $(bar Neither is this)
 
 Since foo and bar aren't functions supported by GNU Make these are
 just simple variable references.  Eg:
 
   foo This isn't a valid make function=one
   bar Neither is this=two
 
   test:
   echo $(foo This isn't a valid make function)
   echo $(bar Neither is this)

  Eeeurgh.  It even warns about this kind of nonsense in 'info make':

---snip!---
   A variable name may be any sequence of characters not containing `:',
`#', `=', or leading or trailing whitespace.  However, variable names
containing characters other than letters, numbers, and underscores
should be avoided, as they may be given special meanings in the future,
and with some shells they cannot be passed through the environment to a
sub-`make' (*note Communicating Variables to a Sub-`make':
Variables/Recursion.).
---snip!---

  Great.  So for the benefit of providing a feature that is virtually
impossible to safely and correctly use (chars in variable names that aren't
allowed in shell variables) the authors of make have created a syntax that
is so ambiguous it defies error detection and reporting.  Wahey.
Considering the close conceptual relationship between shell variables and
make variables, and the way they get exported and imported to each other, it
just seems like a mistake to try and pretend they're decoupled to such an
extent they could be incompatibly named.

  Anyway, I've found what seems to be a real bug in make (or perhaps in the
make docs): here's a quote from the item Communicating Options to a
Sub-`make' (under Node: Options/Recursion) in 'info make'

---snip!---
   Likewise variables defined on the command line are passed to the
sub-`make' through `MAKEFLAGS'.  Words in the value of `MAKEFLAGS' that
contain `=', `make' treats as variable definitions just as if they
appeared on the command line.  *Note Overriding Variables: Overriding.
---snip!---

  Oh no it doesn't: neither for variables defined on the initial make
command line, nor for variables passed to a recursive submake.  Here's my
sample makefile:

---snip!---

$(warning : MAKEFLAGS are $(MAKEFLAGS))
$(warning : MAKEOVERRIDES are $(MAKEOVERRIDES))

.PHONY: all silly force

all:
$(MAKE) silly FOO=1 BAR=2 BAZ=3
$(MAKE) silly BILL=1 BEN=2

silly: force
echo Make silly.

force: ;
echo force

---snip!---

and here's what happens when I test it:

---snip!---
[EMAIL PROTECTED] /davek/test/mk-test/test3 ls -al
total 1
drwxr-xr-x+   2 dk   Domain U0 Apr 20 12:40 .
drwxr-xr-x+   5 dk   Domain U0 Apr 20 12:40 ..
-rw-r--r--1 dk   Domain U  240 Apr 20 12:47 makefile
[EMAIL PROTECTED] /davek/test/mk-test/test3 make
makefile:2: : MAKEFLAGS are  --unix
makefile:3: : MAKEOVERRIDES are
make silly FOO=1 BAR=2 BAZ=3
make[1]: Entering directory `/davek/test/mk-test/test3'
makefile:2: : MAKEFLAGS are  --unix -w
makefile:3: : MAKEOVERRIDES are BAZ=3 BAR=2 FOO=1
echo force
force
echo Make silly.
Make silly.
make[1]: Leaving directory `/davek/test/mk-test/test3'
make silly BILL=1 BEN=2
make[1]: Entering directory `/davek/test/mk-test/test3'
makefile:2: : MAKEFLAGS are  --unix -w
makefile:3: : MAKEOVERRIDES are BEN=2 BILL=1
echo force
force
echo Make silly.
Make silly.
make[1]: Leaving directory `/davek/test/mk-test/test3'
[EMAIL PROTECTED] /davek/test/mk-test/test3 make DOES_IT_WORK=NO_NOT_AT_ALL
makefile:2: : MAKEFLAGS are  --unix
makefile:3: : MAKEOVERRIDES are DOES_IT_WORK=NO_NOT_AT_ALL
make silly FOO=1 BAR=2 BAZ=3
make[1]: Entering directory `/davek/test/mk-test/test3'
makefile:2: : MAKEFLAGS are  --unix -w
makefile:3: : MAKEOVERRIDES are BAZ=3 BAR=2 FOO=1 DOES_IT_WORK=NO_NOT_AT_ALL
echo force
force
echo Make silly.
Make silly.
make[1]: Leaving directory `/davek/test/mk-test/test3'
make silly BILL=1 BEN=2
make[1]: Entering directory `/davek/test/mk-test/test3'
makefile:2: : MAKEFLAGS are  --unix -w
makefile:3: : MAKEOVERRIDES are BEN=2 BILL=1 DOES_IT_WORK=NO_NOT_AT_ALL
echo force
force
echo Make silly.
Make silly.
make[1]: Leaving directory `/davek/test/mk-test/test3'
[EMAIL PROTECTED] /davek/test/mk-test/test3
---snip!---

  As you can see, they still end up in $MAKEOVERRIDES, so there's a simple
and practical workaround, but either the docs or the program behaviour are

RE: Cygwin make thinks a statement can be neither true nor false....

2004-04-20 Thread Dave Korn
 -Original Message-
 From: Paul Smith On Behalf Of Paul D. Smith
 Sent: 20 April 2004 16:44

[  This is getting off topic for the cygwin list, and unless I've managed to
spot any *real* bugs yet, it's not very OT for the bug-make list either; if
we want to carry on further we should perhaps take it to private mail or to
the help-make list, though I'm not subbed to any of the make lists.  ]

 %% Dave Korn [EMAIL PROTECTED] writes:
 
I would've expected it to complain about a bad 
 substition reference,
ie. it's missing an =.
 
   dk   Or at least do anything, rather than nothing!
 
 If you enable --warn-undefined-variables then you'll get a warning.

  Ah, thanks!  That's such a good option I think I'm about to alias it right
into all my make commands.  BTW, did I discuss the difficulty in determining
whether a variable is undefined or empty?  That may not seem like a
meaningful concept, but I want to know whether my makefile was correctly
invoked but the variable definition was empty, such as

make -f makefile FOO= all

or whether the invocation was incorrect by forgetting to specify a value for
FOO,

make -f makefile all

  At the moment, ifndef FOO succeeds equally in both cases.

 Well, this has been true of every version of make since make was
 invented 30+ years ago, not to mention required by the POSIX standard,
 so... a little late to worry about it now :).

  Heh, I know.  But any changes that could make less damn obfuscatory than
it already is would be great.  It's really in the error of diagnostics and
reporting that make has serious problems, presumably at least some of which
could be fixed without altering its behaviour?

  I mean, look at this:  (I'm not going to call it a bug _just_ yet, because
things that seem utterly unreasonable to me *keep* on turning out to be the
expected and desired behaviour!)

---
[EMAIL PROTECTED] /davek/test/mk-test/test5 ls
makefile1  makefile2
[EMAIL PROTECTED] /davek/test/mk-test/test5 cat makefile1

$(warning one one)
ifne ($(VARIABLE), anything)
$(warning two two)
BUILDDIR_EXTRA=-boot
else
$(warning three three)
endif

all:
echo So what's that all about then eh ?

[EMAIL PROTECTED] /davek/test/mk-test/test5 cat makefile2

$(warning one one)
ifeq ($(VARIABLE), anything)
$(warning two two)
BUILDDIR_EXTRA=-boot
else
$(warning three three)
endif

all:
echo So what's that all about then eh ?

[EMAIL PROTECTED] /davek/test/mk-test/test5 make -f makefile1
makefile1:2: one one
makefile1:3: *** missing separator.  Stop.
[EMAIL PROTECTED] /davek/test/mk-test/test5 make -f makefile1 VARIABLE=anything
makefile1:2: one one
makefile1:3: *** missing separator.  Stop.
[EMAIL PROTECTED] /davek/test/mk-test/test5 make -f makefile1 VARIABLE=anything_else
makefile1:2: one one
makefile1:3: *** missing separator.  Stop.
[EMAIL PROTECTED] /davek/test/mk-test/test5 make -f makefile2
makefile2:2: one one
makefile2:7: three three
echo So what's that all about then eh ?
So what's that all about then eh ?
[EMAIL PROTECTED] /davek/test/mk-test/test5 make -f makefile2 VARIABLE=anything
makefile2:2: one one
makefile2:4: two two
echo So what's that all about then eh ?
So what's that all about then eh ?
[EMAIL PROTECTED] /davek/test/mk-test/test5 make -f makefile2 VARIABLE=anything_else
makefile2:2: one one
makefile2:7: three three
echo So what's that all about then eh ?
So what's that all about then eh ?
[EMAIL PROTECTED] /davek/test/mk-test/test5
---

  Now where's the sense in that?  How can it be that the semantics of the
conditional operator affects the validity of the otherwise-identical syntax?
Every time make gives me that same old error message, I just want to scream
at it

  WHAT THE HELL KIND OF SEPARATOR ARE YOU EVEN TALKING ABOUT, YOU
DELUSIONAL MANIAC? 

   dk Considering the close conceptual relationship between shell
   dk variables and make variables, and the way they get exported and
   dk imported to each other, it just seems like a mistake to try and
   dk pretend they're decoupled to such an extent they could be
   dk incompatibly named.
 
 I don't agree that there is a close conceptual relationship.  
 In fact, I
 think it's very important to not view make variables that way.

  Well, IMO there is a confused and unclear relationship.  In some ways
they're tightly coupled, and in other ways the links are broken.  

 Make does _NOT_ export every variable into the environment.  

  I never said that; I said that the two do not map to clearly distinct
concepts, but to overlapping sets.

 Make treats
 the environment variable space and its internal variable space as two
 distinct entities, and makefile writers are well advised to consider
 them that way as well.
 
 When make starts up it imports all of the environment variables as
 make variables, yes.  And, the user can request that certain variables
 be exported from the make variable space into sub-processes