blob: 595acf07f0ed4047e916198158bd1ad4f52b6138 [file] [log] [blame]
Daniel Maleaaebeefd2013-02-21 20:58:22 +00001include_directories(.)
2
Daniel Malea137c4d72013-02-28 23:11:46 +00003if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
Daniel Maleaaebeefd2013-02-21 20:58:22 +00004include_directories(
5 Plugins/Process/Linux
6 Plugins/Process/POSIX
7 )
Daniel Malea137c4d72013-02-28 23:11:46 +00008endif ()
Daniel Maleaaebeefd2013-02-21 20:58:22 +00009
Daniel Maleae73f1d22013-05-31 20:16:40 +000010if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
11include_directories(
12 Plugins/Process/FreeBSD
13 Plugins/Process/POSIX
14 )
15endif ()
16
Daniel Maleaaebeefd2013-02-21 20:58:22 +000017add_subdirectory(API)
18add_subdirectory(Breakpoint)
19add_subdirectory(Commands)
20add_subdirectory(Core)
21add_subdirectory(DataFormatters)
22add_subdirectory(Expression)
23add_subdirectory(Host)
24add_subdirectory(Interpreter)
25add_subdirectory(Plugins)
26add_subdirectory(Symbol)
27add_subdirectory(Target)
28add_subdirectory(Utility)
29
30set( LLDB_USED_LIBS
31 lldbAPI
32 lldbBreakpoint
33 lldbCommands
34 lldbDataFormatters
35 lldbHostCommon
36 lldbCore
37 lldbExpression
Daniel Maleaaebeefd2013-02-21 20:58:22 +000038 lldbInterpreter
39 lldbSymbol
40 lldbTarget
41 lldbUtility
42
43 # Plugins
44 lldbPluginDisassemblerLLVM
45 lldbPluginSymbolFileDWARF
46 lldbPluginSymbolFileSymtab
47 lldbPluginDynamicLoaderStatic
Filipe Cabecinhasaad68fa2013-04-25 01:36:53 +000048 lldbPluginDynamicLoaderPosixDYLD
Daniel Maleaaebeefd2013-02-21 20:58:22 +000049
Daniel Maleae2d0ace2013-04-17 18:40:42 +000050 lldbPluginObjectFileMachO
51 lldbPluginObjectFileELF
Daniel Maleaaebeefd2013-02-21 20:58:22 +000052 lldbPluginObjectContainerBSDArchive
53 lldbPluginObjectContainerMachOArchive
54 lldbPluginProcessGDBRemote
Filipe Cabecinhasaad68fa2013-04-25 01:36:53 +000055 lldbPluginProcessMachCore
Daniel Maleaaebeefd2013-02-21 20:58:22 +000056 lldbPluginProcessUtility
57 lldbPluginPlatformGDB
58 lldbPluginPlatformFreeBSD
59 lldbPluginPlatformLinux
Daniel Maleae2d0ace2013-04-17 18:40:42 +000060 lldbPluginObjectFileMachO
Daniel Maleaaebeefd2013-02-21 20:58:22 +000061 lldbPluginObjectContainerMachOArchive
62 lldbPluginObjectContainerBSDArchive
63 lldbPluginPlatformMacOSX
Daniel Maleae2d0ace2013-04-17 18:40:42 +000064 lldbPluginDynamicLoaderMacOSXDYLD
Daniel Maleaaebeefd2013-02-21 20:58:22 +000065 lldbPluginUnwindAssemblyInstEmulation
66 lldbPluginUnwindAssemblyX86
Daniel Maleaaebeefd2013-02-21 20:58:22 +000067 lldbPluginAppleObjCRuntime
68 lldbPluginCXXItaniumABI
69 lldbPluginABIMacOSX_arm
70 lldbPluginABIMacOSX_i386
71 lldbPluginABISysV_x86_64
72 lldbPluginInstructionARM
Daniel Maleaaebeefd2013-02-21 20:58:22 +000073 lldbPluginObjectFilePECOFF
Daniel Malea137c4d72013-02-28 23:11:46 +000074 lldbPluginOSPython
Daniel Maleaaebeefd2013-02-21 20:58:22 +000075 )
Daniel Malea137c4d72013-02-28 23:11:46 +000076
77# Windows-only libraries
78if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
79 list(APPEND LLDB_USED_LIBS
80 #lldbHostWindows
81 #lldbPluginPlatformWindows
82 #Ws2_32
83 )
84endif ()
85
86# Linux-only libraries
87if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
88 list(APPEND LLDB_USED_LIBS
89 lldbHostLinux
90 lldbPluginProcessLinux
91 lldbPluginProcessPOSIX
92 )
93endif ()
94
Daniel Malea764cbd92013-06-04 15:59:01 +000095# FreeBSD-only libraries
96if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
97 list(APPEND LLDB_USED_LIBS
98 lldbHostFreeBSD
99 lldbPluginProcessFreeBSD
100 lldbPluginProcessPOSIX
101 )
102endif ()
103
Filipe Cabecinhasaad68fa2013-04-25 01:36:53 +0000104# Darwin-only libraries
105if ( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
Daniel Malea39330062013-05-28 03:44:37 +0000106 set(LLDB_VERS_GENERATED_FILE ${LLDB_BINARY_DIR}/source/LLDB_vers.c)
107 add_custom_command(OUTPUT ${LLDB_VERS_GENERATED_FILE}
108 COMMAND ${LLDB_SOURCE_DIR}/scripts/generate-vers.pl
109 ${LLDB_SOURCE_DIR}/lldb.xcodeproj/project.pbxproj
110 > ${LLDB_VERS_GENERATED_FILE})
111
112 set_source_files_properties(${LLDB_VERS_GENERATED_FILE} PROPERTIES GENERATED 1)
Filipe Cabecinhasaad68fa2013-04-25 01:36:53 +0000113 list(APPEND LLDB_USED_LIBS
114 lldbHostMacOSX
Daniel Malea4463d1e2013-05-13 17:30:30 +0000115 lldbPluginDynamicLoaderDarwinKernel
Filipe Cabecinhasaad68fa2013-04-25 01:36:53 +0000116 lldbPluginProcessMacOSXKernel
117 lldbPluginSymbolVendorMacOSX
118 )
119endif()
120
Daniel Maleaaebeefd2013-02-21 20:58:22 +0000121set( CLANG_USED_LIBS
122 clangAnalysis
123 clangAST
124 clangBasic
125 clangCodeGen
126 clangDriver
127 clangEdit
128 clangFrontend
129 clangLex
130 clangParse
131 clangRewriteCore
132 clangRewriteFrontend
133 clangSema
134 clangSerialization
135 )
136
137set( LLDB_SYSTEM_LIBS
138 edit
139 python2.7
140 )
141
142set( LLVM_LINK_COMPONENTS
143 ${LLVM_TARGETS_TO_BUILD}
144 jit
145 interpreter
146 nativecodegen
147 asmparser
148 bitreader
149 bitwriter
150 codegen
151 ipo
152 selectiondag
153 bitreader
154 mc
155 mcjit
156 core
157 mcdisassembler
158 executionengine
159 )
160
Daniel Malea08561072013-03-05 21:59:12 +0000161set_source_files_properties(${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
Daniel Maleaaebeefd2013-02-21 20:58:22 +0000162set(SHARED_LIBRARY 1)
163
164add_lldb_library(liblldb
165 lldb.cpp
166 lldb-log.cpp
Daniel Malea08561072013-03-05 21:59:12 +0000167 ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp
Daniel Malea39330062013-05-28 03:44:37 +0000168 ${LLDB_VERS_GENERATED_FILE}
Daniel Maleaaebeefd2013-02-21 20:58:22 +0000169 )
Daniel Maleae4c20222013-05-17 20:55:19 +0000170set_target_properties(liblldb
171 PROPERTIES
172 OUTPUT_NAME lldb
173 VERSION ${LLDB_VERSION}
174 )
Daniel Malea39330062013-05-28 03:44:37 +0000175add_dependencies(liblldb
176 ${LLDB_BINARY_DIR}/scripts/LLDBWrapPython.cpp
177 ${LLDB_VERS_GENERATED_FILE}
178 )
Daniel Malea08561072013-03-05 21:59:12 +0000179target_link_libraries(liblldb ${LLDB_SYSTEM_LIBS})
Daniel Malea137c4d72013-02-28 23:11:46 +0000180
181# Determine LLDB revision and repository. GetSourceVersion and GetRepositoryPath are shell-scripts, and as
182# such will not work on Windows.
183if ( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
184 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetSourceVersion ${LLDB_SOURCE_DIR}
185 OUTPUT_VARIABLE LLDB_REVISION)
Sylvestre Ledru3863dd02013-03-16 17:01:13 +0000186 if ( LLDB_REVISION )
187 string(REGEX REPLACE "(\r?\n)+$" "" LLDB_REVISION ${LLDB_REVISION})
188 endif()
Daniel Malea137c4d72013-02-28 23:11:46 +0000189
190 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/utils/GetRepositoryPath ${LLDB_SOURCE_DIR}
191 OUTPUT_VARIABLE LLDB_REPOSITORY)
Sylvestre Ledru3863dd02013-03-16 17:01:13 +0000192 if ( LLDB_REPOSITORY )
Daniel Malea81945122013-05-15 17:23:19 +0000193 # Replace newline characters with spaces
194 string(REGEX REPLACE "(\r?\n)+" " " LLDB_REPOSITORY ${LLDB_REPOSITORY})
195
196 # Remove trailing spaces
197 string(REGEX REPLACE "(\ )+$" "" LLDB_REPOSITORY ${LLDB_REPOSITORY})
Sylvestre Ledru3863dd02013-03-16 17:01:13 +0000198 endif()
Daniel Malea137c4d72013-02-28 23:11:46 +0000199
200 set_property(
201 SOURCE lldb.cpp
202 PROPERTY COMPILE_DEFINITIONS "LLDB_REVISION=\"${LLDB_REVISION}\"" "LLDB_REPOSITORY=\"${LLDB_REPOSITORY}\"")
203endif ()
204# FIXME: implement svn/git revision and repository parsing solution on Windows. There is an SVN-only
205# revision parsing solution in tools/clang/lib/Basic/CMakelists.txt.
206
Daniel Maleaaebeefd2013-02-21 20:58:22 +0000207
208install(TARGETS liblldb
209 LIBRARY DESTINATION lib)