blob: 22e13027472620d4cda17723d601964482680adc [file] [log] [blame]
Joerg Sonnenberger340a1752013-09-25 10:37:32 +00001include_directories(.)
2
3if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
4include_directories(
5 Plugins/Process/Linux
6 Plugins/Process/POSIX
7 )
8endif ()
9
10if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
11include_directories(
12 Plugins/Process/FreeBSD
13 Plugins/Process/POSIX
14 )
15endif ()
16
17add_subdirectory(API)
18add_subdirectory(Breakpoint)
19add_subdirectory(Commands)
20add_subdirectory(Core)
21add_subdirectory(DataFormatters)
22add_subdirectory(Expression)
23add_subdirectory(Host)
24add_subdirectory(Interpreter)
25add_subdirectory(Plugins)
26add_subdirectory(Symbol)
27add_subdirectory(Target)
28add_subdirectory(Utility)
29
30set( LLDB_USED_LIBS
31 lldbAPI
32 lldbBreakpoint
33 lldbCommands
34 lldbDataFormatters
35 lldbHostCommon
36 lldbCore
37 lldbExpression
38 lldbInterpreter
39 lldbSymbol
40 lldbTarget
41 lldbUtility
42
43 # Plugins
44 lldbPluginDisassemblerLLVM
45 lldbPluginSymbolFileDWARF
46 lldbPluginSymbolFileSymtab
47 lldbPluginDynamicLoaderStatic
48 lldbPluginDynamicLoaderPosixDYLD
49
50 lldbPluginObjectFileMachO
51 lldbPluginObjectFileELF
52 lldbPluginSymbolVendorELF
53 lldbPluginObjectContainerBSDArchive
54 lldbPluginObjectContainerMachOArchive
55 lldbPluginProcessGDBRemote
56 lldbPluginProcessMachCore
57 lldbPluginProcessUtility
58 lldbPluginPlatformGDB
59 lldbPluginPlatformFreeBSD
60 lldbPluginPlatformLinux
61 lldbPluginPlatformPOSIX
Deepak Panickala0154f92013-10-15 12:32:12 +000062 lldbPluginPlatformWindows
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000063 lldbPluginObjectFileMachO
64 lldbPluginObjectContainerMachOArchive
65 lldbPluginObjectContainerBSDArchive
66 lldbPluginPlatformMacOSX
67 lldbPluginDynamicLoaderMacOSXDYLD
68 lldbPluginUnwindAssemblyInstEmulation
69 lldbPluginUnwindAssemblyX86
70 lldbPluginAppleObjCRuntime
71 lldbPluginCXXItaniumABI
72 lldbPluginABIMacOSX_arm
73 lldbPluginABIMacOSX_i386
74 lldbPluginABISysV_x86_64
75 lldbPluginInstructionARM
76 lldbPluginObjectFilePECOFF
77 lldbPluginOSPython
78 )
79
80# Windows-only libraries
81if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
82 list(APPEND LLDB_USED_LIBS
83 lldbHostWindows
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000084 Ws2_32
85 )
86endif ()
87
88# Linux-only libraries
89if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
90 list(APPEND LLDB_USED_LIBS
91 lldbHostLinux
92 lldbPluginProcessLinux
93 lldbPluginProcessPOSIX
94 lldbPluginProcessElfCore
95 )
96endif ()
97
98# FreeBSD-only libraries
99if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
100 list(APPEND LLDB_USED_LIBS
101 lldbHostFreeBSD
102 lldbPluginProcessFreeBSD
103 lldbPluginProcessPOSIX
104 lldbPluginProcessElfCore
105 )
106endif ()
107
108# Darwin-only libraries
109if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
110 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
111 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
112 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
113 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj
114 > ${LLDB_VERS_GENERATED_FILE})
115
116 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
117 list(APPEND LLDB_USED_LIBS
118 lldbHostMacOSX
119 lldbPluginDynamicLoaderDarwinKernel
120 lldbPluginProcessMacOSXKernel
121 lldbPluginSymbolVendorMacOSX
122 )
123endif()
124
125set( CLANG_USED_LIBS
126 clangAnalysis
127 clangAST
128 clangBasic
129 clangCodeGen
130 clangDriver
131 clangEdit
132 clangFrontend
133 clangLex
134 clangParse
135 clangRewriteCore
136 clangRewriteFrontend
137 clangSema
138 clangSerialization
139 )
140
141if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
142 set( LLDB_SYSTEM_LIBS
143 edit
144 python2.7
145 )
146endif()
147
148set( LLVM_LINK_COMPONENTS
149 ${LLVM_TARGETS_TO_BUILD}
150 jit
151 interpreter
152 nativecodegen
153 asmparser
154 bitreader
155 bitwriter
156 codegen
157 ipo
158 selectiondag
159 bitreader
160 mc
161 mcjit
162 core
163 mcdisassembler
164 executionengine
165 )
166
167set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
Deepak Panickala0154f92013-10-15 12:32:12 +0000168
169if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
170 set(SHARED_LIBRARY 1)
171endif()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000172
173if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
174 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
175endif()
176
177add_lldb_library(liblldb
178 lldb.cpp
179 lldb-log.cpp
180 ${LLDB_WRAP_PYTHON}
181 ${LLDB_VERS_GENERATED_FILE}
182 )
183set_target_properties(liblldb
184 PROPERTIES
185 OUTPUT_NAME lldb
186 VERSION ${LLDB_VERSION}
187 )
188if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
189 add_dependencies(liblldb
190 ${LLDB_WRAP_PYTHON}
191 ${LLDB_VERS_GENERATED_FILE}
192 )
193endif()
194target_link_libraries(liblldb ${LLDB_SYSTEM_LIBS})
195
196# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
197# such will not work on Windows.
198if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
199 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
200 OUTPUT_VARIABLE LLDB_REVISION)
201 if ( LLDB_REVISION )
202 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
203 endif()
204
205 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
206 OUTPUT_VARIABLE LLDB_REPOSITORY)
207 if ( LLDB_REPOSITORY )
208 # Replace newline characters with spaces
209 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
210
211 # Remove trailing spaces
212 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
213 endif()
214
215 set_property(
216 SOURCE lldb.cpp
217 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
218endif ()
219# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
220# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
221
222
223install(TARGETS liblldb
224 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000225 LIBRARY DESTINATION lib
226 ARCHIVE DESTINATION lib)