mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-01 08:20:11 +01:00
build: merge branch 'th/build-libreadline'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/930
This commit is contained in:
commit
7ae2f842ae
3 changed files with 108 additions and 87 deletions
30
configure.ac
30
configure.ac
|
|
@ -1043,27 +1043,21 @@ 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
|
||||
AX_LIB_READLINE
|
||||
|
||||
AC_ARG_WITH(nmcli,
|
||||
AS_HELP_STRING([--with-nmcli=yes|no], [Build nmcli]))
|
||||
if test "$with_nmcli" != no; then
|
||||
build_nmcli=yes
|
||||
AS_HELP_STRING([--with-nmcli=yes|no], [Build nmcli]),
|
||||
[],
|
||||
[with_nmcli=yes])
|
||||
if test "$with_nmcli" == yes; then
|
||||
if test "$with_readline" = none; then
|
||||
AC_MSG_FAILURE([nmcli requires readline library. Use --with-readline or --with-nmcli=no])
|
||||
fi
|
||||
build_nmcli=yes
|
||||
elif test "$with_nmcli" == no; then
|
||||
build_nmcli=no
|
||||
else
|
||||
build_nmcli=no
|
||||
AC_MSG_ERROR([invalid --with-nmcli option. Valid options are --with-nmcli=yes|no])
|
||||
fi
|
||||
AM_CONDITIONAL(BUILD_NMCLI, test "$build_nmcli" = yes)
|
||||
|
||||
|
|
|
|||
|
|
@ -62,73 +62,97 @@
|
|||
|
||||
AU_ALIAS([VL_LIB_READLINE], [AX_LIB_READLINE])
|
||||
AC_DEFUN([AX_LIB_READLINE], [
|
||||
AC_CACHE_CHECK([for a readline compatible library],
|
||||
ax_cv_lib_readline, [
|
||||
ORIG_LIBS="$LIBS"
|
||||
|
||||
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"
|
||||
else
|
||||
TRY_LIB="-l$readline_lib -l$termcap_lib"
|
||||
fi
|
||||
LIBS="$ORIG_LIBS $TRY_LIB"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [readline])], [ax_cv_lib_readline="$TRY_LIB"])
|
||||
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"; then
|
||||
|
||||
AC_CACHE_CHECK([for a readline compatible library],
|
||||
ax_cv_lib_readline, [
|
||||
ORIG_LIBS="$LIBS"
|
||||
|
||||
if test "$with_readline" = "libreadline"; then
|
||||
search_readlines="readline"
|
||||
elif test "$with_readline" = "libedit"; then
|
||||
search_readlines="edit"
|
||||
elif test "$with_readline" = "auto"; then
|
||||
search_readlines="readline edit"
|
||||
else
|
||||
AC_MSG_ERROR([invalid --with-readline option. Valid options are --with-readline=auto|libreadline|libedit|none])
|
||||
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"
|
||||
else
|
||||
TRY_LIB="-l$readline_lib -l$termcap_lib"
|
||||
fi
|
||||
LIBS="$ORIG_LIBS $TRY_LIB"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [readline])], [ax_cv_lib_readline="$TRY_LIB"])
|
||||
if test -n "$ax_cv_lib_readline"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -n "$ax_cv_lib_readline"; then
|
||||
if test "$with_readline" = auto; then
|
||||
if test "$readline_lib" = readline; then
|
||||
with_readline=libreadline
|
||||
else
|
||||
with_readline=libedit
|
||||
fi
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -n "$ax_cv_lib_readline"; then
|
||||
break
|
||||
if test -z "$ax_cv_lib_readline"; then
|
||||
if test "$with_readline" != auto; then
|
||||
AC_MSG_ERROR([libreadline not found for --with-readline=$with_readline"])
|
||||
fi
|
||||
with_readline=none
|
||||
ax_cv_lib_readline="no"
|
||||
fi
|
||||
done
|
||||
if test -z "$ax_cv_lib_readline"; then
|
||||
ax_cv_lib_readline="no"
|
||||
fi
|
||||
LIBS="$ORIG_LIBS"
|
||||
])
|
||||
|
||||
if test "$ax_cv_lib_readline" != "no"; then
|
||||
READLINE_LIBS="$ax_cv_lib_readline"
|
||||
AC_SUBST(READLINE_LIBS)
|
||||
AC_DEFINE(HAVE_LIBREADLINE, 1,
|
||||
[Define if you have a readline compatible library])
|
||||
|
||||
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],
|
||||
ax_cv_lib_readline_history, [
|
||||
ax_cv_lib_readline_history="no"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [history_set_history_state])],
|
||||
[ax_cv_lib_readline_history="yes"])
|
||||
LIBS="$ORIG_LIBS"
|
||||
])
|
||||
LIBS=$ORIG_LIBS
|
||||
|
||||
if test "$ax_cv_lib_readline_history" = "yes"; then
|
||||
AC_DEFINE(HAVE_READLINE_HISTORY, 1,
|
||||
[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])
|
||||
if test "$ax_cv_lib_readline" != "no"; then
|
||||
READLINE_LIBS="$ax_cv_lib_readline"
|
||||
AC_SUBST(READLINE_LIBS)
|
||||
AC_DEFINE(HAVE_LIBREADLINE, 1,
|
||||
[Define if you have a readline compatible library])
|
||||
|
||||
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],
|
||||
ax_cv_lib_readline_history, [
|
||||
ax_cv_lib_readline_history="no"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [history_set_history_state])],
|
||||
[ax_cv_lib_readline_history="yes"])
|
||||
])
|
||||
LIBS=$ORIG_LIBS
|
||||
|
||||
if test "$ax_cv_lib_readline_history" = "yes"; then
|
||||
AC_DEFINE(HAVE_READLINE_HISTORY, 1,
|
||||
[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
|
||||
|
||||
fi
|
||||
])dnl
|
||||
|
|
|
|||
23
meson.build
23
meson.build
|
|
@ -735,31 +735,34 @@ config_h.set10('WITH_CONCHECK', enable_concheck)
|
|||
|
||||
config_h.set10('HAVE_READLINE_HISTORY', false)
|
||||
config_h.set10('HAVE_EDITLINE_READLINE', false)
|
||||
enable_readline = get_option('readline')
|
||||
if enable_readline != 'none'
|
||||
if enable_readline == 'libreadline' or enable_readline == 'auto'
|
||||
readline = cc.find_library('readline')
|
||||
with_readline = get_option('readline')
|
||||
if with_readline != 'none'
|
||||
if with_readline == 'libreadline' or with_readline == 'auto'
|
||||
readline = cc.find_library('readline', required: false)
|
||||
if readline.found()
|
||||
readline_dep = declare_dependency(link_args: '-lreadline')
|
||||
config_h.set10('HAVE_READLINE_HISTORY', true)
|
||||
with_readline = 'libreadline'
|
||||
else
|
||||
assert(enable_readline == 'auto', 'libreadline was not found')
|
||||
assert(with_readline == 'auto', 'libreadline was not found')
|
||||
endif
|
||||
endif
|
||||
if enable_readline == 'libedit' or (enable_readline == 'auto' and not readline.found())
|
||||
edit = dependency('libedit')
|
||||
if with_readline == 'libedit' or with_readline == 'auto'
|
||||
edit = dependency('libedit', required: false)
|
||||
if edit.found()
|
||||
readline_dep = declare_dependency(link_args: '-ledit')
|
||||
config_h.set10('HAVE_EDITLINE_READLINE', true)
|
||||
with_readline = 'libedit'
|
||||
else
|
||||
assert(enable_readline == 'auto', 'libedit was not found')
|
||||
assert(with_readline == 'auto', 'libedit was not found')
|
||||
with_readline = 'none'
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
enable_nmcli = get_option('nmcli')
|
||||
if enable_nmcli
|
||||
assert(enable_readline != 'none', 'readline library with terminfo support is required (one of readline, edit, or editline, AND one of ncurses, curses, or termcap)')
|
||||
assert(with_readline != 'none', 'nmcli requires readline library (-Dnmcli=false or -Dreadline=auto|libreadline|libedit|none)')
|
||||
endif
|
||||
|
||||
enable_nmtui = get_option('nmtui')
|
||||
|
|
@ -1095,5 +1098,5 @@ output += ' sanitizers: ' + get_option('b_sanitize') + '\n'
|
|||
output += ' Mozilla Public Suffix List: ' + enable_libpsl.to_string() + '\n'
|
||||
output += ' vapi: ' + enable_vapi.to_string() + '\n'
|
||||
output += ' ebpf: ' + enable_ebpf.to_string() + '\n'
|
||||
output += ' readline: ' + enable_readline + '\n'
|
||||
output += ' readline: ' + with_readline + '\n'
|
||||
message(output)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue