basic fixes for sets translator, separate binaries
[cvc5.git] / config / readline.m4
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])
6 LIBREADLINE=
7 have_libreadline=0
8 readline_compentry_func_returns_charp=0
9 READLINE_LIBS=
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])
14 with_readline=no
15 else
16 if test "$with_readline" = check; then
17 AC_MSG_RESULT([no preference by user, will auto-detect])
18 else
19 AC_MSG_RESULT([yes, readline enabled by user])
20 fi
21 dnl Try a bunch of combinations until something works :-/
22 READLINE_LIBS=
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)])
34 fi
35 with_readline=no
36 else
37 # make sure it works in static builds, too
38 if test "$enable_static_binary" = yes; then
39 READLINE_LIBS=
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])
51 with_readline=yes
52 else
53 AC_MSG_RESULT([no])
54 if test "$with_readline" != check; then
55 AC_MSG_FAILURE([readline installation appears incompatible with static-binary])
56 fi
57 with_readline=no
58 fi
59 else
60 with_readline=yes
61 fi
62 fi
63 if test "$with_readline" = yes; then
64 have_libreadline=1
65 AC_MSG_CHECKING([for type of rl_completion_entry_function])
66 AC_LANG_PUSH([C++])
67 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
68 #include <stdio.h>
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])])
75 AC_LANG_POP([C++])
76 else
77 have_libreadline=0
78 READLINE_LIBS=
79 fi
80 fi
81 ])# CVC4_CHECK_FOR_READLINE
82
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"],
92 [])],
93 [], [$1])
94 fi
95 ])# CVC4_TRY_READLINE_WITH
96
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
102 AC_LANG_PUSH([C++])
103 cvc4_save_LIBS="$LIBS"
104 cvc4_save_LDFLAGS="$LDFLAGS"
105 LDFLAGS="-static $LDFLAGS"
106 LIBS="-lreadline $1"
107 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <readline/readline.h>],
108 [readline("")])],
109 [READLINE_LIBS="-lreadline $1"],
110 [])
111 LIBS="$cvc4_save_LIBS"
112 LDFLAGS="$cvc4_save_LDFLAGS"
113 AC_LANG_POP([C++])
114 fi
115 ])# CVC4_TRY_STATIC_READLINE_WITH