]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
msvc: eliminate spaces in the library search path.
authorPeter Rosin <peda@lysator.liu.se>
Tue, 21 Sep 2010 18:31:37 +0000 (20:31 +0200)
committerPeter Rosin <peda@lysator.liu.se>
Tue, 21 Sep 2010 19:38:27 +0000 (21:38 +0200)
* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [mingw, cygwin]
<cl*, sys_lib_search_path_spec>: The LIB path variable telling
where MSVC looks for libraries is likely to contain directory
names with spaces.  Convert those directory names to the short
8.3 DOS form (i.e. without spaces) when storing them in
sys_lib_search_path_spec, as that is a space separated variable.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
ChangeLog
libltdl/m4/libtool.m4

index f3dee4083851001b7ac0591688d612a5c8e85d78..e011a9e1d7a10009cb5cfc879d80da981c2cfbc7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-21  Peter Rosin  <peda@lysator.liu.se>
+
+       msvc: eliminate spaces in the library search path.
+       * libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [mingw, cygwin]
+       <cl*, sys_lib_search_path_spec>: The LIB path variable telling
+       where MSVC looks for libraries is likely to contain directory
+       names with spaces.  Convert those directory names to the short
+       8.3 DOS form (i.e. without spaces) when storing them in
+       sys_lib_search_path_spec, as that is a space separated variable.
+
 2010-09-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        Revert to per-language libpath computation on AIX.
index 2aee3985e54ccf8f1d90f5f5ff6e9a70d4a9f2f5..a048b1f1c4d092b29ed322e1defef186636f64f5 100644 (file)
@@ -2321,15 +2321,44 @@ m4_if([$1], [],[
     libname_spec='$name'
     soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
     library_names_spec='${libname}.dll.lib'
-    sys_lib_search_path_spec="$LIB"
-    if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-      # It is most probably a Windows format PATH.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-    else
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-    fi
-    # FIXME: find the short name or the path components, as spaces are
-    # common. (e.g. "Program Files" -> "PROGRA~1")
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
     postinstall_cmds='base_file=`basename \${file}`~
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~