1PHP_ARG_WITH([libedit],
2  [for libedit readline replacement],
3  [AS_HELP_STRING([--with-libedit],
4    [Include libedit readline replacement (CLI/CGI only)])])
5
6  PHP_ARG_WITH([readline],
7    [for readline support],
8    [AS_HELP_STRING([[--with-readline[=DIR]]],
9      [Include readline support (CLI/CGI only)])])
10
11if test "$PHP_READLINE" && test "$PHP_READLINE" != "no"; then
12  for i in $PHP_READLINE /usr/local /usr; do
13    test -f $i/include/readline/readline.h && READLINE_DIR=$i && break
14  done
15
16  if test -z "$READLINE_DIR"; then
17    AC_MSG_ERROR(Please reinstall readline - I cannot find readline.h)
18  fi
19
20  PHP_ADD_INCLUDE($READLINE_DIR/include)
21
22  PHP_READLINE_LIBS=""
23  AC_CHECK_LIB(ncurses, tgetent,
24  [
25    PHP_ADD_LIBRARY(ncurses,,READLINE_SHARED_LIBADD)
26    PHP_READLINE_LIBS="$PHP_READLINE_LIBS -lncurses"
27  ],[
28    AC_CHECK_LIB(termcap, tgetent,
29    [
30      PHP_ADD_LIBRARY(termcap,,READLINE_SHARED_LIBADD)
31      PHP_READLINE_LIBS="$PHP_READLINE_LIBS -ltermcap"
32    ])
33  ])
34
35  PHP_CHECK_LIBRARY(readline, readline,
36  [
37    PHP_ADD_LIBRARY_WITH_PATH(readline, $READLINE_DIR/$PHP_LIBDIR, READLINE_SHARED_LIBADD)
38  ], [
39    AC_MSG_ERROR(readline library not found)
40  ], [
41    -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS
42  ])
43
44  PHP_CHECK_LIBRARY(readline, rl_pending_input,
45  [], [
46    AC_MSG_ERROR([invalid readline installation detected. Try --with-libedit instead.])
47  ], [
48    -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS
49  ])
50
51  PHP_CHECK_LIBRARY(readline, rl_callback_read_char,
52  [
53    AC_DEFINE(HAVE_RL_CALLBACK_READ_CHAR, 1, [ ])
54  ],[],[
55    -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS
56  ])
57
58  PHP_CHECK_LIBRARY(readline, rl_on_new_line,
59  [
60    AC_DEFINE(HAVE_RL_ON_NEW_LINE, 1, [ ])
61  ],[],[
62    -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS
63  ])
64
65  PHP_CHECK_LIBRARY(readline, rl_completion_matches,
66  [
67    AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, [ ])
68  ],[],[
69    -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS
70  ])
71
72  AC_DEFINE(HAVE_HISTORY_LIST, 1, [ ])
73  AC_DEFINE(HAVE_LIBREADLINE, 1, [ ])
74
75  PHP_CHECK_LIBRARY(readline, rl_completion_matches,
76  [
77    AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, [ ])
78  ],[],[
79    -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS
80  ])
81
82elif test "$PHP_LIBEDIT" != "no"; then
83  if test "$PHP_LIBEDIT" != "yes"; then
84    AC_MSG_WARN([libedit directory ignored, rely on pkg-config])
85  fi
86
87  PKG_CHECK_MODULES([EDIT], [libedit])
88  PHP_EVAL_LIBLINE($EDIT_LIBS, READLINE_SHARED_LIBADD)
89  PHP_EVAL_INCLINE($EDIT_CFLAGS)
90
91  AC_CHECK_LIB(ncurses, tgetent,
92  [
93    PHP_ADD_LIBRARY(ncurses,,READLINE_SHARED_LIBADD)
94  ],[
95    AC_CHECK_LIB(termcap, tgetent,
96    [
97      PHP_ADD_LIBRARY(termcap,,READLINE_SHARED_LIBADD)
98    ])
99  ])
100
101  PHP_CHECK_LIBRARY(edit, readline,
102  [
103  ], [
104    AC_MSG_ERROR(edit library required by readline not found)
105  ], [
106    $READLINE_SHARED_LIBADD
107  ])
108
109  PHP_CHECK_LIBRARY(edit, rl_callback_read_char,
110  [
111    AC_DEFINE(HAVE_RL_CALLBACK_READ_CHAR, 1, [ ])
112  ],[],[
113    $READLINE_SHARED_LIBADD
114  ])
115
116  PHP_CHECK_LIBRARY(edit, rl_on_new_line,
117  [
118    AC_DEFINE(HAVE_RL_ON_NEW_LINE, 1, [ ])
119  ],[],[
120    $READLINE_SHARED_LIBADD
121  ])
122
123  PHP_CHECK_LIBRARY(edit, rl_completion_matches,
124  [
125    AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, [ ])
126  ],[],[
127    $READLINE_SHARED_LIBADD
128  ])
129
130  PHP_CHECK_LIBRARY(edit, history_list,
131  [
132    AC_DEFINE(HAVE_HISTORY_LIST, 1, [ ])
133  ],[],[
134    $READLINE_SHARED_LIBADD
135  ])
136
137  AC_DEFINE(HAVE_LIBEDIT, 1, [ ])
138fi
139
140if test "$PHP_READLINE" != "no" || test "$PHP_LIBEDIT" != "no"; then
141  dnl Add -Wno-strict-prototypes as depends on user libs
142  PHP_NEW_EXTENSION(readline, readline.c readline_cli.c, $ext_shared, cli, "-Wno-strict-prototypes")
143  PHP_SUBST(READLINE_SHARED_LIBADD)
144fi
145