[vlc-devel] [PATCH] package/win32: build.sh: Force Win7 and MSVCRT when not using UCRT
Steve Lhomme
robux4 at ycbcr.xyz
Tue Jun 2 15:03:50 CEST 2020
On 2020-06-02 12:00, Martin Storsjö wrote:
> On Tue, 2 Jun 2020, Steve Lhomme wrote:
>
>> That's the minimum we support in VLC 4.0.
>>
>> The CRT version to set for UCRT is 0xE00.
>
> To select the UCRT, it's enough to just define _URT - you can do either
I suppose you mean _UCRT.
> that or define __MSVCRT_VERSION__=0xE00, but you don't do both.
OK. I suppose it doesn't hurt though.
When *not* selecting UCRT the selection is done as this:
#ifndef __MSVCRT_VERSION__
/* High byte is the major version, low byte is the minor. */
# ifndef _UCRT
# define __MSVCRT_VERSION__ @DEFAULT_MSVCRT_VERSION@
# else
# define __MSVCRT_VERSION__ 0xE00
# endif
#endif
It seems better to set the __MSVCRT_VERSION__ to make sure that's the
one we want. So I would rather be consistent in the two modes.
> Switching between msvcrt versions like this, on top of one single
> toolchain, works as long as you don't rely on other prebuilt libraries
> that depend on CRT specific details. In particular, the prebuilt libc++
> is closely tied to the CRT used, so I'm afraid this approach doesn't
> work reliably for C++ code - unless you plan on building that as part of
> the VLC build as well.
I first go into this because the current LLVM-MINGW builds use UCRT (so
don't run on a simple Win7 machine). I hoped it was possible to switch
between one another but I feared what you describe.
So I think we should rebuild our LLVM-MINGW toolchain to support msvcrt
which is what we'll use for Win7 compatibility.
We should probably have a UCRT version on the side as well.
More information about the vlc-devel
mailing list