Your other points (in the previous email) are pretty valid -- I'm going to
try to initiate some conversations with the Cygwin developers.

If they consider the command line parsing as-is to be "to spec" (I have yet
to _find_ any spec for argument parsing), then there is really no choice but
to make make work to that spec -- e.g. if they say that when you call sh.exe
from a DOS/Windows program, you _have to format arguments this way_, then,
well, make has to format arguments this way. If they see room for a fix --
then there is no trouble with make at all. I'll see how that goes. In case
there are cygwin developers on this list, I won't say anything too mean -
but having followed development and read their mailing list archives, I am
not encouraged.

Just to be clear, though, make runs a very small set of programs directly.
Remember that almost all programs are invoked by make via ' sh.exe -c
"command" '-- and the invocation code/command line generation can tell that
it's running sh.exe (and not some other program). There is in fact some
logic already that determines whether or not make is running the shell or
not (other things it runs include echo and make itself). Thus, while you're
right that the make code can't tell whether everything it runs is a Cygwin
binary, it does know about the special case of sh.exe being a cygwin binary
- and that covers most of the cases.

On Fri, Mar 18, 2011 at 11:09 AM, Eli Zaretskii <[email protected]> wrote:

> > Date: Fri, 18 Mar 2011 09:42:05 -0400
> > From: Alex Khripin <[email protected]>
> > Cc: [email protected]
> >
> > I do want to correct you: GNU make _does_ know that it is being used with
> > Cygwin. When you build GNU make on Windows, you have to specify, in
> > config.h.W32, that it is going to be calling the Cygwin shell. It is
> based
> > on that compiler option that it knows, for example, that nested double
> > quotes should be escaped as "" instead of \". Here's a quote
> > /*
> >  * Define if you have the Cygnus "Cygwin" GNU Windows32 tool set.
> >  * Do NOT define BATCH_MODE_ONLY_SHELL if you define HAVE_CYGWIN_SHELL
> >  */
> > /*#define HAVE_CYGWIN_SHELL 1 */
>
> That doesn't tell Make it will be invoking Cygwin programs.  It just
> activates some code that makes interaction with Cygwin easier.  It
> doesn't mean every program invoked by Make will be a Cygwin program.
>
_______________________________________________
Make-w32 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/make-w32

Reply via email to