llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: Jonas Devlieghere (JDevlieghere)

<details>
<summary>Changes</summary>

Add a CMake option that will gate building the script interpreter plugins as 
separate shared libraries, and expose it to C++ via lldb/Host/Config.h.

The option defaults to OFF and currently has no consumers; subsequent patches 
wire up the plugin, binding, and test build to use it.

Because dynamic plugins resolve lldb_private symbols against liblldb at 
runtime, enabling this option implies LLDB_EXPORT_ALL_SYMBOLS. The default for 
LLDB_EXPORT_ALL_SYMBOLS now follows
LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS, and a FATAL_ERROR is raised if the user 
explicitly disables symbol export while requesting dynamic plugins.

Extracted from #<!-- -->189718 for easier reviewing.

---
Full diff: https://github.com/llvm/llvm-project/pull/196110.diff


2 Files Affected:

- (modified) lldb/cmake/modules/LLDBConfig.cmake (+6-1) 
- (modified) lldb/include/lldb/Host/Config.h.cmake (+2) 


``````````diff
diff --git a/lldb/cmake/modules/LLDBConfig.cmake 
b/lldb/cmake/modules/LLDBConfig.cmake
index 3f75bffab0078..cf890fa9a9c44 100644
--- a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -68,6 +68,7 @@ add_optional_dependency(LLDB_ENABLE_TREESITTER "Enable 
Tree-sitter syntax highli
 option(LLDB_USE_ENTITLEMENTS "When codesigning, use entitlements if available" 
ON)
 option(LLDB_BUILD_FRAMEWORK "Build LLDB.framework (Darwin only)" OFF)
 option(LLDB_ENABLE_PROTOCOL_SERVERS "Enable protocol servers (e.g. MCP) in 
LLDB" ON)
+option(LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS "Build the script interpreter 
plugins as shared libraries" OFF)
 option(LLDB_NO_INSTALL_DEFAULT_RPATH "Disable default RPATH settings in 
binaries" OFF)
 option(LLDB_USE_SYSTEM_DEBUGSERVER "Use the system's debugserver for testing 
(Darwin only)." OFF)
 option(LLDB_SKIP_STRIP "Whether to skip stripping of binaries when installing 
lldb." OFF)
@@ -130,9 +131,13 @@ if(APPLE AND CMAKE_GENERATOR STREQUAL Xcode)
   endif()
 endif()
 
-set(LLDB_EXPORT_ALL_SYMBOLS 0 CACHE BOOL
+set(LLDB_EXPORT_ALL_SYMBOLS ${LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS} CACHE 
BOOL
   "Causes lldb to export some private symbols when building liblldb. See 
lldb/source/API/liblldb-private.exports for the full list of symbols that get 
exported.")
 
+if (LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS AND NOT LLDB_EXPORT_ALL_SYMBOLS)
+  message(FATAL_ERROR "LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS requires 
LLDB_EXPORT_ALL_SYMBOLS")
+endif()
+
 set(LLDB_EXPORT_ALL_SYMBOLS_EXPORTS_FILE "" CACHE PATH
   "When `LLDB_EXPORT_ALL_SYMBOLS` is enabled, this specifies the exports file 
to use when building liblldb.")
 
diff --git a/lldb/include/lldb/Host/Config.h.cmake 
b/lldb/include/lldb/Host/Config.h.cmake
index 06ab9b9a7775c..ae32c001ee5dc 100644
--- a/lldb/include/lldb/Host/Config.h.cmake
+++ b/lldb/include/lldb/Host/Config.h.cmake
@@ -49,6 +49,8 @@
 
 #cmakedefine01 LLDB_EMBED_PYTHON_HOME
 
+#cmakedefine01 LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS
+
 #cmakedefine01 LLDB_ENABLE_TREESITTER
 
 #cmakedefine01 LLDB_ENABLE_MTE

``````````

</details>


https://github.com/llvm/llvm-project/pull/196110
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to