dnl aclocal.m4 generated automatically by aclocal 1.4-p6 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. dnl Scott Dattalo dnl dnl This is copied from the NcFTP distribution. dnl Author Mike Gleason mgleason@NcFTP.com dnl dnl This macro will check for the presence and version dnl of the readline library. To get it into the aclocal.m4 dnl file, do this: dnl aclocal -I . --verbose dnl dnl The --verbose will show all of the files that are searched dnl for .m4 macros. AC_DEFUN([wi_LIB_READLINE], [ AC_MSG_CHECKING([for GNU Readline library, version 2.0 or newer]) wi_cv_lib_readline=no wi_cv_lib_readline_result=no ac_save_LIBS="$LIBS" # Note: $LIBCURSES is permitted to be empty. for LIBREADLINE in "-lreadline" "-lreadline $LIBCURSES" "-lreadline -ltermcap" "-lreadline -lncurses" "-lreadline -lcurses" do LIBS="$ac_save_LIBS $LIBREADLINE" AC_TRY_RUN([ /* program */ #include #include main(int argc, char **argv) { /* Note: don't actually call readline, since it may block; * We just want to see if it (dynamic) linked in okay. */ if (argc == 0) /* never true */ readline(0); exit(0); } ],[ # action if true wi_cv_lib_readline=yes ],[ # action if false wi_cv_lib_readline=no ],[ # action if cross compiling wi_cv_lib_readline=no ]) if test "$wi_cv_lib_readline" = yes ; then break ; fi done # Now try it again, to be sure it is recent enough. # rl_function_of_keyseq appeared in version 2.0 # dnl AC_CHECK_FUNC(rl_function_of_keyseq, [wi_cv_lib_readline=yes],[ dnl wi_cv_lib_readline=no;wi_cv_lib_readline_result="no (it is present but too old to use)" dnl ]) AC_TRY_LINK([ /* includes */ ],[ /* function-body */ readline(0); rl_function_of_keyseq(0); ],[ wi_cv_lib_readline=yes ],[ wi_cv_lib_readline=no wi_cv_lib_readline_result="no (it is present but too old to use)" ]) if test "$wi_cv_lib_readline" = no ; then LIBREADLINE="" # restore LIBS LIBS="$ac_save_LIBS" else /bin/rm -f readline.ver touch readline.ver AC_TRY_RUN([ /* program */ #include #include #include extern char *rl_library_version; main() { FILE *fp; double d; sscanf(rl_library_version, "%lf", &d); fp = fopen("readline.ver", "w"); if (fp == NULL) exit(1); if (fprintf(fp, "%s\n", rl_library_version) < 0) exit(1); if (fprintf(fp, "%03d\n", (int) (d * 100.0)) < 0) exit(1); if (fclose(fp) < 0) exit(1); exit(0); } ],[ # action if true rl_library_version=`sed -n 1,1p readline.ver 2>/dev/null` rlver=`sed -n 2,2p readline.ver 2>/dev/null` /bin/rm -f readline.ver ],[ # action if false rl_library_version='' rlver='' /bin/rm -f readline.ver ],[ # action if cross compiling rl_library_version='' rlver='' /bin/rm -f readline.ver ]) case "$rlver" in ???) wi_cv_lib_readline_result="yes, installed version is $rl_library_version" ;; *) # Test using current LIBS. AC_TRY_LINK([ /* includes */ extern int rl_completion_append_character; ],[ /* function-body */ readline(0); rl_completion_append_character = 0; ],[ rlver="210" ],[ rlver="200" ]) if test "$rlver" = "210" ; then wi_cv_lib_readline_result="yes, version 2.1 or higher" else wi_cv_lib_readline_result="yes, version 2.0" fi ;; esac wi_cv_lib_readline=yes # restore LIBS LIBS="$ac_save_LIBS" fi AC_MSG_RESULT($wi_cv_lib_readline_result) AC_SUBST(LIBREADLINE) if test "$wi_cv_lib_readline" = yes ; then # Now verify that all the headers are installed. # AC_REQUIRE_CPP() unset ac_cv_header_readline_chardefs_h unset ac_cv_header_readline_history_h unset ac_cv_header_readline_keymaps_h unset ac_cv_header_readline_readline_h unset ac_cv_header_readline_tilde_h AC_CHECK_HEADERS([readline/chardefs.h readline/history.h readline/keymaps.h readline/readline.h readline/tilde.h]) for xxwi in \ "$ac_cv_header_readline_chardefs_h" \ "$ac_cv_header_readline_history_h" \ "$ac_cv_header_readline_keymaps_h" \ "$ac_cv_header_readline_readline_h" \ "$ac_cv_header_readline_tilde_h" do if test "$xxwi" = no ; then break fi done if test "$xxwi" = no ; then AC_MSG_WARN([GNU Readline headers are not installed or could not be found -- GNU Readline will not be used.]) wi_cv_lib_readline=no wi_cv_lib_readline_result="no (headers not installed)" else AC_DEFINE_UNQUOTED(HAVE_LIBREADLINE, $rlver,[Readline]) fi fi dnl Check to see if we have a namespace clean version of readline dnl or not. At least FreeBSD 4.9 ships with non-ns-clean readline. if test "$wi_cv_lib_readline" = "yes" ; then ac_save_LIBS="$LIBS" LIBS="$ac_save_LIBS $LIBREADLINE" AC_CHECK_FUNCS(rl_completion_matches completion_matches) # restore LIBS LIBS="$ac_save_LIBS" fi dnl Check to see if rl_callback_handler_install takes a cast AC_MSG_CHECKING([to see if readline callbacks take a cast]) ac_save_LIBS="$LIBS" LIBS="$ac_save_LIBS $LIBREADLINE" ac_save_CC="$CC" CC="$CXX" AC_TRY_LINK([ #include #include void func(void) { return; } ],[ rl_callback_handler_install(">", (void(*)(char*))func); ],[ AC_DEFINE(READLINE_CB_TAKES_CAST, 1, [callbacks take a cast]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) ]) # restore LIBS LIBS="$ac_save_LIBS" CC="$ac_save_CC" ]) dnl dnl