make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Limitation compared to Cygwin make


From: Offner, Georg
Subject: Re: Limitation compared to Cygwin make
Date: Mon, 6 Nov 2006 13:52:59 +0100


----- Original Message ----- From: "Eli Zaretskii" <address@hidden>
To: "Offner, Georg" <address@hidden>
Cc: <address@hidden>
Sent: Friday, November 03, 2006 8:44 PM
Subject: Re: Limitation compared to Cygwin make


From: "Offner, Georg" <address@hidden>
Cc: <address@hidden>
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.



Hi,

one more piece of investigation:
The failure is not due to a limitation in file name length, everything works fine up to a file name length (including path) of 222 characters. But now mystery begins: increasing the number of files you suddenly come to the point where it breaks, in my case with a file name length of about 212 characters the limit was 61 files, the 62nd file broke make. And even more interesting: if you now decrease the file file or path length, it will work again until you increase the number of files again. Thus the limitation lies obviously in the combination of file name length and number of files. If I reduce the path/file name length to about 20 characters, it even works quite fine with my 5680 C files...

Maybe I find the time to do some debugging of proces_begin, but I'm no make source expert ;-).

Regards,
Georg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]