1if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
2  add_definitions( -DEXPORT_LIBLLDB )
3endif()
4
5get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS)
6
7if(NOT LLDB_DISABLE_PYTHON)
8  get_target_property(lldb_scripts_dir swig_wrapper BINARY_DIR)
9  set(lldb_python_wrapper ${lldb_scripts_dir}/LLDBWrapPython.cpp)
10endif()
11
12if(LLDB_BUILD_FRAMEWORK AND LLVM_EXTERNALIZE_DEBUGINFO)
13  set(LLVM_EXTERNALIZE_DEBUGINFO_EXTENSION framework.dSYM)
14endif()
15
16add_lldb_library(liblldb SHARED
17  SBAddress.cpp
18  SBAttachInfo.cpp
19  SBBlock.cpp
20  SBBreakpoint.cpp
21  SBBreakpointLocation.cpp
22  SBBreakpointName.cpp
23  SBBreakpointOptionCommon.cpp
24  SBBroadcaster.cpp
25  SBCommandInterpreter.cpp
26  SBCommandReturnObject.cpp
27  SBCommunication.cpp
28  SBCompileUnit.cpp
29  SBData.cpp
30  SBDebugger.cpp
31  SBDeclaration.cpp
32  SBError.cpp
33  SBEvent.cpp
34  SBExecutionContext.cpp
35  SBExpressionOptions.cpp
36  SBFileSpec.cpp
37  SBFileSpecList.cpp
38  SBFrame.cpp
39  SBFunction.cpp
40  SBHostOS.cpp
41  SBInstruction.cpp
42  SBInstructionList.cpp
43  SBLanguageRuntime.cpp
44  SBLaunchInfo.cpp
45  SBLineEntry.cpp
46  SBListener.cpp
47  SBMemoryRegionInfo.cpp
48  SBMemoryRegionInfoList.cpp
49  SBModule.cpp
50  SBModuleSpec.cpp
51  SBPlatform.cpp
52  SBProcess.cpp
53  SBProcessInfo.cpp
54  SBQueue.cpp
55  SBQueueItem.cpp
56  SBReproducer.cpp
57  SBSection.cpp
58  SBSourceManager.cpp
59  SBStream.cpp
60  SBStringList.cpp
61  SBStructuredData.cpp
62  SBSymbol.cpp
63  SBSymbolContext.cpp
64  SBSymbolContextList.cpp
65  SBTarget.cpp
66  SBThread.cpp
67  SBThreadCollection.cpp
68  SBThreadPlan.cpp
69  SBTrace.cpp
70  SBTraceOptions.cpp
71  SBType.cpp
72  SBTypeCategory.cpp
73  SBTypeEnumMember.cpp
74  SBTypeFilter.cpp
75  SBTypeFormat.cpp
76  SBTypeNameSpecifier.cpp
77  SBTypeSummary.cpp
78  SBTypeSynthetic.cpp
79  SBValue.cpp
80  SBValueList.cpp
81  SBVariablesOptions.cpp
82  SBWatchpoint.cpp
83  SBUnixSignals.cpp
84  SystemInitializerFull.cpp
85  ${lldb_python_wrapper}
86
87  LINK_LIBS
88    lldbBase
89    lldbBreakpoint
90    lldbCore
91    lldbDataFormatters
92    lldbExpression
93    lldbHost
94    lldbInitialization
95    lldbInterpreter
96    lldbSymbol
97    lldbTarget
98    lldbUtility
99    ${LLDB_ALL_PLUGINS}
100  LINK_COMPONENTS
101    Support
102  )
103
104if (MSVC)
105  set_source_files_properties(SBReproducer.cpp PROPERTIES COMPILE_FLAGS /bigobj)
106endif()
107
108if(lldb_python_wrapper)
109  add_dependencies(liblldb swig_wrapper)
110
111  if (MSVC)
112    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
113  else()
114    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
115  endif()
116
117  set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON)
118  if (CLANG_CL)
119    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
120      PROPERTY COMPILE_FLAGS " -Wno-unused-function")
121  endif()
122  if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
123      NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
124    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
125      PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
126  endif ()
127endif()
128
129set_target_properties(liblldb
130  PROPERTIES
131  VERSION ${LLDB_VERSION}
132)
133
134if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
135  if (NOT LLDB_EXPORT_ALL_SYMBOLS)
136    # If we're not exporting all symbols, we'll want to explicitly set
137    # the exported symbols here.  This prevents 'log enable --stack ...'
138    # from working on some systems but limits the liblldb size.
139    MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb namespace")
140    add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
141  else()
142    # Don't use an explicit export.  Instead, tell the linker to
143    # export all symbols.
144    MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb and lldb_private namespaces")
145    add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb-private.exports)
146  endif()
147  set_target_properties(liblldb_exports PROPERTIES FOLDER "lldb misc")
148endif()
149
150if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
151  # Only MSVC has the ABI compatibility problem and avoids using FindPythonLibs,
152  # so only it needs to explicitly link against ${PYTHON_LIBRARY}
153  if (MSVC AND NOT LLDB_DISABLE_PYTHON)
154    target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARY})
155  endif()
156else()
157  set_target_properties(liblldb
158    PROPERTIES
159    OUTPUT_NAME lldb
160  )
161endif()
162
163if (NOT LLDB_BUILT_STANDALONE)
164  add_dependencies(liblldb clang-resource-headers)
165endif()
166
167if(LLDB_BUILD_FRAMEWORK)
168  include(LLDBFramework)
169endif()
170