[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: |
Wed, 13 Nov 2024 21:59:16 +0200 |
User-agent: |
Mozilla Thunderbird |
Hi Kirill,
On 02/11/2024 09:17, Kirill Makurin wrote:
Hello,
I have encountered a few bugs with libtool when it is used with MSVC tools.
I have written a simple dummy project which should demonstrate the bugs.
I uploaded the archive to Google Drive: https://drive.google.com/drive/
folders/1DPJTid8PG6JjR7MHKKoz_i2QQTRGh8EO <https://drive.google.com/
drive/folders/1DPJTid8PG6JjR7MHKKoz_i2QQTRGh8EO>
Thank you for your bug report and supplying an example project! The
testsuite for libtool on MSVC is still not in a good state, but I will
start working on debugging those issues.
The `configure`, `Makefile.in` etc. were generated from Msys2
environment with Autoconf 2.72, Automake 1.17 and libtool 2.5.3.
When built with MSVC tools, it will 1) produce a warning from the
compiler (cl.exe) about unrecognized option and 2) fail with error from
the linker (link.exe) about missing input file.
I also attached two files containing output from make for comparison.
One when used with MSVC tools and another when used with GNU tools.
The encountered bugs are as follows:
1. When libtool is used with MSVC tools, libtool's link step mishandles
compiler flags like`-Wl` and `-Xlinker`. For example, `-Wl,-
def:FILENAME` becomes plain `-def:FILENAME` when libtool invokes the
compiler*. (as seen in make-msvc.txt)
2. When producing a DLL, libtool passes `-Fe FILENAME` directly to the
compiler*. The space between `-Fe` and `FILENAME` prevents cl.exe (and
clang-cl.exe) from treating FILENAME as an output file, but rather as an
input file.
The second bug has been fixed in the development branch [1], and it
should be available in the next stable release of libtool. I am not sure
how to fix the first bug yet, but I have some guesses for why it is not
working.
* the compiler in question is `path/to/compile cl.exe` which should
handle the usual `-o FILENAME` and flags like `-Wl` correctly with cl.exe
The second bug does not appear when libtool creates executables. It also
seems to appear only in recent versions of libtool, since it does not
appear in existing projects which used older versions of libtool. In
older versions, libtool passes `-o FILENAME` which is handled by
`compile` wrapper.
[1]
https://git.savannah.gnu.org/cgit/libtool.git/commit/?h=development&id=09e89cc28da81d7e1bae189207eb4426636ccad6
--
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