mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
build: add configure --without-readline
Make it much easier to test a configuration built without readline support, by reusing our existing library probe machinery. It gets a bit tricky with readline, which does not provide a pkg-config snippet, and which on some platforms requires one of several terminal libraries as a prerequiste, but the end result should be the same default behavior but now with the option to disable things. * m4/virt-readline.m4 (LIBVIRT_CHECK_READLINE): Simplify by using LIBVIRT_CHECK_LIB. * tools/virsh.c: Convert USE_READLINE to WITH_READLINE. Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
d6eac3f377
commit
e5f46105a1
@ -18,48 +18,33 @@ dnl <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_CHECK_READLINE],[
|
||||
READLINE_LIBS=
|
||||
AC_CHECK_HEADERS([readline/readline.h])
|
||||
|
||||
AC_CHECK_LIB([readline], [readline],
|
||||
[lv_use_readline=yes; READLINE_LIBS=-lreadline],
|
||||
[lv_use_readline=no])
|
||||
|
||||
# If the above test failed, it may simply be that -lreadline requires
|
||||
# some termcap-related code, e.g., from one of the following libraries.
|
||||
# See if adding one of them to LIBS helps.
|
||||
if test $lv_use_readline = no; then
|
||||
lv_saved_libs=$LIBS
|
||||
extra_LIBS=
|
||||
lv_saved_libs=$LIBS
|
||||
if test "x$with_readline" != xno; then
|
||||
# Linking with -lreadline may require some termcap-related code, e.g.,
|
||||
# from one of the following libraries. Add it to LIBS before using
|
||||
# canned library checks; then verify later if it was needed.
|
||||
LIBS=
|
||||
AC_SEARCH_LIBS([tgetent], [ncurses curses termcap termlib])
|
||||
case $LIBS in
|
||||
no*) ;; # handle "no" and "none required"
|
||||
*) # anything else is a -lLIBRARY
|
||||
# Now, check for -lreadline again, also using $LIBS.
|
||||
# Note: this time we use a different function, so that
|
||||
# we don't get a cached "no" result.
|
||||
AC_CHECK_LIB([readline], [rl_initialize],
|
||||
[lv_use_readline=yes
|
||||
READLINE_LIBS="-lreadline $LIBS"],,
|
||||
[$LIBS])
|
||||
;;
|
||||
extra_LIBS=$LIBS ;;
|
||||
esac
|
||||
test $lv_use_readline = no &&
|
||||
AC_MSG_WARN([readline library not found])
|
||||
LIBS=$lv_saved_libs
|
||||
LIBS="$lv_saved_libs $extra_LIBS"
|
||||
fi
|
||||
|
||||
if test $lv_use_readline = yes; then
|
||||
AC_DEFINE_UNQUOTED([USE_READLINE], 1,
|
||||
[whether virsh can use readline])
|
||||
READLINE_CFLAGS=-DUSE_READLINE
|
||||
else
|
||||
READLINE_CFLAGS=
|
||||
fi
|
||||
AC_SUBST([READLINE_CFLAGS])
|
||||
# The normal library check...
|
||||
LIBVIRT_CHECK_LIB([READLINE], [readline], [readline], [readline/readline.h])
|
||||
|
||||
# Touch things up to avoid $extra_LIBS, if possible. Test a second
|
||||
# function, to ensure we aren't being confused by caching.
|
||||
LIBS=$lv_saved_libs
|
||||
AC_CHECK_LIB([readline], [rl_initialize],
|
||||
[], [READLINE_LIBS="$READLINE_LIBS $extra_LIBS"])
|
||||
LIBS=$lv_saved_libs
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_RESULT_READLINE],[
|
||||
LIBVIRT_RESULT([readline], [$lv_use_readline],
|
||||
[CFLAGS='$READLINE_CFLAGS' LIBS='$READLINE_LIBS'])
|
||||
LIBVIRT_RESULT_LIB([READLINE])
|
||||
])
|
||||
|
@ -48,7 +48,7 @@
|
||||
#include <libxml/xpath.h>
|
||||
#include <libxml/xmlsave.h>
|
||||
|
||||
#ifdef HAVE_READLINE_READLINE_H
|
||||
#if WITH_READLINE
|
||||
# include <readline/readline.h>
|
||||
# include <readline/history.h>
|
||||
#endif
|
||||
@ -2580,7 +2580,7 @@ vshCloseLogFile(vshControl *ctl)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_READLINE
|
||||
#if WITH_READLINE
|
||||
|
||||
/* -----------------
|
||||
* Readline stuff
|
||||
@ -2765,7 +2765,7 @@ vshReadline(vshControl *ctl ATTRIBUTE_UNUSED, const char *prompt)
|
||||
return readline(prompt);
|
||||
}
|
||||
|
||||
#else /* !USE_READLINE */
|
||||
#else /* !WITH_READLINE */
|
||||
|
||||
static int
|
||||
vshReadlineInit(vshControl *ctl ATTRIBUTE_UNUSED)
|
||||
@ -2799,7 +2799,7 @@ vshReadline(vshControl *ctl, const char *prompt)
|
||||
return vshStrdup(ctl, r);
|
||||
}
|
||||
|
||||
#endif /* !USE_READLINE */
|
||||
#endif /* !WITH_READLINE */
|
||||
|
||||
static void
|
||||
vshDeinitTimer(int timer ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED)
|
||||
@ -3026,7 +3026,7 @@ vshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
|
||||
#ifdef WITH_DTRACE_PROBES
|
||||
vshPrint(ctl, " DTrace");
|
||||
#endif
|
||||
#ifdef USE_READLINE
|
||||
#if WITH_READLINE
|
||||
vshPrint(ctl, " Readline");
|
||||
#endif
|
||||
#ifdef WITH_DRIVER_MODULES
|
||||
@ -3316,7 +3316,7 @@ main(int argc, char **argv)
|
||||
if (ctl->cmdstr == NULL)
|
||||
break; /* EOF */
|
||||
if (*ctl->cmdstr) {
|
||||
#if USE_READLINE
|
||||
#if WITH_READLINE
|
||||
add_history(ctl->cmdstr);
|
||||
#endif
|
||||
if (vshCommandStringParse(ctl, ctl->cmdstr))
|
||||
|
Loading…
Reference in New Issue
Block a user