blob: b5ed8724b6568e9e39e04098784354c9124f02a6 [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
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000088 )
89
Deepak Panickal627f4ae2014-03-03 15:50:36 +000090# Need to export the API in the liblldb.dll for Windows
91# The lldbAPI source files are added directly in liblldb
92if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
93 list(APPEND LLDB_USED_LIBS
94 lldbAPI
95 )
96endif ()
97
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000098# Windows-only libraries
99if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
100 list(APPEND LLDB_USED_LIBS
Zachary Turner35ed1322014-07-28 16:45:18 +0000101 lldbPluginProcessWindows
Virgile Bello3e699d42014-03-12 16:04:29 +0000102 lldbPluginProcessElfCore
103 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000104 Ws2_32
105 )
106endif ()
107
108# Linux-only libraries
109if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
110 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000111 lldbPluginProcessLinux
112 lldbPluginProcessPOSIX
113 lldbPluginProcessElfCore
Andrew MacPherson17220c12014-03-05 10:12:43 +0000114 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000115 )
116endif ()
117
118# FreeBSD-only libraries
119if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
120 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000121 lldbPluginProcessFreeBSD
122 lldbPluginProcessPOSIX
123 lldbPluginProcessElfCore
Ed Maste32aa12b2014-03-05 13:57:24 +0000124 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000125 )
126endif ()
127
128# Darwin-only libraries
129if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
130 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
131 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
132 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
Todd Fiala5000e282014-01-18 08:05:32 +0000133 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000134 > ${LLDB_VERS_GENERATED_FILE})
135
136 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
137 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000138 lldbPluginDynamicLoaderDarwinKernel
139 lldbPluginProcessMacOSXKernel
140 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000141 lldbPluginSystemRuntimeMacOSX
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000142 lldbPluginProcessElfCore
143 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000144 )
145endif()
146
147set( CLANG_USED_LIBS
148 clangAnalysis
149 clangAST
150 clangBasic
151 clangCodeGen
152 clangDriver
153 clangEdit
154 clangFrontend
155 clangLex
156 clangParse
Zachary Turner0152e732014-07-16 18:53:18 +0000157 clangRewrite
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000158 clangRewriteFrontend
159 clangSema
160 clangSerialization
Saleem Abdulrasool12390842014-03-11 03:08:47 +0000161 )
162
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000163set(LLDB_SYSTEM_LIBS)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000164if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
Todd Fiala86dccb32014-02-26 17:44:00 +0000165 list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses)
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000166endif()
Ed Maste0121e432014-02-26 18:21:42 +0000167# On FreeBSD backtrace() is provided by libexecinfo, not libc.
168if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
169 list(APPEND LLDB_SYSTEM_LIBS execinfo)
170endif()
171
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000172if (NOT LLDB_DISABLE_PYTHON)
173 list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000174endif()
175
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000176list(APPEND LLDB_SYSTEM_LIBS ${system_libs})
177
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000178set( LLVM_LINK_COMPONENTS
179 ${LLVM_TARGETS_TO_BUILD}
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000180 interpreter
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000181 asmparser
182 bitreader
183 bitwriter
184 codegen
185 ipo
186 selectiondag
187 bitreader
188 mc
189 mcjit
190 core
191 mcdisassembler
192 executionengine
Peter Collingbourne19676ac2013-11-11 04:46:09 +0000193 option
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000194 )
195
Deepak Panickala0154f92013-10-15 12:32:12 +0000196
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000197if ( NOT LLDB_DISABLE_PYTHON )
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000198 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
Saleem Abdulrasool0fb2f5d2014-07-21 18:18:52 +0000199
200 set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
201 if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
202 NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
203 set_property(SOURCE ${LLDB_WRAP_PYTHON}
204 APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-sequence-point")
205 endif ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000206endif()
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000207set(SHARED_LIBRARY 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000208
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000209if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
210add_definitions( -DEXPORT_LIBLLDB )
211endif()
212
213# Need to export the API in the liblldb.dll for Windows
214# The lldbAPI source files are added directly in liblldb
215if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000216# On Non-Windows, the corresponding file list is maintained in
217# source\API\CMakeLists.txt. When editing this list, do not forget to make a
218# corresponding change in that file as well (when appropriate).
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000219add_lldb_library(liblldb
220 lldb.cpp
221 lldb-log.cpp
222 API/SBAddress.cpp
223 API/SBBlock.cpp
224 API/SBBreakpoint.cpp
225 API/SBBreakpointLocation.cpp
226 API/SBBroadcaster.cpp
227 API/SBCommandInterpreter.cpp
228 API/SBCommandReturnObject.cpp
229 API/SBCommunication.cpp
230 API/SBCompileUnit.cpp
231 API/SBData.cpp
232 API/SBDebugger.cpp
233 API/SBDeclaration.cpp
234 API/SBError.cpp
235 API/SBEvent.cpp
236 API/SBExpressionOptions.cpp
237 API/SBFileSpec.cpp
238 API/SBFileSpecList.cpp
239 API/SBFrame.cpp
240 API/SBFunction.cpp
241 API/SBHostOS.cpp
242 API/SBInstruction.cpp
243 API/SBInstructionList.cpp
244 API/SBLineEntry.cpp
245 API/SBListener.cpp
246 API/SBModule.cpp
247 API/SBModuleSpec.cpp
248 API/SBPlatform.cpp
249 API/SBProcess.cpp
250 API/SBQueue.cpp
251 API/SBQueueItem.cpp
252 API/SBSection.cpp
253 API/SBSourceManager.cpp
254 API/SBStream.cpp
255 API/SBStringList.cpp
256 API/SBSymbol.cpp
257 API/SBSymbolContext.cpp
258 API/SBSymbolContextList.cpp
259 API/SBTarget.cpp
260 API/SBThread.cpp
Jim Ingham8d81bdf2014-09-30 17:11:53 +0000261 API/SBThreadPlan.cpp
Zachary Turner40a069a2014-09-11 20:26:49 +0000262 API/SBThreadCollection.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000263 API/SBType.cpp
264 API/SBTypeCategory.cpp
Colin Rileyb7fd1bd2014-06-03 13:01:18 +0000265 API/SBTypeEnumMember.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000266 API/SBTypeFilter.cpp
267 API/SBTypeFormat.cpp
268 API/SBTypeNameSpecifier.cpp
269 API/SBTypeSummary.cpp
270 API/SBTypeSynthetic.cpp
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000271 API/SBUnixSignals.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000272 API/SBValue.cpp
273 API/SBValueList.cpp
274 API/SBWatchpoint.cpp
275 Host/Windows/getopt/GetOptInc.cpp
276 ${LLDB_WRAP_PYTHON}
277 ${LLDB_VERS_GENERATED_FILE}
278 )
279else ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000280add_lldb_library(liblldb
281 lldb.cpp
282 lldb-log.cpp
283 ${LLDB_WRAP_PYTHON}
284 ${LLDB_VERS_GENERATED_FILE}
285 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000286endif ()
287
288if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
289set_target_properties(liblldb
290 PROPERTIES
291 OUTPUT_NAME liblldb
292 VERSION ${LLDB_VERSION}
293 )
294else()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000295set_target_properties(liblldb
296 PROPERTIES
297 OUTPUT_NAME lldb
298 VERSION ${LLDB_VERSION}
299 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000300endif()
301
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000302if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
Zachary Turnercfe910b2014-08-22 20:44:55 +0000303 add_dependencies(liblldb swig_wrapper)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000304endif()
Saleem Abdulrasoole1401eb2014-07-20 05:28:55 +0000305target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${LLDB_SYSTEM_LIBS})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000306
307# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
308# such will not work on Windows.
309if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
310 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
311 OUTPUT_VARIABLE LLDB_REVISION)
312 if ( LLDB_REVISION )
313 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
314 endif()
315
316 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
317 OUTPUT_VARIABLE LLDB_REPOSITORY)
318 if ( LLDB_REPOSITORY )
319 # Replace newline characters with spaces
320 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
321
322 # Remove trailing spaces
323 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
324 endif()
325
326 set_property(
327 SOURCE lldb.cpp
328 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
329endif ()
330# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
331# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
332
Zachary Turner0ab4b482014-07-10 23:47:42 +0000333if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION )
334 # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows)
335 if ( NOT LLDB_DISABLE_PYTHON )
Zachary Turner0ab4b482014-07-10 23:47:42 +0000336 add_custom_command( TARGET liblldb
337 POST_BUILD
338 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py
Zachary Turner05c30882014-07-18 07:06:13 +0000339 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 +0000340 COMMENT "Python script sym-linking LLDB Python API")
341 endif ()
342endif ()
343
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000344install(TARGETS liblldb
345 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000346 LIBRARY DESTINATION lib
347 ARCHIVE DESTINATION lib)