Hi! With a bunch of pending patches [1] applied, the status of the pr-msvc-support branch is as follows, when bootstrapped on Cygwin (autoconf 2.63, automake 1.10.1) and configured on MSYS (autoconf 2.61, automake 1.10) in a subdir with:
../configure CC=cl CFLAGS='-MD -Zi' CXX=cl CXXFLAGS='-MD -Zi' LD=link \ NM='dumpbin -symbols' AR=lib STRIP=: RANLIB=: F77=no FC=no I also have a MinGW install accessible from the MSYS tree, and I think some tool(s) from it (objdump?) might still be used at some point. cl, link, lib and friends are from MSVC 8 (2005). Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 It *should* work for MSVC 6 as well, and I see no reason why it shouldn't also work for MSVC 7, 7.1 and 9 (famous last words). It's been a while since I tested on MSVC 6 though, and the other versions are virtually untested in this context. ## -------------------------- ## ## libtool 2.2.7a test suite. ## ## -------------------------- ## Libtoolize operation. 1: libtoolize macro installation ok 2: libtoolize macro directory mismatch error ok 3: libtoolize macro serial update ok 4: libtoolize config files serial update ok 5: diagnose missing LT_CONFIG_LTDL_DIR ok 6: copy ltdl.m4 with shared macro directory ok 7: correctly parse LTDL_INIT from configure.ac ok 8: diagnose missing LTDL_INIT invocation ok 9: upgrading verbatim style aclocal.m4 ok 10: verbatim aclocal.m4 w/o AC_CONFIG_MACRO_DIR ok 11: nonrecursive ltdl with AC_CONFIG_MACRO_DIR ok 12: subproject ltdl with non-shared directories ok 13: LIBTOOLIZE_OPTIONS ok 14: cleanup old installation ok Testing libtool functions. 15: duplicate members in archive tests ok 16: duplicate convenience archive names skipped (duplicate_conv.at:80) 17: preserve duplicate convenience deps skipped (duplicate_deps.at:66) 18: inherited_linker_flags ok 19: C convenience archives ok 20: C++ convenience archives ok 21: F77 convenience archives skipped (convenience.at:110) 22: FC convenience archives skipped (convenience.at:170) 23: Java convenience archives skipped (convenience.at:230) 24: Link order test ok 25: Link order of deplibs ok 26: Failure tests ok 27: shlibpath_overrides_runpath skipped (shlibpath.at:54) 28: Runpath in libtool library files ok 29: static linking flags for programs FAILED (static.at:197) 30: ccache -all-static ok 31: Export test ok 32: sys_lib_search_path skipped (search-path.at:57) 33: indirect convenience ok 34: indirect uninstalled ok 35: static library contains static library UNEXPECTED PASS 36: both of -o prog and -o prog$EXEEXT work ok 37: execute mode ok 38: cwrapper for uninstalled executables ok 39: inferred tag ok 40: CXX inferred tag ok 41: F77 inferred tag skipped (infer-tag.at:56) 42: FC inferred tag skipped (infer-tag.at:70) 43: GCJ inferred tag skipped (infer-tag.at:84) 44: localized compiler messages ok 45: nocase library search ok 46: Install tests ok DESTDIR tests 47: Simple DESTDIR install ok 48: DESTDIR with in-package deplibs ok Support for older m4 interface. 49: AM_PROG_LIBTOOL ok 50: AC_WITH_LTDL ok Libtool subdir-objects support. 51: C subdir-objects ok 52: C++ subdir-objects FAILED (am-subdir.at:148) Libltdl functionality. 53: lt_dlexit unloading libs ok 54: lt_dlopenadvise library loading ok 55: ltdl API ok 56: enforced lib prefix ok Standalone Libltdl. 57: compiling softlinked libltdl ok 58: compiling copied libltdl ok 59: installable libltdl ok 60: linking libltdl without autotools ok Subproject Libltdl. 61: compiling softlinked libltdl ok 62: compiling copied libltdl ok 63: installable libltdl ok 64: linking libltdl without autotools ok Nonrecursive Automake Libltdl. 65: compiling softlinked libltdl ok 66: compiling copied libltdl ok 67: installable libltdl ok Recursive Automake Libltdl. 68: compiling softlinked libltdl ok 69: compiling copied libltdl ok 70: installable libltdl ok C++ template tests. 71: simple template test ok 72: template test with subdirs ok Constructors. 73: C++ static constructors ok libtool script generation. 74: config.status ok 75: config.lt ok Libtool usage in GCC 76: AC_NO_EXECUTABLES ok Detecting identical deplibs. 77: build tree relpaths expected failure (deplibs-ident.at:68) configure interface to libltdl. 78: installable libltdl ok 79: --with-ltdl-include/lib ok 80: --with-included-ltdl ok 81: convenience libltdl ok Libtool stress test. 82: Link option thorough search test ok 83: Run tests with low max_cmd_len FAILED (cmdline_wrap.at:43) Mac OS X tests 84: darwin fat compile skipped (darwin.at:42) ## ------------- ## ## Test results. ## ## ------------- ## ERROR: 73 tests were run, 1 passed unexpectedly, 4 failed (1 expected failure). 11 tests were skipped. The problem in 29 (static.at) is that libtool has no way of guessing the name of the static library when the .la file is removed, it ends up with the import lib instead. The only fix I can think of is to change the naming convention I selected for dll/import/static. Seems like a big change though. I'll have a look at that eventually. The problem in 35 (archive-in-archive.at) is that the MS archiver (lib.exe) copies the content of an archive, and not the archive itself, into another archive when requested. Maybe that should be tagged as something other than an unexpected pass? The problem in 52 (am-subdir.at) is that Automake doesn't have an AM_PROG_CXX_C_O macro (or should I say that -o doesn't work in cl?). I have made a request [2] for such a macro on the appropriate mailing list (at least I think it's the right list, no response yet). The summary for test 83 (cmdline_wrap.at) is like this: testsuite: 29 failed, 35 passed unexpectedly so as expected given the above (52 isn't tested in cmdline_wrap.at) make check-local on Cygwin/gcc is "clean" with this flavor of libtool. On MSYS/MinGW, stresstest.at now passes when "Run tests with low max_cmd_len", that fails on git master. On the other hand, "cwrapper for uninstalled executables" fails at cwrapper.at:78 (both with and without low max_cmd_len). It's the second time through the loop that fails, when restrictive_flags='-std=c89 -Wall -Werror' (an attempt to execute the missing usea.exe). The root cause is that when linking, the compile of the wrapper fails with various implicitly declared (or undeclared) identifiers -> usea.exe goes MIA. But that test behaves the exact same way on a pure libtool from git master, so move on, nothing to see here... I guess I should to set up a Linux VM and see what happens if I cross- compile from *nix to MinGW. Cheers, Peter [1] Pending patches http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00152.html http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00174.html (but msg00174 is combined with msg00096 from Chuck) http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00096.html http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00055.html http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00090.html http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00093.html (but msg00093 is refactored based on msg00163 from Chuck) http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00163.html http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00092.html [2] http://lists.gnu.org/archive/html/automake/2009-01/msg00027.html