LLDB build at windows

If i want compile as part of llvm then what is destination directory for lldb trunk sources ?
I has placed this in llvm/projects/lldb and has much errors while compiling lldb with MSVC 2015.

“d:\code\llvm\build\LLVM.sln” (целевой объект по умолчанию) (1) →
“d:\code\llvm\build\ALL_BUILD.vcxproj.metaproj” (целевой объект по умолчанию) (
2) →
“d:\code\llvm\build\projects\lldb\finish_swig.vcxproj.metaproj” (целевой объект
по умолчанию) (482) →
“d:\code\llvm\build\projects\lldb\source\API\liblldb.vcxproj.metaproj” (целевой
объект по умолчанию) (483) →
“d:\code\llvm\build\projects\lldb\source\Plugins\Language\ObjC\lldbPluginObjCLa
nguage.vcxproj.metaproj” (целевой объект по умолчанию) (570) →
“d:\code\llvm\build\projects\lldb\source\Plugins\Language\ObjC\lldbPluginObjCLa
nguage.vcxproj” (целевой объект по умолчанию) (571) →
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\Cocoa.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Language\O
bjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\NSArray.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Language
\ObjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\ObjCLanguage.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Lan
guage\ObjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\CF.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Language\ObjC
\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/Basic/DiagnosticIDs.h(53): fatal
error C1083: Cannot open include file: ‘clang/Basic/DiagnosticCommonKinds.inc’:
No such file or directory (compiling source file D:\code\llvm\llvm\projects\ll
db\source\Plugins\Language\ObjC\NSDictionary.cpp) [d:\code\llvm\build\projects
lldb\source\Plugins\Language\ObjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/Basic/DiagnosticIDs.h(53): fatal
error C1083: Cannot open include file: ‘clang/Basic/DiagnosticCommonKinds.inc’:
No such file or directory (compiling source file D:\code\llvm\llvm\projects\ll
db\source\Plugins\Language\ObjC\NSError.cpp) [d:\code\llvm\build\projects\lldb
source\Plugins\Language\ObjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/Basic/DiagnosticIDs.h(53): fatal
error C1083: Cannot open include file: ‘clang/Basic/DiagnosticCommonKinds.inc’:
No such file or directory (compiling source file D:\code\llvm\llvm\projects\ll
db\source\Plugins\Language\ObjC\NSException.cpp) [d:\code\llvm\build\projects\l
ldb\source\Plugins\Language\ObjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\NSIndexPath.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Lang
uage\ObjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\NSSet.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Language\O
bjC\lldbPluginObjCLanguage.vcxproj]
D:\code\llvm\llvm\tools\clang\include\clang/AST/ASTFwd.h(22): fatal error C10
83: Cannot open include file: ‘clang/AST/DeclNodes.inc’: No such file or direct
ory (compiling source file D:\code\llvm\llvm\projects\lldb\source\Plugins\Langu
age\ObjC\NSString.cpp) [d:\code\llvm\build\projects\lldb\source\Plugins\Languag
e\ObjC\lldbPluginObjCLanguage.vcxproj]

Should look like this:

llvm>__ tools

__ clang
__ lld
__ lldb

You will need clang because lldb needs to link against it, and you will need lld because lldb on Windows doesn’t (yet) understand PDB, so you have to compile your programs with clang.exe -fuse-ld=lld

thanks.
i still have 5 errors while linking

“d:\code\llvm\build\LLVM.sln” (целевой объект по умолчанию) (1) →
“d:\code\llvm\build\tools\lldb\unittests\LLDBUnitTests.vcxproj.metaproj” (целев
ой объект по умолчанию) (741) →
“d:\code\llvm\build\tools\lldb\unittests\Utility\UtilityTests.vcxproj.metaproj”
(целевой объект по умолчанию) (742) →
“d:\code\llvm\build\tools\lldb\unittests\Utility\UtilityTests.vcxproj” (целевой
объект по умолчанию) (743) →
LINK : fatal error LNK1181: cannot open input file ‘gtest.lib’ [d:\code\llvm
build\tools\lldb\unittests\Utility\UtilityTests.vcxproj]

my commands:

cmake -G “Visual Studio 14 2015” -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DCLANG_INCLUDE_EXAMPLES=OFF -DCLANG_INCLUDE_TESTS=OFF -DPYTHON_HOME=<absolute path to python\x86 from dest variable> …\llvm

msbuild LLVM.sln /p:Configuration=Release;Platform=Win32

i look to llvm\tools\lldb\gtest and cant find any file. here is only empty directories.
should i download something or should skip unittests ?

I have never built with -DLLVM_INCLUDE_TESTS=OFF -DCLANG_INCLUDE_EXAMPLES=OFF -DCLANG_INCLUDE_TESTS=OFF before, so that could be related. Can you try removing those options on CMake to see if that fixes it?

The other thing I do differently is I use ninja generator. So I use -G Ninja instead of -G “Visual Studio 14 2015”. Building from within Visual Studio like you’re doing is supposed to work, I just don’t know if anyone tests it. My command line is usually:

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DPYTHON_HOME=<absolute path to python\x86 from dest variable> …\llvm

ninja

thanks. i build successefuly llvm and lldb with ninja and cl compiler.

If i build VS solution without options on CMake then i have ever more errors around unittests in llvm.

like that:

“d:\code\llvm\build\LLVM.sln” (целевой объект по умолчанию) (1) →
“d:\code\llvm\build\unittests\ADT\ADTTests.vcxproj.metaproj” (целевой объект по
умолчанию) (749) →
“d:\code\llvm\build\unittests\ADT\ADTTests.vcxproj” (целевой объект по умолчани
ю) (750) →
(Целевой объект ClCompile) →
D:\code\llvm\llvm\include\llvm/ADT/PointerEmbeddedInt.h(33): error C2327: ‘ll
vm::PointerEmbeddedInt<IntT,Bits>::Value’: is not a type name, static, or enume
rator (compiling source file D:\code\llvm\llvm\unittests\ADT\PointerEmbeddedInt
Test.cpp) [d:\code\llvm\build\unittests\ADT\ADTTests.vcxproj]
D:\code\llvm\llvm\include\llvm/ADT/PointerEmbeddedInt.h(33): error C2065: ‘Va
lue’: undeclared identifier (compiling source file D:\code\llvm\llvm\unittests
ADT\PointerEmbeddedIntTest.cpp) [d:\code\llvm\build\unittests\ADT\ADTTests.vcxp
roj]
D:\code\llvm\llvm\include\llvm/ADT/PointerEmbeddedInt.h(33): error C2327: ‘ll
vm::PointerEmbeddedInt<int,8>::Value’: is not a type name, static, or enumerato
r (compiling source file D:\code\llvm\llvm\unittests\ADT\PointerEmbeddedIntTest
.cpp) [d:\code\llvm\build\unittests\ADT\ADTTests.vcxproj]
D:\code\llvm\llvm\include\llvm/ADT/PointerEmbeddedInt.h(34): error C2338: Can
not embed more bits than we have in a pointer! (compiling source file D:\code\l
lvm\llvm\unittests\ADT\PointerEmbeddedIntTest.cpp) [d:\code\llvm\build\unittest
s\ADT\ADTTests.vcxproj]
D:\code\llvm\llvm\include\llvm/ADT/PointerEmbeddedInt.h(39): error C2327: ‘ll
vm::PointerEmbeddedInt<int,8>::Value’: is not a type name, static, or enumerato
r (compiling source file D:\code\llvm\llvm\unittests\ADT\PointerEmbeddedIntTest
.cpp) [d:\code\llvm\build\unittests\ADT\ADTTests.vcxproj]
D:\code\llvm\llvm\include\llvm/ADT/PointerEmbeddedInt.h(39): error C2065: ‘Va
lue’: undeclared identifier (compiling source file D:\code\llvm\llvm\unittests
ADT\PointerEmbeddedIntTest.cpp) [d:\code\llvm\build\unittests\ADT\ADTTests.vcxp
roj]

Yea, unfortunately the way things work is that the person who is affected by the problem and who needs it fixed is usually the one that needs to fix it. Right now we don’t have any Windows people building inside Visual Studio, so nobody has fixed that. But you’re welcome to submit a patch :slight_smile:

FWIW, I actually generate CMake twice, into two separate folders. I have build/vs and build/ninja. In the vs directory I generate using “Visual Studio 14 2015” generator, and in ninja I generate using Ninja generator. I build from the Ninja folder, and I use the vs folder just for opening a solution, source browsing, and debugging (i.e. change the Debugger settings to point the executable into the ninja folder).

This way you still do everything from vs, just not the compile step.

thanks for workaround

Just to chip in on this thread.
I regularly build X64 LLDB using Visual Studio, but I only use it for debugging remote targets.
I have noticed the gtests linking error, but unfortunately due to tight time constraints I’ve not been free to fix it.
I tend to ‘unload’ all of the projects in Visual Studio that are not directly related to building LLDB, so I don’t see the linking error often. Also since its not a direct dependency, LLDB still builds fine for me.

Fixes are always nice however :slight_smile:

Last I checked I was able to build LLDB in VS2013 as well as VS2015 without problems.

VS 2013 support is going to be deprecated soon. At that point it could break any time, because nobody is going to be making an effort to keep it working.