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
94if (MSVC)
95  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
96else()
97  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
98endif()
99
100set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1)
101if (CLANG_CL)
102  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING
103    PROPERTY COMPILE_FLAGS " -Wno-unused-function")
104endif()
105if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
106    NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
107  set_property(SOURCE ${LLDB_WRAP_PYTHON} APPEND_STRING
108    PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
109endif ()
110
111set_target_properties(liblldb
112  PROPERTIES
113  VERSION ${LLDB_VERSION}
114  )
115
116if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
117  if (NOT LLDB_EXPORT_ALL_SYMBOLS)
118    # If we're not exporting all symbols, we'll want to explicitly set
119    # the exported symbols here.  This prevents 'log enable --stack ...'
120    # from working on some systems but limits the liblldb size.
121    MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb namespace")
122    add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
123  else()
124    # Don't use an explicit export.  Instead, tell the linker to
125    # export all symbols.
126    MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb and lldb_private namespaces")
127    add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb-private.exports)
128  endif()
129endif()
130
131if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
132  # Only MSVC has the ABI compatibility problem and avoids using FindPythonLibs,
133  # so only it needs to explicitly link against ${PYTHON_LIBRARY}
134  if (MSVC AND NOT LLDB_DISABLE_PYTHON)
135    target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARY})
136  endif()
137else()
138  set_target_properties(liblldb
139    PROPERTIES
140    OUTPUT_NAME lldb
141    )
142endif()
143
144if (LLDB_WRAP_PYTHON)
145  add_dependencies(liblldb swig_wrapper)
146endif()
147