[Lldb-commits] [lldb] [lldb] Add terminfo dependency for ncurses support (PR #126810)

Jordan R AW via lldb-commits lldb-commits at lists.llvm.org
Fri Feb 14 19:58:55 PST 2025


================
@@ -2,23 +2,54 @@
 # FindCursesAndPanel
 # -----------
 #
-# Find the curses and panel library as a whole.
+# Find the curses, terminfo, and panel library as a whole.
 
-if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND PANEL_LIBRARIES)
+include(CMakePushCheckState)
+
+function(lldb_check_curses_tinfo CURSES_LIBRARIES CURSES_HAS_TINFO)
+  cmake_reset_check_state()
+  set(CMAKE_REQUIRED_LIBRARIES "${CURSES_LIBRARIES}")
+  # acs_map is one of many symbols that are part of tinfo but could
+  # be bundled in curses.
+  check_symbol_exists(acs_map "curses.h" CURSES_HAS_TINFO)
+endfunction()
+
+if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND TINFO_LIBRARIES AND PANEL_LIBRARIES)
   set(CURSESANDPANEL_FOUND TRUE)
 else()
   find_package(Curses QUIET)
   find_library(PANEL_LIBRARIES NAMES panel DOC "The curses panel library" QUIET)
   include(FindPackageHandleStandardArgs)
+  
+  # Sometimes the curses libraries define their own terminfo symbols,
+  # other times they're extern and are defined by a separate terminfo library.
+  # Auto-detect which.
+  lldb_check_curses_tinfo("${CURSES_LIBRARIES}" CURSES_HAS_TINFO)
+  if(CURSES_FOUND AND PANEL_LIBRARIES)
+    if (NOT CURSES_HAS_TINFO)
----------------
ajordanr-google wrote:

As above, I'm going to keep `lldb_check_curses_tinfo()`, but I should indeed move this into the `if`. Thanks!

https://github.com/llvm/llvm-project/pull/126810


More information about the lldb-commits mailing list