1if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) 2 add_definitions( -DEXPORT_LIBLLDB ) 3endif() 4 5get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS) 6 7if(LLDB_ENABLE_PYTHON) 8 get_target_property(lldb_bindings_dir swig_wrapper BINARY_DIR) 9 set(lldb_python_wrapper ${lldb_bindings_dir}/LLDBWrapPython.cpp) 10endif() 11 12if(LLDB_ENABLE_LUA) 13 get_target_property(lldb_bindings_dir swig_wrapper_lua BINARY_DIR) 14 set(lldb_lua_wrapper ${lldb_bindings_dir}/LLDBWrapLua.cpp) 15endif() 16 17if(LLDB_BUILD_FRAMEWORK) 18 set(option_install_prefix INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR}) 19 set(option_framework FRAMEWORK) 20endif() 21 22add_lldb_library(liblldb SHARED ${option_framework} 23 SBAddress.cpp 24 SBAttachInfo.cpp 25 SBBlock.cpp 26 SBBreakpoint.cpp 27 SBBreakpointLocation.cpp 28 SBBreakpointName.cpp 29 SBBreakpointOptionCommon.cpp 30 SBBroadcaster.cpp 31 SBCommandInterpreter.cpp 32 SBCommandReturnObject.cpp 33 SBCommunication.cpp 34 SBCompileUnit.cpp 35 SBData.cpp 36 SBDebugger.cpp 37 SBDeclaration.cpp 38 SBEnvironment.cpp 39 SBError.cpp 40 SBEvent.cpp 41 SBExecutionContext.cpp 42 SBExpressionOptions.cpp 43 SBFileSpec.cpp 44 SBFile.cpp 45 SBFileSpecList.cpp 46 SBFrame.cpp 47 SBFunction.cpp 48 SBHostOS.cpp 49 SBInstruction.cpp 50 SBInstructionList.cpp 51 SBLanguageRuntime.cpp 52 SBLaunchInfo.cpp 53 SBLineEntry.cpp 54 SBListener.cpp 55 SBMemoryRegionInfo.cpp 56 SBMemoryRegionInfoList.cpp 57 SBModule.cpp 58 SBModuleSpec.cpp 59 SBPlatform.cpp 60 SBProcess.cpp 61 SBProcessInfo.cpp 62 SBQueue.cpp 63 SBQueueItem.cpp 64 SBReproducer.cpp 65 SBSection.cpp 66 SBSourceManager.cpp 67 SBStream.cpp 68 SBStringList.cpp 69 SBStructuredData.cpp 70 SBSymbol.cpp 71 SBSymbolContext.cpp 72 SBSymbolContextList.cpp 73 SBTarget.cpp 74 SBThread.cpp 75 SBThreadCollection.cpp 76 SBThreadPlan.cpp 77 SBTrace.cpp 78 SBTraceOptions.cpp 79 SBType.cpp 80 SBTypeCategory.cpp 81 SBTypeEnumMember.cpp 82 SBTypeFilter.cpp 83 SBTypeFormat.cpp 84 SBTypeNameSpecifier.cpp 85 SBTypeSummary.cpp 86 SBTypeSynthetic.cpp 87 SBValue.cpp 88 SBValueList.cpp 89 SBVariablesOptions.cpp 90 SBWatchpoint.cpp 91 SBUnixSignals.cpp 92 SystemInitializerFull.cpp 93 ${lldb_python_wrapper} 94 ${lldb_lua_wrapper} 95 96 LINK_LIBS 97 lldbBase 98 lldbBreakpoint 99 lldbCore 100 lldbDataFormatters 101 lldbExpression 102 lldbHost 103 lldbInitialization 104 lldbInterpreter 105 lldbSymbol 106 lldbTarget 107 lldbUtility 108 ${LLDB_ALL_PLUGINS} 109 LINK_COMPONENTS 110 Support 111 112 ${option_install_prefix} 113) 114 115# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so, 116# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so 117# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so 118# that _lldb.so can be loaded from Python. 119if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE) 120 set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}") 121endif() 122 123if (MSVC) 124 set_source_files_properties(SBReproducer.cpp PROPERTIES COMPILE_FLAGS /bigobj) 125endif() 126 127if(lldb_python_wrapper) 128 add_dependencies(liblldb swig_wrapper) 129 130 if (MSVC) 131 set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0") 132 else() 133 set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w") 134 endif() 135 136 set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON) 137 if (CLANG_CL) 138 set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING 139 PROPERTY COMPILE_FLAGS " -Wno-unused-function") 140 endif() 141 if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND 142 NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin") 143 set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING 144 PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual") 145 endif () 146endif() 147 148if(lldb_lua_wrapper) 149 add_dependencies(liblldb swig_wrapper_lua) 150 target_include_directories(liblldb PRIVATE ${LUA_INCLUDE_DIR}) 151 152 if (MSVC) 153 set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0") 154 else() 155 set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w") 156 endif() 157 158 set_source_files_properties(${lldb_lua_wrapper} PROPERTIES GENERATED ON) 159endif() 160 161set_target_properties(liblldb 162 PROPERTIES 163 VERSION ${LLDB_VERSION} 164) 165 166if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows") 167 if (NOT LLDB_EXPORT_ALL_SYMBOLS) 168 # If we're not exporting all symbols, we'll want to explicitly set 169 # the exported symbols here. This prevents 'log enable --stack ...' 170 # from working on some systems but limits the liblldb size. 171 MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb namespace") 172 add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports) 173 else() 174 # Don't use an explicit export. Instead, tell the linker to 175 # export all symbols. 176 MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb and lldb_private namespaces") 177 add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb-private.exports) 178 endif() 179 set_target_properties(liblldb_exports PROPERTIES FOLDER "lldb misc") 180endif() 181 182if ( CMAKE_SYSTEM_NAME MATCHES "Windows" ) 183 # Only MSVC has the ABI compatibility problem and avoids using FindPythonLibs, 184 # so only it needs to explicitly link against ${PYTHON_LIBRARIES} 185 if (MSVC AND LLDB_ENABLE_PYTHON) 186 target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARIES}) 187 endif() 188else() 189 set_target_properties(liblldb 190 PROPERTIES 191 OUTPUT_NAME lldb 192 ) 193endif() 194 195if (NOT LLDB_BUILT_STANDALONE) 196 add_dependencies(liblldb clang-resource-headers) 197endif() 198 199if(LLDB_BUILD_FRAMEWORK) 200 include(LLDBFramework) 201endif() 202