[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