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