If I don't specify LLVM_TARGETS_TO_BUILD or I set it to "X86", cmake
completes fine, and I can build the solution
X86 is definitely what you should be using (both 32-bit and 64-bit x86
backends share the code in lib/Target/X86, which is the key point
CMake is looking for).
(but it gives me 32-bit binaries)
I assume this means that when you run the Clang you've just built it
defaults to producing 32-bit binaries? If so, on *NIX platforms you
override the default target with LLVM_DEFAULT_TARGET_TRIPLE.
I'm not *sure* that'll work on Windows (which has its own weird driver
on top of Clang), but as far as I can tell from here it behaves as I'd
expect. If so you want to set it to something like
"x86_64-pc-windows-msvc18.0.0" for 64-bit default.
clang-cl also seems to accept -m32 and -m64 options as overrides,
which may or may not be useful to you. Probably a bit hacky to put
into a build system since MSVC itself won't accept them.
[Adding llvm-dev again; best to keep these things in the open so they
show up in future searches].
After building the solution cmake gave me (with X86), I got those libraries
I wanted, but they appear to be 32-bit. I need 64-bit versions.
Ah, that was my second guess. My limited reading suggests that Windows
has completely separate compilers to produce x64 and x32
libraries/binaries. A bit of grubbing around the internet suggests
CMake exposes this with the CMAKE_GENERATOR_PLATFORM variable, and -A
on the command line. So I'd suggest:
c:\cmake-3.8.0-rc1-win64-x64\bin\cmake.exe
-DLLVM_TARGETS_TO_BUILD=x86_64 -G "Visual Studio 14" -A Win64
The following generators are available on this platform:
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be “Win64” or “ARM”.
So I’d suggest:
cmake -DLLVM_TARGETS_TO_BUILD=x86 -G “Visual Studio 14 2015 Win64”