JDevlieghere created this revision. JDevlieghere added reviewers: xiaobai, labath, LLDB. Herald added subscribers: teemperor, abidh, aheejin, mgorny. Herald added a project: LLDB.
This patch introduces a new CMake macro `add_lldb_plugin_subdirectory` to be used by the plugins. It's similar to `add_lldb_tool_subdirectory` which makes it possible to disable certain tools at configuration time. With the new macro, the same is possible for plugins. The difference is that it includes the plugin's parent directory in the name as well, so that the variable is named `LDB_PLUGIN_SYMBOLFILE_PDF_BUILD` rather than `LDB_PLUGIN_PDB_BUILD`. I've updated the macOS CMake cache to give an idea of what this looks like. Repository: rLLDB LLDB https://reviews.llvm.org/D73016 Files: lldb/cmake/caches/Apple-lldb-macOS.cmake lldb/cmake/modules/AddLLDB.cmake lldb/source/Plugins/ABI/CMakeLists.txt lldb/source/Plugins/Architecture/CMakeLists.txt lldb/source/Plugins/Disassembler/CMakeLists.txt lldb/source/Plugins/DynamicLoader/CMakeLists.txt lldb/source/Plugins/ExpressionParser/CMakeLists.txt lldb/source/Plugins/Instruction/CMakeLists.txt lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt lldb/source/Plugins/JITLoader/CMakeLists.txt lldb/source/Plugins/Language/CMakeLists.txt lldb/source/Plugins/LanguageRuntime/CMakeLists.txt lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt lldb/source/Plugins/LanguageRuntime/RenderScript/CMakeLists.txt lldb/source/Plugins/MemoryHistory/CMakeLists.txt lldb/source/Plugins/ObjectContainer/CMakeLists.txt lldb/source/Plugins/ObjectFile/CMakeLists.txt lldb/source/Plugins/OperatingSystem/CMakeLists.txt lldb/source/Plugins/Platform/CMakeLists.txt lldb/source/Plugins/Platform/MacOSX/CMakeLists.txt lldb/source/Plugins/Process/CMakeLists.txt lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt lldb/source/Plugins/ScriptInterpreter/None/CMakeLists.txt lldb/source/Plugins/StructuredData/CMakeLists.txt lldb/source/Plugins/SymbolFile/CMakeLists.txt lldb/source/Plugins/SymbolVendor/CMakeLists.txt lldb/source/Plugins/SystemRuntime/CMakeLists.txt lldb/source/Plugins/UnwindAssembly/CMakeLists.txt
Index: lldb/source/Plugins/UnwindAssembly/CMakeLists.txt =================================================================== --- lldb/source/Plugins/UnwindAssembly/CMakeLists.txt +++ lldb/source/Plugins/UnwindAssembly/CMakeLists.txt @@ -1,2 +1,2 @@ -add_subdirectory(InstEmulation) -add_subdirectory(x86) +add_lldb_plugin_subdirectory(InstEmulation) +add_lldb_plugin_subdirectory(x86) Index: lldb/source/Plugins/SystemRuntime/CMakeLists.txt =================================================================== --- lldb/source/Plugins/SystemRuntime/CMakeLists.txt +++ lldb/source/Plugins/SystemRuntime/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(MacOSX) +add_lldb_plugin_subdirectory(MacOSX) Index: lldb/source/Plugins/SymbolVendor/CMakeLists.txt =================================================================== --- lldb/source/Plugins/SymbolVendor/CMakeLists.txt +++ lldb/source/Plugins/SymbolVendor/CMakeLists.txt @@ -1,6 +1,6 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_subdirectory(MacOSX) + add_lldb_plugin_subdirectory(MacOSX) endif() -add_subdirectory(ELF) -add_subdirectory(wasm) +add_lldb_plugin_subdirectory(ELF) +add_lldb_plugin_subdirectory(wasm) Index: lldb/source/Plugins/SymbolFile/CMakeLists.txt =================================================================== --- lldb/source/Plugins/SymbolFile/CMakeLists.txt +++ lldb/source/Plugins/SymbolFile/CMakeLists.txt @@ -1,5 +1,5 @@ -add_subdirectory(Breakpad) -add_subdirectory(DWARF) -add_subdirectory(Symtab) -add_subdirectory(NativePDB) -add_subdirectory(PDB) +add_lldb_plugin_subdirectory(Breakpad) +add_lldb_plugin_subdirectory(DWARF) +add_lldb_plugin_subdirectory(Symtab) +add_lldb_plugin_subdirectory(NativePDB) +add_lldb_plugin_subdirectory(PDB) Index: lldb/source/Plugins/StructuredData/CMakeLists.txt =================================================================== --- lldb/source/Plugins/StructuredData/CMakeLists.txt +++ lldb/source/Plugins/StructuredData/CMakeLists.txt @@ -1,2 +1,2 @@ -add_subdirectory(DarwinLog) +add_lldb_plugin_subdirectory(DarwinLog) Index: lldb/source/Plugins/ScriptInterpreter/None/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ScriptInterpreter/None/CMakeLists.txt +++ lldb/source/Plugins/ScriptInterpreter/None/CMakeLists.txt @@ -4,4 +4,4 @@ LINK_LIBS lldbCore lldbInterpreter - ) \ No newline at end of file + ) Index: lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt +++ lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt @@ -1,8 +1,8 @@ -add_subdirectory(None) +add_lldb_plugin_subdirectory(None) if (LLDB_ENABLE_PYTHON) - add_subdirectory(Python) + add_lldb_plugin_subdirectory(Python) endif() if (LLDB_ENABLE_LUA) - add_subdirectory(Lua) + add_lldb_plugin_subdirectory(Lua) endif() Index: lldb/source/Plugins/Process/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Process/CMakeLists.txt +++ lldb/source/Plugins/Process/CMakeLists.txt @@ -1,19 +1,19 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") - add_subdirectory(Linux) - add_subdirectory(POSIX) + add_lldb_plugin_subdirectory(Linux) + add_lldb_plugin_subdirectory(POSIX) elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - add_subdirectory(FreeBSD) - add_subdirectory(POSIX) + add_lldb_plugin_subdirectory(FreeBSD) + add_lldb_plugin_subdirectory(POSIX) elseif (CMAKE_SYSTEM_NAME MATCHES "NetBSD") - add_subdirectory(NetBSD) - add_subdirectory(POSIX) + add_lldb_plugin_subdirectory(NetBSD) + add_lldb_plugin_subdirectory(POSIX) elseif (CMAKE_SYSTEM_NAME MATCHES "Windows") - add_subdirectory(Windows/Common) + add_lldb_plugin_subdirectory(Windows/Common) elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_subdirectory(MacOSX-Kernel) + add_lldb_plugin_subdirectory(MacOSX-Kernel) endif() -add_subdirectory(gdb-remote) -add_subdirectory(Utility) -add_subdirectory(elf-core) -add_subdirectory(mach-core) -add_subdirectory(minidump) +add_lldb_plugin_subdirectory(gdb-remote) +add_lldb_plugin_subdirectory(Utility) +add_lldb_plugin_subdirectory(elf-core) +add_lldb_plugin_subdirectory(mach-core) +add_lldb_plugin_subdirectory(minidump) Index: lldb/source/Plugins/Platform/MacOSX/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/MacOSX/CMakeLists.txt +++ lldb/source/Plugins/Platform/MacOSX/CMakeLists.txt @@ -26,7 +26,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") include_directories(${LIBXML2_INCLUDE_DIR}) - add_subdirectory(objcxx) + add_lldb_plugin_subdirectory(objcxx) set(OBJC_LIBS "lldbPluginPlatformMacOSXObjCXX") list(APPEND PLUGIN_PLATFORM_MACOSX_SOURCES ${PLUGIN_PLATFORM_MACOSX_DARWIN_ONLY_SOURCES}) Index: lldb/source/Plugins/Platform/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/CMakeLists.txt +++ lldb/source/Plugins/Platform/CMakeLists.txt @@ -1,17 +1,17 @@ #if (CMAKE_SYSTEM_NAME MATCHES "Linux") - add_subdirectory(Linux) + add_lldb_plugin_subdirectory(Linux) #elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - add_subdirectory(FreeBSD) + add_lldb_plugin_subdirectory(FreeBSD) #elseif (CMAKE_SYSTEM_NAME MATCHES "NetBSD") - add_subdirectory(NetBSD) + add_lldb_plugin_subdirectory(NetBSD) #elseif (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") - add_subdirectory(OpenBSD) + add_lldb_plugin_subdirectory(OpenBSD) #elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_subdirectory(MacOSX) + add_lldb_plugin_subdirectory(MacOSX) #elseif (CMAKE_SYSTEM_NAME MATCHES "Windows") - add_subdirectory(Windows) + add_lldb_plugin_subdirectory(Windows) #endif() -add_subdirectory(POSIX) -add_subdirectory(gdb-server) -add_subdirectory(Android) +add_lldb_plugin_subdirectory(POSIX) +add_lldb_plugin_subdirectory(gdb-server) +add_lldb_plugin_subdirectory(Android) Index: lldb/source/Plugins/OperatingSystem/CMakeLists.txt =================================================================== --- lldb/source/Plugins/OperatingSystem/CMakeLists.txt +++ lldb/source/Plugins/OperatingSystem/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(Python) +add_lldb_plugin_subdirectory(Python) Index: lldb/source/Plugins/ObjectFile/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ObjectFile/CMakeLists.txt +++ lldb/source/Plugins/ObjectFile/CMakeLists.txt @@ -1,6 +1,6 @@ -add_subdirectory(Breakpad) -add_subdirectory(ELF) -add_subdirectory(Mach-O) -add_subdirectory(PECOFF) -add_subdirectory(JIT) -add_subdirectory(wasm) \ No newline at end of file +add_lldb_plugin_subdirectory(Breakpad) +add_lldb_plugin_subdirectory(ELF) +add_lldb_plugin_subdirectory(Mach-O) +add_lldb_plugin_subdirectory(PECOFF) +add_lldb_plugin_subdirectory(JIT) +add_lldb_plugin_subdirectory(wasm) Index: lldb/source/Plugins/ObjectContainer/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ObjectContainer/CMakeLists.txt +++ lldb/source/Plugins/ObjectContainer/CMakeLists.txt @@ -1,2 +1,2 @@ -add_subdirectory(BSD-Archive) -add_subdirectory(Universal-Mach-O) +add_lldb_plugin_subdirectory(BSD-Archive) +add_lldb_plugin_subdirectory(Universal-Mach-O) Index: lldb/source/Plugins/MemoryHistory/CMakeLists.txt =================================================================== --- lldb/source/Plugins/MemoryHistory/CMakeLists.txt +++ lldb/source/Plugins/MemoryHistory/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(asan) +add_lldb_plugin_subdirectory(asan) Index: lldb/source/Plugins/LanguageRuntime/RenderScript/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/RenderScript/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/RenderScript/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(RenderScriptRuntime) +add_lldb_plugin_subdirectory(RenderScriptRuntime) Index: lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt @@ -7,4 +7,4 @@ lldbTarget lldbUtility ) -add_subdirectory(AppleObjCRuntime) +add_lldb_plugin_subdirectory(AppleObjCRuntime) Index: lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt @@ -7,5 +7,5 @@ lldbTarget ) -add_subdirectory(ItaniumABI) -#add_subdirectory(MicrosoftABI) +add_lldb_plugin_subdirectory(ItaniumABI) +#add_lldb_plugin_subdirectory(MicrosoftABI) Index: lldb/source/Plugins/LanguageRuntime/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/CMakeLists.txt @@ -1,3 +1,3 @@ -add_subdirectory(CPlusPlus) -add_subdirectory(ObjC) -add_subdirectory(RenderScript) +add_lldb_plugin_subdirectory(CPlusPlus) +add_lldb_plugin_subdirectory(ObjC) +add_lldb_plugin_subdirectory(RenderScript) Index: lldb/source/Plugins/Language/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Language/CMakeLists.txt +++ lldb/source/Plugins/Language/CMakeLists.txt @@ -1,4 +1,4 @@ -add_subdirectory(ClangCommon) -add_subdirectory(CPlusPlus) -add_subdirectory(ObjC) -add_subdirectory(ObjCPlusPlus) +add_lldb_plugin_subdirectory(ClangCommon) +add_lldb_plugin_subdirectory(CPlusPlus) +add_lldb_plugin_subdirectory(ObjC) +add_lldb_plugin_subdirectory(ObjCPlusPlus) Index: lldb/source/Plugins/JITLoader/CMakeLists.txt =================================================================== --- lldb/source/Plugins/JITLoader/CMakeLists.txt +++ lldb/source/Plugins/JITLoader/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(GDB) +add_lldb_plugin_subdirectory(GDB) Index: lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt =================================================================== --- lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt +++ lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt @@ -1,4 +1,4 @@ -add_subdirectory(ASan) -add_subdirectory(MainThreadChecker) -add_subdirectory(TSan) -add_subdirectory(UBSan) +add_lldb_plugin_subdirectory(ASan) +add_lldb_plugin_subdirectory(MainThreadChecker) +add_lldb_plugin_subdirectory(TSan) +add_lldb_plugin_subdirectory(UBSan) Index: lldb/source/Plugins/Instruction/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Instruction/CMakeLists.txt +++ lldb/source/Plugins/Instruction/CMakeLists.txt @@ -1,5 +1,5 @@ -add_subdirectory(ARM) -add_subdirectory(ARM64) -add_subdirectory(MIPS) -add_subdirectory(MIPS64) -add_subdirectory(PPC64) +add_lldb_plugin_subdirectory(ARM) +add_lldb_plugin_subdirectory(ARM64) +add_lldb_plugin_subdirectory(MIPS) +add_lldb_plugin_subdirectory(MIPS64) +add_lldb_plugin_subdirectory(PPC64) Index: lldb/source/Plugins/ExpressionParser/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ExpressionParser/CMakeLists.txt +++ lldb/source/Plugins/ExpressionParser/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(Clang) +add_lldb_plugin_subdirectory(Clang) Index: lldb/source/Plugins/DynamicLoader/CMakeLists.txt =================================================================== --- lldb/source/Plugins/DynamicLoader/CMakeLists.txt +++ lldb/source/Plugins/DynamicLoader/CMakeLists.txt @@ -1,6 +1,6 @@ -add_subdirectory(Darwin-Kernel) -add_subdirectory(MacOSX-DYLD) -add_subdirectory(POSIX-DYLD) -add_subdirectory(Static) -add_subdirectory(Hexagon-DYLD) -add_subdirectory(Windows-DYLD) +add_lldb_plugin_subdirectory(Darwin-Kernel) +add_lldb_plugin_subdirectory(MacOSX-DYLD) +add_lldb_plugin_subdirectory(POSIX-DYLD) +add_lldb_plugin_subdirectory(Static) +add_lldb_plugin_subdirectory(Hexagon-DYLD) +add_lldb_plugin_subdirectory(Windows-DYLD) Index: lldb/source/Plugins/Disassembler/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Disassembler/CMakeLists.txt +++ lldb/source/Plugins/Disassembler/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(llvm) +add_lldb_plugin_subdirectory(llvm) Index: lldb/source/Plugins/Architecture/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Architecture/CMakeLists.txt +++ lldb/source/Plugins/Architecture/CMakeLists.txt @@ -1,3 +1,3 @@ -add_subdirectory(Arm) -add_subdirectory(Mips) -add_subdirectory(PPC64) +add_lldb_plugin_subdirectory(Arm) +add_lldb_plugin_subdirectory(Mips) +add_lldb_plugin_subdirectory(PPC64) Index: lldb/source/Plugins/ABI/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ABI/CMakeLists.txt +++ lldb/source/Plugins/ABI/CMakeLists.txt @@ -1,31 +1,31 @@ if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(MacOSX-arm64) - add_subdirectory(SysV-arm64) + add_lldb_plugin_subdirectory(MacOSX-arm64) + add_lldb_plugin_subdirectory(SysV-arm64) endif() if ("ARM" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(MacOSX-arm) - add_subdirectory(SysV-arm) + add_lldb_plugin_subdirectory(MacOSX-arm) + add_lldb_plugin_subdirectory(SysV-arm) endif() if ("ARC" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(SysV-arc) + add_lldb_plugin_subdirectory(SysV-arc) endif() if ("Hexagon" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(SysV-hexagon) + add_lldb_plugin_subdirectory(SysV-hexagon) endif() if ("Mips" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(SysV-mips) - add_subdirectory(SysV-mips64) + add_lldb_plugin_subdirectory(SysV-mips) + add_lldb_plugin_subdirectory(SysV-mips64) endif() if ("PowerPC" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(SysV-ppc) - add_subdirectory(SysV-ppc64) + add_lldb_plugin_subdirectory(SysV-ppc) + add_lldb_plugin_subdirectory(SysV-ppc64) endif() if ("SystemZ" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(SysV-s390x) + add_lldb_plugin_subdirectory(SysV-s390x) endif() if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(SysV-i386) - add_subdirectory(SysV-x86_64) - add_subdirectory(MacOSX-i386) - add_subdirectory(Windows-x86_64) + add_lldb_plugin_subdirectory(SysV-i386) + add_lldb_plugin_subdirectory(SysV-x86_64) + add_lldb_plugin_subdirectory(MacOSX-i386) + add_lldb_plugin_subdirectory(Windows-x86_64) endif() Index: lldb/cmake/modules/AddLLDB.cmake =================================================================== --- lldb/cmake/modules/AddLLDB.cmake +++ lldb/cmake/modules/AddLLDB.cmake @@ -212,6 +212,12 @@ add_llvm_subdirectory(LLDB TOOL ${name}) endmacro() +macro(add_lldb_plugin_subdirectory name) + get_filename_component(plugin ${CMAKE_CURRENT_SOURCE_DIR} NAME) + string(TOUPPER ${plugin} pluginUPPER) + add_llvm_subdirectory(LLDB "PLUGIN_${pluginUPPER}" ${name}) +endmacro() + function(add_lldb_tool name) cmake_parse_arguments(ARG "ADD_TO_FRAMEWORK" "" "" ${ARGN}) if(LLDB_BUILD_FRAMEWORK AND ARG_ADD_TO_FRAMEWORK) Index: lldb/cmake/caches/Apple-lldb-macOS.cmake =================================================================== --- lldb/cmake/caches/Apple-lldb-macOS.cmake +++ lldb/cmake/caches/Apple-lldb-macOS.cmake @@ -17,6 +17,19 @@ # DESTDIR will be an extra prefix. set(LLDB_DEBUGINFO_INSTALL_PREFIX /debuginfo CACHE STRING "") +# Disable platform plugins. +set(LDB_PLUGIN_PLATFORM_ANDROID_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_PLATFORM_FREEBSD_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_PLATFORM_LINUX_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_PLATFORM_NETBSD_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_PLATFORM_OPENBSD_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_PLATFORM_WINDOWS_BUILD OFF CACHE BOOL "") + +# Disable symbol file formats. +set(LDB_PLUGIN_SYMBOLFILE_BREAKPAD_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_SYMBOLFILE_NATIVEPDB_BUILD OFF CACHE BOOL "") +set(LDB_PLUGIN_SYMBOLFILE_PDB_BUILD OFF CACHE BOOL "") + set(LLVM_DISTRIBUTION_COMPONENTS lldb liblldb
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits