(unknown)

Ileana Dumitrescu <[email protected]>
Newsgroups gmane.comp.gnu.libtool.cvs
Message-ID <[email protected]>
branch: master
commit ab89ebbcc2ff0ecff5157982ef03627cfd615f7e
Author: trcrsired <[email protected]>
AuthorDate: Tue May 14 20:26:40 2024 +0100

    libtool: Correct DLL Installation Path for mingw
    
    When building native GCC for the x86_64-w64-mingw32 host, the
    compiler copies its library DLLs to the `bin` directory. However,
    in the case of a multilib configuration, both 32-bit and 64-bit
    libraries end up in the same `bin` directory, leading to conflicts
    where 64-bit DLLs are overridden by their 32-bit counterparts.
    
    This patch addresses the issue by adjusting the installation path
    for the libraries. Specifically, it installs the libraries to
    separate directories: `lib` for 64-bit and `lib32` for 32-bit. This
    behavior aligns with how libraries are installed when creating an
    x86_64-w64-mingw32 cross-compiler without copying them to the `bin`
    directory if it is a multilib build.
    
    * m4/libtool.m4: Install DLL to $(libdir), not $(libdir)/bin, if
      multilib build.
---
 m4/libtool.m4 | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 71d1e1ce..1187330a 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -2546,6 +2546,19 @@ cygwin* | mingw* | windows* | pw32* | cegcc*)
     # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    # If user builds GCC with mulitlibs enabled,
+    # it should just install on $(libdir)
+    # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones.
+    if test yes = $multilib; then
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      $install_prog $dir/$dlname $destdir/$dlname~
+      chmod a+x $destdir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib $destdir/$dlname'\'' || exit \$?;
+      fi'
+    else
     postinstall_cmds='base_file=`basename \$file`~
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
@@ -2555,6 +2568,7 @@ cygwin* | mingw* | windows* | pw32* | cegcc*)
       if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
         eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
       fi'
+    fi
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       dlpath=$dir/\$dldll~
        $RM \$dlpath'
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.