blob: 30835652589ee00ce8d6a1e0d3cab06066cfdc9e [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
Virgile Bello3e699d42014-03-12 16:04:29 +000095 lldbPluginProcessElfCore
96 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000097 Ws2_32
98 )
99endif ()
100
101# Linux-only libraries
102if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
103 list(APPEND LLDB_USED_LIBS
104 lldbHostLinux
105 lldbPluginProcessLinux
106 lldbPluginProcessPOSIX
107 lldbPluginProcessElfCore
Andrew MacPherson17220c12014-03-05 10:12:43 +0000108 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000109 )
110endif ()
111
112# FreeBSD-only libraries
113if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
114 list(APPEND LLDB_USED_LIBS
115 lldbHostFreeBSD
116 lldbPluginProcessFreeBSD
117 lldbPluginProcessPOSIX
118 lldbPluginProcessElfCore
Ed Maste32aa12b2014-03-05 13:57:24 +0000119 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000120 )
121endif ()
122
123# Darwin-only libraries
124if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
125 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
126 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
127 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
Todd Fiala5000e282014-01-18 08:05:32 +0000128 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000129 > ${LLDB_VERS_GENERATED_FILE})
130
131 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
132 list(APPEND LLDB_USED_LIBS
133 lldbHostMacOSX
134 lldbPluginDynamicLoaderDarwinKernel
135 lldbPluginProcessMacOSXKernel
136 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000137 lldbPluginSystemRuntimeMacOSX
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000138 )
139endif()
140
141set( CLANG_USED_LIBS
142 clangAnalysis
143 clangAST
144 clangBasic
145 clangCodeGen
146 clangDriver
147 clangEdit
148 clangFrontend
149 clangLex
150 clangParse
151 clangRewriteCore
152 clangRewriteFrontend
153 clangSema
154 clangSerialization
Saleem Abdulrasool12390842014-03-11 03:08:47 +0000155 )
156
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000157set(LLDB_SYSTEM_LIBS)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000158if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
Todd Fiala86dccb32014-02-26 17:44:00 +0000159 list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses)
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000160endif()
Ed Maste0121e432014-02-26 18:21:42 +0000161# On FreeBSD backtrace() is provided by libexecinfo, not libc.
162if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
163 list(APPEND LLDB_SYSTEM_LIBS execinfo)
164endif()
165
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000166if (NOT LLDB_DISABLE_PYTHON)
167 list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000168endif()
169
170set( LLVM_LINK_COMPONENTS
171 ${LLVM_TARGETS_TO_BUILD}
172 jit
173 interpreter
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000174 asmparser
175 bitreader
176 bitwriter
177 codegen
178 ipo
179 selectiondag
180 bitreader
181 mc
182 mcjit
183 core
184 mcdisassembler
185 executionengine
Peter Collingbourne19676ac2013-11-11 04:46:09 +0000186 option
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000187 )
188
Deepak Panickala0154f92013-10-15 12:32:12 +0000189
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000190if ( NOT LLDB_DISABLE_PYTHON )
191 set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000192 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
193endif()
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000194set(SHARED_LIBRARY 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000195
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000196if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
197add_definitions( -DEXPORT_LIBLLDB )
198endif()
199
200# Need to export the API in the liblldb.dll for Windows
201# The lldbAPI source files are added directly in liblldb
202if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
203add_lldb_library(liblldb
204 lldb.cpp
205 lldb-log.cpp
206 API/SBAddress.cpp
207 API/SBBlock.cpp
208 API/SBBreakpoint.cpp
209 API/SBBreakpointLocation.cpp
210 API/SBBroadcaster.cpp
211 API/SBCommandInterpreter.cpp
212 API/SBCommandReturnObject.cpp
213 API/SBCommunication.cpp
214 API/SBCompileUnit.cpp
215 API/SBData.cpp
216 API/SBDebugger.cpp
217 API/SBDeclaration.cpp
218 API/SBError.cpp
219 API/SBEvent.cpp
220 API/SBExpressionOptions.cpp
221 API/SBFileSpec.cpp
222 API/SBFileSpecList.cpp
223 API/SBFrame.cpp
224 API/SBFunction.cpp
225 API/SBHostOS.cpp
226 API/SBInstruction.cpp
227 API/SBInstructionList.cpp
228 API/SBLineEntry.cpp
229 API/SBListener.cpp
230 API/SBModule.cpp
231 API/SBModuleSpec.cpp
232 API/SBPlatform.cpp
233 API/SBProcess.cpp
234 API/SBQueue.cpp
235 API/SBQueueItem.cpp
236 API/SBSection.cpp
237 API/SBSourceManager.cpp
238 API/SBStream.cpp
239 API/SBStringList.cpp
240 API/SBSymbol.cpp
241 API/SBSymbolContext.cpp
242 API/SBSymbolContextList.cpp
243 API/SBTarget.cpp
244 API/SBThread.cpp
245 API/SBType.cpp
246 API/SBTypeCategory.cpp
247 API/SBTypeFilter.cpp
248 API/SBTypeFormat.cpp
249 API/SBTypeNameSpecifier.cpp
250 API/SBTypeSummary.cpp
251 API/SBTypeSynthetic.cpp
252 API/SBValue.cpp
253 API/SBValueList.cpp
254 API/SBWatchpoint.cpp
255 Host/Windows/getopt/GetOptInc.cpp
256 ${LLDB_WRAP_PYTHON}
257 ${LLDB_VERS_GENERATED_FILE}
258 )
259else ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000260add_lldb_library(liblldb
261 lldb.cpp
262 lldb-log.cpp
263 ${LLDB_WRAP_PYTHON}
264 ${LLDB_VERS_GENERATED_FILE}
265 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000266endif ()
267
268if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
269set_target_properties(liblldb
270 PROPERTIES
271 OUTPUT_NAME liblldb
272 VERSION ${LLDB_VERSION}
273 )
274else()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000275set_target_properties(liblldb
276 PROPERTIES
277 OUTPUT_NAME lldb
278 VERSION ${LLDB_VERSION}
279 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000280endif()
281
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000282if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
283 add_dependencies(liblldb
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000284 swig_wrapper
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000285 ${LLDB_WRAP_PYTHON}
286 ${LLDB_VERS_GENERATED_FILE}
287 )
288endif()
289target_link_libraries(liblldb ${LLDB_SYSTEM_LIBS})
290
291# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
292# such will not work on Windows.
293if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
294 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
295 OUTPUT_VARIABLE LLDB_REVISION)
296 if ( LLDB_REVISION )
297 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
298 endif()
299
300 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
301 OUTPUT_VARIABLE LLDB_REPOSITORY)
302 if ( LLDB_REPOSITORY )
303 # Replace newline characters with spaces
304 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
305
306 # Remove trailing spaces
307 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
308 endif()
309
310 set_property(
311 SOURCE lldb.cpp
312 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
313endif ()
314# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
315# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
316
317
318install(TARGETS liblldb
319 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000320 LIBRARY DESTINATION lib
321 ARCHIVE DESTINATION lib)