For whatever reason on my Windows XP machine the environment variable LIB is
set to
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Lib\
This is harmless to Windows programs but when using MakeMaker under Cygwin, the
trailing backslash causes errors a bit like this:
% make subdirs
cd C && make -f Makefile all LIB="C:\Program Files\Microsoft Visual Studio .NET
2003\SDK\v1.1\Lib\" LIBPERL_A="libperl.a" LINKTYPE="dynamic" PREFIX=""
OPTIMIZE="" PASTHRU_DEFINE="" PASTHRU_INC=""
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [subdirs] Error 2
The backslash at the end of the double-quoted string confuses sh. This could
be fixed by putting a substitution in the Makefile:
PASTHRU = LIB="$(subst \,/,${LIB})"\
...
and perhaps for other environment variables which contain paths and so might
end in backslash on Cygwin. (I don't expect a pure-Win32 version of perl would
be affected because it wouldn't use /bin/sh from makefiles.)
Failing that, MakeMaker could simply fall over with an error message whenever
it detects trailing backslashes in an environment variable it would like to
mention. In principle, the same bug affects more normal Unix-like systems
whenever someone puts a backslash at the end of the LIB environment variable
(but who would do that?).
--
Ed Avis <[EMAIL PROTECTED]>
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________