New Cygwin Net Release (make error)

Christopher Jones cbjones@nortelnetworks.com
Wed Apr 19 09:47:00 GMT 2000


Title: RE: New Cygwin Net Release (make error)





>From Bernard
> From Brian
>> Okay, I'm sure of what caused this now.  The Makefile look 
>> something like
>> this. 
>> 
>> #--begin Makefile--- 
>> SOMEVAR=$(ANOTHERVAR)/etc 
>> include $(DEVDIR)/Makefile.mstr 
>> #--end Makefile--- 
>> 
>> DEVDIR is defined in the environment.  ANOTHERVAR however is 
>> defined in the
>> included makefile.  I thought make was supposed to try to do 
>> full expansion
>> on a second read of the makefile?  Seems to have worked before.  
> 
> In fact make is suppose to expand SOMEVAR only when it sees 
> $(SOMEVAR), so
> yo u only have to be sure that ANOTHERVAR is set before trying to use
> SOMEVAR. However be careful: if SOMEVAR is used in a 
> dependency (either
> target or dependant part), it will be expanded as soon as it is seen.


So I went off and tried to duplicate my problem with the smallest Makefile possible and have succeeded.  Turns out the problem is with a target macro's value indicating a dos style filename, e.g. e:/dir/file (yes, with UNIX slashes) even with MAKE_MODE=UNIX set in the environment.  Using something like //e/dir/file works of course.  I think that on win32 e:/dir/file is supposed to be allowed without confusing the make parser but I cannot find much in the info documentation to help make this clearer (it did work in the past with make 3.75, the cygwin 1.1 net release uses 3.77).

>From make.info 3.77...


   Microsoft operating systems (MS-DOS and MS-Windows) use backslashes
to separate directories in pathnames, like so:


       c:\foo\bar\baz.c


   This is equivalent to the Unix-style `c:/foo/bar/baz.c' (the `c:'
part is the so-called drive letter).  When `make' runs on these
systems, it supports backslashes as well as the Unix-style forward
slashes in pathnames.  However, this support does *not* include the
wildcard expansion, where backslash is a quote character.  Therefore,
you *must* use Unix-style slashes in these cases.


--- end excerpt from info


Ideas?  I've cc'd bug-make@gnu.org.  


Brian






More information about the Cygwin mailing list