From: temerson AT spyglass DOT com (Emerson, Tom) Subject: Of vpath and win32 mode 9 May 1998 00:57:13 -0700 Message-ID: Mime-Version: 1.0 Content-Type: text/plain To: "'gnu-win32 AT cygnus DOT com'" Consider the following makefile: vpath %c : ..\..\src foo : foo.o $(CC) -o foo foo.o foo.o : foo.c If run make in Win32 mode then the path "..\..\src/foo.c" is used, which causes some compilers (such as Microware's Ultra C (for OS-9000 development)) fits. Below you'll find a patch to vpath.c in the B19 version of make which affixes a backslash to the vpath generated pathname when running in Win32 mode. Share and enjoy. -tre *** vpath.c.orig Thu Dec 11 03:33:15 1997 --- vpath.c Tue May 05 07:32:27 1998 *************** *** 24,33 **** --- 24,37 ---- #endif /* CYGNUS LOCAL: new scheme does not use a preprocessor define */ extern char path_separator_char; + #ifdef __CYGWIN32__ + extern int shell_mode; + #endif /* __CYGWIN32__ */ + /* Structure used to represent a selective VPATH searchpath. */ struct vpath { struct vpath *next; /* Pointer to next struct in the linked list. */ *************** *** 453,463 **** --- 457,474 ---- higher levels. */ struct stat st; /* Put the slash back in NAME. */ + #ifdef __CYGWIN32__ + /* Some Win32 hosted compilers (e.g., Microware's Ultra C) barf on + filenames with forward slashes in them, so when running in Win32 + mode use a back slash instead. */ + *n = (shell_mode == WIN32_SHELL) ? '\\' : '/'; + #else *n = '/'; + #endif if (!exists_in_cache /* Makefile-mentioned file need not exist. */ || stat (name, &st) == 0) /* Does it really exist? */ { /* We have found a file. -- Tom Emerson Spyglass, Inc. Software Engineer Cambridge Research Center - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".