summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2018-10-06 23:28:19 +0200
committerDavid Lamparter <equinox@opensourcerouting.org>2018-10-19 13:14:10 +0200
commit64537bc4d05f60c1b51f9003a6185843c0be7e6c (patch)
tree6c751dc3755ec809a39f5fe4b55d0a6ffce677e1 /configure.ac
parentdebianpkg: remove bad USE_* options, add WERROR (diff)
downloadfrr-64537bc4d05f60c1b51f9003a6185843c0be7e6c.tar.xz
frr-64537bc4d05f60c1b51f9003a6185843c0be7e6c.zip
build: rewrite readline/curses check
We don't need termcap/tinfo/curses, those are just for libreadline. On most modern systems, libreadline will pull in the appropriate libs it needs on its own, so unconditionally adding them adds an extra unneeded dependency for us. Still need to try with curses/... for some systems, but only after bare readline fails. Signed-off-by: David Lamparter <equinox@diac24.net>
Diffstat (limited to 'configure.ac')
-rwxr-xr-xconfigure.ac77
1 files changed, 41 insertions, 36 deletions
diff --git a/configure.ac b/configure.ac
index fad306a4f..15bf059c8 100755
--- a/configure.ac
+++ b/configure.ac
@@ -984,7 +984,6 @@ case "$host_os" in
AC_CHECK_LIB(socket, main)
AC_CHECK_LIB(nsl, main)
AC_CHECK_LIB(umem, main)
- CURSES=-lcurses
SOLARIS="solaris"
;;
linux*)
@@ -1050,40 +1049,47 @@ dnl ---------------------
dnl Integrated VTY option
dnl ---------------------
case "${enable_vtysh}" in
- "no") VTYSH="";;
- *) VTYSH="vtysh";
- AC_DEFINE(VTYSH,,VTY shell)
-dnl Vtysh uses libreadline, which looks for termcap functions at
-dnl configure time. We follow readlines search order.
-dnl The required procedures are in libtermcap on NetBSD, in
-dnl [TODO] on Linux, and in [TODO] on Solaris.
- AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
- [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
- [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
- [AC_CHECK_LIB(ncurses, tputs,
- LIBREADLINE="$LIBREADLINE -lncurses")]
- )]
- )]
- )
- AC_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",,
- "$LIBREADLINE")
- if test $ac_cv_lib_readline_main = no; then
- AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
- fi
- AC_CHECK_HEADER(readline/history.h)
- if test $ac_cv_header_readline_history_h = no;then
- AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
- fi
- AC_CHECK_LIB(readline, rl_completion_matches,
- LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
- if test $ac_cv_lib_readline_rl_completion_matches = no; then
- AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
- fi
- AC_SEARCH_LIBS([append_history], [readline], [frr_cv_append_history=yes], [frr_cv_append_history=no])
- if test "$frr_cv_append_history" = yes; then
- AC_DEFINE(HAVE_APPEND_HISTORY, 1, [Have history.h append_history])
- fi
- ;;
+"no")
+ VTYSH="";;
+*)
+ VTYSH="vtysh";
+ AC_DEFINE(VTYSH,,VTY shell)
+
+ prev_libs="$LIBS"
+ AC_CHECK_LIB(readline, main, [
+ LIBREADLINE="-lreadline"
+ ], [
+ dnl readline failed - it might be incorrectly linked and missing its
+ dnl termcap/tinfo/curses dependency. see if we can fix that...
+ AC_SEARCH_LIBS(tputs, [termcap tinfo curses ncurses], [
+ LIBREADLINE="$ac_cv_search_tputs"
+ ], [
+ AC_MSG_ERROR([libreadline (needed for vtysh) not found and/or missing dependencies])
+ ])
+
+ dnl re-try with the lib we found above
+ unset ac_cv_lib_readline_main
+ AC_CHECK_LIB(readline, main, [
+ LIBREADLINE="-lreadline $LIBREADLINE"
+ ], [
+ AC_MSG_ERROR([libreadline (needed for vtysh) not found and/or missing dependencies])
+ ], [$LIBREADLINE])
+ ], [])
+ LIBS="$prev_libs"
+
+ AC_CHECK_HEADER(readline/history.h)
+ if test $ac_cv_header_readline_history_h = no;then
+ AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
+ fi
+ AC_CHECK_LIB(readline, rl_completion_matches, [true], [], [$LIBREADLINE])
+ if test $ac_cv_lib_readline_rl_completion_matches = no; then
+ AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
+ fi
+ AC_CHECK_LIB(readline, [append_history], [frr_cv_append_history=yes], [frr_cv_append_history=no], [$LIBREADLINE])
+ if test "$frr_cv_append_history" = yes; then
+ AC_DEFINE(HAVE_APPEND_HISTORY, 1, [Have history.h append_history])
+ fi
+ ;;
esac
AC_SUBST(LIBREADLINE)
AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
@@ -1484,7 +1490,6 @@ fi
AM_CONDITIONAL([ENABLE_BGP_VNC], [test x${enable_bgp_vnc} != xno])
AC_SUBST(SOLARIS)
-AC_SUBST(CURSES)
AC_CHECK_LIB(crypt, crypt, [],
[AC_CHECK_LIB(crypto, DES_crypt)])
AC_CHECK_LIB(resolv, res_init)