diff --git a/configure.ac b/configure.ac index c4e345224c..8f40066be0 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/m4/ax_lib_readline.m4 b/m4/ax_lib_readline.m4 index 1fcf504141..3365e0b979 100644 --- a/m4/ax_lib_readline.m4 +++ b/m4/ax_lib_readline.m4 @@ -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