Merge commit 'feccd2d3100fd2964d4c2df58ab3da7ce4949a66' into vm-check
[bpt/guile.git] / guile-readline / configure.in
CommitLineData
691f5a4d
MV
1AC_PREREQ(2.50)
2
c4d088f5
LC
3dnl Don't use "echo -n", which is not portable (e.g., not available on
4dnl MacOS X). Instead, use `patsubst' to remove the newline.
6fb858d5 5AC_INIT(guile-readline,
c4d088f5
LC
6 patsubst(m4_esyscmd(. ../GUILE-VERSION && echo ${GUILE_VERSION}), [
7]),
8 [bug-guile@gnu.org])
9
5be9f729 10AC_CONFIG_AUX_DIR([.])
6fb858d5 11AC_CONFIG_SRCDIR(readline.c)
5be9f729 12AM_CONFIG_HEADER([guile-readline-config.h])
6fb858d5
RB
13AM_INIT_AUTOMAKE([foreign no-define])
14
395753a1 15. $srcdir/../GUILE-VERSION
c374ab69 16
78f81266 17AC_PROG_INSTALL
c374ab69 18AC_PROG_CC
52b30d5e 19AM_PROG_CC_STDC
78f81266 20AC_LIBTOOL_WIN32_DLL
c78a96e0 21AC_PROG_LIBTOOL
c374ab69 22
78f81266
MV
23dnl
24dnl Check for Winsock and other functionality on Win32 (*not* CygWin)
25dnl
26AC_CYGWIN
27AC_MINGW32
28EXTRA_DEFS=""
29if test "$MINGW32" = "yes" ; then
30 if test $enable_shared = yes ; then
8f99e3f3 31 EXTRA_DEFS="-DSCM_IMPORT"
78f81266
MV
32 fi
33fi
34AC_SUBST(EXTRA_DEFS)
35
49dd8ff3 36for termlib in ncurses curses termcap terminfo termlib ; do
88a1ce4c 37 AC_CHECK_LIB(${termlib}, tgoto,
c374ab69
MV
38 [LIBS="-l${termlib} $LIBS"; break])
39done
40
49dd8ff3
MV
41AC_CHECK_LIB(readline, readline)
42if test $ac_cv_lib_readline_readline = no; then
66e28f02 43 AC_MSG_WARN([libreadline was not found on your system.])
c374ab69
MV
44fi
45
60113271
MV
46AC_CHECK_FUNCS(siginterrupt rl_clear_signals rl_cleanup_after_signal)
47
dcb17187
MV
48dnl Check for modern readline naming
49AC_CHECK_FUNCS(rl_filename_completion_function)
50
6a945c34
NJ
51dnl Check for rl_get_keymap. We only use this for deciding whether to
52dnl install paren matching on the Guile command line (when using
53dnl readline for input), so it's completely optional.
54AC_CHECK_FUNCS(rl_get_keymap)
55
60113271
MV
56dnl Check for rl_pre_input_hook. This is more complicated because on
57dnl some systems (HP/UX), the linker wont let us treat
58dnl rl_pre_input_hook as a function when it really is a function
59dnl pointer.
60
61AC_MSG_CHECKING([for rl_pre_input_hook])
62AC_CACHE_VAL(ac_cv_var_rl_pre_input_hook,
63[AC_TRY_LINK([
64#include <stdio.h>
65#include <readline/readline.h>
66], [
67rl_pre_input_hook = 0;
68],
69ac_cv_var_rl_pre_input_hook=yes,
70ac_cv_var_rl_pre_input_hook=no)])
71AC_MSG_RESULT($ac_cv_var_rl_pre_input_hook)
72if test $ac_cv_var_rl_pre_input_hook = yes; then
5be9f729
KR
73 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK,1,
74 [Define if rl_pre_input_hook is available.])
60113271 75fi
49a2970b
MD
76
77
78AC_MSG_CHECKING(if readline clears SA_RESTART flag for SIGWINCH)
79AC_CACHE_VAL(guile_cv_sigwinch_sa_restart_cleared,
80AC_TRY_RUN([#include <signal.h>
81#include <stdio.h>
82#include <readline/readline.h>
83
84int
85hook ()
86{
87 struct sigaction action;
88
89 sigaction (SIGWINCH, NULL, &action);
90 rl_cleanup_after_signal();
88a1ce4c 91
49a2970b
MD
92 /* exit with 0 if readline disabled SA_RESTART */
93 exit (action.sa_flags & SA_RESTART);
94}
88a1ce4c 95
49a2970b
MD
96int
97main ()
98{
99 struct sigaction action;
88a1ce4c 100
49a2970b
MD
101 sigaction (SIGWINCH, NULL, &action);
102 action.sa_flags |= SA_RESTART;
103 sigaction (SIGWINCH, &action, NULL);
88a1ce4c 104
3894870b
MV
105 /* Give readline something to read. Otherwise, it might hang, for
106 example when run as a background process with job control.
107 */
108 rl_instream = fopen ("/dev/null", "r");
109 if (rl_instream == NULL)
110 {
111 perror ("/dev/null");
112 exit (1);
113 }
114
49a2970b
MD
115 rl_pre_input_hook = hook;
116 readline ("");
117}],
118guile_cv_sigwinch_sa_restart_cleared=yes,
119guile_cv_sigwinch_sa_restart_cleared=no,
120guile_cv_sigwinch_sa_restart_cleared=yes))
121AC_MSG_RESULT($guile_cv_sigwinch_sa_restart_cleared)
122if test $guile_cv_sigwinch_sa_restart_cleared = yes; then
5be9f729
KR
123 AC_DEFINE(GUILE_SIGWINCH_SA_RESTART_CLEARED, 1,
124 [Define if readline disables SA_RESTART.])
49a2970b 125fi
c374ab69
MV
126
127AC_CACHE_CHECK([for rl_getc_function pointer in readline],
128 ac_cv_var_rl_getc_function,
129 [AC_TRY_LINK([
130#include <stdio.h>
131#include <readline/readline.h>],
f30a1c95 132 [printf ("%ld", (long) rl_getc_function)],
c374ab69
MV
133 [ac_cv_var_rl_getc_function=yes],
134 [ac_cv_var_rl_getc_function=no])])
135if test "${ac_cv_var_rl_getc_function}" = "yes"; then
587cd126
RB
136 AC_DEFINE(HAVE_RL_GETC_FUNCTION, 1,
137 [Define if your readline library has the rl_getc_function variable.])
c374ab69
MV
138fi
139
c2c27602 140if test $ac_cv_lib_readline_readline = yes \
c374ab69 141 -a $ac_cv_var_rl_getc_function = no; then
5ca264aa
MD
142 AC_MSG_WARN([*** libreadline is too old on your system.])
143 AC_MSG_WARN([*** You need readline version 2.1 or later.])
c374ab69
MV
144fi
145
146AC_CHECK_FUNCS(strdup)
147
88a1ce4c 148. $srcdir/LIBGUILEREADLINE-VERSION
e5ab7101 149AC_SUBST(LIBGUILEREADLINE_MAJOR)
cbab4855
RB
150AC_SUBST(LIBGUILEREADLINE_INTERFACE_CURRENT)
151AC_SUBST(LIBGUILEREADLINE_INTERFACE_REVISION)
152AC_SUBST(LIBGUILEREADLINE_INTERFACE_AGE)
153AC_SUBST(LIBGUILEREADLINE_INTERFACE)
154
41d8c90a
RB
155AC_SUBST(GUILE_EFFECTIVE_VERSION)
156
6fb858d5 157AC_CONFIG_FILES(Makefile ice-9/Makefile)
691f5a4d 158AC_OUTPUT