blob: b8b4d0ae3e6b9f0ea48ee8c546039fce781a6785 [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
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
87 )
88
Deepak Panickal627f4ae2014-03-03 15:50:36 +000089# Need to export the API in the liblldb.dll for Windows
90# The lldbAPI source files are added directly in liblldb
91if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
92 list(APPEND LLDB_USED_LIBS
93 lldbAPI
94 )
95endif ()
96
Joerg Sonnenberger340a1752013-09-25 10:37:32 +000097# Windows-only libraries
98if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
99 list(APPEND LLDB_USED_LIBS
100 lldbHostWindows
Virgile Bello3e699d42014-03-12 16:04:29 +0000101 lldbPluginProcessElfCore
102 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000103 Ws2_32
104 )
105endif ()
106
107# Linux-only libraries
108if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
109 list(APPEND LLDB_USED_LIBS
110 lldbHostLinux
111 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
121 lldbHostFreeBSD
122 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
139 lldbHostMacOSX
140 lldbPluginDynamicLoaderDarwinKernel
141 lldbPluginProcessMacOSXKernel
142 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000143 lldbPluginSystemRuntimeMacOSX
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000144 lldbPluginProcessPOSIX
145 lldbPluginProcessElfCore
146 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000147 )
148endif()
149
150set( CLANG_USED_LIBS
151 clangAnalysis
152 clangAST
153 clangBasic
154 clangCodeGen
155 clangDriver
156 clangEdit
157 clangFrontend
158 clangLex
159 clangParse
Zachary Turner0152e732014-07-16 18:53:18 +0000160 clangRewrite
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000161 clangRewriteFrontend
162 clangSema
163 clangSerialization
Saleem Abdulrasool12390842014-03-11 03:08:47 +0000164 )
165
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000166set(LLDB_SYSTEM_LIBS)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000167if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
Todd Fiala86dccb32014-02-26 17:44:00 +0000168 list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses)
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000169endif()
Ed Maste0121e432014-02-26 18:21:42 +0000170# On FreeBSD backtrace() is provided by libexecinfo, not libc.
171if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
172 list(APPEND LLDB_SYSTEM_LIBS execinfo)
173endif()
174
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000175if (NOT LLDB_DISABLE_PYTHON)
176 list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000177endif()
178
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000179list(APPEND LLDB_SYSTEM_LIBS ${system_libs})
180
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000181set( LLVM_LINK_COMPONENTS
182 ${LLVM_TARGETS_TO_BUILD}
183 jit
184 interpreter
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000185 asmparser
186 bitreader
187 bitwriter
188 codegen
189 ipo
190 selectiondag
191 bitreader
192 mc
193 mcjit
194 core
195 mcdisassembler
196 executionengine
Peter Collingbourne19676ac2013-11-11 04:46:09 +0000197 option
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000198 )
199
Deepak Panickala0154f92013-10-15 12:32:12 +0000200
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000201if ( NOT LLDB_DISABLE_PYTHON )
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000202 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
Saleem Abdulrasool0fb2f5d2014-07-21 18:18:52 +0000203
204 set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
205 if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
206 NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
207 set_property(SOURCE ${LLDB_WRAP_PYTHON}
208 APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-sequence-point")
209 endif ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000210endif()
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000211set(SHARED_LIBRARY 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000212
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000213if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
214add_definitions( -DEXPORT_LIBLLDB )
215endif()
216
217# Need to export the API in the liblldb.dll for Windows
218# The lldbAPI source files are added directly in liblldb
219if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000220# On Non-Windows, the corresponding file list is maintained in
221# source\API\CMakeLists.txt. When editing this list, do not forget to make a
222# corresponding change in that file as well (when appropriate).
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000223add_lldb_library(liblldb
224 lldb.cpp
225 lldb-log.cpp
226 API/SBAddress.cpp
227 API/SBBlock.cpp
228 API/SBBreakpoint.cpp
229 API/SBBreakpointLocation.cpp
230 API/SBBroadcaster.cpp
231 API/SBCommandInterpreter.cpp
232 API/SBCommandReturnObject.cpp
233 API/SBCommunication.cpp
234 API/SBCompileUnit.cpp
235 API/SBData.cpp
236 API/SBDebugger.cpp
237 API/SBDeclaration.cpp
238 API/SBError.cpp
239 API/SBEvent.cpp
240 API/SBExpressionOptions.cpp
241 API/SBFileSpec.cpp
242 API/SBFileSpecList.cpp
243 API/SBFrame.cpp
244 API/SBFunction.cpp
245 API/SBHostOS.cpp
246 API/SBInstruction.cpp
247 API/SBInstructionList.cpp
248 API/SBLineEntry.cpp
249 API/SBListener.cpp
250 API/SBModule.cpp
251 API/SBModuleSpec.cpp
252 API/SBPlatform.cpp
253 API/SBProcess.cpp
254 API/SBQueue.cpp
255 API/SBQueueItem.cpp
256 API/SBSection.cpp
257 API/SBSourceManager.cpp
258 API/SBStream.cpp
259 API/SBStringList.cpp
260 API/SBSymbol.cpp
261 API/SBSymbolContext.cpp
262 API/SBSymbolContextList.cpp
263 API/SBTarget.cpp
264 API/SBThread.cpp
265 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)
305 add_dependencies(liblldb
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000306 swig_wrapper
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000307 ${LLDB_WRAP_PYTHON}
308 ${LLDB_VERS_GENERATED_FILE}
309 )
310endif()
Saleem Abdulrasoole1401eb2014-07-20 05:28:55 +0000311target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${LLDB_SYSTEM_LIBS})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000312
313# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
314# such will not work on Windows.
315if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
316 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
317 OUTPUT_VARIABLE LLDB_REVISION)
318 if ( LLDB_REVISION )
319 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
320 endif()
321
322 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
323 OUTPUT_VARIABLE LLDB_REPOSITORY)
324 if ( LLDB_REPOSITORY )
325 # Replace newline characters with spaces
326 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
327
328 # Remove trailing spaces
329 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
330 endif()
331
332 set_property(
333 SOURCE lldb.cpp
334 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
335endif ()
336# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
337# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
338
Zachary Turner0ab4b482014-07-10 23:47:42 +0000339if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION )
340 # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows)
341 if ( NOT LLDB_DISABLE_PYTHON )
Zachary Turner0ab4b482014-07-10 23:47:42 +0000342 add_custom_command( TARGET liblldb
343 POST_BUILD
344 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py
Zachary Turner05c30882014-07-18 07:06:13 +0000345 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 +0000346 COMMENT "Python script sym-linking LLDB Python API")
347 endif ()
348endif ()
349
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000350install(TARGETS liblldb
351 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000352 LIBRARY DESTINATION lib
353 ARCHIVE DESTINATION lib)