blob: cede1e7db5ba8417e75086487410b703d732ecb3 [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
Zachary Turner4ec5d0d2014-08-15 23:50:36 +000038 lldbHost
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000039 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
Deepak Panickal57806572014-07-21 17:24:05 +000052 lldbPluginDynamicLoaderHexagonDYLD
Saleem Abdulrasool12390842014-03-11 03:08:47 +000053
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000054 lldbPluginObjectFileMachO
55 lldbPluginObjectFileELF
Ed Masteb9fe0dd2014-03-25 02:03:28 +000056 lldbPluginObjectFileJIT
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000057 lldbPluginSymbolVendorELF
58 lldbPluginObjectContainerBSDArchive
59 lldbPluginObjectContainerMachOArchive
60 lldbPluginProcessGDBRemote
61 lldbPluginProcessMachCore
62 lldbPluginProcessUtility
63 lldbPluginPlatformGDB
64 lldbPluginPlatformFreeBSD
Todd Fialacfee9632014-07-16 15:03:10 +000065 lldbPluginPlatformKalimba
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000066 lldbPluginPlatformLinux
67 lldbPluginPlatformPOSIX
Deepak Panickala0154f92013-10-15 12:32:12 +000068 lldbPluginPlatformWindows
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000069 lldbPluginObjectFileMachO
70 lldbPluginObjectContainerMachOArchive
71 lldbPluginObjectContainerBSDArchive
72 lldbPluginPlatformMacOSX
73 lldbPluginDynamicLoaderMacOSXDYLD
74 lldbPluginUnwindAssemblyInstEmulation
75 lldbPluginUnwindAssemblyX86
76 lldbPluginAppleObjCRuntime
77 lldbPluginCXXItaniumABI
78 lldbPluginABIMacOSX_arm
Jason Molendaa3329782014-03-29 18:54:20 +000079 lldbPluginABIMacOSX_arm64
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000080 lldbPluginABIMacOSX_i386
81 lldbPluginABISysV_x86_64
Deepak Panickal57806572014-07-21 17:24:05 +000082 lldbPluginABISysV_hexagon
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000083 lldbPluginInstructionARM
Jason Molendaa3329782014-03-29 18:54:20 +000084 lldbPluginInstructionARM64
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000085 lldbPluginObjectFilePECOFF
86 lldbPluginOSPython
Kuba Breckabeed8212014-09-04 01:03:18 +000087 lldbPluginMemoryHistoryASan
Eric Christophere7098212014-10-11 00:38:55 +000088 lldbPluginInstrumentationRuntimeAddressSanitizer
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000089 )
90
Deepak Panickal627f4ae2014-03-03 15:50:36 +000091# Need to export the API in the liblldb.dll for Windows
92# The lldbAPI source files are added directly in liblldb
93if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
94 list(APPEND LLDB_USED_LIBS
95 lldbAPI
96 )
97endif ()
98
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000099# Windows-only libraries
100if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
101 list(APPEND LLDB_USED_LIBS
Zachary Turner35ed1322014-07-28 16:45:18 +0000102 lldbPluginProcessWindows
Virgile Bello3e699d42014-03-12 16:04:29 +0000103 lldbPluginProcessElfCore
104 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000105 Ws2_32
106 )
107endif ()
108
109# Linux-only libraries
110if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
111 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000112 lldbPluginProcessLinux
113 lldbPluginProcessPOSIX
114 lldbPluginProcessElfCore
Andrew MacPherson17220c12014-03-05 10:12:43 +0000115 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000116 )
117endif ()
118
119# FreeBSD-only libraries
120if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
121 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000122 lldbPluginProcessFreeBSD
123 lldbPluginProcessPOSIX
124 lldbPluginProcessElfCore
Ed Maste32aa12b2014-03-05 13:57:24 +0000125 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000126 )
127endif ()
128
129# Darwin-only libraries
130if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
131 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
132 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
133 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
Todd Fiala5000e282014-01-18 08:05:32 +0000134 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000135 > ${LLDB_VERS_GENERATED_FILE})
136
137 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
138 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000139 lldbPluginDynamicLoaderDarwinKernel
140 lldbPluginProcessMacOSXKernel
141 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000142 lldbPluginSystemRuntimeMacOSX
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000143 lldbPluginProcessElfCore
144 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000145 )
146endif()
147
148set( CLANG_USED_LIBS
149 clangAnalysis
150 clangAST
151 clangBasic
152 clangCodeGen
153 clangDriver
154 clangEdit
155 clangFrontend
156 clangLex
157 clangParse
Zachary Turner0152e732014-07-16 18:53:18 +0000158 clangRewrite
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000159 clangRewriteFrontend
160 clangSema
161 clangSerialization
Saleem Abdulrasool12390842014-03-11 03:08:47 +0000162 )
163
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000164set(LLDB_SYSTEM_LIBS)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000165if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
Todd Fiala86dccb32014-02-26 17:44:00 +0000166 list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses)
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000167endif()
Ed Maste0121e432014-02-26 18:21:42 +0000168# On FreeBSD backtrace() is provided by libexecinfo, not libc.
169if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
170 list(APPEND LLDB_SYSTEM_LIBS execinfo)
171endif()
172
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000173if (NOT LLDB_DISABLE_PYTHON)
174 list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000175endif()
176
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000177list(APPEND LLDB_SYSTEM_LIBS ${system_libs})
178
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000179set( LLVM_LINK_COMPONENTS
180 ${LLVM_TARGETS_TO_BUILD}
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000181 interpreter
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000182 asmparser
183 bitreader
184 bitwriter
185 codegen
186 ipo
187 selectiondag
188 bitreader
189 mc
190 mcjit
191 core
192 mcdisassembler
193 executionengine
Peter Collingbourne19676ac2013-11-11 04:46:09 +0000194 option
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000195 )
196
Deepak Panickala0154f92013-10-15 12:32:12 +0000197
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000198if ( NOT LLDB_DISABLE_PYTHON )
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000199 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
Saleem Abdulrasool0fb2f5d2014-07-21 18:18:52 +0000200
201 set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
202 if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
203 NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
204 set_property(SOURCE ${LLDB_WRAP_PYTHON}
205 APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-sequence-point")
206 endif ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000207endif()
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000208set(SHARED_LIBRARY 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000209
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000210if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
211add_definitions( -DEXPORT_LIBLLDB )
212endif()
213
214# Need to export the API in the liblldb.dll for Windows
215# The lldbAPI source files are added directly in liblldb
216if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000217# On Non-Windows, the corresponding file list is maintained in
218# source\API\CMakeLists.txt. When editing this list, do not forget to make a
219# corresponding change in that file as well (when appropriate).
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000220add_lldb_library(liblldb
221 lldb.cpp
222 lldb-log.cpp
223 API/SBAddress.cpp
224 API/SBBlock.cpp
225 API/SBBreakpoint.cpp
226 API/SBBreakpointLocation.cpp
227 API/SBBroadcaster.cpp
228 API/SBCommandInterpreter.cpp
229 API/SBCommandReturnObject.cpp
230 API/SBCommunication.cpp
231 API/SBCompileUnit.cpp
232 API/SBData.cpp
233 API/SBDebugger.cpp
234 API/SBDeclaration.cpp
235 API/SBError.cpp
236 API/SBEvent.cpp
Jim Ingham5346f882014-10-01 22:26:52 +0000237 API/SBExecutionContext.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000238 API/SBExpressionOptions.cpp
239 API/SBFileSpec.cpp
240 API/SBFileSpecList.cpp
241 API/SBFrame.cpp
242 API/SBFunction.cpp
243 API/SBHostOS.cpp
244 API/SBInstruction.cpp
245 API/SBInstructionList.cpp
246 API/SBLineEntry.cpp
247 API/SBListener.cpp
248 API/SBModule.cpp
249 API/SBModuleSpec.cpp
250 API/SBPlatform.cpp
251 API/SBProcess.cpp
252 API/SBQueue.cpp
253 API/SBQueueItem.cpp
254 API/SBSection.cpp
255 API/SBSourceManager.cpp
256 API/SBStream.cpp
257 API/SBStringList.cpp
258 API/SBSymbol.cpp
259 API/SBSymbolContext.cpp
260 API/SBSymbolContextList.cpp
261 API/SBTarget.cpp
262 API/SBThread.cpp
Jim Ingham8d81bdf2014-09-30 17:11:53 +0000263 API/SBThreadPlan.cpp
Zachary Turner40a069a2014-09-11 20:26:49 +0000264 API/SBThreadCollection.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000265 API/SBType.cpp
266 API/SBTypeCategory.cpp
Colin Rileyb7fd1bd2014-06-03 13:01:18 +0000267 API/SBTypeEnumMember.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000268 API/SBTypeFilter.cpp
269 API/SBTypeFormat.cpp
270 API/SBTypeNameSpecifier.cpp
271 API/SBTypeSummary.cpp
272 API/SBTypeSynthetic.cpp
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000273 API/SBUnixSignals.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000274 API/SBValue.cpp
275 API/SBValueList.cpp
276 API/SBWatchpoint.cpp
277 Host/Windows/getopt/GetOptInc.cpp
278 ${LLDB_WRAP_PYTHON}
279 ${LLDB_VERS_GENERATED_FILE}
280 )
281else ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000282add_lldb_library(liblldb
283 lldb.cpp
284 lldb-log.cpp
285 ${LLDB_WRAP_PYTHON}
286 ${LLDB_VERS_GENERATED_FILE}
287 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000288endif ()
289
290if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
291set_target_properties(liblldb
292 PROPERTIES
293 OUTPUT_NAME liblldb
294 VERSION ${LLDB_VERSION}
295 )
296else()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000297set_target_properties(liblldb
298 PROPERTIES
299 OUTPUT_NAME lldb
300 VERSION ${LLDB_VERSION}
301 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000302endif()
303
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000304if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
Zachary Turnercfe910b2014-08-22 20:44:55 +0000305 add_dependencies(liblldb swig_wrapper)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000306endif()
Saleem Abdulrasoole1401eb2014-07-20 05:28:55 +0000307target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${LLDB_SYSTEM_LIBS})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000308
309# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
310# such will not work on Windows.
311if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
312 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
313 OUTPUT_VARIABLE LLDB_REVISION)
314 if ( LLDB_REVISION )
315 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
316 endif()
317
318 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
319 OUTPUT_VARIABLE LLDB_REPOSITORY)
320 if ( LLDB_REPOSITORY )
321 # Replace newline characters with spaces
322 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
323
324 # Remove trailing spaces
325 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
326 endif()
327
328 set_property(
329 SOURCE lldb.cpp
330 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
331endif ()
332# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
333# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
334
Zachary Turner0ab4b482014-07-10 23:47:42 +0000335if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION )
336 # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows)
337 if ( NOT LLDB_DISABLE_PYTHON )
Zachary Turner0ab4b482014-07-10 23:47:42 +0000338 add_custom_command( TARGET liblldb
339 POST_BUILD
340 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py
Zachary Turner05c30882014-07-18 07:06:13 +0000341 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py --buildConfig=${CMAKE_BUILD_TYPE} "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--prefix=${CMAKE_BINARY_DIR}" "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" -m
Zachary Turner0ab4b482014-07-10 23:47:42 +0000342 COMMENT "Python script sym-linking LLDB Python API")
343 endif ()
344endif ()
345
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000346install(TARGETS liblldb
347 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000348 LIBRARY DESTINATION lib
349 ARCHIVE DESTINATION lib)