This is the mail archive of the
mailing list for the Cygwin project.
Re: Why are Windows paths broken in make 3.81?
Michael Hirsch wrote:
On 7/21/06, mwoehlke <firstname.lastname@example.org> wrote:
Michael Hirsch wrote:
> Here is a sample Makefile that breaks with Gnu Make 3.81-1 under
> Cygwin, but works fine with Gnu Make 3.80-1. We have been writing
> these types of Makefiles for years, using both Windows and Cygwin
> tools, and this is the first time Make has ever broken like this.
> I see in another thread that this is a known issue, though I don't see
> it in the changelogs for make 3.81.
> Was this a deliberate break with backwards compatibility? It means
> that every single reference to a windows path needs to be wrapped in
> cygpath, which is a huge inconvenience.
Yes. See <http://cygwin.com/ml/cygwin-announce/2006-07/msg00008.html>.
If you are using a POSIX-like "OS" (i.e. Cygwin), you should be using
POSIX paths. That's not an inconvenience, that's called writing a bad
makefile. If you aren't using Cygwin for the POSIX environment, you
should be using MinGW.
I see. Unfortunately, I am trying to use cygwin to make my life
easier on Windows, but I am still constrained to use windows programs.
Many of them cannot use the cygwin paths, but require a path like
"c:/my/path.exe". It will be very difficult to switch back and forth
between path representations. I guess I do need to look into MinGW.
Ah, that problem. There are two possible solutions. One is to write a
wrapper script for your Windows programs that will take the args,
translate them (using cygpath), and then invoke the actual program. The
other is to use 'cygpath' directly in your makefile, as needed.
I also use Cygwin to drive the Microsoft compilers, having switched
recently from an MKS environment. I used both of the above techniques.
My GNUmakefile's do not contain Windows paths, as they should not in a
> Is it broken only on Windows?
That sounds like a silly question... 'are Windows paths only broken on
It sounds like a silly question, but it isn't. I tested, and yes, if
you have a directory named "c:" in Linux, make is broken on that
directory, too. Since "c:" is a valid name in Linux (and POSIX, I
believe) I consider that a bug in make. I'll have to report that to
GNU, as it is not a cygwin issue. The error message on Linux is just
as incomprehensible as it is Cygwin, too, so at least I know who to
talk to about it.
Right, that would be something to take up with the make author. However,
as both CGF and Igor mentioned, ':' means something special to make, and
so probably needs to be quoted/escaped/something. There is probably a
way to do this that works right now on make 3.81.
Ok, so the quotes aren't entirely original.
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html