- fix ext/hash detection and dependency
authorMichael Wallner <mike@php.net>
Thu, 8 Jun 2006 15:48:43 +0000 (15:48 +0000)
committerMichael Wallner <mike@php.net>
Thu, 8 Jun 2006 15:48:43 +0000 (15:48 +0000)
config.w32
config9.m4
http.c
php_http.h
php_http_cache_api.h

index 638273f..68bf7bc 100644 (file)
@@ -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);
                }
        }
index bba07d0..e1c4ab8 100644 (file)
@@ -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 (file)
--- 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)
index 08b2a4d..ea3cb3c 100644 (file)
@@ -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);
index 5bd727e..3c2e783 100644 (file)
 #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)))) {