From 46fc12676a53668d55fe6d02d44210e2eaf4b6b5 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Wed, 7 Jun 2006 14:42:04 +0000 Subject: [PATCH] - config.m4 moved to config9.m4 - implement --with[out]-http-shared-deps properly --- config.w32 | 1 + config.m4 => config9.m4 | 123 +++++++++++++++++++++++++--------- http.c | 8 +-- http_functions.c | 4 +- http_message_object.c | 4 +- http_querystring_api.c | 4 +- http_querystring_object.c | 6 +- package2.xml | 3 +- php_http.h | 2 +- php_http_cache_api.h | 8 +-- php_http_querystring_api.h | 2 +- php_http_querystring_object.h | 2 +- 12 files changed, 115 insertions(+), 52 deletions(-) rename config.m4 => config9.m4 (80%) diff --git a/config.w32 b/config.w32 index c07e9d2..638273f 100644 --- a/config.w32 +++ b/config.w32 @@ -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/config.m4 b/config9.m4 similarity index 80% rename from config.m4 rename to config9.m4 index b366a33..648cc5b 100644 --- a/config.m4 +++ b/config9.m4 @@ -33,12 +33,64 @@ if test "$PHP_HTTP" != "no"; then AC_CHECK_PROG(SED, sed, sed) ]) ]) - - if test "PHP_HTTP_SHARED_DEPS" != "no"; then + + 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 @@ -202,39 +254,40 @@ dnl ---- 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]) + 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([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]) - ]) + 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 + 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 @@ -248,7 +301,15 @@ dnl ---- 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]) diff --git a/http.c b/http.c index 843db22..e97c12d 100644 --- 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} diff --git a/http_functions.c b/http_functions.c index bdd021b..806cd66 100644 --- a/http_functions.c +++ b/http_functions.c @@ -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) { diff --git a/http_message_object.c b/http_message_object.c index 824745f..3d736cd 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -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); diff --git a/http_querystring_api.c b/http_querystring_api.c index b367c20..03fe726 100644 --- a/http_querystring_api.c +++ b/http_querystring_api.c @@ -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; diff --git a/http_querystring_object.c b/http_querystring_object.c index 73ef9d5..580ae6b 100644 --- a/http_querystring_object.c +++ b/http_querystring_object.c @@ -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. diff --git a/package2.xml b/package2.xml index 41e2c4f..08348ff 100644 --- a/package2.xml +++ b/package2.xml @@ -39,6 +39,7 @@ support. Parallel requests are available for PHP 5 and greater. BSD, revised - + diff --git a/php_http.h b/php_http.h index f3574d3..08b2a4d 100644 --- a/php_http.h +++ b/php_http.h @@ -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); diff --git a/php_http_cache_api.h b/php_http_cache_api.h index dbbe0a2..5bd727e 100644 --- a/php_http_cache_api.h +++ b/php_http_cache_api.h @@ -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)))) { diff --git a/php_http_querystring_api.h b/php_http_querystring_api.h index d5be364..60b63bc 100644 --- a/php_http_querystring_api.h +++ b/php_http_querystring_api.h @@ -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 diff --git a/php_http_querystring_object.h b/php_http_querystring_object.h index 4a60d12..76f2513 100644 --- a/php_http_querystring_object.h +++ b/php_http_querystring_object.h @@ -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 -- 2.30.2