m4: cli: Add support for --with-readline=auto|libreadline|libedit|none configuration options

This commit provides support for --with-readline=auto|libreadline|libedit|none option
for the configure script.

It allows building the NetworkManager's nmcli tool with libedit instead
of libreadline.

With --with-readline=auto the system looks for any eligible readline library
to use.

Moreover, in this commit all required defines are provided (e.g.
HAVE_EDITLINE_READLINE) to allow correct buil of the code.
This commit is contained in:
Lukasz Majewski 2021-07-01 15:47:40 +02:00 committed by Thomas Haller
parent 85f3030e4b
commit 8ea9da85b3
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 41 additions and 5 deletions

View file

@ -1043,10 +1043,24 @@ fi
PKG_CHECK_MODULES(LIBNDP, [libndp])
AC_ARG_WITH(readline,
AS_HELP_STRING([--with-readline=auto|libreadline|libedit|none], [Using libreadline (auto) or libedit]),
[], [with_readline=auto])
if test "$with_readline" != "none" -a "$with_readline" != "auto" -a "$with_readline" != "libreadline" -a "$with_readline" != "libedit"; then
AC_MSG_ERROR([invalid --with-readline option])
fi
if test "$with_readline" != "none"; then
AX_LIB_READLINE
if test -z "${READLINE_LIBS}"; then
AC_MSG_FAILURE([readline library not found])
fi
fi
AC_ARG_WITH(nmcli,
AS_HELP_STRING([--with-nmcli=yes|no], [Build nmcli]))
if test "$with_nmcli" != no; then
AX_LIB_READLINE
build_nmcli=yes
else
build_nmcli=no
@ -1420,4 +1434,5 @@ echo " crypto: $with_crypto (have-gnutls: $have_crypto_gnutls, have-nss: $have_
echo " sanitizers: $sanitizers"
echo " Mozilla Public Suffix List: $with_libpsl"
echo " eBPF: $have_ebpf"
echo " readline: $with_readline"
echo

View file

@ -65,7 +65,16 @@ AC_DEFUN([AX_LIB_READLINE], [
AC_CACHE_CHECK([for a readline compatible library],
ax_cv_lib_readline, [
ORIG_LIBS="$LIBS"
for readline_lib in readline edit editline; do
search_readlines="readline edit"
if test "$with_readline" = "libreadline"; then
search_readlines="readline"
fi
if test "$with_readline" = "libedit"; then
search_readlines="edit"
fi
for readline_lib in $search_readlines; do
# prefer ncurses since we use it for nmtui too
for termcap_lib in "" termcap curses ncurses; do
if test -z "$termcap_lib"; then
TRY_LIB="-l$readline_lib"
@ -93,7 +102,16 @@ AC_DEFUN([AX_LIB_READLINE], [
AC_SUBST(READLINE_LIBS)
AC_DEFINE(HAVE_LIBREADLINE, 1,
[Define if you have a readline compatible library])
AC_CHECK_HEADERS(readline.h readline/readline.h)
if test "$with_readline" = "libedit"; then
AC_DEFINE(HAVE_EDITLINE_READLINE, 1,
[Explicitly set to 1 when libedit shall be used])
else
AC_DEFINE(HAVE_EDITLINE_READLINE, 0,
[By default the libreadline is used as readline library])
fi
ORIG_LIBS="$LIBS"
LIBS="$ORIG_LIBS $ax_cv_lib_readline"
AC_CACHE_CHECK([whether readline supports history],
@ -106,8 +124,11 @@ AC_DEFUN([AX_LIB_READLINE], [
if test "$ax_cv_lib_readline_history" = "yes"; then
AC_DEFINE(HAVE_READLINE_HISTORY, 1,
[Define if your readline library has \`add_history'])
AC_CHECK_HEADERS(history.h readline/history.h)
[Define if your readline library has \`history_set_history_state'])
AC_CHECK_HEADERS(readline/history.h histedit.h)
else
AC_DEFINE(HAVE_READLINE_HISTORY, 0,
[Explicitly set to 0 when libreadline shall not be used])
fi
fi
])dnl