[Lldb-commits] [lldb] [lldb][cmake] Accept config-mode packages in add_optional_dependency (PR #222976)
Charles Zablit via lldb-commits
lldb-commits at lists.llvm.org
Mon Sep 14 06:50:21 PDT 2026
https://github.com/charles-zablit updated https://github.com/llvm/llvm-project/pull/222976
>From 3809b6c89db841d330328cddfdd8a759e6eb4675 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Fri, 11 Sep 2026 15:43:27 +0100
Subject: [PATCH 1/2] [lldb][cmake] Accept config-mode packages in
add_optional_dependency
---
lldb/cmake/modules/LLDBConfig.cmake | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
index 1cb20f5234bed..99231bc6d783c 100644
--- a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -45,7 +45,15 @@ macro(add_optional_dependency variable description package found)
set(maybe_quiet QUIET)
endif()
find_package(${package} ${ARG_VERSION} ${maybe_required} ${maybe_quiet})
- set(${variable} "${${found}}")
+ # Callers name the result variable of the Find module, which is often
+ # all-caps. A package found in config mode instead only sets
+ # <PackageName>_FOUND, so accept either name: otherwise a dependency that
+ # ships a CMake config package looks missing and gets silently disabled.
+ if("${${found}}" OR "${${package}_FOUND}")
+ set(${variable} TRUE)
+ else()
+ set(${variable} FALSE)
+ endif()
endif()
message(STATUS "${description}: ${${variable}}")
>From 88bbbe89b5e1bb73b40644af0a27734abcfa8273 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Mon, 14 Sep 2026 12:51:56 +0100
Subject: [PATCH 2/2] Simplify add_optional_dependency to rely on
<PackageName>_FOUND
---
lldb/cmake/modules/FindCursesAndPanel.cmake | 1 +
lldb/cmake/modules/FindLuaAndSwig.cmake | 1 +
lldb/cmake/modules/FindPythonAndSwig.cmake | 1 +
lldb/cmake/modules/LLDBConfig.cmake | 28 ++++++++-------------
4 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/lldb/cmake/modules/FindCursesAndPanel.cmake b/lldb/cmake/modules/FindCursesAndPanel.cmake
index 5e13a1b79ecf9..f6f0ad25d59c8 100644
--- a/lldb/cmake/modules/FindCursesAndPanel.cmake
+++ b/lldb/cmake/modules/FindCursesAndPanel.cmake
@@ -26,6 +26,7 @@ if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND PANEL_LIBRARIES)
mark_as_advanced(CURSES_HAS_TINFO)
endif()
set(CURSESANDPANEL_FOUND TRUE)
+ set(CursesAndPanel_FOUND TRUE)
else()
find_package(Curses QUIET)
find_library(PANEL_LIBRARIES NAMES panel DOC "The curses panel library" QUIET)
diff --git a/lldb/cmake/modules/FindLuaAndSwig.cmake b/lldb/cmake/modules/FindLuaAndSwig.cmake
index c5df29e8d0a92..e2a1a5d153e29 100644
--- a/lldb/cmake/modules/FindLuaAndSwig.cmake
+++ b/lldb/cmake/modules/FindLuaAndSwig.cmake
@@ -6,6 +6,7 @@
if(LUA_LIBRARIES AND LUA_INCLUDE_DIR AND LLDB_ENABLE_SWIG)
set(LUAANDSWIG_FOUND TRUE)
+ set(LuaAndSwig_FOUND TRUE)
else()
if (LLDB_ENABLE_SWIG)
find_package(Lua 5.3)
diff --git a/lldb/cmake/modules/FindPythonAndSwig.cmake b/lldb/cmake/modules/FindPythonAndSwig.cmake
index ce6d684787ffd..4f21beeffec4b 100644
--- a/lldb/cmake/modules/FindPythonAndSwig.cmake
+++ b/lldb/cmake/modules/FindPythonAndSwig.cmake
@@ -38,6 +38,7 @@ endmacro()
if(Python3_LIBRARIES AND Python3_INCLUDE_DIRS AND Python3_EXECUTABLE AND LLDB_ENABLE_SWIG)
set(PYTHONANDSWIG_FOUND TRUE)
+ set(PythonAndSwig_FOUND TRUE)
else()
if (LLDB_ENABLE_SWIG)
FindPython3()
diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
index 99231bc6d783c..3baabc5218fc9 100644
--- a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -18,7 +18,7 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
"`CMakeFiles'. Please delete them.")
endif()
-macro(add_optional_dependency variable description package found)
+macro(add_optional_dependency variable description package)
cmake_parse_arguments(ARG
"QUIET"
"VERSION"
@@ -45,15 +45,7 @@ macro(add_optional_dependency variable description package found)
set(maybe_quiet QUIET)
endif()
find_package(${package} ${ARG_VERSION} ${maybe_required} ${maybe_quiet})
- # Callers name the result variable of the Find module, which is often
- # all-caps. A package found in config mode instead only sets
- # <PackageName>_FOUND, so accept either name: otherwise a dependency that
- # ships a CMake config package looks missing and gets silently disabled.
- if("${${found}}" OR "${${package}_FOUND}")
- set(${variable} TRUE)
- else()
- set(${variable} FALSE)
- endif()
+ set(${variable} "${${package}_FOUND}")
endif()
message(STATUS "${description}: ${${variable}}")
@@ -64,14 +56,14 @@ set(LLDB_LIBXML2_VERSION "2.8" CACHE STRING
static builds of libxml 2. Use at your own risk.")
mark_as_advanced(LLDB_LIBXML2_VERSION)
-add_optional_dependency(LLDB_ENABLE_SWIG "Enable SWIG to generate LLDB bindings" SWIG SWIG_FOUND VERSION 4)
-add_optional_dependency(LLDB_ENABLE_LIBEDIT "Enable editline support in LLDB" LibEdit LibEdit_FOUND)
-add_optional_dependency(LLDB_ENABLE_CURSES "Enable curses support in LLDB" CursesAndPanel CURSESANDPANEL_FOUND)
-add_optional_dependency(LLDB_ENABLE_LZMA "Enable LZMA compression support in LLDB" LibLZMA LIBLZMA_FOUND)
-add_optional_dependency(LLDB_ENABLE_LUA "Enable Lua scripting support in LLDB" LuaAndSwig LUAANDSWIG_FOUND)
-add_optional_dependency(LLDB_ENABLE_PYTHON "Enable Python scripting support in LLDB" PythonAndSwig PYTHONANDSWIG_FOUND)
-add_optional_dependency(LLDB_ENABLE_LIBXML2 "Enable Libxml 2 support in LLDB" LibXml2 LIBXML2_FOUND VERSION ${LLDB_LIBXML2_VERSION})
-add_optional_dependency(LLDB_ENABLE_TREESITTER "Enable Tree-sitter syntax highlighting" TreeSitter TREESITTER_FOUND)
+add_optional_dependency(LLDB_ENABLE_SWIG "Enable SWIG to generate LLDB bindings" SWIG VERSION 4)
+add_optional_dependency(LLDB_ENABLE_LIBEDIT "Enable editline support in LLDB" LibEdit)
+add_optional_dependency(LLDB_ENABLE_CURSES "Enable curses support in LLDB" CursesAndPanel)
+add_optional_dependency(LLDB_ENABLE_LZMA "Enable LZMA compression support in LLDB" LibLZMA)
+add_optional_dependency(LLDB_ENABLE_LUA "Enable Lua scripting support in LLDB" LuaAndSwig)
+add_optional_dependency(LLDB_ENABLE_PYTHON "Enable Python scripting support in LLDB" PythonAndSwig)
+add_optional_dependency(LLDB_ENABLE_LIBXML2 "Enable Libxml 2 support in LLDB" LibXml2 VERSION ${LLDB_LIBXML2_VERSION})
+add_optional_dependency(LLDB_ENABLE_TREESITTER "Enable Tree-sitter syntax highlighting" TreeSitter)
option(LLDB_USE_ENTITLEMENTS "When codesigning, use entitlements if available" ON)
option(LLDB_BUILD_FRAMEWORK "Build LLDB.framework (Darwin only)" OFF)
More information about the lldb-commits
mailing list