make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Windows make invoking cygwin sh bug


From: Alex Khripin
Subject: Re: Windows make invoking cygwin sh bug
Date: Fri, 18 Mar 2011 11:58:43 -0400

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 <address@hidden> wrote:
> Date: Fri, 18 Mar 2011 09:42:05 -0400
> From: Alex Khripin <address@hidden>
> Cc: address@hidden
>
> 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]