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