Hi all,
Last night Martin pushed an update to llvm-mingw bumping version of LLVM
to a commit that includes a number of fixes for Wine. See [1] for
details. Thank you, Martin! Meantime, Wine got required fixes, so that
it all should mostly work together. If you want to try it, just clone
[2] git and run:
DEFAULT_MSVCRT=msvcrt-os ./build-all.sh /path/to/install
If the installation is on PATH, current Wine should be able to use it
without any additional tweaks. You should be able to …
[View More]configure it just
like configuration on GCC-based mingw works.
DEFAULT_MSVCRT=msvcrt-os part is needed because Wine can't deal with
mingw-w64 defaulting to crt version other than msvcrt.dll. This is not a
problem specific to LLVM, we will hit the same problem on GCC if
mingw-w64 is configured to use other crt (usually ucrt, things like
msvcrt100 is also possible). It is not yet a popular setup, but it will
probably be more popular over time, so it would be great to have it
supported. The ultimate solution for Wine is to always use
-nodefaultlibs for all its binaries. It's already the case for all Wine
builtin DLLs, we just need to do the same for EXEs. I have some
unfinished patches for that, but it's not something appropriate for code
freeze. I'm experimenting with a smaller fix, because it would be great
to have something sooner, but using DEFAULT_MSVCRT=msvcrt-os is required
for now.
One of nice LLVM features is support for PDB files. If you want to make
a build with PDB files, configure Wine like this:
configure CROSSCFLAGS="-g -gcodeview -O2" CROSSLDFLAGS="-Wl,-pdb="
#append your usual args
and then run make like:
make CROSSLDFLAGS="-Wl,-pdb="
The additional make argument is needed because Wine does not yet
propagate CROSSLDFLAGS from configure. Patch [3] should fix it.
Cheers,
Jacek
[1]
https://github.com/mstorsjo/llvm-mingw/commit/056c1f5cd22b1c5ca76af38f2d1f9…
[2] https://github.com/mstorsjo/llvm-mingw
[3] https://source.winehq.org/patches/data/176054
[View Less]