[libcxx-dev] libcxx on MSVC6.0 runtime

Shoaib Meenai via libcxx-dev libcxx-dev at lists.llvm.org
Tue Mar 5 13:15:28 PST 2019

(forwarding this one to the mailing list, since it seems to have gotten dropped)

It’s possible to deploy the Universal CRT to earlier Windows versions (including Windows 7), correct? Would that work instead?

From: Brendan Heinonen <brendan at heinonen.co>
Date: Thursday, February 28, 2019 at 9:48 AM
To: Shoaib Meenai <smeenai at fb.com>
Subject: Re: [libcxx-dev] libcxx on MSVC6.0 runtime

We build against the Windows 7 SDK, which includes the system MSVCRT.  VC6.0 is a bit of a misnomer, the system MSVCRT is really a fork of VC6 with some later features mixed in, though VC6 ABI compatibility is guaranteed.

Since we replaced cl.exe with Clang, It’d be nice to get some modern STL features too.  The patch would also theoretically enable compatibility for MSVC13.0 and below, which is probably a wider use case.

On Thu, Feb 28, 2019 at 12:35 Shoaib Meenai <smeenai at fb.com<mailto:smeenai at fb.com>> wrote:
What's the motivation here? Is it classic MinGW compatibility (since that still uses msvcrt.dll, as far as I know), or something else?

From: libcxx-dev <libcxx-dev-bounces at lists.llvm.org<mailto:libcxx-dev-bounces at lists.llvm.org>> on behalf of Brendan Heinonen via libcxx-dev <libcxx-dev at lists.llvm.org<mailto:libcxx-dev at lists.llvm.org>>
Reply-To: Brendan Heinonen <brendan at heinonen.co<mailto:brendan at heinonen.co>>
Date: Thursday, February 28, 2019 at 9:21 AM
To: "libcxx-dev at lists.llvm.org<mailto:libcxx-dev at lists.llvm.org>" <libcxx-dev at lists.llvm.org<mailto:libcxx-dev at lists.llvm.org>>
Subject: [libcxx-dev] libcxx on MSVC6.0 runtime


After some wrangling, I've managed to get libcxx running, linking against the MSVC 6.0 runtime library (yes... from 1998).  Right now, libcxx only supports MSVC 14.0 (2015) and above, presumably because the standard library did not have complete C99 support.  I'd like to possibly contribute these changes, but I have a couple of questions.

1. Would there be any interest in these patches, and would there be any chance of getting them merged since it would not be standards-compliant (due to missing C99+ functions in the runtime)?
2. If so, what would be the proper way of handling the missing functions?  Right now, I have solved the missing function declarations by declaring them in a "shim" header I created outside libcxx.  Obviously, that's a less than ideal solution.  Instead, would wrapping the missing functions with a preprocessor if be acceptable?  This would break standards compatibility when targeting MSVC 13.0 and below.  Here's an example:

using ::vfscanf;
using ::vsscanf;


Brendan Heinonen
H6N Technologies, LLC
brendan at heinonen.co<mailto:brendan at heinonen.co>
Brendan Heinonen
H6N Technologies, LLC
+1 (832) 736-4346 | brendan at heinonen.co<mailto:brendan at heinonen.co>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-dev/attachments/20190305/ee8b26db/attachment.html>

More information about the libcxx-dev mailing list