This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Why are Windows paths broken in make 3.81?


Michael Hirsch wrote:
On 7/21/06, mwoehlke <mwoehlke@tibco.com> 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 Cygwin environment.

> Is it broken only on Windows?

That sounds like a silly question... 'are Windows paths only broken on
Windows?'

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.


--
Matthew
Ok, so the quotes aren't entirely original.


-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]