~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to m4/pandora_have_libreadline.m4

  • Committer: Monty Taylor
  • Date: 2008-11-16 05:36:13 UTC
  • mto: (584.1.9 devel)
  • mto: This revision was merged to the branch mainline in revision 589.
  • Revision ID: monty@inaugust.com-20081116053613-bld4rqxhlkb49c02
Split out cache_row and type_holder.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# SYNOPSIS
3
 
#
4
 
#   PANDORA_HAVE_LIBREADLINE
5
 
#
6
 
# DESCRIPTION
7
 
#
8
 
#   Searches for a readline compatible library. If found, defines
9
 
#   `HAVE_LIBREADLINE'. If the found library has the `add_history'
10
 
#   function, sets also `HAVE_READLINE_HISTORY'. Also checks for the
11
 
#   locations of the necessary include files and sets `HAVE_READLINE_H'
12
 
#   or `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or
13
 
#   'HAVE_HISTORY_H' if the corresponding include files exists.
14
 
#
15
 
#   The libraries that may be readline compatible are `libedit',
16
 
#   `libeditline' and `libreadline'. Sometimes we need to link a
17
 
#   termcap library for readline to work, this macro tests these cases
18
 
#   too by trying to link with `libtermcap', `libcurses' or
19
 
#   `libncurses' before giving up.
20
 
#
21
 
#   Here is an example of how to use the information provided by this
22
 
#   macro to perform the necessary includes or declarations in a C
23
 
#   file:
24
 
#
25
 
#     #ifdef HAVE_LIBREADLINE
26
 
#     #  if defined(HAVE_READLINE_READLINE_H)
27
 
#     #    include <readline/readline.h>
28
 
#     #  elif defined(HAVE_READLINE_H)
29
 
#     #    include <readline.h>
30
 
#     #  else /* !defined(HAVE_READLINE_H) */
31
 
#     extern char *readline ();
32
 
#     #  endif /* !defined(HAVE_READLINE_H) */
33
 
#     char *cmdline = NULL;
34
 
#     #else /* !defined(HAVE_READLINE_READLINE_H) */
35
 
#       /* no readline */
36
 
#     #endif /* HAVE_LIBREADLINE */
37
 
#
38
 
#     #ifdef HAVE_READLINE_HISTORY
39
 
#     #  if defined(HAVE_READLINE_HISTORY_H)
40
 
#     #    include <readline/history.h>
41
 
#     #  elif defined(HAVE_HISTORY_H)
42
 
#     #    include <history.h>
43
 
#     #  else /* !defined(HAVE_HISTORY_H) */
44
 
#     extern void add_history ();
45
 
#     extern int write_history ();
46
 
#     extern int read_history ();
47
 
#     #  endif /* defined(HAVE_READLINE_HISTORY_H) */
48
 
#       /* no history */
49
 
#     #endif /* HAVE_READLINE_HISTORY */
50
 
#
51
 
# LAST MODIFICATION
52
 
#
53
 
#   2009-11-17
54
 
#
55
 
# Based on VL_LIB_READLINE from  Ville Laurikari
56
 
#
57
 
# COPYLEFT
58
 
#
59
 
#   Copyright (C) 2009 Monty Taylor
60
 
#   Copyright (C) 2002 Ville Laurikari <vl@iki.fi>
61
 
#
62
 
#   Copying and distribution of this file, with or without
63
 
#   modification, are permitted in any medium without royalty provided
64
 
#   the copyright notice and this notice are preserved.
65
 
 
66
 
AC_DEFUN([PANDORA_CHECK_TIOCGWINSZ],[
67
 
  AC_CACHE_CHECK([for TIOCGWINSZ in sys/ioctl.h],
68
 
    [pandora_cv_tiocgwinsz_in_ioctl],[
69
 
    AC_COMPILE_IFELSE([
70
 
      AC_LANG_PROGRAM([[
71
 
#include <sys/types.h>
72
 
#include <sys/ioctl.h>
73
 
      ]],[[
74
 
int x= TIOCGWINSZ;
75
 
      ]])
76
 
    ],[
77
 
      pandora_cv_tiocgwinsz_in_ioctl=yes
78
 
    ],[
79
 
      pandora_cv_tiocgwinsz_in_ioctl=no
80
 
    ])
81
 
  ])
82
 
  AS_IF([test "$pandora_cv_tiocgwinsz_in_ioctl" = "yes"],[   
83
 
    AC_DEFINE([GWINSZ_IN_SYS_IOCTL], [1],
84
 
              [READLINE: your system defines TIOCGWINSZ in sys/ioctl.h.])
85
 
  ])
86
 
])
87
 
 
88
 
AC_DEFUN([PANDORA_CHECK_RL_COMPENTRY], [
89
 
  AC_CACHE_CHECK([defined rl_compentry_func_t], [pandora_cv_rl_compentry],[
90
 
    AC_COMPILE_IFELSE([
91
 
      AC_LANG_PROGRAM([[
92
 
#include "stdio.h"
93
 
#include "readline/readline.h"
94
 
      ]],[[
95
 
rl_compentry_func_t *func2= (rl_compentry_func_t*)0;
96
 
      ]])
97
 
    ],[
98
 
      pandora_cv_rl_compentry=yes
99
 
    ],[
100
 
      pandora_cv_rl_compentry=no
101
 
    ])
102
 
  ])
103
 
  AS_IF([test "$pandora_cv_rl_compentry" = "yes"],[
104
 
    AC_DEFINE([HAVE_RL_COMPENTRY], [1],
105
 
              [Does system provide rl_compentry_func_t])
106
 
  ])
107
 
 
108
 
  save_CXXFLAGS="${CXXFLAGS}"
109
 
  CXXFLAGS="${AM_CXXFLAGS} ${CXXFLAGS}"
110
 
  AC_LANG_PUSH(C++)
111
 
  AC_CACHE_CHECK([rl_compentry_func_t works], [pandora_cv_rl_compentry_works],[
112
 
    AC_COMPILE_IFELSE([
113
 
      AC_LANG_PROGRAM([[
114
 
#include "stdio.h"
115
 
#include "readline/readline.h"
116
 
      ]],[[
117
 
rl_completion_entry_function= (rl_compentry_func_t*)NULL;
118
 
      ]])
119
 
    ],[
120
 
      pandora_cv_rl_compentry_works=yes
121
 
    ],[
122
 
      pandora_cv_rl_compentry_works=no
123
 
    ])
124
 
  ])
125
 
  AS_IF([test "$pandora_cv_rl_compentry_works" = "yes"],[
126
 
    AC_DEFINE([HAVE_WORKING_RL_COMPENTRY], [1],
127
 
              [Does system provide an rl_compentry_func_t that is usable])
128
 
  ])
129
 
  CXXFLAGS="${save_CXXFLAGS}"
130
 
  AC_LANG_POP()
131
 
])
132
 
 
133
 
 
134
 
AC_DEFUN([PANDORA_CHECK_RL_COMPLETION_FUNC], [
135
 
  AC_CACHE_CHECK([defined rl_completion_func_t], [pandora_cv_rl_completion],[
136
 
    AC_COMPILE_IFELSE([
137
 
      AC_LANG_PROGRAM([[
138
 
#include "stdio.h"
139
 
#include "readline/readline.h"
140
 
      ]],[[
141
 
rl_completion_func_t *func1= (rl_completion_func_t*)0;
142
 
      ]])
143
 
    ],[
144
 
      pandora_cv_rl_completion=yes
145
 
    ],[
146
 
      pandora_cv_rl_completion=no
147
 
    ])
148
 
  ])
149
 
  AS_IF([test "$pandora_cv_rl_completion" = "yes"],[
150
 
    AC_DEFINE([HAVE_RL_COMPLETION], [1],
151
 
              [Does system provide rl_completion_func_t])
152
 
  ])
153
 
])
154
 
 
155
 
AC_DEFUN([_PANDORA_SEARCH_LIBREADLINE], [
156
 
 
157
 
  save_LIBS="${LIBS}"
158
 
  LIBS=""
159
 
 
160
 
  AC_CACHE_CHECK([for a readline compatible library],
161
 
                 ac_cv_libreadline, [
162
 
    ORIG_LIBS="$LIBS"
163
 
    for readline_lib in readline edit editline; do
164
 
      for termcap_lib in "" termcap curses ncurses; do
165
 
        if test -z "$termcap_lib"; then
166
 
          TRY_LIB="-l$readline_lib"
167
 
        else
168
 
          TRY_LIB="-l$readline_lib -l$termcap_lib"
169
 
        fi
170
 
        LIBS="$ORIG_LIBS $TRY_LIB"
171
 
        AC_TRY_LINK_FUNC(readline, ac_cv_libreadline="$TRY_LIB")
172
 
        if test -n "$ac_cv_libreadline"; then
173
 
          break
174
 
        fi
175
 
      done
176
 
      if test -n "$ac_cv_libreadline"; then
177
 
        break
178
 
      fi
179
 
    done
180
 
    if test -z "$ac_cv_libreadline"; then
181
 
      ac_cv_libreadline="no"
182
 
      LIBS="$ORIG_LIBS"
183
 
    fi
184
 
  ])
185
 
 
186
 
  if test "$ac_cv_libreadline" != "no"; then
187
 
    AC_DEFINE(HAVE_LIBREADLINE, 1,
188
 
              [Define if you have a readline compatible library])
189
 
    AC_CHECK_HEADERS(readline.h readline/readline.h)
190
 
    AC_CACHE_CHECK([whether readline supports history],
191
 
                   ac_cv_libreadline_history, [
192
 
      ac_cv_libreadline_history="no"
193
 
      AC_TRY_LINK_FUNC(add_history, ac_cv_libreadline_history="yes")
194
 
    ])
195
 
    if test "$ac_cv_libreadline_history" = "yes"; then
196
 
      AC_DEFINE(HAVE_READLINE_HISTORY, 1,
197
 
                [Define if your readline library has \`add_history'])
198
 
      AC_CHECK_HEADERS(history.h readline/history.h)
199
 
    fi
200
 
  fi
201
 
  PANDORA_CHECK_RL_COMPENTRY  
202
 
  PANDORA_CHECK_RL_COMPLETION_FUNC
203
 
  PANDORA_CHECK_TIOCGWINSZ
204
 
 
205
 
 
206
 
  READLINE_LIBS="${LIBS}"
207
 
  LIBS="${save_LIBS}"
208
 
  AC_SUBST(READLINE_LIBS)
209
 
 
210
 
  AM_CONDITIONAL(HAVE_LIBREADLINE, [test "x${ac_cv_libreadline}" = "xyes"])
211
 
])
212
 
 
213
 
AC_DEFUN([_PANDORA_HAVE_LIBREADLINE],[
214
 
 
215
 
  AC_ARG_ENABLE([libreadline],
216
 
    [AS_HELP_STRING([--disable-libreadline],
217
 
      [Build with libreadline support @<:@default=on@:>@])],
218
 
    [ac_enable_libreadline="$enableval"],
219
 
    [ac_enable_libreadline="yes"])
220
 
 
221
 
  _PANDORA_SEARCH_LIBREADLINE
222
 
])
223
 
 
224
 
 
225
 
AC_DEFUN([PANDORA_HAVE_LIBREADLINE],[
226
 
  AC_REQUIRE([_PANDORA_HAVE_LIBREADLINE])
227
 
])
228
 
 
229
 
AC_DEFUN([_PANDORA_REQUIRE_LIBREADLINE],[
230
 
  ac_enable_libreadline="yes"
231
 
  _PANDORA_SEARCH_LIBREADLINE
232
 
 
233
 
  AS_IF([test "x$ac_cv_libreadline" = "xno"],
234
 
    AC_MSG_ERROR([libreadline is required for ${PACKAGE}. On Debian this can be found in libreadline5-dev. On RedHat this can be found in readline-devel.]))
235
 
 
236
 
])
237
 
 
238
 
AC_DEFUN([PANDORA_REQUIRE_LIBREADLINE],[
239
 
  AC_REQUIRE([_PANDORA_REQUIRE_LIBREADLINE])
240
 
])
241
 
 
242