1 # CVC4_CHECK_FOR_READLINE
2 # -----------------------
3 # Look for readline and link it in, but allow user to disable.
4 AC_DEFUN([CVC4_CHECK_FOR_READLINE], [
5 AC_MSG_CHECKING([whether user requested readline support])
8 readline_compentry_func_returns_charp=0
10 if test "$with_readline" = no; then
11 AC_MSG_RESULT([no, readline disabled by user])
12 elif test "$with_readline" = check -a "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
13 AC_MSG_RESULT([no, using BSD-compatible dependences only])
16 if test "$with_readline" = check; then
17 AC_MSG_RESULT([no preference by user, will auto-detect])
19 AC_MSG_RESULT([yes, readline enabled by user])
21 dnl Try a bunch of combinations until something works :-/
23 CVC4_TRY_READLINE_WITH([])
24 CVC4_TRY_READLINE_WITH([-ltinfo])
25 CVC4_TRY_READLINE_WITH([-ltermcap])
26 CVC4_TRY_READLINE_WITH([-ltermcap -ltinfo])
27 CVC4_TRY_READLINE_WITH([-lncurses -ltermcap])
28 CVC4_TRY_READLINE_WITH([-lncurses -ltermcap -ltinfo])
29 CVC4_TRY_READLINE_WITH([-lcurses -ltermcap])
30 CVC4_TRY_READLINE_WITH([-lcurses -ltermcap -ltinfo])
31 if test -z "$READLINE_LIBS"; then
32 if test "$with_readline" != check; then
33 AC_MSG_FAILURE([cannot find libreadline! (or can't get it to work)])
37 # make sure it works in static builds, too
38 if test "$enable_static_binary" = yes; then
40 AC_MSG_CHECKING([whether statically-linked readline is functional])
41 CVC4_TRY_STATIC_READLINE_WITH([])
42 CVC4_TRY_STATIC_READLINE_WITH([-ltinfo])
43 CVC4_TRY_STATIC_READLINE_WITH([-ltermcap])
44 CVC4_TRY_STATIC_READLINE_WITH([-ltermcap -ltinfo])
45 CVC4_TRY_STATIC_READLINE_WITH([-lncurses -ltermcap])
46 CVC4_TRY_STATIC_READLINE_WITH([-lncurses -ltermcap -ltinfo])
47 CVC4_TRY_STATIC_READLINE_WITH([-lcurses -ltermcap])
48 CVC4_TRY_STATIC_READLINE_WITH([-lcurses -ltermcap -ltinfo])
49 if test -n "$READLINE_LIBS"; then
50 AC_MSG_RESULT([yes, it works])
54 if test "$with_readline" != check; then
55 AC_MSG_FAILURE([readline installation appears incompatible with static-binary])
63 if test "$with_readline" = yes; then
65 AC_MSG_CHECKING([for type of rl_completion_entry_function])
67 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
69 #include <readline/readline.h>
70 char* foo(const char*, int) { return (char*)0; }],[
71 rl_completion_entry_function = foo;])],
72 [AC_MSG_RESULT([char* (*)(const char*, int)])
73 readline_compentry_func_returns_charp=1],
74 [AC_MSG_RESULT([Function])])
81 ])# CVC4_CHECK_FOR_READLINE
83 # CVC4_TRY_READLINE_WITH(LIBS)
84 # ----------------------------
85 # Try AC_CHECK_LIB(readline) with the given linking libraries
86 AC_DEFUN([CVC4_TRY_READLINE_WITH], [
87 if test -z "$READLINE_LIBS"; then
88 unset ac_cv_lib_readline_readline
89 AC_CHECK_LIB([readline], [readline],
90 [AC_CHECK_HEADER([readline/readline.h],
91 [READLINE_LIBS="-lreadline $1"],
95 ])# CVC4_TRY_READLINE_WITH
97 # CVC4_TRY_STATIC_READLINE_WITH(LIBS)
98 # -----------------------------------
99 # Try AC_CHECK_LIB(readline) with the given linking libraries
100 AC_DEFUN([CVC4_TRY_STATIC_READLINE_WITH], [
101 if test -z "$READLINE_LIBS"; then
103 cvc4_save_LIBS="$LIBS"
104 cvc4_save_LDFLAGS="$LDFLAGS"
105 LDFLAGS="-static $LDFLAGS"
107 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <readline/readline.h>],
109 [READLINE_LIBS="-lreadline $1"],
111 LIBS="$cvc4_save_LIBS"
112 LDFLAGS="$cvc4_save_LDFLAGS"
115 ])# CVC4_TRY_STATIC_READLINE_WITH