[Lldb-commits] [lldb] [lldb] Fix manual CURSES_LIBRARIES tinfo finding (PR #128245)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 21 15:00:23 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Jordan R AW (ajordanr-google)
<details>
<summary>Changes</summary>
At present, we automatically detect terminfo symbols in CURSES_LIBRARIES after it is found through `find_package`. However, by introducing a check for TINFO_LIBRARIES, we break systems which pass all of CURSES_INCLUDE_DIRS, CURSES_LIBRARIES, and PANEL_LIBRARIES individually without passing TINFO_LIBRARIES. We'd rather not expose TINFO_LIBRARIES at all.
This commit preemptively attempts to fix issues encountered on systems that manually pass CURSES_LIBRARIES which already contain the necessary terminfo symbols (e.g. 'acs_map').
Additionally, let's not make CURSES_LIBRARIES a list. That was odd to begin with.
See this breakage in Google Fuchsia:
https://issues.fuchsia.dev/397455029
References Issue #<!-- -->101368
---
Full diff: https://github.com/llvm/llvm-project/pull/128245.diff
1 Files Affected:
- (modified) lldb/cmake/modules/FindCursesAndPanel.cmake (+15-4)
``````````diff
diff --git a/lldb/cmake/modules/FindCursesAndPanel.cmake b/lldb/cmake/modules/FindCursesAndPanel.cmake
index 75ebaa35d7ea1..315810c87b67b 100644
--- a/lldb/cmake/modules/FindCursesAndPanel.cmake
+++ b/lldb/cmake/modules/FindCursesAndPanel.cmake
@@ -6,15 +6,24 @@
include(CMakePushCheckState)
-function(lldb_check_curses_tinfo CURSES_LIBRARIES CURSES_HAS_TINFO)
+function(lldb_check_curses_tinfo CURSES_HEADER 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)
+ check_symbol_exists(acs_map "${CURSES_HEADER}" CURSES_HAS_TINFO)
endfunction()
-if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND TINFO_LIBRARIES AND PANEL_LIBRARIES)
+if(CURSES_INCLUDE_DIRS AND CURSES_LIBRARIES AND PANEL_LIBRARIES)
+ if(NOT HAS_TERMINFO_SYMBOLS)
+ lldb_check_curses_tinfo("${CURSES_INCLUDE_DIRS}/curses.h"
+ "${CURSES_LIBRARIES}"
+ CURSES_HAS_TINFO)
+ if (NOT CURSES_HAS_TINFO)
+ message(WARNING "CURSES_LIBRARIES was provided manually but is missing terminfo symbols")
+ endif()
+ mark_as_advanced(CURSES_HAS_TINFO)
+ endif()
set(CURSESANDPANEL_FOUND TRUE)
else()
find_package(Curses QUIET)
@@ -25,7 +34,9 @@ else()
# 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)
+ lldb_check_curses_tinfo("${CURSES_INCLUDE_DIRS}/curses.h"
+ "${CURSES_LIBRARIES}"
+ CURSES_HAS_TINFO)
if (NOT CURSES_HAS_TINFO)
message(STATUS "curses library missing terminfo symbols, looking for tinfo separately")
find_library(TINFO_LIBRARIES NAMES tinfo DOC "The curses tinfo library" QUIET)
``````````
</details>
https://github.com/llvm/llvm-project/pull/128245
More information about the lldb-commits
mailing list