[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#74175: libtool mishandles some compiler flags when used with MSVC to
From: |
Ileana Dumitrescu |
Subject: |
bug#74175: libtool mishandles some compiler flags when used with MSVC tools |
Date: |
Thu, 5 Jun 2025 19:13:10 +0300 |
User-agent: |
Mozilla Thunderbird |
On 05/06/2025 13:09, Kirill Makurin wrote:
I am actually wrong. If we would pass -Wl and friends as is to clang.exe
it would handle them correctly by itself.
Note: clang.exe installed with Visual Studio uses link.exe, just like
cl.exe would.
Thank you for the updates. Is this an issue specifically with clang-cl?
I believe the issue is fixed with cl/cl.exe in development.
What do you think about checking whether compiler defines _MSC_VER macro?
I do not have a strong opinion on this, so it could be added. Could you
submit a patch for review?
- Kirill Makurin
------------------------------------------------------------------------
*From:* bug-libtool-bounces+maiddaisuki=outlook.com@gnu.org <bug-
libtool-bounces+maiddaisuki=outlook.com@gnu.org> on behalf of Kirill
Makurin <maiddaisuki@outlook.com>
*Sent:* Thursday, June 5, 2025 6:58 PM
*To:* Ileana Dumitrescu <ileanadumitrescu95@gmail.com>;
74175@debbugs.gnu.org <74175@debbugs.gnu.org>
*Subject:* bug#74175: libtool mishandles some compiler flags when used
with MSVC tools
Hi Ileana,
The fix seems incomplete.
See attached file for `libtool --mode=link` invocation with clang-cl.
You may notice that the flag passed with -Wl is passed twice: once on
its own (just like it was with cl.exe with the bug) and once properly
with -Wl.
Do you think checking compiler's name is a good idea? AFAIK, all three
of cl.exe, clang-cl.exe and icl.exe (MSVC-like compilers handled by
Automake's `compile` wrapper) define _MSC_VER macro. If libtool does
check, it should be at least consistent with `compile` wrapper.
There are checks for compilers in libtool, like "cl* | icl*)" for
cc_basename when on a windows-like system. If libtool's configuration
when using clang-cl.exe is incorrect, these could be updated to avoid
clang-cl.exe or a new check could be added for the needed configuration.
Maybe libtool could check during configuration whether compiler defines
this macro to decide how to pass linker flags? Since `compile` wrapper
should usually be involved, we need to just pass -Wl flags and friends
as is, `compile` takes care of them.
There is one problematic case though. If we would use clang.exe
installed with Visual Studio, this will not work. It defines _MSC_VER,
but it usus gcc-like command line options.
--
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