forked from Mirror/frr
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>
This commit is contained in:
parent
4108d88478
commit
64537bc4d0
77
configure.ac
77
configure.ac
|
@ -984,7 +984,6 @@ case "$host_os" in
|
||||||
AC_CHECK_LIB(socket, main)
|
AC_CHECK_LIB(socket, main)
|
||||||
AC_CHECK_LIB(nsl, main)
|
AC_CHECK_LIB(nsl, main)
|
||||||
AC_CHECK_LIB(umem, main)
|
AC_CHECK_LIB(umem, main)
|
||||||
CURSES=-lcurses
|
|
||||||
SOLARIS="solaris"
|
SOLARIS="solaris"
|
||||||
;;
|
;;
|
||||||
linux*)
|
linux*)
|
||||||
|
@ -1050,40 +1049,47 @@ dnl ---------------------
|
||||||
dnl Integrated VTY option
|
dnl Integrated VTY option
|
||||||
dnl ---------------------
|
dnl ---------------------
|
||||||
case "${enable_vtysh}" in
|
case "${enable_vtysh}" in
|
||||||
"no") VTYSH="";;
|
"no")
|
||||||
*) VTYSH="vtysh";
|
VTYSH="";;
|
||||||
AC_DEFINE(VTYSH,,VTY shell)
|
*)
|
||||||
dnl Vtysh uses libreadline, which looks for termcap functions at
|
VTYSH="vtysh";
|
||||||
dnl configure time. We follow readlines search order.
|
AC_DEFINE(VTYSH,,VTY shell)
|
||||||
dnl The required procedures are in libtermcap on NetBSD, in
|
|
||||||
dnl [TODO] on Linux, and in [TODO] on Solaris.
|
prev_libs="$LIBS"
|
||||||
AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
|
AC_CHECK_LIB(readline, main, [
|
||||||
[AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
|
LIBREADLINE="-lreadline"
|
||||||
[AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
|
], [
|
||||||
[AC_CHECK_LIB(ncurses, tputs,
|
dnl readline failed - it might be incorrectly linked and missing its
|
||||||
LIBREADLINE="$LIBREADLINE -lncurses")]
|
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_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",,
|
AC_MSG_ERROR([libreadline (needed for vtysh) not found and/or missing dependencies])
|
||||||
"$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.])
|
dnl re-try with the lib we found above
|
||||||
fi
|
unset ac_cv_lib_readline_main
|
||||||
AC_CHECK_HEADER(readline/history.h)
|
AC_CHECK_LIB(readline, main, [
|
||||||
if test $ac_cv_header_readline_history_h = no;then
|
LIBREADLINE="-lreadline $LIBREADLINE"
|
||||||
AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
|
], [
|
||||||
fi
|
AC_MSG_ERROR([libreadline (needed for vtysh) not found and/or missing dependencies])
|
||||||
AC_CHECK_LIB(readline, rl_completion_matches,
|
], [$LIBREADLINE])
|
||||||
LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
|
], [])
|
||||||
if test $ac_cv_lib_readline_rl_completion_matches = no; then
|
LIBS="$prev_libs"
|
||||||
AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
|
|
||||||
fi
|
AC_CHECK_HEADER(readline/history.h)
|
||||||
AC_SEARCH_LIBS([append_history], [readline], [frr_cv_append_history=yes], [frr_cv_append_history=no])
|
if test $ac_cv_header_readline_history_h = no;then
|
||||||
if test "$frr_cv_append_history" = yes; then
|
AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
|
||||||
AC_DEFINE(HAVE_APPEND_HISTORY, 1, [Have history.h append_history])
|
fi
|
||||||
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
|
esac
|
||||||
AC_SUBST(LIBREADLINE)
|
AC_SUBST(LIBREADLINE)
|
||||||
AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
|
AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
|
||||||
|
@ -1484,7 +1490,6 @@ fi
|
||||||
AM_CONDITIONAL([ENABLE_BGP_VNC], [test x${enable_bgp_vnc} != xno])
|
AM_CONDITIONAL([ENABLE_BGP_VNC], [test x${enable_bgp_vnc} != xno])
|
||||||
|
|
||||||
AC_SUBST(SOLARIS)
|
AC_SUBST(SOLARIS)
|
||||||
AC_SUBST(CURSES)
|
|
||||||
AC_CHECK_LIB(crypt, crypt, [],
|
AC_CHECK_LIB(crypt, crypt, [],
|
||||||
[AC_CHECK_LIB(crypto, DES_crypt)])
|
[AC_CHECK_LIB(crypto, DES_crypt)])
|
||||||
AC_CHECK_LIB(resolv, res_init)
|
AC_CHECK_LIB(resolv, res_init)
|
||||||
|
|
|
@ -4,7 +4,7 @@ Priority: optional
|
||||||
Maintainer: Nobody <nobody@frrouting.org>
|
Maintainer: Nobody <nobody@frrouting.org>
|
||||||
Uploaders: Nobody <nobody@frrouting.org>
|
Uploaders: Nobody <nobody@frrouting.org>
|
||||||
XSBC-Original-Maintainer: <maintainers@frrouting.org>
|
XSBC-Original-Maintainer: <maintainers@frrouting.org>
|
||||||
Build-Depends: debhelper (>= 7.0.50~), libncurses5-dev, libreadline-dev, libpam0g-dev | libpam-dev, libcap-dev, texinfo (>= 4.7), autotools-dev, libpcre3-dev, gawk, chrpath, libsnmp-dev, git, dh-autoreconf, libjson-c-dev, libjson-c2 | libjson-c3, dh-systemd, libsystemd-dev, bison, flex, libc-ares-dev, pkg-config, python (>= 2.7) | python3, python-sphinx | python3-sphinx, libpython-dev | libpython3-dev, install-info
|
Build-Depends: debhelper (>= 7.0.50~), libreadline-dev, libpam0g-dev | libpam-dev, libcap-dev, texinfo (>= 4.7), autotools-dev, libpcre3-dev, gawk, chrpath, libsnmp-dev, git, dh-autoreconf, libjson-c-dev, libjson-c2 | libjson-c3, dh-systemd, libsystemd-dev, bison, flex, libc-ares-dev, pkg-config, python (>= 2.7) | python3, python-sphinx | python3-sphinx, libpython-dev | libpython3-dev, install-info
|
||||||
Standards-Version: 3.9.6
|
Standards-Version: 3.9.6
|
||||||
Homepage: http://www.frrouting.org/
|
Homepage: http://www.frrouting.org/
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ noinst_HEADERS += \
|
||||||
vtysh/vtysh_user.h \
|
vtysh/vtysh_user.h \
|
||||||
# end
|
# end
|
||||||
|
|
||||||
vtysh_vtysh_LDADD = lib/libfrr.la @LIBCAP@ @LIBREADLINE@ @LIBS@ @CURSES@ @LIBPAM@
|
vtysh_vtysh_LDADD = lib/libfrr.la @LIBCAP@ @LIBREADLINE@ @LIBS@ @LIBPAM@
|
||||||
|
|
||||||
EXTRA_DIST += vtysh/extract.pl
|
EXTRA_DIST += vtysh/extract.pl
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue