FindCurses: Detect and satisfy ncurses dependency on tinfo

When ncurses is built with USE=tinfo we need to find "tinfo" as a
dependency of the main library.  Otherwise 'cbreak' is missing:

  ld: ...: undefined reference to symbol 'cbreak'
  ld: note: 'cbreak' is defined in DSO /lib/libtinfo.so.5 so try adding
            it to the linker command line

See https://bugs.gentoo.org/show_bug.cgi?id=468622 for more information.

Applied-by: Rolf Eike Beer <eike@sf-mail.de>
This commit is contained in:
Mark Wright 2014-01-17 11:34:58 +00:00 committed by Brad King
parent 0e4a2c7e32
commit 1f646c6ce0

View File

@ -135,10 +135,20 @@ else()
CACHE FILEPATH "The curses library" ${FORCE_IT})
endif()
CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
cbreak "" CURSES_NCURSES_HAS_CBREAK)
if(NOT CURSES_NCURSES_HAS_CBREAK)
find_library(CURSES_EXTRA_LIBRARY tinfo HINTS "${_cursesLibDir}")
find_library(CURSES_EXTRA_LIBRARY tinfo )
CHECK_LIBRARY_EXISTS("${CURSES_EXTRA_LIBRARY}"
cbreak "" CURSES_TINFO_HAS_CBREAK)
endif()
endif()
find_library(CURSES_EXTRA_LIBRARY cur_colr HINTS "${_cursesLibDir}")
find_library(CURSES_EXTRA_LIBRARY cur_colr )
if (NOT CURSES_TINFO_HAS_CBREAK)
find_library(CURSES_EXTRA_LIBRARY cur_colr HINTS "${_cursesLibDir}")
find_library(CURSES_EXTRA_LIBRARY cur_colr )
endif()
find_library(CURSES_FORM_LIBRARY form HINTS "${_cursesLibDir}")
find_library(CURSES_FORM_LIBRARY form )
@ -182,5 +192,7 @@ mark_as_advanced(
CURSES_INCLUDE_DIR
CURSES_CURSES_HAS_WSYNCUP
CURSES_NCURSES_HAS_WSYNCUP
CURSES_NCURSES_HAS_CBREAK
CURSES_TINFO_HAS_CBREAK
)