blob: 52111a51aa845147f272fc8d43610eb8ac9f5b82 [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
Deepak Panickal627f4ae2014-03-03 15:50:36 +000017# Need to export the API in the liblldb.dll for Windows
18# The lldbAPI source files are added directly in liblldb
19if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
20 add_subdirectory(API)
21endif ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000022add_subdirectory(Breakpoint)
23add_subdirectory(Commands)
24add_subdirectory(Core)
25add_subdirectory(DataFormatters)
26add_subdirectory(Expression)
27add_subdirectory(Host)
28add_subdirectory(Interpreter)
29add_subdirectory(Plugins)
30add_subdirectory(Symbol)
31add_subdirectory(Target)
32add_subdirectory(Utility)
33
34set( LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000035 lldbBreakpoint
36 lldbCommands
37 lldbDataFormatters
38 lldbHostCommon
39 lldbCore
40 lldbExpression
41 lldbInterpreter
42 lldbSymbol
Saleem Abdulrasool12390842014-03-11 03:08:47 +000043 lldbTarget
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000044 lldbUtility
Saleem Abdulrasool12390842014-03-11 03:08:47 +000045
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000046 # Plugins
47 lldbPluginDisassemblerLLVM
48 lldbPluginSymbolFileDWARF
49 lldbPluginSymbolFileSymtab
50 lldbPluginDynamicLoaderStatic
51 lldbPluginDynamicLoaderPosixDYLD
Saleem Abdulrasool12390842014-03-11 03:08:47 +000052
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000053 lldbPluginObjectFileMachO
54 lldbPluginObjectFileELF
55 lldbPluginSymbolVendorELF
56 lldbPluginObjectContainerBSDArchive
57 lldbPluginObjectContainerMachOArchive
58 lldbPluginProcessGDBRemote
59 lldbPluginProcessMachCore
60 lldbPluginProcessUtility
61 lldbPluginPlatformGDB
62 lldbPluginPlatformFreeBSD
63 lldbPluginPlatformLinux
64 lldbPluginPlatformPOSIX
Deepak Panickala0154f92013-10-15 12:32:12 +000065 lldbPluginPlatformWindows
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000066 lldbPluginObjectFileMachO
67 lldbPluginObjectContainerMachOArchive
68 lldbPluginObjectContainerBSDArchive
69 lldbPluginPlatformMacOSX
70 lldbPluginDynamicLoaderMacOSXDYLD
71 lldbPluginUnwindAssemblyInstEmulation
72 lldbPluginUnwindAssemblyX86
73 lldbPluginAppleObjCRuntime
74 lldbPluginCXXItaniumABI
75 lldbPluginABIMacOSX_arm
76 lldbPluginABIMacOSX_i386
77 lldbPluginABISysV_x86_64
78 lldbPluginInstructionARM
79 lldbPluginObjectFilePECOFF
80 lldbPluginOSPython
81 )
82
Deepak Panickal627f4ae2014-03-03 15:50:36 +000083# Need to export the API in the liblldb.dll for Windows
84# The lldbAPI source files are added directly in liblldb
85if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
86 list(APPEND LLDB_USED_LIBS
87 lldbAPI
88 )
89endif ()
90
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000091# Windows-only libraries
92if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
93 list(APPEND LLDB_USED_LIBS
94 lldbHostWindows
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000095 Ws2_32
96 )
97endif ()
98
99# Linux-only libraries
100if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
101 list(APPEND LLDB_USED_LIBS
102 lldbHostLinux
103 lldbPluginProcessLinux
104 lldbPluginProcessPOSIX
105 lldbPluginProcessElfCore
Andrew MacPherson17220c12014-03-05 10:12:43 +0000106 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000107 )
108endif ()
109
110# FreeBSD-only libraries
111if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
112 list(APPEND LLDB_USED_LIBS
113 lldbHostFreeBSD
114 lldbPluginProcessFreeBSD
115 lldbPluginProcessPOSIX
116 lldbPluginProcessElfCore
Ed Maste32aa12b2014-03-05 13:57:24 +0000117 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000118 )
119endif ()
120
121# Darwin-only libraries
122if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
123 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
124 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
125 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
Todd Fiala5000e282014-01-18 08:05:32 +0000126 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000127 > ${LLDB_VERS_GENERATED_FILE})
128
129 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
130 list(APPEND LLDB_USED_LIBS
131 lldbHostMacOSX
132 lldbPluginDynamicLoaderDarwinKernel
133 lldbPluginProcessMacOSXKernel
134 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000135 lldbPluginSystemRuntimeMacOSX
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000136 )
137endif()
138
139set( CLANG_USED_LIBS
140 clangAnalysis
141 clangAST
142 clangBasic
143 clangCodeGen
144 clangDriver
145 clangEdit
146 clangFrontend
147 clangLex
148 clangParse
149 clangRewriteCore
150 clangRewriteFrontend
151 clangSema
152 clangSerialization
Saleem Abdulrasool12390842014-03-11 03:08:47 +0000153 )
154
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000155set(LLDB_SYSTEM_LIBS)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000156if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
Todd Fiala86dccb32014-02-26 17:44:00 +0000157 list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses)
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000158endif()
Ed Maste0121e432014-02-26 18:21:42 +0000159# On FreeBSD backtrace() is provided by libexecinfo, not libc.
160if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
161 list(APPEND LLDB_SYSTEM_LIBS execinfo)
162endif()
163
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000164if (NOT LLDB_DISABLE_PYTHON)
165 list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000166endif()
167
168set( LLVM_LINK_COMPONENTS
169 ${LLVM_TARGETS_TO_BUILD}
170 jit
171 interpreter
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000172 asmparser
173 bitreader
174 bitwriter
175 codegen
176 ipo
177 selectiondag
178 bitreader
179 mc
180 mcjit
181 core
182 mcdisassembler
183 executionengine
Peter Collingbourne19676ac2013-11-11 04:46:09 +0000184 option
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000185 )
186
Deepak Panickala0154f92013-10-15 12:32:12 +0000187
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000188if ( NOT LLDB_DISABLE_PYTHON )
189 set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000190 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
191endif()
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000192set(SHARED_LIBRARY 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000193
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000194if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
195add_definitions( -DEXPORT_LIBLLDB )
196endif()
197
198# Need to export the API in the liblldb.dll for Windows
199# The lldbAPI source files are added directly in liblldb
200if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
201add_lldb_library(liblldb
202 lldb.cpp
203 lldb-log.cpp
204 API/SBAddress.cpp
205 API/SBBlock.cpp
206 API/SBBreakpoint.cpp
207 API/SBBreakpointLocation.cpp
208 API/SBBroadcaster.cpp
209 API/SBCommandInterpreter.cpp
210 API/SBCommandReturnObject.cpp
211 API/SBCommunication.cpp
212 API/SBCompileUnit.cpp
213 API/SBData.cpp
214 API/SBDebugger.cpp
215 API/SBDeclaration.cpp
216 API/SBError.cpp
217 API/SBEvent.cpp
218 API/SBExpressionOptions.cpp
219 API/SBFileSpec.cpp
220 API/SBFileSpecList.cpp
221 API/SBFrame.cpp
222 API/SBFunction.cpp
223 API/SBHostOS.cpp
224 API/SBInstruction.cpp
225 API/SBInstructionList.cpp
226 API/SBLineEntry.cpp
227 API/SBListener.cpp
228 API/SBModule.cpp
229 API/SBModuleSpec.cpp
230 API/SBPlatform.cpp
231 API/SBProcess.cpp
232 API/SBQueue.cpp
233 API/SBQueueItem.cpp
234 API/SBSection.cpp
235 API/SBSourceManager.cpp
236 API/SBStream.cpp
237 API/SBStringList.cpp
238 API/SBSymbol.cpp
239 API/SBSymbolContext.cpp
240 API/SBSymbolContextList.cpp
241 API/SBTarget.cpp
242 API/SBThread.cpp
243 API/SBType.cpp
244 API/SBTypeCategory.cpp
245 API/SBTypeFilter.cpp
246 API/SBTypeFormat.cpp
247 API/SBTypeNameSpecifier.cpp
248 API/SBTypeSummary.cpp
249 API/SBTypeSynthetic.cpp
250 API/SBValue.cpp
251 API/SBValueList.cpp
252 API/SBWatchpoint.cpp
253 Host/Windows/getopt/GetOptInc.cpp
254 ${LLDB_WRAP_PYTHON}
255 ${LLDB_VERS_GENERATED_FILE}
256 )
257else ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000258add_lldb_library(liblldb
259 lldb.cpp
260 lldb-log.cpp
261 ${LLDB_WRAP_PYTHON}
262 ${LLDB_VERS_GENERATED_FILE}
263 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000264endif ()
265
266if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
267set_target_properties(liblldb
268 PROPERTIES
269 OUTPUT_NAME liblldb
270 VERSION ${LLDB_VERSION}
271 )
272else()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000273set_target_properties(liblldb
274 PROPERTIES
275 OUTPUT_NAME lldb
276 VERSION ${LLDB_VERSION}
277 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000278endif()
279
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000280if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
281 add_dependencies(liblldb
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000282 swig_wrapper
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000283 ${LLDB_WRAP_PYTHON}
284 ${LLDB_VERS_GENERATED_FILE}
285 )
286endif()
287target_link_libraries(liblldb ${LLDB_SYSTEM_LIBS})
288
289# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
290# such will not work on Windows.
291if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
292 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
293 OUTPUT_VARIABLE LLDB_REVISION)
294 if ( LLDB_REVISION )
295 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
296 endif()
297
298 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
299 OUTPUT_VARIABLE LLDB_REPOSITORY)
300 if ( LLDB_REPOSITORY )
301 # Replace newline characters with spaces
302 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
303
304 # Remove trailing spaces
305 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
306 endif()
307
308 set_property(
309 SOURCE lldb.cpp
310 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
311endif ()
312# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
313# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
314
315
316install(TARGETS liblldb
317 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000318 LIBRARY DESTINATION lib
319 ARCHIVE DESTINATION lib)