Index: tests/early-libtool.at
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/early-libtool.at,v
retrieving revision 1.1
diff -u -r1.1 early-libtool.at
--- tests/early-libtool.at	18 Aug 2005 17:07:17 -0000	1.1
+++ tests/early-libtool.at	26 Aug 2005 10:48:48 -0000
@@ -51,14 +51,14 @@
 
 libhello.la: hello.lo
 	$(LINK) -rpath $(libdir) hello.lo
-hell$(EXEEXT): main.o libhello.la
-	$(LINK) main.o libhello.la
+hell$(EXEEXT): main.$(OBJEXT) libhello.la
+	$(LINK) main.$(OBJEXT) libhello.la
 
 .SUFFIXES:
-.SUFFIXES: .c .o .lo
+.SUFFIXES: .c .$(OBJEXT) .lo
 
-.c.o:
-	$(COMPILE) -c -o $@ $<
+.c.$(OBJEXT):
+	$(COMPILE) -c $<
 .c.lo:
 	$(LTCOMPILE) -c -o $@ $<
 ]])
@@ -155,14 +155,14 @@
 COMPILE = $(CC) $(DEFAULT_INCLUDES)
 LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) -o $@
 
-hell$(EXEEXT): main.o libhello.la
-	$(LINK) main.o libhello.la
+hell$(EXEEXT): main.$(OBJEXT) libhello.la
+	$(LINK) main.$(OBJEXT) libhello.la
 
 .SUFFIXES:
-.SUFFIXES: .c .o
+.SUFFIXES: .c .$(OBJEXT)
 
-.c.o:
-	$(COMPILE) -c -o $@ $<
+.c.$(OBJEXT):
+	$(COMPILE) -c $@ $<
 ]])
 
 AT_DATA([hello.c],
Index: tests/inherited_flags.at
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/inherited_flags.at,v
retrieving revision 1.5
diff -u -r1.5 inherited_flags.at
--- tests/inherited_flags.at	13 Aug 2005 07:26:52 -0000	1.5
+++ tests/inherited_flags.at	26 Aug 2005 10:48:48 -0000
@@ -57,11 +57,15 @@
 
 AT_CHECK([${LIBTOOL} --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o libbaz.la baz.lo -no-undefined -rpath /usr/local/lib ./libfoo.la ./libbar.la],
 	 [ignore],[stdout],[ignore])
-AT_CHECK([grep 'llt_[[ui]]nlikely_existing_lib.*llt_[[ui]]nlikely_existing_lib' stdout],
+# We used to grep for
+# 'llt_[[ui]]nlikely_existing_lib.*llt_[[ui]]nlikely_existing_lib'
+# here.  This fails on win32/MSVC because the generated command lines have a
+# different syntax.  So drop the first `l'.
+AT_CHECK([grep 'lt_[[ui]]nlikely_existing_lib.*lt_[[ui]]nlikely_existing_lib' stdout],
 	 [0],[ignore],[ignore])
 AT_CHECK([${LIBTOOL} --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o main main.lo -no-undefined -rpath /usr/local/lib  ./libfoo.la ./libbar.la],
 	[ignore],[stdout],[ignore])
-AT_CHECK([grep 'llt_[[ui]]nlikely_existing_lib.*llt_[[ui]]nlikely_existing_lib' stdout],
+AT_CHECK([grep 'lt_[[ui]]nlikely_existing_lib.*lt_[[ui]]nlikely_existing_lib' stdout],
 	 [0],[ignore],[ignore])
 
 AT_CLEANUP
Index: tests/template.at
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/template.at,v
retrieving revision 1.6
diff -u -r1.6 template.at
--- tests/template.at	26 Aug 2005 10:00:18 -0000	1.6
+++ tests/template.at	26 Aug 2005 10:48:48 -0000
@@ -81,8 +81,8 @@
 AT_CHECK($LIBTOOL --tag=CXX --mode=compile $CXX -I. $CPPFLAGS $CXXFLAGS -c -o aclib.lo aclib.cpp, [0], [ignore], [ignore])
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CPPFLAGS $CXXFLAGS -o libaclib.la aclib.lo, [0], [ignore], [ignore])
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CPPFLAGS $CXXFLAGS -o libalib.la -rpath /usr/local/lib alib.lo libaclib.la, [0], [ignore], [ignore])
-AT_CHECK($CXX -I. $CPPFLAGS $CXXFLAGS -c -o prog.o prog.cpp, [0], [ignore], [ignore])
-AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CPPFLAGS $CXXFLAGS -o prog prog.o libalib.la, [0], [ignore], [ignore])
+AT_CHECK($CXX -I. $CPPFLAGS $CXXFLAGS -c prog.cpp, [0], [ignore], [ignore])
+AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CPPFLAGS $CXXFLAGS -o prog prog.$OBJEXT libalib.la, [0], [ignore], [ignore])
 
 LT_AT_EXEC_CHECK([./prog], [0], [ignore], [ignore])
 
@@ -196,37 +196,51 @@
 
 cd obj
 
+# If the compiler supports -c -o, we want to use it:
+# it may make a difference for templates
+eval `$LIBTOOL --tag=CXX --config | grep ^compiler_c_o=`
+case $compiler_c_o in
+yes)
+  main_o=sub/main.$OBJEXT
+  AT_CHECK($CXX $CPPFLAGS $CXXFLAGS -c -o $main_o ../src/sub/main.cpp, [0], [ignore], [ignore])
+  ;;
+*)
+  main_o=main.$OBJEXT
+  AT_CHECK($CXX $CPPFLAGS $CXXFLAGS -c ../src/sub/main.cpp, [0], [ignore], [ignore])
+  ;;
+esac
+
 AT_CHECK($LIBTOOL --tag=CXX --mode=compile $CXX $CPPFLAGS $CXXFLAGS -c -o lib/a.lo ../src/lib/a.cpp, [0], [ignore], [ignore])
 AT_CHECK($LIBTOOL --tag=CXX --mode=compile $CXX $CPPFLAGS $CXXFLAGS -c -o lib2/b.lo ../src/lib2/b.cpp, [0], [ignore], [ignore])
-AT_CHECK($CXX $CPPFLAGS $CXXFLAGS -c -o sub/main.o ../src/sub/main.cpp, [0], [ignore], [ignore])
+AT_CHECK($CXX $CPPFLAGS $CXXFLAGS -c ../src/sub/main.cpp, [0], [ignore], [ignore])
 # both convenience
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib/liba.la lib/a.lo, [0], [ignore], [ignore])
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib2/libb.la lib2/b.lo, [0], [ignore], [ignore])
-AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main sub/main.o lib2/libb.la lib/liba.la, [0], [ignore], [ignore])
+AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main $main_o lib2/libb.la lib/liba.la, [0], [ignore], [ignore])
 LT_AT_EXEC_CHECK([./sub/main], [ignore])
 # lib convenience
 case $host in
   *-*-darwin*) ;;
   *)	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib2/libb.la lib2/b.lo -rpath /foo, [0], [ignore], [ignore])
-	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main sub/main.o lib2/libb.la lib/liba.la, [0], [ignore], [ignore])
+	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main $main_o lib2/libb.la lib/liba.la, [0], [ignore], [ignore])
 	LT_AT_EXEC_CHECK([./sub/main])
 	;;
 esac
 # both installed
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib/liba.la lib/a.lo -rpath /foo, [0], [ignore], [ignore])
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib2/libb.la lib2/b.lo -rpath /bar, [0], [ignore], [ignore])
-AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main sub/main.o lib2/libb.la lib/liba.la, [0], [ignore], [ignore])
+AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main $main_o lib2/libb.la lib/liba.la, [0], [ignore], [ignore])
 LT_AT_EXEC_CHECK([./sub/main])
 # both convenience, libb depending on liba
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib/liba.la lib/a.lo, [0], [ignore], [ignore])
 AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib2/libb.la lib2/b.lo lib/liba.la, [0], [ignore], [ignore])
-AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main sub/main.o lib2/libb.la, [0], [ignore], [ignore])
+AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main $main_o lib2/libb.la, [0], [ignore], [ignore])
 LT_AT_EXEC_CHECK([./sub/main])
 # lib convenience
 case $host in
   *-*-darwin*) ;;
   *)	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib2/libb.la lib2/b.lo lib/liba.la -rpath /foo, [0], [ignore], [ignore])
-	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main sub/main.o lib2/libb.la, [0], [ignore], [ignore])
+	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main $main_o lib2/libb.la, [0], [ignore], [ignore])
 	LT_AT_EXEC_CHECK([./sub/main])
 	;;
 esac
@@ -234,7 +248,7 @@
 case $host in
   *-*-darwin*) ;;
   *)	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o lib2/libb.la lib2/b.lo lib/liba.la -rpath /bar, [0], [ignore], [ignore])
-	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main sub/main.o lib2/libb.la, [0], [ignore], [ignore])
+	AT_CHECK($LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS -o sub/main $main_o lib2/libb.la, [0], [ignore], [ignore])
 	LT_AT_EXEC_CHECK([./sub/main])
 	;;
 esac
