Windows 'Roadmap'

Is thee a roadmap or timeline anywhere for improved Clang on Windows support? I know Clang can build C++ applications on Windows, however afaik it can’t yet parse the Windows SDK headers, nor can it parse the Dinkumware STL headers (though, the latter wouldn’t be a big deal if lib++ supported Windows… Is there a timeline/roadmap for it too??).

I understand these things take time, and I appreciate the amount of work involved, but both Windows SDK support and STL support are pretty critical to actually using Clang to build real-world Windows software, so any information I could get would be great.

Thanks in advance.

Hi, I implemented a bunch of MSVC extensions in the past few months
and I continue to do so in the future.

clang can parse the Windows SDK (v7.0A) here.
As for the MSVC STL code. There are 3 remaining issues (not trivial one):

MSVC 2008 STL:
  - some missing typename

MSVC 2010 STL:
  - template function explicit specialization at class scope
  - Unqualified lookup into dependent bases of class templates

I plan to address those issues in upcoming patches. ( I am currently
suffering with explicit specialization at class scope). But I don't
have a schedule, clang is just an open source hobby to me.

Also clang can build windows C++ code but it cannot link with the MSVC
C++ standard lib.

When most of the major MSVC parsing are resolved, my roadmap is to
build a kind of MSVC-Clang plugin that will allow calling clang from
within MSVC or from the command line as in:

msvc_clang MyProject.sln MyWarningList.txt

Where MyWarningList.txt is a text file that contains a list of warning
flags to check the source against.
As such my focus will be on using clang as a frontend for warnings and
static analyzing on Windows (not to build binary)

As for generating binaries on Windows, I'll let other people annonce their plan.

MSVC 2010 STL:
   - template function explicit specialization at class scope
   - Unqualified lookup into dependent bases of class templates

I have another problem on windows with MSVC 2010. If I use the default options, and include <vector>, I get:

D:/Prog/llvm/bin/bin/Release/../lib/clang/3.0/include/mmintrin.h:28:2: error:
       #error "MMX instruction set not enabled"

So I add -march=native or core2 or the like and then I get:

Try to compile with -nobuiltininc. The problem is that some MSVC
include have the same name as the clang builtin headers. When
compiling MSVC code you really want clang to pick the MSVC one.

FYI here is the clang options command I use to test clang against MSVC code:
In the absence of a clang CL.EXE compatible driver this set of option
kind of emulate cl.exe

clang -cc1 -fcxx-exceptions -fdelayed-template-parsing -fms-extensions
-std=c++0x -I "C:\Program Files (x86)\Microsoft
SDKs\Windows\v7.0A\Include" -I"C:\Program Files (x86)\Microsoft
Visual Studio 10.0\VC\atlmfc\include" -I"C:\Program Files
(x86)\Microsoft Visual Studio 10.0\VC\include"
-Wno-invalid-token-paste -D_MSC_VER=1600 -nobuiltininc
-DSECURITY_WIN32 -DWIN32 -DWSMAN_API_VERSION_1_0 -w
-D_MSC_FULL_VER=160040219 -D_MSC_EXTENSIONS
-D_NATIVE_NULLPTR_SUPPORTED -D_MT -D_DLL -fsyntax-only
-fno-operator-names test.cpp 2> error_clang.txt