- add libevent support
[m6w6/ext-http] / config9.m4
index 8bedac7fec173d1f098ce9e709ed4acf7871160b..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
 
@@ -177,7 +181,7 @@ dnl ----
                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,6 +215,21 @@ 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)
@@ -250,6 +269,39 @@ dnl ----
                        [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 ----
@@ -323,7 +375,8 @@ dnl ----
                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_request_datashare_api.c http_requestdatashare_object.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)
        
@@ -342,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_request_datashare_api.h php_http_requestdatashare_object.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)
        ], [