libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: win32 short name and IFS='~'


From: Naofumi Yasufuku
Subject: Re: win32 short name and IFS='~'
Date: Mon, 31 Mar 2003 23:10:35 +0900
User-agent: Wanderlust/2.8.1 (Something) SEMI/1.14.4 (Hosorogi) FLIM/1.14.4 (Kashiharajingū-mae) APEL/10.3 Emacs/21.2 (i386-mingw-nt5.1.2600) MULE/5.0 (SAKAKI)

At Mon, 31 Mar 2003 05:52:47 +0900,
Naofumi Yasufuku wrote:
> 
> Hi,
> 
> libtool uses '~' as IFS in some commands (ex. $archive_expsym_cmds),
> so that win32 short name which includes '~' (ex. c:/progra~1/foo/...)
> causes a problem. For example, if we want to build DLL which is linked
> with -Lc:/progra~1/foo/lib -lbar, DLL build command fails.
> 
> I think it can be solved by putting off the command list variable
> expansion until its execution loop.
> 

This is the patch against the latest CVS HEAD.
I've tested it under Cygwin/MinGW on my WinXP box.

Could anyone test this patch?

Regards,
--Naofumi

tilde-ifs.patch:
-------------------------------------------------------------------------------
Index: ltmain.in
===================================================================
RCS file: /cvsroot/libtool/libtool/ltmain.in,v
retrieving revision 1.330
diff -u -r1.330 ltmain.in
--- ltmain.in   29 Mar 2003 04:09:00 -0000      1.330
+++ ltmain.in   31 Mar 2003 12:56:19 -0000
@@ -2273,9 +2273,9 @@
            else
              $show "extracting exported symbol list from \`$soname'"
              save_ifs="$IFS"; IFS='~'
-             eval cmds=\"$extract_expsyms_cmds\"
-             for cmd in $cmds; do
+             for cmd in $extract_expsyms_cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd" || exit $?
              done
@@ -2286,9 +2286,9 @@
            if test -f "$output_objdir/$newlib"; then :; else
              $show "generating import library for \`$soname'"
              save_ifs="$IFS"; IFS='~'
-             eval cmds=\"$old_archive_from_expsyms_cmds\"
-             for cmd in $cmds; do
+             for cmd in $old_archive_from_expsyms_cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd" || exit $?
              done
@@ -3497,10 +3497,10 @@
            $show "generating symbol list for \`$libname.la'"
            export_symbols="$output_objdir/$libname.exp"
            $run $rm $export_symbols
-           eval cmds=\"$export_symbols_cmds\"
            save_ifs="$IFS"; IFS='~'
-           for cmd in $cmds; do
+           for cmd in $export_symbols_cmds; do
              IFS="$save_ifs"
+             eval cmd=\"$cmd\"
              if len=`expr "X$cmd" : ".*"` &&
               test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; 
then
                $show "$cmd"
@@ -3617,19 +3617,20 @@
        # Do each of the archive commands.
        if test "$module" = yes && test -n "$module_cmds" ; then
          if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-           eval cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
          else
-           eval cmds=\"$module_cmds\"
+           cmds=$module_cmds
          fi
        else
-       if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-         eval cmds=\"$archive_expsym_cmds\"
-       else
-         eval cmds=\"$archive_cmds\"
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           cmds=$archive_expsym_cmds
+         else
+           cmds=$archive_cmds
          fi
        fi
 
-       if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` &&
+       eval cmds_eval=\"$cmds\"
+       if test "X$skipped_export" != "X:" && len=`expr "X$cmds_eval" : ".*"` &&
           test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
          :
        else
@@ -3671,11 +3672,11 @@
              # command to the queue.
              if test "$k" -eq 1 ; then
                # The first file doesn't have a previous command to add.
-               eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+               concat_cmds="\$reload_cmds \$objlist \$last_robj"
              else
                # All subsequent reloadable object files will link in
                # the last one created.
-               eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist 
$last_robj\"
+               concat_cmds="${concat_cmds}~\$reload_cmds \$objlist \$last_robj"
              fi
              last_robj=$output_objdir/$save_output-${k}.$objext
              k=`expr $k + 1`
@@ -3688,7 +3689,7 @@
          # reloadable object file.  All subsequent reloadable object
          # files will link in the last one created.
          test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-         eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+         concat_cmds="${concat_cmds}\$reload_cmds \$objlist \$last_robj"
 
          if ${skipped_export-false}; then
            $show "generating symbol list for \`$libname.la'"
@@ -3696,7 +3697,7 @@
            $run $rm $export_symbols
            libobjs=$output
            # Append the command to create the export file.
-           eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+           concat_cmds="${concat_cmds}~\$export_symbols_cmds"
           fi
 
          # Set up a command to remove the reloadale object files
@@ -3714,6 +3715,7 @@
          save_ifs="$IFS"; IFS='~'
          for cmd in $concat_cmds; do
            IFS="$save_ifs"
+           eval cmd=\"$cmd\"
            $show "$cmd"
            $run eval "$cmd" || exit $?
          done
@@ -3731,18 +3733,19 @@
 
          # Do each of the archive commands.
          if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-           eval cmds=\"$archive_expsym_cmds\"
+           cmds=$archive_expsym_cmds
          else
-           eval cmds=\"$archive_cmds\"
+           cmds=$archive_cmds
          fi
 
          # Append the command to remove the reloadable object files
          # to the just-reset $cmds.
-         eval cmds=\"\$cmds~$rm $delfiles\"
+         cmds="${cmds}~\$rm \$delfiles"
        fi
        save_ifs="$IFS"; IFS='~'
        for cmd in $cmds; do
          IFS="$save_ifs"
+         eval cmd=\"$cmd\"
          $show "$cmd"
          $run eval "$cmd" || exit $?
        done
@@ -3893,10 +3896,10 @@
       reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e 
'/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### 
testsuite: skip nested quoting test
 
       output="$obj"
-      eval cmds=\"$reload_cmds\"
       save_ifs="$IFS"; IFS='~'
-      for cmd in $cmds; do
+      for cmd in $reload_cmds; do
        IFS="$save_ifs"
+       eval cmd=\"$cmd\"
        $show "$cmd"
        $run eval "$cmd" || exit $?
       done
@@ -3929,10 +3932,10 @@
        # Only do commands if we really have different PIC objects.
        reload_objs="$libobjs $reload_conv_objs"
        output="$libobj"
-       eval cmds=\"$reload_cmds\"
        save_ifs="$IFS"; IFS='~'
-       for cmd in $cmds; do
+       for cmd in $reload_cmds; do
          IFS="$save_ifs"
+         eval cmd=\"$cmd\"
          $show "$cmd"
          $run eval "$cmd" || exit $?
        done
@@ -4904,11 +4907,12 @@
 
       # Do each command in the archive commands.
       if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = 
yes; then
-       eval cmds=\"$old_archive_from_new_cmds\"
+       cmds=$old_archive_from_new_cmds
       else
-       eval cmds=\"$old_archive_cmds\"
+       cmds=$old_archive_cmds
 
-       if len=`expr "X$cmds" : ".*"` &&
+       eval cmds_eval=\"$cmds\"
+       if len=`expr "X$cmds_eval" : ".*"` &&
             test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
          :
        else
@@ -4953,22 +4957,23 @@
                RANLIB=$save_RANLIB
              fi  
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+             concat_cmds="${concat_cmds}\$old_archive_cmds"
              objlist=
            fi
          done
          RANLIB=$save_RANLIB
          oldobjs=$objlist
          if test "X$oldobjs" = "X" ; then
-           eval cmds=\"\$concat_cmds\"
+           cmds=$concat_cmds
          else
-           eval cmds=\"\$concat_cmds~$old_archive_cmds\"
+           cmds="${concat_cmds}~\$old_archive_cmds"
          fi
        fi
       fi
       save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
        IFS="$save_ifs"
+       eval cmd=\"$cmd\"
        $show "$cmd"
        $run eval "$cmd" || exit $?
       done
@@ -5364,10 +5369,10 @@
 
          # Do each command in the postinstall commands.
          lib="$destdir/$realname"
-         eval cmds=\"$postinstall_cmds\"
          save_ifs="$IFS"; IFS='~'
-         for cmd in $cmds; do
+         for cmd in $postinstall_cmds; do
            IFS="$save_ifs"
+           eval cmd=\"$cmd\"
            $show "$cmd"
            $run eval "$cmd" || exit $?
          done
@@ -5586,10 +5591,10 @@
       fi
 
       # Do each command in the postinstall commands.
-      eval cmds=\"$old_postinstall_cmds\"
       save_ifs="$IFS"; IFS='~'
-      for cmd in $cmds; do
+      for cmd in $old_postinstall_cmds; do
        IFS="$save_ifs"
+       eval cmd=\"$cmd\"
        $show "$cmd"
        $run eval "$cmd" || exit $?
       done
@@ -5624,10 +5629,10 @@
       for libdir in $libdirs; do
        if test -n "$finish_cmds"; then
          # Do each command in the finish commands.
-         eval cmds=\"$finish_cmds\"
          save_ifs="$IFS"; IFS='~'
-         for cmd in $cmds; do
+         for cmd in $finish_cmds; do
            IFS="$save_ifs"
+           eval cmd=\"$cmd\"
            $show "$cmd"
            $run eval "$cmd" || admincmds="$admincmds
        $cmd"
@@ -5901,10 +5906,10 @@
          if test "$mode" = uninstall; then
            if test -n "$library_names"; then
              # Do each command in the postuninstall commands.
-             eval cmds=\"$postuninstall_cmds\"
              save_ifs="$IFS"; IFS='~'
-             for cmd in $cmds; do
+             for cmd in $postuninstall_cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd"
                if test "$?" -ne 0 && test "$rmforce" != yes; then
@@ -5916,10 +5921,10 @@
 
            if test -n "$old_library"; then
              # Do each command in the old_postuninstall commands.
-             eval cmds=\"$old_postuninstall_cmds\"
              save_ifs="$IFS"; IFS='~'
-             for cmd in $cmds; do
+             for cmd in $old_postuninstall_cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd"
                if test "$?" -ne 0 && test "$rmforce" != yes; then
-------------------------------------------------------------------------------



Attachment: tilde-ifs.patch.gz
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]