[Lldb-commits] [lldb] [lldb/cmake][WIP] Plugin layering enforcement mechanism (PR #144543)

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Jun 17 07:58:06 PDT 2025


https://github.com/labath created https://github.com/llvm/llvm-project/pull/144543

None

>From 5ee87120100c146c2696e7869ebe424828df517b Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Tue, 17 Jun 2025 16:54:53 +0200
Subject: [PATCH] [lldb/cmake][WIP] Plugin layering enforcement mechanism

---
 lldb/CMakeLists.txt                           |  3 +
 lldb/cmake/modules/LLDBLayeringCheck.cmake    | 66 +++++++++++++++++++
 lldb/source/Plugins/ABI/CMakeLists.txt        |  5 ++
 .../Plugins/Architecture/CMakeLists.txt       |  2 +
 .../Plugins/Disassembler/CMakeLists.txt       |  2 +
 .../Plugins/DynamicLoader/CMakeLists.txt      |  3 +
 .../Plugins/ExpressionParser/CMakeLists.txt   |  2 +
 .../source/Plugins/Instruction/CMakeLists.txt |  2 +
 .../InstrumentationRuntime/CMakeLists.txt     |  2 +
 lldb/source/Plugins/JITLoader/CMakeLists.txt  |  2 +
 lldb/source/Plugins/Language/CMakeLists.txt   |  2 +
 .../Plugins/LanguageRuntime/CMakeLists.txt    |  2 +
 .../Plugins/MemoryHistory/CMakeLists.txt      |  2 +
 .../Plugins/ObjectContainer/CMakeLists.txt    |  2 +
 lldb/source/Plugins/ObjectFile/CMakeLists.txt |  2 +
 .../Plugins/OperatingSystem/CMakeLists.txt    |  2 +
 lldb/source/Plugins/Platform/CMakeLists.txt   |  2 +
 lldb/source/Plugins/Process/CMakeLists.txt    |  3 +
 .../Plugins/Process/Utility/CMakeLists.txt    |  3 +
 lldb/source/Plugins/REPL/CMakeLists.txt       |  2 +
 .../RegisterTypeBuilder/CMakeLists.txt        |  2 +
 .../Plugins/ScriptInterpreter/CMakeLists.txt  |  2 +
 .../Plugins/StructuredData/CMakeLists.txt     |  2 +
 lldb/source/Plugins/SymbolFile/CMakeLists.txt |  8 +++
 .../Plugins/SymbolLocator/CMakeLists.txt      |  2 +
 .../Plugins/SymbolVendor/CMakeLists.txt       |  3 +
 .../Plugins/SystemRuntime/CMakeLists.txt      |  2 +
 lldb/source/Plugins/Trace/CMakeLists.txt      |  2 +
 .../Plugins/TraceExporter/CMakeLists.txt      |  2 +
 lldb/source/Plugins/TypeSystem/CMakeLists.txt |  5 ++
 .../Plugins/UnwindAssembly/CMakeLists.txt     |  2 +
 31 files changed, 143 insertions(+)
 create mode 100644 lldb/cmake/modules/LLDBLayeringCheck.cmake

diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt
index 2aaf75dd87bc3..e3b72e94d4beb 100644
--- a/lldb/CMakeLists.txt
+++ b/lldb/CMakeLists.txt
@@ -37,6 +37,7 @@ endif()
 
 include(LLDBConfig)
 include(AddLLDB)
+include(LLDBLayeringCheck)
 
 set(LLDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
 
@@ -127,6 +128,8 @@ add_subdirectory(source)
 add_subdirectory(tools)
 add_subdirectory(docs)
 
+check_lldb_plugin_layering()
+
 if (LLDB_ENABLE_PYTHON)
   if(LLDB_BUILD_FRAMEWORK)
     set(lldb_python_target_dir "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Resources/Python/lldb")
diff --git a/lldb/cmake/modules/LLDBLayeringCheck.cmake b/lldb/cmake/modules/LLDBLayeringCheck.cmake
new file mode 100644
index 0000000000000..2d7cb323ee9d4
--- /dev/null
+++ b/lldb/cmake/modules/LLDBLayeringCheck.cmake
@@ -0,0 +1,66 @@
+define_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND)
+define_property(TARGET PROPERTY LLDB_PLUGIN_KIND INHERITED)
+define_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES)
+define_property(TARGET PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES INHERITED)
+
+option(LLDB_GENERATE_PLUGIN_DEP_GRAPH OFF)
+
+function(check_lldb_plugin_layering)
+  get_property(plugins GLOBAL PROPERTY LLDB_PLUGINS)
+  foreach(plugin ${plugins})
+    get_property(plugin_kind TARGET ${plugin} PROPERTY LLDB_PLUGIN_KIND)
+    get_property(permitted_deps TARGET ${plugin}
+      PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES)
+
+    # A plugin is always permitted to depend on its own kind for the purposes
+    # subclassing. Ideally the intra-kind dependencies should not form a loop,
+    # but we're not checking that here.
+    list(APPEND permitted_deps ${plugin_kind})
+
+    list(APPEND plugin_kinds ${plugin_kind})
+
+    get_property(link_libs TARGET ${plugin} PROPERTY LINK_LIBRARIES)
+    foreach(link_lib ${link_libs})
+      if(link_lib IN_LIST plugins)
+        get_property(lib_kind TARGET ${link_lib} PROPERTY LLDB_PLUGIN_KIND)
+        if (lib_kind)
+          if (lib_kind IN_LIST permitted_deps)
+            list(APPEND dep_ok_${plugin_kind}_${lib_kind} ${plugin})
+          else()
+            list(APPEND dep_bad_${plugin_kind}_${lib_kind} ${plugin})
+            message(SEND_ERROR
+              "Plugin ${plugin} cannot depend on ${lib_kind} plugin ${link_lib}
+              (permitted deps are ${permitted_deps}")
+          endif()
+        endif()
+      endif()
+    endforeach()
+  endforeach()
+
+  if (LLDB_GENERATE_PLUGIN_DEP_GRAPH)
+    set(dep_graph "digraph Plugins {\n")
+    list(REMOVE_DUPLICATES plugin_kinds)
+    foreach(from ${plugin_kinds})
+      foreach(to ${plugin_kinds})
+        if (dep_ok_${from}_${to})
+          list(REMOVE_DUPLICATES dep_ok_${from}_${to})
+          string(REGEX REPLACE "lldbPlugin|${from}" "" short_deps
+            "${dep_ok_${from}_${to}}")
+          string(JOIN "\n" plugins ${short_deps})
+          string(APPEND dep_graph
+            "  ${from}->${to}[color=\"green\" label=\"${plugins}\"];\n")
+        endif()
+        if (dep_bad_${from}_${to})
+          list(REMOVE_DUPLICATES dep_bad_${from}_${to})
+          string(REGEX REPLACE "lldbPlugin|${from}" "" short_deps
+            "${dep_bad_${from}_${to}}")
+          string(JOIN "\n" plugins ${short_deps})
+          string(APPEND dep_graph
+            "  ${from}->${to}[color=\"red\" label=\"${plugins}\"];\n")
+        endif()
+      endforeach()
+    endforeach()
+    string(APPEND dep_graph "}\n")
+    file(WRITE "${CMAKE_BINARY_DIR}/lldb-plugin-deps.dot" "${dep_graph}")
+  endif()
+endfunction()
diff --git a/lldb/source/Plugins/ABI/CMakeLists.txt b/lldb/source/Plugins/ABI/CMakeLists.txt
index e33ac87354860..0ce510614b1a0 100644
--- a/lldb/source/Plugins/ABI/CMakeLists.txt
+++ b/lldb/source/Plugins/ABI/CMakeLists.txt
@@ -1,3 +1,8 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ABI)
+set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES
+  ProcessUtility
+)
+
 foreach(target AArch64 ARM ARC Hexagon LoongArch Mips MSP430 PowerPC RISCV SystemZ X86)
   if (${target} IN_LIST LLVM_TARGETS_TO_BUILD)
     add_subdirectory(${target})
diff --git a/lldb/source/Plugins/Architecture/CMakeLists.txt b/lldb/source/Plugins/Architecture/CMakeLists.txt
index 9ed8edf70af3f..0f898ef5116e9 100644
--- a/lldb/source/Plugins/Architecture/CMakeLists.txt
+++ b/lldb/source/Plugins/Architecture/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Architecture)
+
 add_subdirectory(Arm)
 add_subdirectory(Mips)
 add_subdirectory(PPC64)
diff --git a/lldb/source/Plugins/Disassembler/CMakeLists.txt b/lldb/source/Plugins/Disassembler/CMakeLists.txt
index bec56765b60fd..1d1ea206e2774 100644
--- a/lldb/source/Plugins/Disassembler/CMakeLists.txt
+++ b/lldb/source/Plugins/Disassembler/CMakeLists.txt
@@ -1 +1,3 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Disassembler)
+
 add_subdirectory(LLVMC)
diff --git a/lldb/source/Plugins/DynamicLoader/CMakeLists.txt b/lldb/source/Plugins/DynamicLoader/CMakeLists.txt
index 30607159acdc0..8eb35cf4237c8 100644
--- a/lldb/source/Plugins/DynamicLoader/CMakeLists.txt
+++ b/lldb/source/Plugins/DynamicLoader/CMakeLists.txt
@@ -1,3 +1,6 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND DynamicLoader)
+set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES ObjectFile)
+
 add_subdirectory(Darwin-Kernel)
 add_subdirectory(FreeBSD-Kernel)
 add_subdirectory(MacOSX-DYLD)
diff --git a/lldb/source/Plugins/ExpressionParser/CMakeLists.txt b/lldb/source/Plugins/ExpressionParser/CMakeLists.txt
index 17c40aee44cc2..8a8089879bd9f 100644
--- a/lldb/source/Plugins/ExpressionParser/CMakeLists.txt
+++ b/lldb/source/Plugins/ExpressionParser/CMakeLists.txt
@@ -1 +1,3 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ExpressionParser)
+
 add_subdirectory(Clang)
diff --git a/lldb/source/Plugins/Instruction/CMakeLists.txt b/lldb/source/Plugins/Instruction/CMakeLists.txt
index 46d610f261e0d..bf48a1c1cc11e 100644
--- a/lldb/source/Plugins/Instruction/CMakeLists.txt
+++ b/lldb/source/Plugins/Instruction/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Instruction)
+
 add_subdirectory(ARM)
 add_subdirectory(ARM64)
 add_subdirectory(LoongArch)
diff --git a/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt b/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt
index 7f301bca14a83..2a6cf930945d1 100644
--- a/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt
+++ b/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND InstrumentationRuntime)
+
 add_subdirectory(ASan)
 add_subdirectory(ASanLibsanitizers)
 add_subdirectory(MainThreadChecker)
diff --git a/lldb/source/Plugins/JITLoader/CMakeLists.txt b/lldb/source/Plugins/JITLoader/CMakeLists.txt
index e52230199109f..71b85638b820f 100644
--- a/lldb/source/Plugins/JITLoader/CMakeLists.txt
+++ b/lldb/source/Plugins/JITLoader/CMakeLists.txt
@@ -1 +1,3 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND JITLoader)
+
 add_subdirectory(GDB)
diff --git a/lldb/source/Plugins/Language/CMakeLists.txt b/lldb/source/Plugins/Language/CMakeLists.txt
index 7869074566d1e..f2b4e84b55ebf 100644
--- a/lldb/source/Plugins/Language/CMakeLists.txt
+++ b/lldb/source/Plugins/Language/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Language)
+
 add_subdirectory(ClangCommon)
 add_subdirectory(CPlusPlus)
 add_subdirectory(ObjC)
diff --git a/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt b/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt
index 034ae1545ae88..7dcc426702f96 100644
--- a/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt
+++ b/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt
@@ -1,2 +1,4 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND LanguageRuntime)
+
 add_subdirectory(CPlusPlus)
 add_subdirectory(ObjC)
diff --git a/lldb/source/Plugins/MemoryHistory/CMakeLists.txt b/lldb/source/Plugins/MemoryHistory/CMakeLists.txt
index 113f063625789..50838bb8a0770 100644
--- a/lldb/source/Plugins/MemoryHistory/CMakeLists.txt
+++ b/lldb/source/Plugins/MemoryHistory/CMakeLists.txt
@@ -1 +1,3 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND MemoryHistory)
+
 add_subdirectory(asan)
diff --git a/lldb/source/Plugins/ObjectContainer/CMakeLists.txt b/lldb/source/Plugins/ObjectContainer/CMakeLists.txt
index cda0c8151dd8a..4ae1bb138a9a4 100644
--- a/lldb/source/Plugins/ObjectContainer/CMakeLists.txt
+++ b/lldb/source/Plugins/ObjectContainer/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ObjectContainer)
+
 add_subdirectory(BSD-Archive)
 add_subdirectory(Universal-Mach-O)
 add_subdirectory(Mach-O-Fileset)
diff --git a/lldb/source/Plugins/ObjectFile/CMakeLists.txt b/lldb/source/Plugins/ObjectFile/CMakeLists.txt
index 7abd0c96f4fd7..6004b1f414d43 100644
--- a/lldb/source/Plugins/ObjectFile/CMakeLists.txt
+++ b/lldb/source/Plugins/ObjectFile/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ObjectFile)
+
 add_subdirectory(Breakpad)
 add_subdirectory(COFF)
 add_subdirectory(ELF)
diff --git a/lldb/source/Plugins/OperatingSystem/CMakeLists.txt b/lldb/source/Plugins/OperatingSystem/CMakeLists.txt
index 06d909b862a04..1a29f9ad3af4c 100644
--- a/lldb/source/Plugins/OperatingSystem/CMakeLists.txt
+++ b/lldb/source/Plugins/OperatingSystem/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND OperatingSystem)
+
 if (LLDB_ENABLE_PYTHON)
   add_subdirectory(Python)
 endif()
diff --git a/lldb/source/Plugins/Platform/CMakeLists.txt b/lldb/source/Plugins/Platform/CMakeLists.txt
index 0220e734b36d1..530243bb44345 100644
--- a/lldb/source/Plugins/Platform/CMakeLists.txt
+++ b/lldb/source/Plugins/Platform/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Platform)
+
 add_subdirectory(AIX)
 add_subdirectory(Android)
 add_subdirectory(FreeBSD)
diff --git a/lldb/source/Plugins/Process/CMakeLists.txt b/lldb/source/Plugins/Process/CMakeLists.txt
index 058b4b9ad2157..fb3d3a1a1beca 100644
--- a/lldb/source/Plugins/Process/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/CMakeLists.txt
@@ -1,3 +1,6 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Process)
+set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES ObjectFile)
+
 if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android")
   add_subdirectory(Linux)
   add_subdirectory(POSIX)
diff --git a/lldb/source/Plugins/Process/Utility/CMakeLists.txt b/lldb/source/Plugins/Process/Utility/CMakeLists.txt
index fd3019613892a..48646b784f931 100644
--- a/lldb/source/Plugins/Process/Utility/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/Utility/CMakeLists.txt
@@ -1,3 +1,6 @@
+# TODO: Clean up this directory and its dependencies
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ProcessUtility)
+
 add_lldb_library(lldbPluginProcessUtility
   AuxVector.cpp
   FreeBSDSignals.cpp
diff --git a/lldb/source/Plugins/REPL/CMakeLists.txt b/lldb/source/Plugins/REPL/CMakeLists.txt
index 17c40aee44cc2..c0532ef0bb95f 100644
--- a/lldb/source/Plugins/REPL/CMakeLists.txt
+++ b/lldb/source/Plugins/REPL/CMakeLists.txt
@@ -1 +1,3 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND REPL)
+
 add_subdirectory(Clang)
diff --git a/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt b/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt
index 336ae91058021..7411b24c86cbd 100644
--- a/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt
+++ b/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND RegisterTypeBuilder)
+
 add_lldb_library(lldbPluginRegisterTypeBuilderClang PLUGIN
   RegisterTypeBuilderClang.cpp
 
diff --git a/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt b/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt
index fa1c72a32fe13..4429b006173a7 100644
--- a/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt
+++ b/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ScriptInterpreter)
+
 add_subdirectory(None)
 if (LLDB_ENABLE_PYTHON)
   add_subdirectory(Python)
diff --git a/lldb/source/Plugins/StructuredData/CMakeLists.txt b/lldb/source/Plugins/StructuredData/CMakeLists.txt
index 40d64558482db..a6caa233f2220 100644
--- a/lldb/source/Plugins/StructuredData/CMakeLists.txt
+++ b/lldb/source/Plugins/StructuredData/CMakeLists.txt
@@ -1,2 +1,4 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND StructuredData)
+
 add_subdirectory(DarwinLog)
 
diff --git a/lldb/source/Plugins/SymbolFile/CMakeLists.txt b/lldb/source/Plugins/SymbolFile/CMakeLists.txt
index 106387b45ec1a..a146966479d23 100644
--- a/lldb/source/Plugins/SymbolFile/CMakeLists.txt
+++ b/lldb/source/Plugins/SymbolFile/CMakeLists.txt
@@ -1,3 +1,11 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SymbolFile)
+set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES
+  ObjectFile
+  # TODO: This dependency is part of a loop (TypeSystem<->SymbolFile). We should
+  # find a way to remove it.
+  TypeSystem
+)
+
 add_subdirectory(Breakpad)
 add_subdirectory(CTF)
 add_subdirectory(DWARF)
diff --git a/lldb/source/Plugins/SymbolLocator/CMakeLists.txt b/lldb/source/Plugins/SymbolLocator/CMakeLists.txt
index 3367022639ab8..3b466f71dca58 100644
--- a/lldb/source/Plugins/SymbolLocator/CMakeLists.txt
+++ b/lldb/source/Plugins/SymbolLocator/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SymbolLocator)
+
 # Order matters here: the first symbol locator prevents further searching.
 # For DWARF binaries that are both stripped and split, the Default plugin
 # will return the stripped binary when asked for the ObjectFile, which then
diff --git a/lldb/source/Plugins/SymbolVendor/CMakeLists.txt b/lldb/source/Plugins/SymbolVendor/CMakeLists.txt
index 1981706e06f4a..8b57313e10ea7 100644
--- a/lldb/source/Plugins/SymbolVendor/CMakeLists.txt
+++ b/lldb/source/Plugins/SymbolVendor/CMakeLists.txt
@@ -1,3 +1,6 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SymbolVendor)
+set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES ObjectFile)
+
 add_subdirectory(ELF)
 
 if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
diff --git a/lldb/source/Plugins/SystemRuntime/CMakeLists.txt b/lldb/source/Plugins/SystemRuntime/CMakeLists.txt
index 0955a9eb74c2d..3d36b7eae839f 100644
--- a/lldb/source/Plugins/SystemRuntime/CMakeLists.txt
+++ b/lldb/source/Plugins/SystemRuntime/CMakeLists.txt
@@ -1 +1,3 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SystemRuntime)
+
 add_subdirectory(MacOSX)
diff --git a/lldb/source/Plugins/Trace/CMakeLists.txt b/lldb/source/Plugins/Trace/CMakeLists.txt
index 955f88cec3404..331b48f95f1a4 100644
--- a/lldb/source/Plugins/Trace/CMakeLists.txt
+++ b/lldb/source/Plugins/Trace/CMakeLists.txt
@@ -1,3 +1,5 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Trace)
+
 option(LLDB_BUILD_INTEL_PT "Enable Building of Intel(R) Processor Trace Tool" OFF)
 
 add_subdirectory(common)
diff --git a/lldb/source/Plugins/TraceExporter/CMakeLists.txt b/lldb/source/Plugins/TraceExporter/CMakeLists.txt
index e0252ee36720c..7130548d7a9f8 100644
--- a/lldb/source/Plugins/TraceExporter/CMakeLists.txt
+++ b/lldb/source/Plugins/TraceExporter/CMakeLists.txt
@@ -1,2 +1,4 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND TraceExporter)
+
 add_subdirectory(common)
 add_subdirectory(ctf)
diff --git a/lldb/source/Plugins/TypeSystem/CMakeLists.txt b/lldb/source/Plugins/TypeSystem/CMakeLists.txt
index 17c40aee44cc2..52976fa4e9569 100644
--- a/lldb/source/Plugins/TypeSystem/CMakeLists.txt
+++ b/lldb/source/Plugins/TypeSystem/CMakeLists.txt
@@ -1 +1,6 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND TypeSystem)
+# TODO: This dependency is part of a loop (TypeSystem<->SymbolFile). We should
+# find a way to remove it.
+set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES SymbolFile)
+
 add_subdirectory(Clang)
diff --git a/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt b/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt
index 1723a06045804..1f505599c3fff 100644
--- a/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt
+++ b/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt
@@ -1,2 +1,4 @@
+set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND UnwindAssembly)
+
 add_subdirectory(InstEmulation)
 add_subdirectory(x86)



More information about the lldb-commits mailing list