| #.rst: | |
| # FindCursesAndPanel | |
| # ----------- | |
| # | |
| # Find the curses, terminfo, and panel library as a whole. | |
| include(CMakePushCheckState) | |
| function(lldb_check_curses_tinfo CURSES_INCLUDE_DIRS CURSES_LIBRARIES CURSES_HAS_TINFO) | |
| cmake_reset_check_state() | |
| set(CMAKE_REQUIRED_INCLUDES "${CURSES_INCLUDE_DIRS}") | |
| 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 PANEL_LIBRARIES) | |
| if(NOT HAS_TERMINFO_SYMBOLS) | |
| lldb_check_curses_tinfo("${CURSES_INCLUDE_DIRS}" | |
| "${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) | |
| find_library(PANEL_LIBRARIES NAMES panel DOC "The curses panel library" QUIET) | |
| include(FindPackageHandleStandardArgs) | |
| if(CURSES_FOUND AND PANEL_LIBRARIES) | |
| # 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_INCLUDE_DIRS}" | |
| "${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 terminfo DOC "The curses tinfo library" QUIET) | |
| list(APPEND CURSES_LIBRARIES "${TINFO_LIBRARIES}") | |
| endif() | |
| set(HAS_TERMINFO_SYMBOLS "$<OR:$<BOOL:${TERMINFO_LIBRARIES}>,$<BOOL:${CURSES_HAS_TINFO}>>") | |
| endif() | |
| find_package_handle_standard_args(CursesAndPanel | |
| FOUND_VAR | |
| CursesAndPanel_FOUND | |
| REQUIRED_VARS | |
| CURSES_INCLUDE_DIRS | |
| CURSES_LIBRARIES | |
| PANEL_LIBRARIES | |
| HAS_TERMINFO_SYMBOLS) | |
| if(CURSES_FOUND AND PANEL_LIBRARIES AND HAS_TERMINFO_SYMBOLS) | |
| mark_as_advanced(CURSES_INCLUDE_DIRS | |
| PANEL_LIBRARIES | |
| HAS_TERMINFO_SYMBOLS | |
| CURSES_HAS_TINFO) | |
| endif() | |
| if(TINFO_LIBRARIES) | |
| mark_as_advanced(TINFO_LIBRARIES) | |
| endif() | |
| endif() | |