https://github.com/JDevlieghere created https://github.com/llvm/llvm-project/pull/196110
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. >From b73f083eeefdb1f11fd75ab7c5981b92a978c1ef Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <[email protected]> Date: Wed, 6 May 2026 09:26:56 -0700 Subject: [PATCH] [lldb] Add LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS option 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. --- lldb/cmake/modules/LLDBConfig.cmake | 7 ++++++- lldb/include/lldb/Host/Config.h.cmake | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
