diff options
Diffstat (limited to 'sntp/m4/ntp_lineeditlibs.m4')
-rw-r--r-- | sntp/m4/ntp_lineeditlibs.m4 | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/sntp/m4/ntp_lineeditlibs.m4 b/sntp/m4/ntp_lineeditlibs.m4 new file mode 100644 index 0000000..f86e617 --- /dev/null +++ b/sntp/m4/ntp_lineeditlibs.m4 @@ -0,0 +1,136 @@ +AC_DEFUN([NTP_LINEEDITLIBS], [ + NTP_ORIG_LIBS="$LIBS" + AC_ARG_WITH( + [lineeditlibs], + [AS_HELP_STRING( + [--with-lineeditlibs], + [edit,editline (readline may be specified if desired)] + )], + [use_lineeditlibs="$withval"], + [use_lineeditlibs="edit,editline"] + ) + AC_MSG_CHECKING([line editing libraries]) + AC_MSG_RESULT([$use_lineeditlibs]) + case "$use_lineeditlibs" in + no) + ntp_lib_lineedit=no + ;; + *) + for lineedit_lib in `echo $use_lineeditlibs | sed -e 's/,/ /'`; do + for term_lib in "" termcap curses ncurses; do + case "$term_lib" in + '') + TRY_LIB="-l$lineedit_lib" + ;; + *) + TRY_LIB="-l$lineedit_lib -l$term_lib" + ;; + esac + LIBS="$NTP_ORIG_LIBS $TRY_LIB" + AC_MSG_CHECKING([for readline() with $TRY_LIB]) + AC_TRY_LINK_FUNC([readline], [ntp_lib_lineedit="$TRY_LIB"]) + case "$ntp_lib_lineedit" in + '') + AC_MSG_RESULT([no]) + ;; + *) + # Use readline() + AC_MSG_RESULT([yes]) + break + esac + case "$term_lib" in + '') + # do not try el_gets without a terminal library + ;; + *) + AC_MSG_CHECKING([for el_gets() with $TRY_LIB]) + AC_TRY_LINK_FUNC([el_gets], [ntp_lib_lineedit="$TRY_LIB"]) + case "$ntp_lib_lineedit" in + '') + AC_MSG_RESULT([no]) + ;; + *) # Use el_gets() + AC_MSG_RESULT([yes]) + break + ;; + esac # $ntp_lib_lineedit + esac # $term_lib + done + case "$ntp_lib_lineedit" in + '') + ;; + *) + break + ;; + esac + done + LIBS="$NTP_ORIG_LIBS" + ;; + esac # $use_lineeditlibs + + case "$ntp_lib_lineedit" in + '') + ntp_lib_lineedit="no" + ;; + no) + ;; + *) + EDITLINE_LIBS="$ntp_lib_lineedit" + AC_SUBST([EDITLINE_LIBS]) + ;; + esac # $ntp_lib_lineedit + + case "$ntp_lib_lineedit" in + no) + ;; + *) + AC_CHECK_HEADERS([readline.h readline/readline.h histedit.h]) + AC_CHECK_HEADERS([history.h readline/history.h]) + + case "$ac_cv_header_histedit_h" in + yes) + AC_CACHE_CHECK( + [number of arguments to el_init()], + [ntp_cv_el_init_args], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ + #include <stdio.h> + #include <histedit.h> + ]], + [[ + el_init("conftest", stdin, stdout, stderr); + ]] + )], + [ntp_cv_el_init_args=4], + [ntp_cv_el_init_args=3] + )] + ) + AC_DEFINE_UNQUOTED( + [EL_INIT_ARGS], + [$ntp_cv_el_init_args], + [number of args to el_init()] + ) + esac + + AC_MSG_CHECKING([whether readline supports history]) + + ntp_lib_lineedit_history="no" + ORIG_LIBS="$LIBS" + LIBS="$ORIG_LIBS $ntp_lib_lineedit" + AC_TRY_LINK_FUNC([add_history], [ntp_lib_lineedit_history="yes"]) + LIBS="$ORIG_LIBS" + + AC_MSG_RESULT([$ntp_lib_lineedit_history]) + + case "$ntp_lib_lineedit_history" in + yes) + AC_DEFINE([HAVE_READLINE_HISTORY], [1], + [Define if your readline library has \`add_history']) + esac + esac # $ntp_lib_lineedit + AS_UNSET([NTP_ORIG_LIBS]) + AS_UNSET([ORIG_LIBS]) + AS_UNSET([TRY_LIB]) + AS_UNSET([use_lineeditlibs]) +])dnl |