From 0e4a2c7e3251c305cc4a9a02fa32011b3c142f5a Mon Sep 17 00:00:00 2001 From: Mark Wright Date: Fri, 17 Jan 2014 11:34:58 +0000 Subject: [PATCH 1/2] FindCurses: Honor CURSES_NEED_NCURSES when curses is found Take our CURSES_USE_NCURSES code path when CURSES_NEED_NCURSES is enabled even if CURSES_CURSES_LIBRARY also happens to be found. Applied-by: Rolf Eike Beer --- Modules/FindCurses.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/FindCurses.cmake b/Modules/FindCurses.cmake index 971edb75f..794855185 100644 --- a/Modules/FindCurses.cmake +++ b/Modules/FindCurses.cmake @@ -40,7 +40,7 @@ find_library(CURSES_CURSES_LIBRARY NAMES curses ) find_library(CURSES_NCURSES_LIBRARY NAMES ncurses ) set(CURSES_USE_NCURSES FALSE) -if(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_LIBRARY) +if(CURSES_NCURSES_LIBRARY AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES)) set(CURSES_USE_NCURSES TRUE) endif() # http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html From 1f646c6ce0766f8ab59868e7cac24034e6966504 Mon Sep 17 00:00:00 2001 From: Mark Wright Date: Fri, 17 Jan 2014 11:34:58 +0000 Subject: [PATCH 2/2] 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 --- Modules/FindCurses.cmake | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Modules/FindCurses.cmake b/Modules/FindCurses.cmake index 794855185..a453a675d 100644 --- a/Modules/FindCurses.cmake +++ b/Modules/FindCurses.cmake @@ -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 )