- config.m4 moved to config9.m4
authorMichael Wallner <mike@php.net>
Wed, 7 Jun 2006 14:42:04 +0000 (14:42 +0000)
committerMichael Wallner <mike@php.net>
Wed, 7 Jun 2006 14:42:04 +0000 (14:42 +0000)
- implement --with[out]-http-shared-deps properly

13 files changed:
config.m4 [deleted file]
config.w32
config9.m4 [new file with mode: 0644]
http.c
http_functions.c
http_message_object.c
http_querystring_api.c
http_querystring_object.c
package2.xml
php_http.h
php_http_cache_api.h
php_http_querystring_api.h
php_http_querystring_object.h

diff --git a/config.m4 b/config.m4
deleted file mode 100644 (file)
index b366a33..0000000
--- a/config.m4
+++ /dev/null
@@ -1,271 +0,0 @@
-dnl config.m4 for pecl/http
-dnl $Id$
-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-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-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 shared extensions],
-[  --with-http-shared-deps HTTP: disable to not depend on shared extensions
-                           like SPL, hash, iconv and session], $PHP_HTTP, $PHP_HTTP)
-
-if test "$PHP_HTTP" != "no"; then
-
-       ifdef([AC_PROG_EGREP], [
-               AC_PROG_EGREP
-       ], [
-               AC_CHECK_PROG(EGREP, egrep, egrep)
-       ])
-       ifdef([AC_PROG_SED], [
-               AC_PROG_SED
-       ], [
-               ifdef([LT_AC_PROG_SED], [
-                       LT_AC_PROG_SED
-               ], [
-                       AC_CHECK_PROG(SED, sed, sed)
-               ])
-       ])
-
-       if test "PHP_HTTP_SHARED_DEPS" != "no"; then
-               AC_DEFINE([HTTP_SHARED_DEPS], [1], [ ])
-       else
-               AC_DEFINE([HTTP_SHARED_DEPS], [0], [ ])
-       fi
-
-dnl -------
-dnl HEADERS
-dnl -------
-       AC_CHECK_HEADERS([netdb.h unistd.h])
-
-dnl ----
-dnl ZLIB
-dnl ----
-       if test "$PHP_HTTP_ZLIB_COMPRESSION" != "no"; then
-               AC_MSG_CHECKING([for zlib.h])
-               ZLIB_DIR=
-               for i in "$PHP_HTTP_ZLIB_COMPRESSION" "$PHP_ZLIB_DIR" "$PHP_ZLIB" /usr/local /usr /opt; do
-                       if test -f "$i/include/zlib.h"; then
-                               ZLIB_DIR=$i
-                               break;
-                       fi
-               done
-               if test -z "$ZLIB_DIR"; then
-                       AC_MSG_RESULT([not found])
-                       AC_MSG_WARN([could not find zlib.h])
-               else
-                       AC_MSG_RESULT([found in $ZLIB_DIR])
-                       AC_MSG_CHECKING([for zlib version >= 1.2.0.4])
-                       ZLIB_VERSION=`$EGREP "define ZLIB_VERSION" $ZLIB_DIR/include/zlib.h | $SED -e 's/[[^0-9\.]]//g'`
-                       AC_MSG_RESULT([$ZLIB_VERSION])
-                       if test `echo $ZLIB_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*1000000 + $2*10000 + $3*100 + $4}'` -lt 1020004; then
-                               AC_MSG_ERROR([libz version greater or equal to 1.2.0.4 required])
-                       else
-                               PHP_ADD_INCLUDE($ZLIB_DIR/include)
-                               PHP_ADD_LIBRARY_WITH_PATH(z, $ZLIB_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
-                               AC_DEFINE([HTTP_HAVE_ZLIB], [1], [Have zlib support])
-                       fi
-               fi
-       fi
-       
-dnl ----
-dnl CURL
-dnl ----
-       if test "$PHP_HTTP_CURL_REQUESTS" != "no"; then
-               AC_MSG_CHECKING([for curl/curl.h])
-               CURL_DIR=
-               for i in "$PHP_HTTP_CURL_REQUESTS" /usr/local /usr /opt; do
-                       if test -f "$i/include/curl/curl.h"; then
-                               CURL_DIR=$i
-                               break
-                       fi
-               done
-               if test -z "$CURL_DIR"; then
-                       AC_MSG_RESULT([not found])
-                       AC_MSG_ERROR([could not find curl/curl.h])
-               else
-                       AC_MSG_RESULT([found in $CURL_DIR])
-               fi
-               
-               AC_MSG_CHECKING([for curl-config])
-               CURL_CONFIG=
-               for i in "$CURL_DIR/bin/curl-config" "$CURL_DIR/curl-config" `which curl-config`; do
-                       if test -x "$i"; then
-                               CURL_CONFIG=$i
-                               break
-                       fi
-               done
-               if test -z "$CURL_CONFIG"; then
-                       AC_MSG_RESULT([not found])
-                       AC_MSG_ERROR([could not find curl-config])
-               else
-                       AC_MSG_RESULT([found: $CURL_CONFIG])
-               fi
-               
-               dnl Debian stable has currently 7.13.2 (this is not a typo)
-               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
-                       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`
-               if test "$CURL_SSL" = "SSL"; then
-                       AC_MSG_RESULT([yes])
-                       AC_DEFINE([HTTP_HAVE_SSL], [1], [ ])
-                       
-                       AC_MSG_CHECKING([for SSL library used])
-                       CURL_SSL_FLAVOUR=
-                       for i in $CURL_LIBS; do
-                               if test "$i" = "-lssl"; then
-                                       CURL_SSL_FLAVOUR="openssl"
-                                       AC_MSG_RESULT([openssl])
-                                       AC_DEFINE([HTTP_HAVE_OPENSSL], [1], [ ])
-                                       AC_CHECK_HEADERS([openssl/crypto.h])
-                                       break
-                               elif test "$i" = "-lgnutls"; then
-                                       CURL_SSL_FLAVOUR="gnutls"
-                                       AC_MSG_RESULT([gnutls])
-                                       AC_DEFINE([HTTP_HAVE_GNUTLS], [1], [ ])
-                                       AC_CHECK_HEADERS([gcrypt.h])
-                                       break
-                               fi
-                       done
-                       if test -z "$CURL_SSL_FLAVOUR"; then
-                               AC_MSG_RESULT([unknown!])
-                               AC_MSG_WARN([Could not determine the type of SSL library used!])
-                               AC_MSG_WARN([Building will fail in ZTS mode!])
-                       fi
-               else
-                       AC_MSG_RESULT([no])
-               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_multi_strerror, 
-                       [AC_DEFINE([HAVE_CURL_MULTI_STRERROR], [1], [ ])], [ ], 
-                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
-               )
-               PHP_CHECK_LIBRARY(curl, curl_easy_strerror,
-                       [AC_DEFINE([HAVE_CURL_EASY_STRERROR], [1], [ ])], [ ],
-                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
-               )
-               PHP_CHECK_LIBRARY(curl, curl_easy_reset,
-                       [AC_DEFINE([HAVE_CURL_EASY_RESET], [1], [ ])], [ ],
-                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
-               )
-               dnl Debian suddenly (>=7.14.1-2) hides all symbols not starting with "curl"
-               PHP_CHECK_LIBRARY(curl, Curl_getFormData,
-                       [AC_DEFINE([HAVE_CURL_GETFORMDATA], [1], [ ])], [ ],
-                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
-               )
-       fi
-
-dnl ----
-dnl MAGIC
-dnl ----
-       if test "$PHP_HTTP_MAGIC_MIME" != "no"; then
-               AC_MSG_CHECKING([for magic.h])
-               MAGIC_DIR=
-               for i in "$PHP_HTTP_MAGIC_MIME" /usr/local /usr /opt; do
-                       if test -f "$i/include/magic.h"; then
-                               MAGIC_DIR=$i
-                               break
-                       fi
-               done
-               if test -z "$MAGIC_DIR"; then
-                       AC_MSG_RESULT([not found])
-                       AC_MSG_ERROR([could not find magic.h])
-               else
-                       AC_MSG_RESULT([found in $MAGIC_DIR])
-               fi
-               
-               PHP_ADD_INCLUDE($MAGIC_DIR/include)
-               PHP_ADD_LIBRARY_WITH_PATH(magic, $MAGIC_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
-               AC_DEFINE([HTTP_HAVE_MAGIC], [1], [Have magic mime support])
-       fi
-
-dnl ----
-dnl HASH
-dnl ----
-       AC_MSG_CHECKING(for ext/hash support)
-       if test -x "$PHP_EXECUTABLE"; then
-               if test "`$PHP_EXECUTABLE -m | $EGREP '^hash$'`" = "hash"; then
-                       if test -d ../hash; then
-                               PHP_ADD_INCLUDE([../hash])
-                       fi
-                       old_CPPFLAGS=$CPPFLAGS
-                       CPPFLAGS=$INCLUDES
-                       AC_MSG_RESULT([looking for php_hash.h])
-                       AC_CHECK_HEADER([ext/hash/php_hash.h], [
-                               AC_DEFINE([HTTP_HAVE_EXT_HASH_EXT_HASH], [1], [Have ext/hash support])
-                       ], [ 
-                               AC_CHECK_HEADER([hash/php_hash.h], [
-                                       AC_DEFINE([HTTP_HAVE_HASH_EXT_HASH], [1], [Have ext/hash support])
-                               ], [ 
-                                       AC_CHECK_HEADER([php_hash.h], [
-                                               AC_DEFINE([HTTP_HAVE_EXT_HASH], [1], [Have ext/hash support])
-                                       ])
-                               ])
-                       ])
-                       CPPFLAGS=$old_CPPFLAGS;
-               else
-                       AC_MSG_RESULT(disabled)
-               fi
-       elif test "$PHP_HASH" != "no" && test "x$PHP_HASH" != "x"; then
-               AC_MSG_RESULT(enabled)
-               ifdef([PHP_ADD_EXTENSION_DEP], [
-                       PHP_ADD_EXTENSION_DEP([http], [hash], 0)
-                       AC_DEFINE([HTTP_HAVE_EXT_HASH_EXT_HASH], [1], [Have ext/hash support])
-               ])
-       else
-               AC_MSG_RESULT(disabled)
-       fi
-
-dnl ----
-dnl DONE
-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_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"
-       PHP_NEW_EXTENSION([http], $PHP_HTTP_SOURCES, $ext_shared)
-       PHP_ADD_BUILD_DIR($ext_builddir/phpstr, 1)
-       PHP_SUBST([HTTP_SHARED_LIBADD])
-
-       PHP_HTTP_HEADERS="php_http_std_defs.h php_http.h php_http_api.h php_http_cache_api.h \
-               php_http_date_api.h php_http_headers_api.h php_http_info_api.h php_http_message_api.h \
-               php_http_request_api.h php_http_request_method_api.h php_http_send_api.h php_http_url_api.h \
-               php_http_encoding_api.h phpstr/phpstr.h missing.h php_http_request_body_api.h \
-               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"
-       ifdef([PHP_INSTALL_HEADERS], [
-               PHP_INSTALL_HEADERS(ext/http, $PHP_HTTP_HEADERS)
-       ], [
-               PHP_SUBST([PHP_HTTP_HEADERS])
-               PHP_ADD_MAKEFILE_FRAGMENT
-       ])
-
-       AC_DEFINE([HAVE_HTTP], [1], [Have extended HTTP support])
-fi
index c07e9d2..638273f 100644 (file)
@@ -61,6 +61,7 @@ if (PHP_HTTP != "no") {
                "/I\"" + configure_module_dirname + "/phpstr\"");
        ADD_SOURCES(configure_module_dirname + "/phpstr", "phpstr.c", "http");
        AC_DEFINE("HAVE_HTTP", 1, "Have extended HTTP support");
+       AC_DEFINE("HTTP_SHARED_DEPS", 1, "Depend on shared extensions");
        
        if (PHP_DEBUG != "no") {
                ADD_FLAG("CFLAGS_HTTP", "/W3");
diff --git a/config9.m4 b/config9.m4
new file mode 100644 (file)
index 0000000..648cc5b
--- /dev/null
@@ -0,0 +1,332 @@
+dnl config.m4 for pecl/http
+dnl $Id$
+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-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-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 shared extensions],
+[  --with-http-shared-deps HTTP: disable to not depend on shared extensions
+                           like SPL, hash, iconv and session], $PHP_HTTP, $PHP_HTTP)
+
+if test "$PHP_HTTP" != "no"; then
+
+       ifdef([AC_PROG_EGREP], [
+               AC_PROG_EGREP
+       ], [
+               AC_CHECK_PROG(EGREP, egrep, egrep)
+       ])
+       ifdef([AC_PROG_SED], [
+               AC_PROG_SED
+       ], [
+               ifdef([LT_AC_PROG_SED], [
+                       LT_AC_PROG_SED
+               ], [
+                       AC_CHECK_PROG(SED, sed, sed)
+               ])
+       ])
+       
+       if test "$PHP_HTTP_SHARED_DEPS" != "no"; then
+               AC_DEFINE([HTTP_SHARED_DEPS], [1], [ ])
+       else
+               AC_DEFINE([HTTP_SHARED_DEPS], [0], [ ])
+       fi
+       
+       dnl
+       dnl HTTP_SHARED_DEP(name[, code-if-yes[, code-if-not]])
+       dnl
+       AC_DEFUN([HTTP_SHARED_DEP], [
+               extname=$1
+               haveext=$[HTTP_HAVE_EXT_]translit($1,a-z_-,A-Z__)
+               
+               AC_MSG_CHECKING([whether to add a dependency on ext/$extname])
+               if test "$PHP_HTTP_SHARED_DEPS" = "no"; then
+                       AC_MSG_RESULT([no])
+                       $3
+               elif test "$haveext"; then
+                       AC_MSG_RESULT([yes])
+                       ifdef([PHP_ADD_EXTENSION_DEP], [
+                               PHP_ADD_EXTENSION_DEP([http], $1, 0)
+                       ])
+                       $2
+               else
+                       AC_MSG_RESULT([no])
+                       $3
+               fi
+       ])
+       
+       dnl
+       dnl HTTP_HAVE_PHP_EXT(name[, code-if-yes[, code-if-not]])
+       dnl
+       AC_DEFUN([HTTP_HAVE_PHP_EXT], [
+               extname=$1
+               haveext=$[PHP_]translit($1,a-z_-,A-Z__)
+               
+               AC_MSG_CHECKING([for ext/$extname support])
+               if test -x "$PHP_EXECUTABLE"; then
+                       if test "`$PHP_EXECUTABLE -m | $EGREP '^$extname$'`" = "$extname"; then
+                               [HTTP_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
+                               AC_MSG_RESULT([yes])
+                               $2
+                       else
+                               [HTTP_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
+                               AC_MSG_RESULT([no])
+                               $3
+                       fi
+               elif test "$haveext" != "no" && test "x$haveext" != "x"; then
+                       [HTTP_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
+                       AC_MSG_RESULT([yes])
+                       $2
+               else
+                       [HTTP_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
+                       AC_MSG_RESULT([no])
+                       $3
+               fi
+       ])
+
+dnl -------
+dnl HEADERS
+dnl -------
+       AC_CHECK_HEADERS([netdb.h unistd.h])
+
+dnl ----
+dnl ZLIB
+dnl ----
+       if test "$PHP_HTTP_ZLIB_COMPRESSION" != "no"; then
+               AC_MSG_CHECKING([for zlib.h])
+               ZLIB_DIR=
+               for i in "$PHP_HTTP_ZLIB_COMPRESSION" "$PHP_ZLIB_DIR" "$PHP_ZLIB" /usr/local /usr /opt; do
+                       if test -f "$i/include/zlib.h"; then
+                               ZLIB_DIR=$i
+                               break;
+                       fi
+               done
+               if test -z "$ZLIB_DIR"; then
+                       AC_MSG_RESULT([not found])
+                       AC_MSG_WARN([could not find zlib.h])
+               else
+                       AC_MSG_RESULT([found in $ZLIB_DIR])
+                       AC_MSG_CHECKING([for zlib version >= 1.2.0.4])
+                       ZLIB_VERSION=`$EGREP "define ZLIB_VERSION" $ZLIB_DIR/include/zlib.h | $SED -e 's/[[^0-9\.]]//g'`
+                       AC_MSG_RESULT([$ZLIB_VERSION])
+                       if test `echo $ZLIB_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*1000000 + $2*10000 + $3*100 + $4}'` -lt 1020004; then
+                               AC_MSG_ERROR([libz version greater or equal to 1.2.0.4 required])
+                       else
+                               PHP_ADD_INCLUDE($ZLIB_DIR/include)
+                               PHP_ADD_LIBRARY_WITH_PATH(z, $ZLIB_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
+                               AC_DEFINE([HTTP_HAVE_ZLIB], [1], [Have zlib support])
+                       fi
+               fi
+       fi
+       
+dnl ----
+dnl CURL
+dnl ----
+       if test "$PHP_HTTP_CURL_REQUESTS" != "no"; then
+               AC_MSG_CHECKING([for curl/curl.h])
+               CURL_DIR=
+               for i in "$PHP_HTTP_CURL_REQUESTS" /usr/local /usr /opt; do
+                       if test -f "$i/include/curl/curl.h"; then
+                               CURL_DIR=$i
+                               break
+                       fi
+               done
+               if test -z "$CURL_DIR"; then
+                       AC_MSG_RESULT([not found])
+                       AC_MSG_ERROR([could not find curl/curl.h])
+               else
+                       AC_MSG_RESULT([found in $CURL_DIR])
+               fi
+               
+               AC_MSG_CHECKING([for curl-config])
+               CURL_CONFIG=
+               for i in "$CURL_DIR/bin/curl-config" "$CURL_DIR/curl-config" `which curl-config`; do
+                       if test -x "$i"; then
+                               CURL_CONFIG=$i
+                               break
+                       fi
+               done
+               if test -z "$CURL_CONFIG"; then
+                       AC_MSG_RESULT([not found])
+                       AC_MSG_ERROR([could not find curl-config])
+               else
+                       AC_MSG_RESULT([found: $CURL_CONFIG])
+               fi
+               
+               dnl Debian stable has currently 7.13.2 (this is not a typo)
+               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
+                       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`
+               if test "$CURL_SSL" = "SSL"; then
+                       AC_MSG_RESULT([yes])
+                       AC_DEFINE([HTTP_HAVE_SSL], [1], [ ])
+                       
+                       AC_MSG_CHECKING([for SSL library used])
+                       CURL_SSL_FLAVOUR=
+                       for i in $CURL_LIBS; do
+                               if test "$i" = "-lssl"; then
+                                       CURL_SSL_FLAVOUR="openssl"
+                                       AC_MSG_RESULT([openssl])
+                                       AC_DEFINE([HTTP_HAVE_OPENSSL], [1], [ ])
+                                       AC_CHECK_HEADERS([openssl/crypto.h])
+                                       break
+                               elif test "$i" = "-lgnutls"; then
+                                       CURL_SSL_FLAVOUR="gnutls"
+                                       AC_MSG_RESULT([gnutls])
+                                       AC_DEFINE([HTTP_HAVE_GNUTLS], [1], [ ])
+                                       AC_CHECK_HEADERS([gcrypt.h])
+                                       break
+                               fi
+                       done
+                       if test -z "$CURL_SSL_FLAVOUR"; then
+                               AC_MSG_RESULT([unknown!])
+                               AC_MSG_WARN([Could not determine the type of SSL library used!])
+                               AC_MSG_WARN([Building will fail in ZTS mode!])
+                       fi
+               else
+                       AC_MSG_RESULT([no])
+               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_multi_strerror, 
+                       [AC_DEFINE([HAVE_CURL_MULTI_STRERROR], [1], [ ])], [ ], 
+                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+               )
+               PHP_CHECK_LIBRARY(curl, curl_easy_strerror,
+                       [AC_DEFINE([HAVE_CURL_EASY_STRERROR], [1], [ ])], [ ],
+                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+               )
+               PHP_CHECK_LIBRARY(curl, curl_easy_reset,
+                       [AC_DEFINE([HAVE_CURL_EASY_RESET], [1], [ ])], [ ],
+                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+               )
+               dnl Debian suddenly (>=7.14.1-2) hides all symbols not starting with "curl"
+               PHP_CHECK_LIBRARY(curl, Curl_getFormData,
+                       [AC_DEFINE([HAVE_CURL_GETFORMDATA], [1], [ ])], [ ],
+                       [$CURL_LIBS -L$CURL_DIR/$PHP_LIBDIR]
+               )
+       fi
+
+dnl ----
+dnl MAGIC
+dnl ----
+       if test "$PHP_HTTP_MAGIC_MIME" != "no"; then
+               AC_MSG_CHECKING([for magic.h])
+               MAGIC_DIR=
+               for i in "$PHP_HTTP_MAGIC_MIME" /usr/local /usr /opt; do
+                       if test -f "$i/include/magic.h"; then
+                               MAGIC_DIR=$i
+                               break
+                       fi
+               done
+               if test -z "$MAGIC_DIR"; then
+                       AC_MSG_RESULT([not found])
+                       AC_MSG_ERROR([could not find magic.h])
+               else
+                       AC_MSG_RESULT([found in $MAGIC_DIR])
+               fi
+               
+               PHP_ADD_INCLUDE($MAGIC_DIR/include)
+               PHP_ADD_LIBRARY_WITH_PATH(magic, $MAGIC_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
+               AC_DEFINE([HTTP_HAVE_MAGIC], [1], [Have magic mime support])
+       fi
+
+dnl ----
+dnl HASH
+dnl ----
+       HTTP_HAVE_PHP_EXT([hash], [
+               if test -d ../hash; then
+                       PHP_ADD_INCLUDE([../hash])
+               fi
+               old_CPPFLAGS=$CPPFLAGS
+               CPPFLAGS=$INCLUDES
+               AC_CHECK_HEADER([ext/hash/php_hash.h], [
+                       AC_DEFINE([HTTP_HAVE_EXT_HASH_EXT_HASH], [1], [Have ext/hash support])
+               ], [ 
+                       AC_CHECK_HEADER([hash/php_hash.h], [
+                               AC_DEFINE([HTTP_HAVE_HASH_EXT_HASH], [1], [Have ext/hash support])
+                       ], [ 
+                               AC_CHECK_HEADER([php_hash.h], [
+                                       AC_DEFINE([HTTP_HAVE_EXT_HASH], [1], [Have ext/hash support])
+                               ])
+                       ])
+               ])
+               CPPFLAGS=$old_CPPFLAGS
+       ])
+
+dnl ----
+dnl ICONV
+dnl ----
+       HTTP_HAVE_PHP_EXT([iconv])
+
+dnl ----
+dnl SESSION
+dnl ----
+       HTTP_HAVE_PHP_EXT([session])
+
+dnl ----
+dnl SPL
+dnl ----
+       HTTP_HAVE_PHP_EXT([spl])
+
+dnl ----
+dnl DONE
+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_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"
+       
+       PHP_NEW_EXTENSION([http], $PHP_HTTP_SOURCES, $ext_shared)
+       
+       dnl shared extension deps
+       HTTP_SHARED_DEP([hash])
+       HTTP_SHARED_DEP([iconv])
+       HTTP_SHARED_DEP([session])
+       HTTP_SHARED_DEP([spl])
+       
+       PHP_ADD_BUILD_DIR($ext_builddir/phpstr, 1)
+       PHP_SUBST([HTTP_SHARED_LIBADD])
+
+       PHP_HTTP_HEADERS="php_http_std_defs.h php_http.h php_http_api.h php_http_cache_api.h \
+               php_http_date_api.h php_http_headers_api.h php_http_info_api.h php_http_message_api.h \
+               php_http_request_api.h php_http_request_method_api.h php_http_send_api.h php_http_url_api.h \
+               php_http_encoding_api.h phpstr/phpstr.h missing.h php_http_request_body_api.h \
+               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"
+       ifdef([PHP_INSTALL_HEADERS], [
+               PHP_INSTALL_HEADERS(ext/http, $PHP_HTTP_HEADERS)
+       ], [
+               PHP_SUBST([PHP_HTTP_HEADERS])
+               PHP_ADD_MAKEFILE_FRAGMENT
+       ])
+
+       AC_DEFINE([HAVE_HTTP], [1], [Have extended HTTP support])
+fi
diff --git a/http.c b/http.c
index 843db22..e97c12d 100644 (file)
--- a/http.c
+++ b/http.c
@@ -137,16 +137,16 @@ PHP_MINFO_FUNCTION(http);
 /* {{{ http_module_dep */
 #if ZEND_EXTENSION_API_NO >= 220050617
 static zend_module_dep http_module_deps[] = {
-#      if defined(HAVE_SPL) && !HTTP_SHARED_EXT(SPL)
+#      if HTTP_HAVE_EXT(SPL)
        ZEND_MOD_REQUIRED("spl")
 #      endif
-#      if defined(HTTP_HAVE_EXT_HASH) && !HTTP_SHARED_EXT(HASH)
+#      if HTTP_HAVE_EXT(HASH)
        ZEND_MOD_REQUIRED("hash")
 #      endif
-#      if defined(HAVE_PHP_SESSION) && !HTTP_SHARED_EXT(PHP_SESSION)
+#      if HTTP_HAVE_EXT(SESSION)
        ZEND_MOD_REQUIRED("session")
 #      endif
-#      if defined(HAVE_ICONV) && !HTTP_SHARED_EXT(ICONV)
+#      if HTTP_HAVE_EXT(ICONV)
        ZEND_MOD_REQUIRED("iconv")
 #      endif
        {NULL, NULL, NULL, 0}
index bdd021b..806cd66 100644 (file)
@@ -21,7 +21,7 @@
 #include "ext/standard/php_string.h"
 #include "zend_operators.h"
 
-#ifdef HAVE_PHP_SESSION && !HTTP_SHARED_EXT(PHP_SESSION)
+#if HTTP_HAVE_EXT(SESSION)
 #      include "ext/session/php_session.h"
 #endif
 
@@ -728,7 +728,7 @@ PHP_FUNCTION(http_redirect)
                RETURN_FALSE;
        }
 
-#ifdef HAVE_PHP_SESSION && !HTTP_SHARED_EXT(PHP_SESSION)
+#if 0 && HTTP_HAVE_EXT(SESSION)
        /* append session info */
        if (session) {
                if (!params) {
index 824745f..3d736cd 100644 (file)
@@ -32,7 +32,7 @@
 #include "php_http_request_api.h"
 #include "php_http_request_object.h"
 
-#if defined(HAVE_SPL) && !HTTP_SHARED_EXT(SPL) && !defined(WONKY)
+#if HTTP_HAVE_EXT(SPL) && !defined(WONKY)
 /* SPL doesn't install its headers */
 extern PHPAPI zend_class_entry *spl_ce_Countable;
 #endif
@@ -185,7 +185,7 @@ PHP_MINIT_FUNCTION(http_message_object)
        HTTP_REGISTER_CLASS_EX(HttpMessage, http_message_object, NULL, 0);
        
 #ifndef WONKY
-#      if defined(HAVE_SPL) && !HTTP_SHARED_EXT(SPL)
+#      if HTTP_HAVE_EXT(SPL)
        zend_class_implements(http_message_object_ce TSRMLS_CC, 3, spl_ce_Countable, zend_ce_serializable, zend_ce_iterator);
 #      else
        zend_class_implements(http_message_object_ce TSRMLS_CC, 2, zend_ce_serializable, zend_ce_iterator);
index b367c20..03fe726 100644 (file)
@@ -16,7 +16,7 @@
 #include "php_http.h"
 
 #include "php_variables.h"
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
 #      undef PHP_ATOM_INC
 #      include "ext/iconv/php_iconv.h"
 #      include "ext/standard/url.h"
@@ -38,7 +38,7 @@ static inline int _http_querystring_modify_array_ex(zval *qarray, int key_type,
 static inline int _http_querystring_modify_array(zval *qarray, zval *params TSRMLS_DC);
 
 
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
 PHP_HTTP_API int _http_querystring_xlate(zval *array, zval *param, const char *ie, const char *oe TSRMLS_DC)
 {
        HashPosition pos;
index 73ef9d5..580ae6b 100644 (file)
@@ -61,7 +61,7 @@ HTTP_BEGIN_ARGS(__getter, 1)
        HTTP_ARG_VAL(delete, 0)
 HTTP_END_ARGS;
 
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
 HTTP_BEGIN_ARGS(xlate, 2)
        HTTP_ARG_VAL(from_encoding, 0)
        HTTP_ARG_VAL(to_encoding, 0)
@@ -95,7 +95,7 @@ zend_function_entry http_querystring_object_fe[] = {
 #ifndef WONKY
        HTTP_QUERYSTRING_ME(singleton, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
 #endif
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
        HTTP_QUERYSTRING_ME(xlate, ZEND_ACC_PUBLIC)
 #endif
        
@@ -431,7 +431,7 @@ HTTP_QUERYSTRING_GETTER(getArray, IS_ARRAY);
 HTTP_QUERYSTRING_GETTER(getObject, IS_OBJECT);
 /* }}} */
 
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
 /* {{{ proto bool HttpQueryString::xlate(string ie, string oe)
  *
  * Converts the query string from the source encoding ie to the target encoding oe.
index 41e2c4f..08348ff 100644 (file)
@@ -39,6 +39,7 @@ support. Parallel requests are available for PHP 5 and greater.
  </stability>
  <license>BSD, revised</license>
  <notes><![CDATA[
++ Added --with[out]-http-shared-deps configure option (dependencies on shared extensions)
 + Added INI entries: http.log.not_found, http.send.not_found_404
 * Fixed build on Debian systems where access to Curl_* functions is prohibited
 * Fixed empty Cache-Control header if not customly set with HttpResponse
@@ -56,7 +57,7 @@ support. Parallel requests are available for PHP 5 and greater.
    
    <file role="src" name="http.dsp"/>
    <file role="src" name="config.w32"/>
-   <file role="src" name="config.m4"/>
+   <file role="src" name="config9.m4"/>
    <file role="src" name="Makefile.frag"/>
    
    <dir name="phpstr">
index f3574d3..08b2a4d 100644 (file)
@@ -144,7 +144,7 @@ ZEND_EXTERN_MODULE_GLOBALS(http);
 #      define HTTP_G (&http_globals)
 #endif
 
-#define HTTP_SHARED_EXT(EXT) (COMPILE_DL_##EXT && !HTTP_SHARED_DEPS)
+#define HTTP_HAVE_EXT(EXT) ((defined(HAVE_##EXT) || defined(HAVE_PHP_##EXT)) && (HTTP_SHARED_DEPS || !defined(COMPILE_DL_##EXT)))
 
 PHP_FUNCTION(http_test);
 PHP_FUNCTION(http_date);
index dbbe0a2..5bd727e 100644 (file)
@@ -20,7 +20,7 @@
 #include "ext/standard/crc32.h"
 #include "ext/standard/sha1.h"
 #include "ext/standard/md5.h"
-#if !HTTP_SHARED_EXT(HASH)
+#if HTTP_HAVE_EXT(HASH)
 #      if defined(HTTP_HAVE_EXT_HASH)
 #              include "php_hash.h"
 #      elif defined(HTTP_HAVE_HASH_EXT_HASH)
@@ -55,7 +55,7 @@ static inline void *_http_etag_init(TSRMLS_D)
        void *ctx = NULL;
        char *mode = HTTP_G->etag.mode;
        
-#if defined(HTTP_HAVE_EXT_HASH) && !HTTP_SHARED_EXT(HASH)
+#if HTTP_HAVE_EXT(HASH)
        php_hash_ops *eho = NULL;
        
        if (mode && (eho = php_hash_fetch_ops(mode, strlen(mode)))) {
@@ -81,7 +81,7 @@ static inline char *_http_etag_finish(void *ctx TSRMLS_DC)
        unsigned char digest[128] = {0};
        char *etag = NULL, *mode = HTTP_G->etag.mode;
        
-#if defined(HTTP_HAVE_EXT_HASH) && !HTTP_SHARED_EXT(HASH)
+#if HTTP_HAVE_EXT(HASH)
        php_hash_ops *eho = NULL;
        
        if (mode && (eho = php_hash_fetch_ops(mode, strlen(mode)))) {
@@ -108,7 +108,7 @@ static inline char *_http_etag_finish(void *ctx TSRMLS_DC)
 static inline void _http_etag_update(void *ctx, const char *data_ptr, size_t data_len TSRMLS_DC)
 {
        char *mode = HTTP_G->etag.mode;
-#if defined(HTTP_HAVE_EXT_HASH) && !HTTP_SHARED_EXT(HASH)
+#if HTTP_HAVE_EXT(HASH)
        php_hash_ops *eho = NULL;
        
        if (mode && (eho = php_hash_fetch_ops(mode, strlen(mode)))) {
index d5be364..60b63bc 100644 (file)
@@ -15,7 +15,7 @@
 #ifndef PHP_HTTP_QUERYSTRING_API_H
 #define PHP_HTTP_QUERYSTRING_API_H
 
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
 #define http_querystring_xlate(a, p, ie, oe) _http_querystring_xlate((a), (p), (ie), (oe) TSRMLS_CC)
 PHP_HTTP_API int _http_querystring_xlate(zval *array, zval *param, const char *ie, const char *oe TSRMLS_DC);
 #endif
index 4a60d12..76f2513 100644 (file)
@@ -50,7 +50,7 @@ PHP_METHOD(HttpQueryString, getFloat);
 PHP_METHOD(HttpQueryString, getString);
 PHP_METHOD(HttpQueryString, getArray);
 PHP_METHOD(HttpQueryString, getObject);
-#ifdef HAVE_ICONV && !HTTP_SHARED_EXT(ICONV)
+#if HTTP_HAVE_EXT(ICONV)
 PHP_METHOD(HttpQueryString, xlate);
 #endif
 #ifndef WONKY