Hi! When the compile wrapper is given win32 paths (with colons and/or backslashes) it gets into trouble with both creating the lock directory and guessing the output file of the losing compiler.
Here's a patch. Cheers, Peter
diff --git a/ChangeLog b/ChangeLog index 2463967..f9800e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-02-01 Peter Rosin <[email protected]> + + * lib/compile: Handle colons and backslashes in win32 paths. + 2009-01-23 Eric Blake <[email protected]> Use no-arg macros via AC_REQUIRE for consistency. diff --git a/lib/compile b/lib/compile index 35af809..5b1ea71 100755 --- a/lib/compile +++ b/lib/compile @@ -1,7 +1,7 @@ #! /bin/sh # Wrapper for compilers which do not understand `-c -o'. -scriptversion=2005-05-14.22 +scriptversion=2009-02-01.17 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. @@ -102,13 +102,13 @@ if test -z "$ofile" || test -z "$cfile"; then fi # Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` +cofile=`echo "$cfile" | sed -e 's|^.*/\\:||' -e 's/\.c$/.o/'` # Create the lock directory. -# Note: use `[/.-]' here to ensure that we don't use the same name +# Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break
