From: Michael Wallner Date: Thu, 8 Jun 2006 15:48:43 +0000 (+0000) Subject: - fix ext/hash detection and dependency X-Git-Tag: RELEASE_1_0_0~3 X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=commitdiff_plain;h=fb5d0ef47f1f54dad0efa1f091324e3d7d18050b - fix ext/hash detection and dependency --- diff --git a/config.w32 b/config.w32 index 638273f..68bf7bc 100644 --- a/config.w32 +++ b/config.w32 @@ -79,7 +79,7 @@ if (PHP_HTTP != "no") { if ((f = check_for_pecl_ext("hash")) || (f = check_for_main_ext("hash"))) { ADD_FLAG("CFLAGS_HTTP", "/I"+ f); - AC_DEFINE("HTTP_HAVE_EXT_HASH", 1, ""); + AC_DEFINE("HTTP_HAVE_PHP_HASH_H", 1, ""); ADD_EXTENSION_DEP("http", "hash", true); } } diff --git a/config9.m4 b/config9.m4 index bba07d0..e1c4ab8 100644 --- a/config9.m4 +++ b/config9.m4 @@ -14,7 +14,7 @@ PHP_ARG_WITH([http-magic-mime], [whether to enable response content type guessin [ --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, +[ --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 @@ -69,6 +69,7 @@ if test "$PHP_HTTP" != "no"; then AC_DEFUN([HTTP_HAVE_PHP_EXT], [ extname=$1 haveext=$[PHP_]translit($1,a-z_-,A-Z__) + ishared=$[PHP_]translit($1,a-z_-,A-Z__)_SHARED AC_MSG_CHECKING([for ext/$extname support]) if test -x "$PHP_EXECUTABLE"; then @@ -255,23 +256,26 @@ dnl ---- dnl HASH dnl ---- HTTP_HAVE_PHP_EXT([hash], [ - if test -d ../hash; then - PHP_ADD_INCLUDE([../hash]) + AC_MSG_CHECKING([for php_hash.h]) + HTTP_EXT_HASH_INCDIR= + for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../hash; do + if test -d $i; then + if test -f $i/php_hash.h; then + HTTP_EXT_HASH_INCDIR=$i + break + elif test -f $i/ext/hash/php_hash.h; then + HTTP_EXT_HASH_INCDIR=$i/ext/hash + break + fi + fi + done + if test -z "$HTTP_EXT_HASH_INCDIR"; then + AC_MSG_RESULT([not found]) + else + AC_MSG_RESULT([$HTTP_EXT_HASH_INCDIR]) + AC_DEFINE([HTTP_HAVE_PHP_HASH_H], [1], [Have ext/hash support]) + PHP_ADD_INCLUDE([$HTTP_EXT_HASH_INCDIR]) 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 ---- diff --git a/http.c b/http.c index e97c12d..1dba9c6 100644 --- a/http.c +++ b/http.c @@ -140,7 +140,7 @@ static zend_module_dep http_module_deps[] = { # if HTTP_HAVE_EXT(SPL) ZEND_MOD_REQUIRED("spl") # endif -# if HTTP_HAVE_EXT(HASH) +# if HTTP_HAVE_EXT_HASH ZEND_MOD_REQUIRED("hash") # endif # if HTTP_HAVE_EXT(SESSION) diff --git a/php_http.h b/php_http.h index 08b2a4d..ea3cb3c 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_HAVE_EXT(EXT) ((defined(HAVE_##EXT) || defined(HAVE_PHP_##EXT)) && (HTTP_SHARED_DEPS || !defined(COMPILE_DL_##EXT))) +#define HTTP_HAVE_EXT(EXT) ((defined(HAVE_##EXT) || defined(HAVE_PHP_##EXT) || defined(HAVE_##EXT##_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 5bd727e..3c2e783 100644 --- a/php_http_cache_api.h +++ b/php_http_cache_api.h @@ -20,16 +20,12 @@ #include "ext/standard/crc32.h" #include "ext/standard/sha1.h" #include "ext/standard/md5.h" -#if HTTP_HAVE_EXT(HASH) -# if defined(HTTP_HAVE_EXT_HASH) -# include "php_hash.h" -# elif defined(HTTP_HAVE_HASH_EXT_HASH) -# define HTTP_HAVE_EXT_HASH -# include "hash/php_hash.h" -# elif defined(HTTP_HAVE_EXT_HASH_EXT_HASH) -# define HTTP_HAVE_EXT_HASH -# include "ext/hash/php_hash.h" -# endif + +#if defined(HTTP_HAVE_PHP_HASH_H) && HTTP_HAVE_EXT(HASH) +# define HTTP_HAVE_EXT_HASH 1 +# include "php_hash.h" +#else +# define HTTP_HAVE_EXT_HASH 0 #endif #define http_etag_digest(d, l) _http_etag_digest((d), (l)) @@ -55,7 +51,7 @@ static inline void *_http_etag_init(TSRMLS_D) void *ctx = NULL; char *mode = HTTP_G->etag.mode; -#if HTTP_HAVE_EXT(HASH) +#if HTTP_HAVE_EXT_HASH php_hash_ops *eho = NULL; if (mode && (eho = php_hash_fetch_ops(mode, strlen(mode)))) { @@ -81,7 +77,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 HTTP_HAVE_EXT(HASH) +#if HTTP_HAVE_EXT_HASH php_hash_ops *eho = NULL; if (mode && (eho = php_hash_fetch_ops(mode, strlen(mode)))) { @@ -108,7 +104,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 HTTP_HAVE_EXT(HASH) +#if HTTP_HAVE_EXT_HASH php_hash_ops *eho = NULL; if (mode && (eho = php_hash_fetch_ops(mode, strlen(mode)))) {