brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.8 KiB · 06dde7c Raw
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