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