[Development] [RFCs] Migrate from GCC MinGW to LLVM MinGW

Cristian Adam cristian.adam at qt.io
Thu Jul 20 15:48:35 CEST 2023


On 07/19/2023 18:14, Thiago Macieira wrote:

On Wednesday, 19 July 2023 08:46:27 PDT Cristian Adam via Development wrote:


Hi,

we are thinking of migrating from GCC MinGW to LLVM MinGW. The ticket in
question is [QTBUG-107516] Migrate from GCC MinGW to LLVM-MinGW - Qt Bug
Tracker<https://bugreports.qt.io/browse/QTBUG-107516><https://bugreports.qt.io/browse/QTBUG-107516>



TL;DR: I have nothing against *adding* Clang and I have no skin in the game
for the binaries (I always tell people to NEVER use precompiled binaries
anyway). So you have my full support, so long as GCC is still supported and
tested in the CI. Oh well, I may support it myself, like I support FreeBSD/
Clang.

GCC would be tested with Linux on the CI. QNX is also using GCC 🙂

For a while now we have a CI configuration testing with LLVM MinGW.

The benefits of the  LLVM MinGW<https://github.com/mstorsjo/llvm-mingw><https://github.com/mstorsjo/llvm-mingw>
would be (quote from the website):

  *   Support for targeting ARM/ARM64 (while GCC obviously does support
these architectures, it doesn't support Windows on ARM)



That's a new architecture and doesn't require replacing anything.

I guess we could use LLVM-MinGW only for Windows Arm64, but I think it's easier to have one toolchain for the MinGW story.

*   Support for generating debug info in PDB format



How useful is this? Does gdb support this format? If not, then you wouldn't be
able to debug stuff, meaning this is not a benefit at all.

At How to open Windows crash dumps? | Qt Forum<https://forum.qt.io/topic/146109/how-to-open-windows-crash-dumps> this is one case of using Windows minidump files with MinGW, which is not supported.

With the LLVM MinGW and the PDB format I expected this to ... work.

I've pushed an example at cristianadam/MaxiDump (github.com)<https://github.com/cristianadam/MaxiDump/> it works with MSVC and clang-cl. With LLVM MinGW I've got the pdb and the dmp files, but WinDbg would not resolve when typing .excr

@Martin Storsjö Any clues why it didn't work?

At Windows Runtime (WinRT) APIs support · Issue #307 · mstorsjo/llvm-mingw

(github.com)<https://github.com/mstorsjo/llvm-mingw/issues/307><https://github.com/mstorsjo/llvm-mingw/issues/307> we can see
that starting with LLVM 15 and with a recent release of
C++/WinRT<https://github.com/microsoft/cppwinrt/releases><https://github.com/microsoft/cppwinrt/releases> or
mingw-w64-cppwinrt<https://github.com/alvinhochun/mingw-w64-cppwinrt/releas
es/><https://github.com/alvinhochun/mingw-w64-cppwinrt/releases/> we could have feature parity with the Visual C++ toolchain.



I need a little more background on this: what are these APIs useful for? What
gets enabled when they are supported?

At Bluetooth under Windows with mingw/msvc? | Qt Forum<https://forum.qt.io/topic/137939/bluetooth-under-windows-with-mingw-msvc> we can see that for Qt6 MinGW doesn't support bluetooth anymore.

That's because starting with Qt6 only the WinRT backed for Bluetooth is supported.

Cheers,
Cristian.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20230720/7f1741c3/attachment.htm>


More information about the Development mailing list