----- Original Message -----
From: "Eli Zaretskii" <[EMAIL PROTECTED]>
To: "Offner, Georg" <[EMAIL PROTECTED]>
Cc: <[email protected]>
Sent: Friday, November 03, 2006 8:44 PM
Subject: Re: Limitation compared to Cygwin make
From: "Offner, Georg" <[EMAIL PROTECTED]>
Cc: <[email protected]>
Date: Fri, 3 Nov 2006 16:58:47 +0100
OBJ_DIR =
OUTPATH1/OUTPATH12/OUTPATH13/OUTPATH14/OUTPATH15/OUTPATH6/OUTPATH61/OUTPATH62/OUTPATH63/OUTPATH64/OUTPATH65/OUTPATH66/OUTPATH67/OUTPATH68/OUTPATH1/OUTPATH12/OUTPATH13/OUTPATH14
local_lib = $(OBJ_DIR)local.lib
all: $(local_lib)
If these are your file names, I think I know why they don't work. For
obscure histerical reasons, the native Windows port of Make uses an
obsolete API to look for executable files. That obsolete API only
supports file names up to 128 characters long. Can you try shortening
your OBJ_DIR path to less than 128 characters and see if it starts
working then? Note that you append local.lib to the path, so you
should shorten OBJ_DIR so that the resulting file name does not exceed
128 characters.
It is on my todo to fix this by switching to a more modern API for the
next release of Make.
If my guess is correct, it would also explain why the Cygwin port is
not hit by the problem: it doesn't use the code which calls the
obsolete API.
If the above does not explain the failure (i.e. the example makefile
does not work even with file names shorter than 128 characters),
perhaps you could step with a debugger into the function
process_begin, which reports the failure you posted, and see why it
fails.
Sorry for the inconvenience, and thanks in advance for your help in
investigating this problem.
P.S. I see that you also reported a similar problem back in May.
I did some debugging, but I could not work out, why CreateProcess fails. The
function parameters for me seem to be the same either in good and in bad
case.
Here is the parameter list of the call of CreateProcess in bad case, please
let me know, if you need more information.
- command_line 0x009d44d8 "sh.exe -c "printf \"\n\""" char *
0x73 's' char
- exec_path 0x0012db00 "D:\Tmp\TESTSYSTEM.W32MAKE\sh.exe" char *
0x44 'D' char
- pproc 0x009d4408 {sv_stdin=0x009d4408 sv_stdout=0x009d4410
sv_stderr=0x009d4418 ...} sub_process_t *
+ sv_stdin 0x009d4408 int [2]
+ sv_stdout 0x009d4410 int [2]
+ sv_stderr 0x009d4418 int [2]
using_pipes 0x00000000 int
+ inp 0x00000000 <bad Ptr> char *
incnt 0x00000000 unsigned long
+ outp 0x00000000 <bad Ptr> char * volatile
outcnt 0x00000000 volatile unsigned long
+ errp 0x00000000 <bad Ptr> char * volatile
errcnt 0x00000000 volatile unsigned long
pid 0x00000000 int
exit_code 0x00000000 int
signal 0x00000000 int
last_err 0x000000ea long
lerrno 0x00000068 long
pproc->lerrno 0x00000068 long
_______________________________________________
Make-w32 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/make-w32