add recent curl options
[m6w6/ext-http] / config9.m4
index ec202b685e00c9dc70658050dbe3e7015129356b..dcf193b8f5c10ed6f4a48f745469764ea1f970e2 100644 (file)
@@ -11,7 +11,7 @@ PHP_ARG_WITH([http-libcurl-dir], [],
 PHP_ARG_WITH([http-libevent-dir], [],
 [  --with-http-libevent-dir[=DIR] HTTP: where to find libevent], $PHP_HTTP_LIBCURL_DIR, "")
 PHP_ARG_WITH([http-libidn-dir], [],
-[  --with-http-libidn-dir=[=DIR]  HTTP: where to find libidn], $PHP_HTTP_LIBCURL_DIR, "")
+[  --with-http-libidn-dir[=DIR]   HTTP: where to find libidn], $PHP_HTTP_LIBCURL_DIR, "")
 
 if test "$PHP_HTTP" != "no"; then
 
@@ -93,6 +93,34 @@ if test "$PHP_HTTP" != "no"; then
                fi
        ])
        
+       dnl
+       dnl HTTP_CURL_SSL_LIB_CHECK(ssllib[, code-if-yes[, code-if-not])
+       dnl
+       AC_DEFUN([HTTP_CURL_SSL_LIB_CHECK], [
+               AC_MSG_CHECKING([for $1 support in libcurl])
+               AC_TRY_RUN([
+                       #include <curl/curl.h>
+                       int main(int argc, char *argv[]) {
+                               curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
+                               if (data && data->ssl_version && *data->ssl_version) {
+                                       const char *ptr = data->ssl_version;
+                                       while(*ptr == ' ') ++ptr;
+                                       return strncasecmp(ptr, "$1", sizeof("$1")-1);
+                               }
+                               return 1;
+                       }
+               ], [
+                       AC_MSG_RESULT([yes])
+                       $2
+               ], [
+                       AC_MSG_RESULT([no])
+                       $3
+               ], [
+                       AC_MSG_RESULT([no])
+                       $3
+               ])
+       ])
+       
 
 dnl ----
 dnl STDC
@@ -120,18 +148,70 @@ dnl ----
                        break;
                fi
        done
-       if test "x$IDNA_DIR" = "x"; then
-               AC_MSG_RESULT([not found])
-               case $host_os in
-               darwin*)
-                       AC_CHECK_HEADERS(unicode/uidna.h)
-                       PHP_CHECK_FUNC(uidna_IDNToASCII, icucore);;
-               esac
-       else
+       if test "x$IDNA_DIR" != "x"; then
                AC_MSG_RESULT([found in $IDNA_DIR])
                AC_DEFINE([PHP_HTTP_HAVE_IDN], [1], [Have libidn support])
                PHP_ADD_INCLUDE($IDNA_DIR/include)
                PHP_ADD_LIBRARY_WITH_PATH(idn, $IDNA_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
+               AC_MSG_CHECKING([for libidn version])
+               IDNA_VER=$(pkg-config --version libidn 2>/dev/null || echo unknown)
+               AC_MSG_RESULT([$IDNA_VER])
+               AC_DEFINE_UNQUOTED([PHP_HTTP_LIBIDN_VERSION], "$IDNA_VER", [ ])
+       else
+               AC_MSG_RESULT([not found])
+               AC_MSG_CHECKING([for idn2.h])
+               IDNA_DIR=
+               for i in "$PHP_HTTP_LIBIDN_DIR" "$IDN_DIR" /usr/local /usr /opt; do
+                       if test -f "$i/include/idn2.h"; then
+                               IDNA_DIR=$i
+                               break;
+                       fi
+               done
+               if test "x$IDNA_DIR" != "x"; then
+                       AC_MSG_RESULT([found in $IDNA_DIR])
+                       AC_DEFINE([PHP_HTTP_HAVE_IDN2], [1], [Have libidn2 support])
+                       PHP_ADD_INCLUDE($IDNA_DIR/include)
+                       PHP_ADD_LIBRARY_WITH_PATH(idn2, $IDNA_DIR/$PHP_LIBDIR, HTTP_SHARED_LIBADD)
+                       AC_MSG_CHECKING([for libidn2 version])
+                       IDNA_VER=`$EGREP "define IDN2_VERSION " $IDNA_DIR/include/idn2.h | $SED -e's/^.*VERSION //g' -e 's/[[^0-9\.]]//g'`
+                       AC_MSG_RESULT([$IDNA_VER])
+                       AC_DEFINE_UNQUOTED([PHP_HTTP_LIBIDN2_VERSION], "$IDNA_VER", [ ])
+               else
+                       AC_MSG_RESULT([not found])
+                       AC_CHECK_HEADERS([unicode/uidna.h])
+                       case $host_os in
+                       darwin*)
+                               PHP_CHECK_FUNC(uidna_IDNToASCII, icucore);;
+                       *)
+                               AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
+                               if test ! -x "$ICU_CONFIG"; then
+                                       ICU_CONFIG="icu-config"
+                               fi
+                               AC_MSG_CHECKING([for uidna_IDNToASCII])
+                               if ! test -x "$ICU_CONFIG"; then
+                                       ICU_CONFIG=icu-config
+                               fi
+                               if $ICU_CONFIG --exists 2>/dev/null >&2; then
+                                       save_LIBS=$LIBS
+                                       LIBS=$($ICU_CONFIG --ldflags)
+                                       AC_TRY_RUN([
+                                               #include <unicode/uidna.h>
+                                               int main(int argc, char *argv[]) {
+                                                       return uidna_IDNToASCII(0, 0, 0, 0, 0, 0, 0);
+                                               }
+                                       ], [
+                                               AC_MSG_RESULT([yes])
+                                               AC_DEFINE([HAVE_UIDNA_IDNTOASCII], [1], [ ])
+                                               LIBS=$save_LIBS
+                                               PHP_EVAL_LIBLINE(`$ICU_CONFIG --ldflags`, HTTP_SHARED_LIBADD)
+                                       ], [
+                                               LIBS=$save_LIBS
+                                               AC_MSG_RESULT([no])
+                                       ])
+                               fi
+                               ;;
+                       esac
+               fi
        fi
 
 dnl ----
@@ -236,58 +316,30 @@ dnl ----
                                AC_MSG_RESULT([yes])
                                AC_DEFINE([PHP_HTTP_HAVE_SSL], [1], [ ])
                        
-                               AC_MSG_CHECKING([for openssl support in libcurl])
-                               AC_TRY_RUN([
-                                       #include <curl/curl.h>
-                                       int main(int argc, char *argv[]) {
-                                               curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
-                                               if (data && data->ssl_version && *data->ssl_version) {
-                                                       const char *ptr = data->ssl_version;
-                                                       while(*ptr == ' ') ++ptr;
-                                                       return strncasecmp(ptr, "OpenSSL", sizeof("OpenSSL")-1);
-                                               }
-                                               return 1;
-                                       }
-                               ], [
-                                       AC_MSG_RESULT([yes])
+                               HTTP_CURL_SSL_LIB_CHECK(OpenSSL, [
                                        AC_CHECK_HEADER([openssl/ssl.h], [
                                                AC_CHECK_HEADER([openssl/crypto.h], [
                                                        AC_DEFINE([PHP_HTTP_HAVE_OPENSSL], [1], [ ])
                                                        CURL_SSL_LIBS="ssl crypto"
                                                ])
                                        ])
-                               ], [
-                                       AC_MSG_RESULT([no])
-                               ], [
-                                       AC_MSG_RESULT([no])
                                ])
-                       
-                               AC_MSG_CHECKING([for gnutls support in libcurl])
-                               AC_TRY_RUN([
-                                       #include <curl/curl.h>
-                                       int main(int argc, char *argv[]) {
-                                               curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
-                                               if (data && data->ssl_version && *data->ssl_version) {
-                                                       const char *ptr = data->ssl_version;
-                                                       while(*ptr == ' ') ++ptr;
-                                                       return strncasecmp(ptr, "GnuTLS", sizeof("GnuTLS")-1);
-                                               }
-                                               return 1;
-                                       }
-                               ], [
-                                       AC_MSG_RESULT([yes])
+                               HTTP_CURL_SSL_LIB_CHECK(GnuTLS, [
                                        AC_CHECK_HEADER([gnutls.h], [
                                                AC_CHECK_HEADER([gcrypt.h], [
                                                        AC_DEFINE([PHP_HTTP_HAVE_GNUTLS], [1], [ ])
                                                        CURL_SSL_LIBS="gnutls gcrypt"
                                                ])
                                        ])
-                               ], [
-                                       AC_MSG_RESULT([no])
-                               ], [
-                                       AC_MSG_RESULT([no])
+                               ])
+                               HTTP_CURL_SSL_LIB_CHECK(NSS, [
+                                       AC_DEFINE([PHP_HTTP_HAVE_NSS], [1], [ ])
+                               ])
+                               HTTP_CURL_SSL_LIB_CHECK(SecureTransport, [
+                                       AC_DEFINE([PHP_HTTP_HAVE_DARWINSSL], [1], [ ])
                                ])
                        else
+                               dnl no CURL_SSL
                                AC_MSG_RESULT([no])
                        fi
                        
@@ -510,12 +562,6 @@ dnl ----
                fi
        ])
 
-dnl ----
-dnl JSON
-dnl ----
-       HTTP_HAVE_PHP_EXT([json])
-
-
 dnl ----
 dnl ICONV
 dnl ----
@@ -560,11 +606,10 @@ dnl ----
        dnl shared extension deps
        HTTP_SHARED_DEP([hash])
        HTTP_SHARED_DEP([iconv])
-       HTTP_SHARED_DEP([json])
        
        dnl extension deps
        PHP_ADD_EXTENSION_DEP([http], [raphf], true)
-       PHP_ADD_EXTENSION_DEP([http], [propo], true)
+       PHP_ADD_EXTENSION_DEP([http], [propro], true)
        
        PHP_SUBST([HTTP_SHARED_LIBADD])