Hi! This patch together with [1] will make the "Link option thorough search test" pass on MSYS/MSVC using the pr-msvc-support branch. This patch makes manifest embedding and cl command files work when facing POSIX /absolute/path/names that MSYS fails to convert to win32 paths due to prefixes of the arguments (prefixes in these cases are -outputresource: and @).
Cheers, Peter [1] http://lists.gnu.org/archive/html/libtool-patches/2009-01/msg00090.html 2009-01-21 Peter Rosin <p...@lysator.liu.se Convert POSIX paths with prefixes to host format for MSYS/MSVC * libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG) [mingw] <cl>: Make sure the -outputresource: path for the manifest tool is in Win32 format. Same for the MSVC command file containing the exports.
diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index e886d3d..c8a46eb 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -4770,7 +4778,8 @@ _LT_EOF else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ - $CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs @$output_objdir/$soname.exp -link -DLL~ + func_to_host_path "$output_objdir/$soname.exp"~ + $CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs @$func_to_host_path_result -link -DLL~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' @@ -4787,6 +4796,8 @@ _LT_EOF _LT_TAGVAR(compile_tag, $1)=-TC _LT_TAGVAR(dashl_xform, $1)='s/\(.*\)/\1.lib/' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + func_to_host_path "$lt_outputfile"~ + lt_outputfile=$func_to_host_path_result~ case "$lt_outputfile" in *.[[eE][xX][eE]]) ;; *) lt_outputfile="$lt_outputfile.exe" ;; @@ -5783,7 +5794,8 @@ if test "$_lt_caught_CXX_error" != yes; then else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ - $CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs @$output_objdir/$soname.exp -link -DLL~ + func_to_host_path "$output_objdir/$soname.exp"~ + $CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs @$func_to_host_path_result -link -DLL~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' @@ -5799,6 +5811,8 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(compile_tag, $1)=-TP _LT_TAGVAR(dashl_xform, $1)='s/\(.*\)/\1.lib/' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + func_to_host_path "$lt_outputfile"~ + lt_outputfile=$func_to_host_path_result~ case "$lt_outputfile" in *.[[eE][xX][eE]]) ;; *) lt_outputfile="$lt_outputfile.exe" ;;