255 lines · plain
1import("//llvm/lib/Target/targets.gni")2import("//llvm/utils/gn/build/write_cmake_config.gni")3 4# In the CMake build, each plugin calls `add_lldb_library(name PLUGIN ...)`,5# which implicitly adds the plugin name to the LLDB_PLUGINS list.6# A few places then query that list and add dependencies on it.7# lldb/source/Plugins/CMakeList.txt then does string munging on the list of8# plugin names to generate Plugins.def.9# In the GN build, we instead have an explicit list of all plugins here.10# Every entry in this list is a (GN target, LLDB_PLUGIN Plugins.def name) pair.11lldb_plugins = []12if (llvm_build_X86) {13 lldb_plugins += [ [14 "//lldb/source/Plugins/ABI/X86",15 "ABIX86",16 ] ]17}18lldb_plugins += [19 [20 "//lldb/source/Plugins/Architecture/PPC64",21 "ArchitecturePPC64",22 ],23 [24 "//lldb/source/Plugins/Disassembler/LLVMC",25 "DisassemblerLLVMC",26 ],27 [28 "//lldb/source/Plugins/DynamicLoader/Darwin-Kernel",29 "DynamicLoaderDarwinKernel",30 ],31 [32 "//lldb/source/Plugins/DynamicLoader/MacOSX-DYLD",33 "DynamicLoaderMacOSXDYLD",34 ],35 [36 "//lldb/source/Plugins/DynamicLoader/POSIX-DYLD",37 "DynamicLoaderPosixDYLD",38 ],39 [40 "//lldb/source/Plugins/DynamicLoader/Static",41 "DynamicLoaderStatic",42 ],43 [44 "//lldb/source/Plugins/DynamicLoader/Windows-DYLD",45 "DynamicLoaderWindowsDYLD",46 ],47 [48 "//lldb/source/Plugins/Instruction/ARM",49 "InstructionARM",50 ],51 [52 "//lldb/source/Plugins/JITLoader/GDB",53 "JITLoaderGDB",54 ],55 [56 "//lldb/source/Plugins/Language/CPlusPlus",57 "CPlusPlusLanguage",58 ],59 [60 "//lldb/source/Plugins/Language/ObjC",61 "ObjCLanguage",62 ],63 [64 "//lldb/source/Plugins/Language/ObjCPlusPlus",65 "ObjCPlusPlusLanguage",66 ],67 [68 "//lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI",69 "CXXItaniumABI",70 ],71 [72 "//lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime",73 "AppleObjCRuntime",74 ],75 [76 "//lldb/source/Plugins/ObjectContainer/BSD-Archive",77 "ObjectContainerBSDArchive",78 ],79 [80 "//lldb/source/Plugins/ObjectContainer/Universal-Mach-O",81 "ObjectContainerMachOArchive",82 ],83 [84 "//lldb/source/Plugins/ObjectFile/Breakpad",85 "ObjectFileBreakpad",86 ],87 [88 "//lldb/source/Plugins/ObjectFile/ELF",89 "ObjectFileELF",90 ],91 [92 "//lldb/source/Plugins/ObjectFile/Mach-O",93 "ObjectFileMachO",94 ],95 [96 "//lldb/source/Plugins/ObjectFile/PDB",97 "ObjectFilePDB",98 ],99 [100 "//lldb/source/Plugins/ObjectFile/PECOFF",101 "ObjectFilePECOFF",102 ],103 [104 "//lldb/source/Plugins/ObjectFile/Placeholder",105 "ObjectFilePlaceholder",106 ],107 [108 "//lldb/source/Plugins/ObjectFile/wasm",109 "ObjectFileWasm",110 ],111 [112 "//lldb/source/Plugins/Platform/Linux",113 "PlatformLinux",114 ],115 [116 "//lldb/source/Plugins/Platform/MacOSX",117 "PlatformMacOSX",118 ],119 [120 "//lldb/source/Plugins/Platform/Windows",121 "PlatformWindows",122 ],123 [124 "//lldb/source/Plugins/Process/elf-core",125 "ProcessElfCore",126 ],127 [128 "//lldb/source/Plugins/Process/gdb-remote",129 "", # Uses LLDB_PROCESS_GDB_PLUGIN instead.130 ],131 [132 "//lldb/source/Plugins/Process/mach-core",133 "ProcessMachCore",134 ],135 [136 "//lldb/source/Plugins/Process/minidump",137 "ProcessMinidump",138 ],139 [140 "//lldb/source/Plugins/REPL/Clang",141 "ClangREPL",142 ],143 [144 "//lldb/source/Plugins/ScriptInterpreter/None",145 "", # Uses LLDB_SCRIPT_PLUGIN instead.146 ],147 [148 "//lldb/source/Plugins/SymbolFile/Breakpad",149 "SymbolFileBreakpad",150 ],151 [152 "//lldb/source/Plugins/SymbolFile/DWARF",153 "SymbolFileDWARF",154 ],155 [156 "//lldb/source/Plugins/SymbolFile/PDB",157 "SymbolFilePDB",158 ],159 [160 "//lldb/source/Plugins/SymbolFile/Symtab",161 "SymbolFileSymtab",162 ],163 [164 "//lldb/source/Plugins/SymbolLocator/Default",165 "SymbolLocatorDefault",166 ],167]168if (current_os == "mac") {169 lldb_plugins += [170 [171 "//lldb/source/Plugins/SymbolLocator/DebugSymbols",172 "SymbolLocatorDebugSymbols",173 ],174 [175 "//lldb/source/Plugins/SymbolVendor/MacOSX",176 "SymbolVendorMacOSX",177 ],178 ]179}180lldb_plugins += [181 [182 "//lldb/source/Plugins/SymbolVendor/ELF",183 "SymbolVendorELF",184 ],185 186 [187 "//lldb/source/Plugins/SymbolVendor/wasm",188 "SymbolVendorWasm",189 ],190 191 [192 "//lldb/source/Plugins/SymbolVendor/PECOFF",193 "SymbolVendorPECOFF",194 ],195 196 [197 "//lldb/source/Plugins/TypeSystem/Clang",198 "TypeSystemClang",199 ],200 201 [202 "//lldb/source/Plugins/UnwindAssembly/InstEmulation",203 "UnwindAssemblyInstEmulation",204 ],205 [206 "//lldb/source/Plugins/UnwindAssembly/x86",207 "UnwindAssemblyX86",208 ],209]210 211write_cmake_config("Plugins.def") {212 input = "Plugins.def.in"213 output = "$target_gen_dir/Plugins.def"214 215 enum_plugins = ""216 foreach(plugin, lldb_plugins) {217 plugin_id = plugin[1]218 if (plugin_id != "") {219 # \n is a literal '\' followed by a literal 'n', not a newline character.220 # write_cmake_config.py replaces it with a real newline.221 enum_plugins += "LLDB_PLUGIN(" + plugin_id + ")\n"222 }223 }224 225 deps = [ "//lldb/source/Plugins/ScriptInterpreter/None" ]226 enum_plugins += "LLDB_SCRIPT_PLUGIN(ScriptInterpreterNone)"227 228 values = [ "LLDB_ENUM_PLUGINS=" + enum_plugins ]229 230 # These are in separate variables to make sure ProcessWindowsCommon is231 # initalized after all plugins, but before ProcessGDBRemote.232 if (current_os == "win") {233 values +=234 [ "LLDB_PROCESS_WINDOWS_PLUGIN=LLDB_PLUGIN(ProcessWindowsCommon)" ]235 } else {236 values += [ "LLDB_PROCESS_WINDOWS_PLUGIN=" ]237 }238 values += [ "LLDB_PROCESS_GDB_PLUGIN=LLDB_PLUGIN(ProcessGDBRemote)" ]239}240 241config("AllLldbPlugins_config") {242 visibility = [ ":LldbAllPlugins" ]243 244 # To pick up Plugins.def.245 include_dirs = [ "$root_gen_dir/lldb/source" ]246}247 248group("LldbAllPlugins") {249 deps = [ ":Plugins.def" ]250 foreach(plugin, lldb_plugins) {251 deps += [ plugin[0] ]252 }253 public_configs = [ ":AllLldbPlugins_config" ]254}255