[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Correct DLL Installation Path for x86_64-w64-mingw32 Multili
From: |
Ileana Dumitrescu |
Subject: |
Re: [PATCH] Correct DLL Installation Path for x86_64-w64-mingw32 Multilib |
Date: |
Wed, 19 Jun 2024 21:21:03 +0300 |
User-agent: |
Mozilla Thunderbird |
Thank you for the patch! I have run this through some testing, and
I have not seen any regressions with libtool's testsuite. It does seem
like this standardizes libtool's behaviour with how library paths are
usually defined for multiarch. You should see it in the next release of
libtool, unless issues are found.
On 19/05/2024 09:28, trcrsired wrote:
From: cqwrteur <100043421+trcrsired@users.noreply.github.com>
GCC folks ask me to submit it to upstream.
see:
https://gcc.gnu.org/pipermail/gcc-patches/2024-May/651670.html
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 | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index c5be6436..3f5203a7 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 ${multilib} = yes; 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'
--
Ileana Dumitrescu
GPG Public Key: FA26 CA78 4BE1 8892 7F22 B99F 6570 EA01 146F 7354
OpenPGP_0x6570EA01146F7354.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] Correct DLL Installation Path for x86_64-w64-mingw32 Multilib,
Ileana Dumitrescu <=