libtool-patches
[Top][All Lists]
Advanced

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

10-csw-cygwin-install-strip.patch


From: Charles Wilson
Subject: 10-csw-cygwin-install-strip.patch
Date: Thu, 28 Oct 2004 13:10:05 -0400
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040616 MultiZilla/1.6.4.0b

On cygwin, 'make install-strip' in a libtoolized, automake-driven project ends up stripping the import library, instead of the DLL. This is bad: not only is the DLL unstripped, but stripping an import library can sometimes break it, and make the installed lib unlinkable.

e.g. this command:

/bin/sh ../libtool --mode=install /usr/bin/install -c -s 'libgg.la'
'/usr/lib/libgg.la'

does the wrong thing.

The following patch was submitted on the cygwin list by Peter Ekberg. It fixes this problem, and incurs no regressions in the testsuite when I used it.

--
Chuck
2004-10-28  Peter Ekberg  <spam.protected>


        * config/ltmain.m4sh (func_mode_install): on cygwin,
        ensure that import libraries do not get stripped.
        * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): on cygwin,
        use postinstall_cmds to strip DLL (not import lib)
        when stripping is requested.
Index: config/ltmain.m4sh
===================================================================
RCS file: /cvsroot/libtool/libtool/config/ltmain.m4sh,v
retrieving revision 1.1.2.12
diff -u -r1.1.2.12 ltmain.m4sh
--- config/ltmain.m4sh  20 Oct 2004 08:41:34 -0000      1.1.2.12
+++ config/ltmain.m4sh  28 Oct 2004 17:03:37 -0000
@@ -1827,7 +1827,16 @@
          # Install the shared library and build the symlinks.
          $show "$install_prog $dir/$srcname $destdir/$realname"
          $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
-         if test -n "$stripme" && test -n "$striplib"; then
+         tstripme="$stripme"
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+           case $realname in
+           *.dll.a)
+             tstripme=""
+             ;;
+           esac
+         esac
+         if test -n "$tstripme" && test -n "$striplib"; then
            $show "$striplib $destdir/$realname"
            $run eval "$striplib $destdir/$realname" || exit $?
          fi
Index: m4/libtool.m4
===================================================================
RCS file: /cvsroot/libtool/libtool/m4/libtool.m4,v
retrieving revision 1.125.2.5
diff -u -r1.125.2.5 libtool.m4
--- m4/libtool.m4       20 Oct 2004 08:41:34 -0000      1.125.2.5
+++ m4/libtool.m4       28 Oct 2004 17:03:42 -0000
@@ -1719,7 +1719,10 @@
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;$ECHO 
\$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        $run eval '\''$striplib \$dldir/$dlname'\'' || exit $?;
+      fi'
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
       dlpath=$dir/\$dldll~
        $RM \$dlpath'

reply via email to

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