1PHP_ARG_WITH([libedit], 2 [for libedit readline replacement], 3 [AS_HELP_STRING([--with-libedit], 4 [Include libedit readline replacement (CLI/CGI only)])]) 5 6if test "$PHP_LIBEDIT" = "no"; then 7 PHP_ARG_WITH([readline], 8 [for readline support], 9 [AS_HELP_STRING([[--with-readline[=DIR]]], 10 [Include readline support (CLI/CGI only)])]) 11else 12 dnl "register" the --with-readline option to prevent invalid "unknown 13 dnl configure option" warning 14 php_with_readline=no 15fi 16 17if test "$PHP_READLINE" && test "$PHP_READLINE" != "no"; then 18 for i in $PHP_READLINE /usr/local /usr; do 19 AS_IF([test -f $i/include/readline/readline.h], [READLINE_DIR=$i; break;]) 20 done 21 22 AS_VAR_IF([READLINE_DIR],, 23 [AC_MSG_ERROR([Please reinstall readline - I cannot find readline.h])]) 24 25 PHP_ADD_INCLUDE([$READLINE_DIR/include]) 26 27 PHP_READLINE_LIBS="" 28 AC_CHECK_LIB([ncurses], [tgetent], [ 29 PHP_ADD_LIBRARY([ncurses],, [READLINE_SHARED_LIBADD]) 30 PHP_READLINE_LIBS="$PHP_READLINE_LIBS -lncurses" 31 ], 32 [AC_CHECK_LIB([termcap], [tgetent], [ 33 PHP_ADD_LIBRARY([termcap],, [READLINE_SHARED_LIBADD]) 34 PHP_READLINE_LIBS="$PHP_READLINE_LIBS -ltermcap" 35 ]) 36 ]) 37 38 PHP_CHECK_LIBRARY([readline], [readline], 39 [PHP_ADD_LIBRARY_WITH_PATH([readline], 40 [$READLINE_DIR/$PHP_LIBDIR], 41 [READLINE_SHARED_LIBADD])], 42 [AC_MSG_FAILURE([The readline library not found.])], 43 [-L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS]) 44 45 PHP_CHECK_LIBRARY([readline], [rl_callback_read_char], 46 [AC_DEFINE([HAVE_RL_CALLBACK_READ_CHAR], [1])], 47 [], 48 [-L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS]) 49 50 PHP_CHECK_LIBRARY([readline], [rl_on_new_line], 51 [AC_DEFINE([HAVE_RL_ON_NEW_LINE], [1])], 52 [], 53 [-L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS]) 54 55 PHP_CHECK_LIBRARY([readline], [rl_completion_matches], 56 [AC_DEFINE([HAVE_RL_COMPLETION_MATCHES], [1])], 57 [], 58 [-L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS]) 59 60 CFLAGS_SAVE=$CFLAGS 61 LDFLAGS_SAVE=$LDFLAGS 62 LIBS_SAVE=$LIBS 63 CFLAGS="$CFLAGS $INCLUDES" 64 LDFLAGS="$LDFLAGS -L$READLINE_DIR/$PHP_LIBDIR" 65 LIBS="$LIBS -lreadline" 66 67 dnl Sanity and minimum version check if readline library has variable 68 dnl rl_pending_input. 69 AC_CHECK_DECL([rl_pending_input],, [AC_MSG_FAILURE([ 70 Invalid readline installation detected. Try --with-libedit instead. 71 ])], [ 72 #include <stdio.h> 73 #include <readline/readline.h> 74 ]) 75 76 AC_CHECK_DECL([rl_erase_empty_line], 77 [AC_DEFINE([HAVE_ERASE_EMPTY_LINE], [1])],, [ 78 #include <stdio.h> 79 #include <readline/readline.h> 80 ]) 81 CFLAGS=$CFLAGS_SAVE 82 LDFLAGS=$LDFLAGS_SAVE 83 LIBS=$LIBS_SAVE 84 85 AC_DEFINE([HAVE_HISTORY_LIST], [1]) 86 AC_DEFINE([HAVE_LIBREADLINE], [1], 87 [Define to 1 if readline extension uses the 'readline' library.]) 88 89elif test "$PHP_LIBEDIT" != "no"; then 90 AS_VAR_IF([PHP_LIBEDIT], [yes],, 91 [AC_MSG_WARN(m4_text_wrap([ 92 The libedit directory argument is not supported anymore, rely on 93 pkg-config. Replace '--with-libedit=$PHP_LIBEDIT' with '--with-libedit' 94 and use environment variables 'PKG_CONFIG_PATH', 'EDIT_LIBS', or 95 'EDIT_CFLAGS'. 96 ]))]) 97 98 PKG_CHECK_MODULES([EDIT], [libedit]) 99 PHP_EVAL_LIBLINE([$EDIT_LIBS], [READLINE_SHARED_LIBADD]) 100 PHP_EVAL_INCLINE([$EDIT_CFLAGS]) 101 102 AC_CHECK_LIB([ncurses], [tgetent], 103 [PHP_ADD_LIBRARY([ncurses],, [READLINE_SHARED_LIBADD])], 104 [AC_CHECK_LIB([termcap], [tgetent], 105 [PHP_ADD_LIBRARY([termcap],, [READLINE_SHARED_LIBADD])])]) 106 107 PHP_CHECK_LIBRARY([edit], [readline], 108 [], 109 [AC_MSG_FAILURE([The edit library required by readline extension not found.])], 110 [$READLINE_SHARED_LIBADD]) 111 112 PHP_CHECK_LIBRARY([edit], [rl_callback_read_char], 113 [AC_DEFINE([HAVE_RL_CALLBACK_READ_CHAR], [1], 114 [Define to 1 if edit/readline library has the 'rl_callback_read_char' 115 function.])], 116 [], 117 [$READLINE_SHARED_LIBADD]) 118 119 PHP_CHECK_LIBRARY([edit], [rl_on_new_line], 120 [AC_DEFINE([HAVE_RL_ON_NEW_LINE], [1], 121 [Define to 1 if edit/readline library has the 'rl_on_new_line' 122 function.])], 123 [], 124 [$READLINE_SHARED_LIBADD]) 125 126 PHP_CHECK_LIBRARY([edit], [rl_completion_matches], 127 [AC_DEFINE([HAVE_RL_COMPLETION_MATCHES], [1], 128 [Define to 1 if edit/readline library has the 'rl_completion_matches' 129 function.])], 130 [], 131 [$READLINE_SHARED_LIBADD]) 132 133 PHP_CHECK_LIBRARY([edit], [history_list], 134 [AC_DEFINE([HAVE_HISTORY_LIST], [1], 135 [Define to 1 if edit/readline library has the 'history_list' function.])], 136 [], 137 [$READLINE_SHARED_LIBADD]) 138 139 CFLAGS_SAVE=$CFLAGS 140 LIBS_SAVE=$LIBS 141 CFLAGS="$CFLAGS $EDIT_CFLAGS" 142 LIBS="$LIBS $EDIT_LIBS" 143 AC_CHECK_DECL([rl_erase_empty_line], 144 [AC_DEFINE([HAVE_ERASE_EMPTY_LINE], [1], 145 [Define to 1 if edit/readline library has the 'rl_erase_empty_line' 146 global variable.])],, 147 [#include <editline/readline.h>]) 148 CFLAGS=$CFLAGS_SAVE 149 LIBS=$LIBS_SAVE 150 151 AC_DEFINE([HAVE_LIBEDIT], [1], 152 [Define to 1 if readline extension uses the 'libedit' library.]) 153fi 154 155if test "$PHP_READLINE" != "no" || test "$PHP_LIBEDIT" != "no"; then 156 dnl Add -Wno-strict-prototypes as depends on user libs 157 PHP_NEW_EXTENSION([readline], 158 [readline.c readline_cli.c], 159 [$ext_shared], 160 [cli], 161 [-Wno-strict-prototypes]) 162 PHP_SUBST([READLINE_SHARED_LIBADD]) 163fi 164