[llvm-dev] LLVM 3.7.0 build errors on Windows

Ben Swift via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 2 18:02:07 PDT 2015


I'm working on a cross-platform project which links (statically) against
LLVM, which I use for MCJIT purposes.

Everything was fine on 3.4.2. I'm just experimenting with upgrading to
3.7.0, and everything works fine on OSX & Linux once I changed my
project to reflect the API updates.

On Windows, I get a bunch of compile errors - hundreds of them, but
variations on a couple of different themes, such as

Error   C3805   '(': unexpected token, expected either '}' or a ','     
  llvm\Support\COFF.h  168
Error   C3646   'Checksum': unknown override specifier                  
llvm\Object\COFF.h              50
Error   C4430   missing type specifier - int assumed. Note: C++ does not
support default-int    llvm\Object\COFF.h      52

All the errors are reported in LLVM header files, mostly
llvm/Support/COFF.h and llvm/Object/COFF.h

I'm using Visual Studio Community 2015, the CXX compiler identification
is MSVC 19.0.23026.0

My CPP includes are:

WIN32
_WINDOWS
NDEBUG
_CRT_SECURE_NO_DEPRECATE
_CRT_SECURE_NO_WARNINGS
_CRT_NONSTDC_NO_DEPRECATE
_CRT_NONSTDC_NO_WARNINGS
_SCL_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_WARNINGS
__STDC_CONSTANT_MACROS
__STDC_FORMAT_MACROS
__STDC_LIMIT_MACROS
_GNU_SOURCE
%(PreprocessorDefinitions)

Now, a couple of things are suspicious: 

- in googling around it seems like there are some problems with
including Windows.h (which I have to include for other reasons) as well
as the LLVM headers, at least with previous versions of LLVM.
- on OSX, I did have to add a -std=c++11 flag before it would compile.
But I thought I didn't need/couldn't do that on Windows?

Does anyone have any idea what might be the problem, or ideas for
solutions/workarounds?

Cheers
Ben


More information about the llvm-dev mailing list