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