]> granicus.if.org Git - php/commitdiff
MFH: - Fixed bug #31101 (missing kerberos header file path with --with-openssl)
authorfoobar <sniper@php.net>
Thu, 30 Dec 2004 14:54:35 +0000 (14:54 +0000)
committerfoobar <sniper@php.net>
Thu, 30 Dec 2004 14:54:35 +0000 (14:54 +0000)
NEWS
acinclude.m4
ext/imap/config.m4
ext/openssl/config0.m4

diff --git a/NEWS b/NEWS
index 4eb833394fb5b8764959b4897a4d2057530cb285..27bbfb9b9967cc0949b8701a9f29cd6db24dd559 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,7 @@ PHP 4                                                                      NEWS
 - Fixed bugs #31107, #31110, #31111 (Compile failure of zend_strtod.c). (Jani)
 - Fixed bug #31106 (Fixed crash in overloaded objects). (Stas)
 - Fixed bug #31103 (Better error message when c-client cannot be found). (Ilia)
+- Fixed bug #31101 (missing kerberos header file path with --with-openssl). (Jani)
 - Fixed bug #31072 (var_export() does not output an array element with an empty
   string key). (Derick)
 - Fixed bug #31056 (php_std_date() returns invalid formatted date if 
index 3d2535a68bd7616c48c5b1ce3103cdd198fadc40..54b04cf12df3af27e716a2de6b3833c617fff239 100644 (file)
@@ -1584,6 +1584,64 @@ AC_DEFUN([PHP_CHECK_FRAMEWORK], [
   ])
 ])
 
+dnl
+dnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]])
+dnl
+dnl Common setup macro for kerberos
+dnl
+AC_DEFUN([PHP_SETUP_KERBEROS],[
+  found_kerberos=no
+  unset KERBEROS_CFLAGS
+  unset KERBEROS_LIBS
+
+  dnl First try to find krb5-config
+  if test -z "$KRB5_CONFIG"; then
+    AC_PATH_PROG(KRB5_CONFIG, krb5-config, no, [$PATH:/usr/kerberos/bin:/usr/local/bin])
+  fi
+
+  dnl If krb5-config is found try using it
+  if test "$PHP_KERBEROS" = "yes" && test -x "$KRB5_CONFIG"; then
+    KERBEROS_LIBS=`$KRB5_CONFIG --libs gssapi`
+    KERBEROS_CFLAGS=`$KRB5_CONFIG --cflags gssapi`
+
+    if test -n "$KERBEROS_LIBS" && test -n "$KERBEROS_CFLAGS"; then
+      found_kerberos=yes
+      PHP_EVAL_LIBLINE($KERBEROS_LIBS, $1)
+      PHP_EVAL_INCLINE($KERBEROS_CFLAGS)
+    fi
+  fi
+
+  dnl If still not found use old skool method
+  if test "$found_kerberos" = "no"; then
+
+    if test "$PHP_KERBEROS" = "yes"; then
+      PHP_KERBEROS="/usr/kerberos /usr/local /usr"
+    fi
+
+    for i in $PHP_KERBEROS; do
+      if test -f $i/lib/libkrb5.a || test -f $i/lib/libkrb5.$SHLIB_SUFFIX_NAME; then
+        PHP_KERBEROS_DIR=$i
+        break
+      fi
+    done
+
+    if test "$PHP_KERBEROS_DIR"; then
+      found_kerberos=yes
+      PHP_ADD_LIBPATH($PHP_KERBEROS_DIR/lib, $1)
+      PHP_ADD_LIBRARY(gssapi_krb5, 1, $1)
+      PHP_ADD_LIBRARY(krb5, 1, $1)
+      PHP_ADD_LIBRARY(k5crypto, 1, $1)
+      PHP_ADD_LIBRARY(com_err,  1, $1)
+      PHP_ADD_INCLUDE($PHP_KERBEROS_DIR/include)
+    fi
+  fi
+
+  if test "$found_kerberos" = "yes"; then
+ifelse([$2],[],:,[$2])
+ifelse([$3],[],,[else $3])
+  fi
+])
+
 dnl 
 dnl PHP_SETUP_OPENSSL(shared-add [, action-found [, action-not-found]])
 dnl
@@ -1594,13 +1652,20 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
   unset OPENSSL_INCDIR
   unset OPENSSL_LIBDIR
 
+  dnl Fallbacks for different configure options
+  if test "$PHP_OPENSSL" != "no"; then
+    PHP_OPENSSL_DIR=$PHP_OPENSSL
+  elif test "$PHP_IMAP_SSL" != "no"; then
+    PHP_OPENSSL_DIR=$PHP_IMAP_SSL
+  fi
+
   dnl First try to find pkg-config
   if test -z "$PKG_CONFIG"; then
     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
   fi
 
   dnl If pkg-config is found try using it
-  if test "$PHP_OPENSSL" = "yes" && test -x "$PKG_CONFIG" && $PKG_CONFIG --exists openssl; then
+  if test "$PHP_OPENSSL_DIR" = "yes" && test -x "$PKG_CONFIG" && $PKG_CONFIG --exists openssl; then
     if $PKG_CONFIG --atleast-version=0.9.6 openssl; then
       found_openssl=yes
       OPENSSL_LIBS=`$PKG_CONFIG --libs openssl`
@@ -1614,15 +1679,16 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
       PHP_EVAL_LIBLINE($OPENSSL_LIBS, $1)
       PHP_EVAL_INCLINE($OPENSSL_INCS)
     fi
+  fi
 
-  else 
-
-    dnl If pkg-config fails for some reason, revert to the old method
-    if test "$PHP_OPENSSL" = "yes"; then
-      PHP_OPENSSL="/usr/local/ssl /usr/local /usr /usr/local/openssl"
+  dnl If pkg-config fails for some reason, revert to the old method
+  if test "$found_openssl" = "no"; then
+  
+    if test "$PHP_OPENSSL_DIR" = "yes"; then
+      PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl"
     fi
 
-    for i in $PHP_OPENSSL; do
+    for i in $PHP_OPENSSL_DIR; do
       if test -r $i/include/openssl/evp.h; then
         OPENSSL_INCDIR=$i/include
       fi
@@ -1680,11 +1746,11 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
     PHP_ADD_LIBPATH($OPENSSL_LIBDIR, $1)
   fi
 
+  if test "$found_openssl" = "yes"; then
   dnl For apache 1.3.x static build
   OPENSSL_INCDIR_OPT=-I$OPENSSL_INCDIR
   AC_SUBST(OPENSSL_INCDIR_OPT)
 
-  if test "$found_openssl" = "yes"; then
 ifelse([$2],[],:,[$2])
 ifelse([$3],[],,[else $3])
   fi
index d2384862414976d92c80b32312d05a6ca4fac7dd..62c527912eb23bd60c7586fe731a2e79590f41d0 100644 (file)
@@ -55,41 +55,16 @@ AC_DEFUN([PHP_IMAP_TEST_BUILD], [
 ])
 
 AC_DEFUN([PHP_IMAP_KRB_CHK], [
-  AC_ARG_WITH(kerberos,
-  [  --with-kerberos[=DIR]     IMAP: Include Kerberos support. DIR is the Kerberos install dir.],[
-    PHP_KERBEROS=$withval
-  ],[
-    PHP_KERBEROS=no
-  ])
-
   if test "$PHP_KERBEROS" != "no"; then
-
-    if test "$PHP_KERBEROS" = "yes"; then
-      SEARCH_PATHS="/usr/kerberos /usr/local /usr"
-    else
-      SEARCH_PATHS=$PHP_KERBEROS
-    fi
-
-    for i in $SEARCH_PATHS; do
-      if test -f $i/lib/libkrb5.a || test -f $i/lib/libkrb5.$SHLIB_SUFFIX_NAME; then
-        PHP_KERBEROS_DIR=$i
-        break
-      fi
-    done
-
-    if test -z "$PHP_KERBEROS_DIR"; then
+    PHP_SETUP_KERBEROS(IMAP_SHARED_LIBADD,
+    [
+      AC_DEFINE(HAVE_IMAP_KRB,1,[ ])
+    ], [
       AC_MSG_ERROR([Kerberos libraries not found. 
       
       Check the path given to --with-kerberos (if no path is given, searches in /usr/kerberos, /usr/local and /usr )
       ])
-    fi
-    AC_DEFINE(HAVE_IMAP_KRB,1,[ ])
-    PHP_ADD_LIBPATH($PHP_KERBEROS_DIR/lib, IMAP_SHARED_LIBADD)
-    PHP_ADD_LIBRARY(gssapi_krb5, 1, IMAP_SHARED_LIBADD)
-    PHP_ADD_LIBRARY(krb5, 1, IMAP_SHARED_LIBADD)
-    PHP_ADD_LIBRARY(k5crypto, 1, IMAP_SHARED_LIBADD)
-    PHP_ADD_LIBRARY(com_err,  1, IMAP_SHARED_LIBADD)
-    PHP_ADD_INCLUDE($PHP_KERBEROS_DIR/include)
+    ])
   else
     AC_EGREP_HEADER(auth_gss, $IMAP_INC_DIR/linkage.h, [
       AC_MSG_ERROR([This c-client library is built with Kerberos support. 
@@ -98,31 +73,26 @@ AC_DEFUN([PHP_IMAP_KRB_CHK], [
       ])
     ])
   fi
-
 ])
 
 AC_DEFUN([PHP_IMAP_SSL_CHK], [
-  AC_ARG_WITH(imap-ssl,
-  [  --with-imap-ssl=<DIR>     IMAP: Include SSL support. DIR is the OpenSSL install dir.],[
-    PHP_IMAP_SSL=$withval
-  ],[
-    PHP_IMAP_SSL=no
-  ])
-
-  if test "$PHP_IMAP_SSL" = "yes"; then
-    PHP_IMAP_SSL=/usr
-  fi
-
-  AC_MSG_CHECKING([whether SSL libraries are needed for c-client])
-
   if test "$PHP_IMAP_SSL" != "no"; then
-    AC_MSG_RESULT([$PHP_IMAP_SSL/lib])
-    AC_DEFINE(HAVE_IMAP_SSL,1,[ ])
-    PHP_ADD_LIBRARY_DEFER(ssl,    1, IMAP_SHARED_LIBADD)
-    PHP_ADD_LIBRARY_DEFER(crypto, 1, IMAP_SHARED_LIBADD)
-    PHP_ADD_LIBPATH($PHP_IMAP_SSL/lib, IMAP_SHARED_LIBADD)
-  else
-    AC_MSG_RESULT(no)
+    PHP_SETUP_OPENSSL(IMAP_SHARED_LIBADD,
+    [
+      AC_DEFINE(HAVE_IMAP_SSL,1,[ ])
+    ], [
+      AC_MSG_ERROR([OpenSSL libraries not found. 
+      
+      Check the path given to --with-openssl-dir and output in config.log)
+      ])
+    ])
+  elif test -f "$IMAP_INC_DIR/linkage.c"; then
+    AC_EGREP_HEADER(ssl_onceonlyinit, $IMAP_INC_DIR/linkage.c, [
+      AC_MSG_ERROR([This c-client library is built with SSL support. 
+
+      Add --with-imap-ssl to your configure line. Check config.log for details.
+      ])
+    ])
   fi
 ])
 
@@ -130,8 +100,14 @@ AC_DEFUN([PHP_IMAP_SSL_CHK], [
 PHP_ARG_WITH(imap,for IMAP support,
 [  --with-imap[=DIR]       Include IMAP support. DIR is the c-client install prefix.])
 
-if test "$PHP_IMAP" != "no"; then  
+PHP_ARG_WITH(kerberos,for IMAP Kerberos support,
+[  --with-kerberos[=DIR]     IMAP: Include Kerberos support. DIR is the Kerberos install prefix.], no, no)
+
+PHP_ARG_WITH(imap-ssl,for IMAP SSL support,
+[  --with-imap-ssl[=DIR]     IMAP: Include SSL support. DIR is the OpenSSL install prefix.], no, no)
 
+
+if test "$PHP_IMAP" != "no"; then  
     PHP_SUBST(IMAP_SHARED_LIBADD)
     PHP_NEW_EXTENSION(imap, php_imap.c, $ext_shared)
     AC_DEFINE(HAVE_IMAP,1,[ ])
index 306f4bed9b208e3ae2b6f7aaa323c886e3149502..9e75afd58f64e5a1f2459aef5a36882ebf16d3b7 100644 (file)
@@ -5,18 +5,24 @@ dnl
 PHP_ARG_WITH(openssl, for OpenSSL support,
 [  --with-openssl[=DIR]    Include OpenSSL support (requires OpenSSL >= 0.9.6)])
 
+PHP_ARG_WITH(kerberos, for Kerberos support,
+[  --with-kerberos[=DIR]     OPENSSL: Include Kerberos support], no, no)
+
 if test "$PHP_OPENSSL" != "no"; then
+  PHP_NEW_EXTENSION(openssl, openssl.c, $ext_shared)
+  PHP_SUBST(OPENSSL_SHARED_LIBADD)
+
+  if test "$PHP_KERBEROS" != "no"; then
+    PHP_SETUP_KERBEROS(OPENSSL_SHARED_LIBADD)
+  fi
+
   PHP_SETUP_OPENSSL(OPENSSL_SHARED_LIBADD, 
   [
-    PHP_NEW_EXTENSION(openssl, openssl.c, $ext_shared)
-    PHP_SUBST(OPENSSL_SHARED_LIBADD)
-
     if test "$ext_shared" = "yes"; then
       AC_DEFINE(HAVE_OPENSSL_SHARED_EXT,1,[ ])
     else
       AC_DEFINE(HAVE_OPENSSL_EXT,1,[ ])
     fi
-
   ], [
     AC_MSG_ERROR([OpenSSL check failed. Please check config.log for more information.])
   ])