- add libevent support
[m6w6/ext-http] / config9.m4
index 1fcb91d3971e70d26d3d921057212046b862a032..82690f5997ecc3c4d80c966ae1a261a066dfd317 100644 (file)
@@ -4,18 +4,22 @@ dnl vim: noet ts=1 sw=1
 
 PHP_ARG_ENABLE([http], [whether to enable extended HTTP support],
 [  --enable-http           Enable extended HTTP support])
+PHP_ARG_WITH([http-shared-deps], [whether to depend on extensions which have been built shared],
+[  --with-http-shared-deps
+                           HTTP: disable to not depend on extensions like hash,
+                                 iconv and session (when built shared)], $PHP_HTTP, $PHP_HTTP)
 PHP_ARG_WITH([http-curl-requests], [whether to enable cURL HTTP request support],
 [  --with-http-curl-requests[=LIBCURLDIR]
                            HTTP: with cURL request support], $PHP_HTTP, $PHP_HTTP)
+PHP_ARG_WITH([http-libevent-dir], [whether to enable libevent support fur cURL],
+[  --with-http-libevent-dir[=LIBEVENTDIR]
+                           HTTP: libevent install directory], $PHP_HTTP_CURL_REQUESTS, "")
 PHP_ARG_WITH([http-zlib-compression], [whether to enable zlib encodings support],
 [  --with-http-zlib-compression[=LIBZDIR]
                            HTTP: with zlib encodings support], $PHP_HTTP, $PHP_HTTP)
 PHP_ARG_WITH([http-magic-mime], [whether to enable response content type guessing],
 [  --with-http-magic-mime[=LIBMAGICDIR]
                            HTTP: with magic mime response content type guessing], "no", "no")
-PHP_ARG_WITH([http-shared-deps], [whether to depend on extensions which have been built shared],
-[  --with-http-shared-deps  HTTP: disable to not depend on extensions like hash,
-                                 iconv and session (when built shared)], $PHP_HTTP, $PHP_HTTP)
 
 if test "$PHP_HTTP" != "no"; then
 
@@ -170,14 +174,14 @@ dnl ----
                AC_MSG_CHECKING([for curl version >= 7.12.3])
                CURL_VERSION=`$CURL_CONFIG --version | $SED -e 's/[[^0-9\.]]//g'`
                AC_MSG_RESULT([$CURL_VERSION])
-               if test `echo $CURL_VERSION | $AWK '{print $1*10000 + $2*100 + $3}'` -lt 71203; then
+               if test `echo $CURL_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*10000 + $2*100 + $3}'` -lt 71203; then
                        AC_MSG_ERROR([libcurl version greater or equal to 7.12.3 required])
                fi
                
                CURL_LIBS=`$CURL_CONFIG --libs`
                
                AC_MSG_CHECKING([for SSL support in libcurl])
-               CURL_SSL=`$CURL_CONFIG --features | $EGREP SSL`
+               CURL_SSL=`$CURL_CONFIG --feature | $EGREP SSL`
                if test "$CURL_SSL" = "SSL"; then
                        AC_MSG_RESULT([yes])
                        AC_DEFINE([HTTP_HAVE_SSL], [1], [ ])
@@ -211,11 +215,30 @@ dnl ----
                        AC_MSG_RESULT([no])
                fi
                
+               AC_MSG_CHECKING([for bundled SSL CA info])
+               CURL_CAINFO=
+               for i in `$CURL_CONFIG --ca` "/etc/ssl/certs/ca-certificates.crt"; do
+                       if test -f "$i"; then
+                               CURL_CAINFO="$i"
+                               break
+                       fi
+               done
+               if test -z "$CURL_CAINFO"; then
+                       AC_MSG_RESULT([not found])
+               else
+                       AC_MSG_RESULT([$CURL_CAINFO])
+                       AC_DEFINE_UNQUOTED([HTTP_CURL_CAINFO], ["$CURL_CAINFO"], [path to bundled SSL CA info])
+               fi
+               
                PHP_ADD_INCLUDE($CURL_DIR/include)
                PHP_ADD_LIBRARY_WITH_PATH(curl, $CURL_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
                PHP_EVAL_LIBLINE($CURL_LIBS, HTTP_SHARED_LIBADD)
                AC_DEFINE([HTTP_HAVE_CURL], [1], [Have cURL support])
                
+               PHP_CHECK_LIBRARY(curl, curl_share_strerror, 
+                       [AC_DEFINE([HAVE_CURL_SHARE_STRERROR], [1], [ ])], [ ],
+                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+               )
                PHP_CHECK_LIBRARY(curl, curl_multi_strerror, 
                        [AC_DEFINE([HAVE_CURL_MULTI_STRERROR], [1], [ ])], [ ], 
                        [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
@@ -242,6 +265,43 @@ dnl ----
                        [AC_DEFINE([HAVE_CURL_MULTI_SETOPT], [1], [ ])], [ ], 
                        [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
                )
+               PHP_CHECK_LIBRARY(curl, curl_multi_timeout, 
+                       [AC_DEFINE([HAVE_CURL_MULTI_TIMEOUT], [1], [ ])], [ ],
+                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+               )
+               
+               dnl ----
+               dnl EVENT
+               dnl ----
+               
+               AC_MSG_CHECKING([for event.h])
+               EVENT_DIR=
+               for i in "$PHP_HTTP_LIBEVENT_DIR" /usr/local /usr /opt; do
+                       if test -f "$i/include/event.h"; then
+                               EVENT_DIR=$i
+                               break
+                       fi
+               done
+               if test -z "$EVENT_DIR"; then
+                       AC_MSG_RESULT([not found])
+                       AC_MSG_WARN([continuing without libevent support])
+               else
+                       AC_MSG_RESULT([found in $EVENT_DIR])
+                       AC_MSG_CHECKING([for libcurl version >= 7.16.0])
+                       AC_MSG_RESULT([$CURL_VERSION])
+                       if test `echo $CURL_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*10000 + $2*100 + $3}'` -lt 71600; then
+                               AC_MSG_WARN([libcurl version greater or equal to 7.16.0 required; continuing without libevent support])
+                       else
+                               PHP_ADD_INCLUDE($EVENT_DIR/include)
+                               PHP_ADD_LIBRARY_WITH_PATH(event, $EVENT_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
+                               AC_DEFINE([HTTP_HAVE_EVENT], [1], [Have libevent support for cURL])
+                               PHP_CHECK_LIBRARY(curl, curl_multi_socket_action, 
+                                       [AC_DEFINE([HAVE_CURL_MULTI_SOCKET_ACTION], [1], [ ])], [ ],
+                                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+                               )
+                       fi
+               fi
+               
        fi
 
 dnl ----
@@ -310,12 +370,13 @@ dnl ----
        PHP_HTTP_SOURCES="missing.c http.c http_functions.c phpstr/phpstr.c \
                http_util_object.c http_message_object.c http_request_object.c http_request_pool_api.c \
                http_response_object.c http_exception_object.c http_requestpool_object.c \
-               http_api.c http_cache_api.c http_request_api.c http_date_api.c \
+               http_api.c http_cache_api.c http_request_api.c http_request_info.c http_date_api.c \
                http_headers_api.c http_message_api.c http_send_api.c http_url_api.c \
                http_info_api.c http_request_method_api.c http_encoding_api.c \
                http_filter_api.c http_request_body_api.c http_querystring_object.c \
                http_deflatestream_object.c http_inflatestream_object.c http_cookie_api.c \
-               http_querystring_api.c"
+               http_querystring_api.c http_request_datashare_api.c http_requestdatashare_object.c \
+               http_persistent_handle_api.c"
        
        PHP_NEW_EXTENSION([http], $PHP_HTTP_SOURCES, $ext_shared)
        
@@ -334,7 +395,8 @@ dnl ----
                php_http_exception_object.h php_http_message_object.h php_http_request_object.h \
                php_http_requestpool_object.h php_http_response_object.h php_http_util_object.h \
                php_http_querystring_object.h php_http_deflatestream_object.h php_http_inflatestream_object.h \
-               php_http_cookie_api.h php_http_querystring_api.h"
+               php_http_cookie_api.h php_http_querystring_api.h php_http_request_datashare_api.h php_http_requestdatashare_object.h \
+               php_http_persistent_handle_api.h"
        ifdef([PHP_INSTALL_HEADERS], [
                PHP_INSTALL_HEADERS(ext/http, $PHP_HTTP_HEADERS)
        ], [