Subject: Re: [boost] [build] How to use with clang on windows?
From: degski (degski_at_[hidden])
Date: 2016-03-26 10:38:21


Hi Edward,

First of, thanks for your elaborate answer, explaining the extent of the
issues.

The clang build which targets VC++ on Windows, as opposed to the clang
> build which targets mingw(-64)/gcc on Windows, 'emulates' the non-standard
> VC++ preprocessor so it can compile Windows API headers and VC++ header
> files.

Do you imply here that the preprocessors of both Clang/LLVM and Clang/C2
work exactly the same way?

For all I know clang targeting VC++ may indeed work with those libraries if
> the libraries pretend that clang targeting VC++ is VC++ for the intention
> of those libraries.
>

Isn't that the way to go then, to make boost act as if Clang/LLVM is VC14.
When using Clang/LLVM with the M$-STL there are no issues, so it must do a
reasonable job AFAICS. Clang/LLVM definitely flags quite a few of the
non-confirming issues your own code might have, which implies that the
VC14-STL does not have those kind of issues anymore. Getting some of my
older projects to compile (with Clang) at all is quite a hassle (looks like
a different C++).

> I made a suggestion to the clang developers that there 'emulation' of the
> non-standard VC++ preprocessor in their clang targeting VC++ implementation
> should be configurable so that when the compiler is not dealing with
> Windows API and VC++ header files it can be turned off and clang would then
> be the same C++ standard conforming preprocessor as it is with clang
> targeting mingw(-64)/gcc and clang on Linux and on the Mac. The suggestion
> was rejected. After that my interest in running clang targeting VC++ on
> Windows ended.
>

Again, why fight the Clang developers, go with the flow, Clang/LLVM wants
to emulate VC++ perfectly, fine, should make your life easier no?

> ...which 'emulates' the VC++ preprocessor in various unknown ways...
>

With the above position taken, those unknown ways would then hopefully be
identified and emulated by the Clang team... M$ is in the loop as well, as
far I understand, so it's not exactly reverse-engineering.

Have a good day,

degski

-- 
(\___/)
(+'.'+)
(")_(")
This is Bunny. Copy and paste Bunny into your
signature to help him gain world domination!