blob: b44ebbc05cce7e727b8224f72892cce8344652ec [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
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
Zachary Turner35ed1322014-07-28 16:45:18 +0000100 lldbPluginProcessWindows
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
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000110 lldbPluginProcessLinux
111 lldbPluginProcessPOSIX
112 lldbPluginProcessElfCore
Andrew MacPherson17220c12014-03-05 10:12:43 +0000113 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000114 )
115endif ()
116
117# FreeBSD-only libraries
118if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
119 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000120 lldbPluginProcessFreeBSD
121 lldbPluginProcessPOSIX
122 lldbPluginProcessElfCore
Ed Maste32aa12b2014-03-05 13:57:24 +0000123 lldbPluginJITLoaderGDB
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000124 )
125endif ()
126
127# Darwin-only libraries
128if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
129 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
130 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
131 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
Todd Fiala5000e282014-01-18 08:05:32 +0000132 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj liblldb_core
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000133 > ${LLDB_VERS_GENERATED_FILE})
134
135 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
136 list(APPEND LLDB_USED_LIBS
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000137 lldbPluginDynamicLoaderDarwinKernel
138 lldbPluginProcessMacOSXKernel
139 lldbPluginSymbolVendorMacOSX
Jason Molendaa7b5afa2013-11-15 00:17:32 +0000140 lldbPluginSystemRuntimeMacOSX
Todd Fiala8a5c5a02014-03-13 21:16:13 +0000141 lldbPluginProcessPOSIX
142 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}
Zachary Turnerd8675202014-08-07 23:26:01 +0000180 jit
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
237 API/SBExpressionOptions.cpp
238 API/SBFileSpec.cpp
239 API/SBFileSpecList.cpp
240 API/SBFrame.cpp
241 API/SBFunction.cpp
242 API/SBHostOS.cpp
243 API/SBInstruction.cpp
244 API/SBInstructionList.cpp
245 API/SBLineEntry.cpp
246 API/SBListener.cpp
247 API/SBModule.cpp
248 API/SBModuleSpec.cpp
249 API/SBPlatform.cpp
250 API/SBProcess.cpp
251 API/SBQueue.cpp
252 API/SBQueueItem.cpp
253 API/SBSection.cpp
254 API/SBSourceManager.cpp
255 API/SBStream.cpp
256 API/SBStringList.cpp
257 API/SBSymbol.cpp
258 API/SBSymbolContext.cpp
259 API/SBSymbolContextList.cpp
260 API/SBTarget.cpp
261 API/SBThread.cpp
262 API/SBType.cpp
263 API/SBTypeCategory.cpp
Colin Rileyb7fd1bd2014-06-03 13:01:18 +0000264 API/SBTypeEnumMember.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000265 API/SBTypeFilter.cpp
266 API/SBTypeFormat.cpp
267 API/SBTypeNameSpecifier.cpp
268 API/SBTypeSummary.cpp
269 API/SBTypeSynthetic.cpp
Todd Fiala5d1b9c732014-06-24 21:38:31 +0000270 API/SBUnixSignals.cpp
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000271 API/SBValue.cpp
272 API/SBValueList.cpp
273 API/SBWatchpoint.cpp
274 Host/Windows/getopt/GetOptInc.cpp
275 ${LLDB_WRAP_PYTHON}
276 ${LLDB_VERS_GENERATED_FILE}
277 )
278else ()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000279add_lldb_library(liblldb
280 lldb.cpp
281 lldb-log.cpp
282 ${LLDB_WRAP_PYTHON}
283 ${LLDB_VERS_GENERATED_FILE}
284 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000285endif ()
286
287if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
288set_target_properties(liblldb
289 PROPERTIES
290 OUTPUT_NAME liblldb
291 VERSION ${LLDB_VERSION}
292 )
293else()
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000294set_target_properties(liblldb
295 PROPERTIES
296 OUTPUT_NAME lldb
297 VERSION ${LLDB_VERSION}
298 )
Deepak Panickal627f4ae2014-03-03 15:50:36 +0000299endif()
300
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000301if (LLDB_WRAP_PYTHON OR LLDB_VERS_GENERATED_FILE)
Zachary Turnercfe910b2014-08-22 20:44:55 +0000302 add_dependencies(liblldb swig_wrapper)
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000303endif()
Saleem Abdulrasoole1401eb2014-07-20 05:28:55 +0000304target_link_libraries(liblldb ${cmake_2_8_12_PRIVATE} ${LLDB_SYSTEM_LIBS})
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000305
306# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
307# such will not work on Windows.
308if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
309 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
310 OUTPUT_VARIABLE LLDB_REVISION)
311 if ( LLDB_REVISION )
312 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
313 endif()
314
315 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
316 OUTPUT_VARIABLE LLDB_REPOSITORY)
317 if ( LLDB_REPOSITORY )
318 # Replace newline characters with spaces
319 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
320
321 # Remove trailing spaces
322 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
323 endif()
324
325 set_property(
326 SOURCE lldb.cpp
327 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
328endif ()
329# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
330# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
331
Zachary Turner0ab4b482014-07-10 23:47:42 +0000332if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION )
333 # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows)
334 if ( NOT LLDB_DISABLE_PYTHON )
Zachary Turner0ab4b482014-07-10 23:47:42 +0000335 add_custom_command( TARGET liblldb
336 POST_BUILD
337 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py
Zachary Turner05c30882014-07-18 07:06:13 +0000338 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 +0000339 COMMENT "Python script sym-linking LLDB Python API")
340 endif ()
341endif ()
342
Joerg Sonnenberger340a1752013-09-25 10:37:32 +0000343install(TARGETS liblldb
344 RUNTIME DESTINATION bin
Deepak Panickala0154f92013-10-15 12:32:12 +0000345 LIBRARY DESTINATION lib
346 ARCHIVE DESTINATION lib)