blob: 46998af8b934093b2d8d4c25165204719b3ad659 [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
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
111 lldbHostLinux
112 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
122 lldbHostFreeBSD
123 lldbPluginProcessFreeBSD
124 lldbPluginProcessPOSIX
125 lldbPluginProcessElfCore
Ed Maste32aa12b2014-03-05 13:57:24 +0000126 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000127 )
128endif ()
129
130# Darwin-only libraries
131if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
132 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
133 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
134 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
Todd Fiala5000e282014-01-18 08:05:32 +0000135 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000136 > ${LLDB_VERS_GENERATED_FILE})
137
138 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
139 list(APPEND LLDB_USED_LIBS
140 lldbHostMacOSX
141 lldbPluginDynamicLoaderDarwinKernel
142 lldbPluginProcessMacOSXKernel
143 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000144 lldbPluginSystemRuntimeMacOSX
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000145 lldbPluginProcessPOSIX
146 lldbPluginProcessElfCore
147 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000148 )
149endif()
150
151set( CLANG_USED_LIBS
152 clangAnalysis
153 clangAST
154 clangBasic
155 clangCodeGen
156 clangDriver
157 clangEdit
158 clangFrontend
159 clangLex
160 clangParse
Zachary Turner0152e732014-07-16 18:53:18 +0000161 clangRewrite
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000162 clangRewriteFrontend
163 clangSema
164 clangSerialization
Saleem Abdulrasool12390842014-03-11 03:08:47 +0000165 )
166
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000167set(LLDB_SYSTEM_LIBS)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000168if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
Todd Fiala86dccb32014-02-26 17:44:00 +0000169 list(APPEND LLDB_SYSTEM_LIBS edit panel ncurses)
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000170endif()
Ed Maste0121e432014-02-26 18:21:42 +0000171# On FreeBSD backtrace() is provided by libexecinfo, not libc.
172if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
173 list(APPEND LLDB_SYSTEM_LIBS execinfo)
174endif()
175
Sylvestre Ledruf0f2d582013-11-15 14:15:10 +0000176if (NOT LLDB_DISABLE_PYTHON)
177 list(APPEND LLDB_SYSTEM_LIBS ${PYTHON_LIBRARIES})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000178endif()
179
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000180list(APPEND LLDB_SYSTEM_LIBS ${system_libs})
181
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000182set( LLVM_LINK_COMPONENTS
183 ${LLVM_TARGETS_TO_BUILD}
184 jit
185 interpreter
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000186 asmparser
187 bitreader
188 bitwriter
189 codegen
190 ipo
191 selectiondag
192 bitreader
193 mc
194 mcjit
195 core
196 mcdisassembler
197 executionengine
Peter Collingbourne19676ac2013-11-11 04:46:09 +0000198 option
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000199 )
200
Deepak Panickala0154f92013-10-15 12:32:12 +0000201
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000202if ( NOT LLDB_DISABLE_PYTHON )
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000203 set(LLDB_WRAP_PYTHON ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp)
Saleem Abdulrasool0fb2f5d2014-07-21 18:18:52 +0000204
205 set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
206 if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
207 NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
208 set_property(SOURCE ${LLDB_WRAP_PYTHON}
209 APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-sequence-point")
210 endif ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000211endif()
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000212set(SHARED_LIBRARY 1)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000213
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000214if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
215add_definitions( -DEXPORT_LIBLLDB )
216endif()
217
218# Need to export the API in the liblldb.dll for Windows
219# The lldbAPI source files are added directly in liblldb
220if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000221# On Non-Windows, the corresponding file list is maintained in
222# source\API\CMakeLists.txt. When editing this list, do not forget to make a
223# corresponding change in that file as well (when appropriate).
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000224add_lldb_library(liblldb
225 lldb.cpp
226 lldb-log.cpp
227 API/SBAddress.cpp
228 API/SBBlock.cpp
229 API/SBBreakpoint.cpp
230 API/SBBreakpointLocation.cpp
231 API/SBBroadcaster.cpp
232 API/SBCommandInterpreter.cpp
233 API/SBCommandReturnObject.cpp
234 API/SBCommunication.cpp
235 API/SBCompileUnit.cpp
236 API/SBData.cpp
237 API/SBDebugger.cpp
238 API/SBDeclaration.cpp
239 API/SBError.cpp
240 API/SBEvent.cpp
241 API/SBExpressionOptions.cpp
242 API/SBFileSpec.cpp
243 API/SBFileSpecList.cpp
244 API/SBFrame.cpp
245 API/SBFunction.cpp
246 API/SBHostOS.cpp
247 API/SBInstruction.cpp
248 API/SBInstructionList.cpp
249 API/SBLineEntry.cpp
250 API/SBListener.cpp
251 API/SBModule.cpp
252 API/SBModuleSpec.cpp
253 API/SBPlatform.cpp
254 API/SBProcess.cpp
255 API/SBQueue.cpp
256 API/SBQueueItem.cpp
257 API/SBSection.cpp
258 API/SBSourceManager.cpp
259 API/SBStream.cpp
260 API/SBStringList.cpp
261 API/SBSymbol.cpp
262 API/SBSymbolContext.cpp
263 API/SBSymbolContextList.cpp
264 API/SBTarget.cpp
265 API/SBThread.cpp
266 API/SBType.cpp
267 API/SBTypeCategory.cpp
Colin Rileyb7fd1bd2014-06-03 13:01:18 +0000268 API/SBTypeEnumMember.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000269 API/SBTypeFilter.cpp
270 API/SBTypeFormat.cpp
271 API/SBTypeNameSpecifier.cpp
272 API/SBTypeSummary.cpp
273 API/SBTypeSynthetic.cpp
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000274 API/SBUnixSignals.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000275 API/SBValue.cpp
276 API/SBValueList.cpp
277 API/SBWatchpoint.cpp
278 Host/Windows/getopt/GetOptInc.cpp
279 ${LLDB_WRAP_PYTHON}
280 ${LLDB_VERS_GENERATED_FILE}
281 )
282else ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000283add_lldb_library(liblldb
284 lldb.cpp
285 lldb-log.cpp
286 ${LLDB_WRAP_PYTHON}
287 ${LLDB_VERS_GENERATED_FILE}
288 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000289endif ()
290
291if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
292set_target_properties(liblldb
293 PROPERTIES
294 OUTPUT_NAME liblldb
295 VERSION ${LLDB_VERSION}
296 )
297else()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000298set_target_properties(liblldb
299 PROPERTIES
300 OUTPUT_NAME lldb
301 VERSION ${LLDB_VERSION}
302 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000303endif()
304
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000305if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
306 add_dependencies(liblldb
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000307 swig_wrapper
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000308 ${LLDB_WRAP_PYTHON}
309 ${LLDB_VERS_GENERATED_FILE}
310 )
311endif()
Saleem Abdulrasoole1401eb2014-07-20 05:28:55 +0000312target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${LLDB_SYSTEM_LIBS})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000313
314# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
315# such will not work on Windows.
316if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
317 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
318 OUTPUT_VARIABLE LLDB_REVISION)
319 if ( LLDB_REVISION )
320 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
321 endif()
322
323 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
324 OUTPUT_VARIABLE LLDB_REPOSITORY)
325 if ( LLDB_REPOSITORY )
326 # Replace newline characters with spaces
327 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
328
329 # Remove trailing spaces
330 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
331 endif()
332
333 set_property(
334 SOURCE lldb.cpp
335 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
336endif ()
337# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
338# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
339
Zachary Turner0ab4b482014-07-10 23:47:42 +0000340if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION )
341 # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows)
342 if ( NOT LLDB_DISABLE_PYTHON )
Zachary Turner0ab4b482014-07-10 23:47:42 +0000343 add_custom_command( TARGET liblldb
344 POST_BUILD
345 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py
Zachary Turner05c30882014-07-18 07:06:13 +0000346 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 +0000347 COMMENT "Python script sym-linking LLDB Python API")
348 endif ()
349endif ()
350
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000351install(TARGETS liblldb
352 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000353 LIBRARY DESTINATION lib
354 ARCHIVE DESTINATION lib)