X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=autoconf%2Fpecl%2Flibcurl.m4;h=8de9499e0eaef8351c9a397a1a9e2051f66ee008;hp=f9eee6e836c47f7a1323dbc66966fa6de9a5e7bd;hb=HEAD;hpb=e096f45ff30a46d6a8e96da7bc6334d2ac5ab7c2 diff --git a/autoconf/pecl/libcurl.m4 b/autoconf/pecl/libcurl.m4 index f9eee6e..fd0e711 100644 --- a/autoconf/pecl/libcurl.m4 +++ b/autoconf/pecl/libcurl.m4 @@ -7,7 +7,7 @@ dnl AC_DEFUN([PECL_HAVE_LIBCURL_FEATURE], [dnl AC_REQUIRE([PECL_PROG_EGREP])dnl AC_CACHE_CHECK([for $1 feature in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1]), [ - if $CURL_CONFIG --feature | $EGREP -q $1; then + if $CURL_CONFIG --feature | $EGREP -qi $1; then PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1])=yes else PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1])=no @@ -44,84 +44,148 @@ dnl dnl PECL_HAVE_LIBCURL_SSLLIB(ssllib-name, headers, libs) dnl AC_DEFUN([PECL_HAVE_LIBCURL_SSLLIB], [ - AC_CACHE_CHECK([for $1 providing SSL in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_$1]), [ - AC_TRY_RUN([ - #include - 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); + if test -z "$PECL_VAR([LIBCURL_SSLLIB])"; then + AC_CACHE_CHECK([for $1 providing SSL in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_$1]), [ + AC_TRY_RUN([ + #include + #include + 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; } - return 1; - } - ], [ - PECL_CACHE_VAR([HAVE_LIBCURL_$1])=yes - ], [ - PECL_CACHE_VAR([HAVE_LIBCURL_$1])=no - ]) - ]) - PECL_VAR([HAVE_LIBCURL_$1])=$PECL_CACHE_VAR([HAVE_LIBCURL_$1]) - if $PECL_VAR([HAVE_LIBCURL_$1]); then - PECL_DEFINE([HAVE_LIBCURL_$1]) - m4_foreach_w(header, $2, [AC_CHECK_HEADER(header,, [ - PECL_VAR([HAVE_LIBCURL_$1])=false - ])]) - ifelse([$3],,,[ - if $PECL_VAR([HAVE_LIBCURL_$1]); then - m4_foreach_w(lib, $3, [ - PHP_ADD_LIBRARY(lib, true, [AS_TR_CPP(PECL_NAME[_SHARED_LIBADD])]) - ]) - fi + ], [ + PECL_CACHE_VAR([HAVE_LIBCURL_$1])=yes + ], [ + PECL_CACHE_VAR([HAVE_LIBCURL_$1])=no + ]) ]) + PECL_VAR([HAVE_LIBCURL_$1])=$PECL_CACHE_VAR([HAVE_LIBCURL_$1]) + if $PECL_VAR([HAVE_LIBCURL_$1]); then + PECL_VAR([LIBCURL_SSLLIB])="$1" + PECL_DEFINE([HAVE_LIBCURL_$1]) + m4_foreach_w(header, $2, [AC_CHECK_HEADER(header,, [ + PECL_VAR([HAVE_LIBCURL_$1])=false + ])]) + ifelse([$3],,,[ + if $PECL_VAR([HAVE_LIBCURL_$1]); then + m4_foreach_w(lib, $3, [ + PHP_ADD_LIBRARY(lib, true, [AS_TR_CPP(PECL_NAME[_SHARED_LIBADD])]) + ]) + fi + ]) + fi fi ]) dnl dnl PECL_HAVE_LIBCURL_SSL dnl -AC_DEFUN([PECL_HAVE_LIBCURL_SSL], [ +AC_DEFUN([PECL_HAVE_LIBCURL_SSL], [dnl + AC_REQUIRE([PECL_HAVE_LIBCURL_CA])dnl PECL_HAVE_LIBCURL_FEATURE([SSL], [ PECL_HAVE_LIBCURL_SSLLIB([OpenSSL], [openssl/ssl.h openssl/crypto.h], [ssl crypto]) - PECL_HAVE_LIBCURL_SSLLIB([GnuTLS], [gnutls.h gcrypt.h], [gnutls gcrypt]) + PECL_HAVE_LIBCURL_SSLLIB([GnuTLS], [gnutls/gnutls.h gcrypt.h], [gnutls gcrypt]) PECL_HAVE_LIBCURL_SSLLIB([NSS]) PECL_HAVE_LIBCURL_SSLLIB([SecureTransport]) PECL_HAVE_LIBCURL_SSLLIB([GSKit]) + PECL_HAVE_LIBCURL_SSLLIB([PolarSSL]) + PECL_HAVE_LIBCURL_SSLLIB([WolfSSL]) + PECL_HAVE_LIBCURL_SSLLIB([mbedTLS]) + PECL_HAVE_LIBCURL_SSLLIB([axTLS]) + + case "$PECL_VAR([LIBCURL_SSLLIB])" in + OpenSSL|GnuTLS|PolarSSL) + PECL_DEFINE([HAVE_LIBCURL_CAPATH]) + PECL_DEFINE([HAVE_LIBCURL_CAINFO]) + ;; + NSS) + AC_CACHE_CHECK([whether NSS PEM is available], [PECL_CACHE_VAR([HAVE_LIBCURL_NSSPEM])], [ + PECL_SAVE_ENV([LIBS], [NSSPEM]) + LIBS="$LIBS -lnsspem" + AC_TRY_LINK([], [(void)0;], [ + PECL_CACHE_VAR([HAVE_LIBCURL_NSSPEM])=yes + ], [ + PECL_CACHE_VAR([HAVE_LIBCURL_NSSPEM])=no + ]) + PECL_RESTORE_ENV([LIBS], [NSSPEM]) + ]) + if $PECL_CACHE_VAR([HAVE_LIBCURL_NSSPEM]); then + PECL_DEFINE([HAVE_LIBCURL_CAINFO]) + else + PECL_DEFINE([HAVE_LIBCURL_CAINFO], [0]) + fi + PECL_DEFINE([HAVE_LIBCURL_CAPATH], [0]) + ;; + *) + PECL_DEFINE([HAVE_LIBCURL_CAPATH], [0]) + PECL_DEFINE([HAVE_LIBCURL_CAINFO], [0]) + ;; + esac - PECL_HAVE_CONST([curl/curl.h], [CURLOPT_TLSAUTH_TYPE], int, [ - PECL_DEFINE([HAVE_LIBCURL_TLSAUTH_TYPE]) - AC_CACHE_CHECK([whether CURLOPT_TLSAUTH_TYPE expects CURL_TLSAUTH_SRP], PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP]), [ - PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])= + PECL_HAVE_CONST([curl/curl.h], [CURL_VERSION_TLSAUTH_SRP], int, [ + AC_CACHE_CHECK([for CURLOPT_TLSAUTH_TYPE SRP support], PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP]), [ + PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=no AC_TRY_RUN([ #include int main(int argc, char *argv[]) { - CURL *ch = curl_easy_init(); - return curl_easy_setopt(ch, CURLOPT_TLSAUTH_TYPE, CURL_TLSAUTH_SRP); + int has_feature = curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_TLSAUTH_SRP; + int set_failure = curl_easy_setopt(curl_easy_init(), CURLOPT_TLSAUTH_TYPE, "SRP"); + return !has_feature || set_failure; } ], [ PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=yes + ]) + ]) + if test "$PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])" = "yes"; then + PECL_DEFINE([HAVE_LIBCURL_TLSAUTH_TYPE]) + fi + ]) + + PECL_HAVE_CONST([curl/curl.h], [CURL_LOCK_DATA_SSL_SESSION], int, [ + AC_CACHE_CHECK([whether curl_share accepts CURL_LOCK_DATA_SSL_SESSION], PECL_CACHE_VAR([LIBCURL_SHARE_SSL]), [ + PECL_CACHE_VAR([LIBCURL_SHARE_SSL])= + AC_TRY_RUN([ + #include + int main(int argc, char *argv[]) { + CURLSH *ch = curl_share_init(); + return curl_share_setopt(ch, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); + } + ], [ + PECL_CACHE_VAR([LIBCURL_SHARE_SSL])=yes ], [ + PECL_CACHE_VAR([LIBCURL_SHARE_SSL])=no + ]) + ]) + if test "$PECL_CACHE_VAR([LIBCURL_SHARE_SSL])" = yes; then + PECL_DEFINE([HAVE_LIBCURL_SHARE_SSL], [1]) + fi + ]) + + if test "$PECL_VAR([LIBCURL_SSLLIB])" == "OpenSSL"; then + PECL_HAVE_CONST([curl/curl.h], [CURLOPT_TLS13_CIPHERS], int, [ + AC_CACHE_CHECK([whether curl_easy_setopt accepts CURLOPT_TLS13_CIPHERS], PECL_CACHE_VAR([LIBCURL_TLS13_CIPHERS]), [ + PECL_CACHE_VAR([LIBCURL_TLS13_CIPHERS])= AC_TRY_RUN([ #include int main(int argc, char *argv[]) { CURL *ch = curl_easy_init(); - return curl_easy_setopt(ch, CURLOPT_TLSAUTH_TYPE, "SRP"); + return curl_easy_setopt(ch, CURLSHOPT_TLS13_CIPHERS, ""); } ], [ - PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=no + PECL_CACHE_VAR([LIBCURL_TLS13_CIPHERS])=yes + ], [ + PECL_CACHE_VAR([LIBCURL_TLS13_CIPHERS])=no ]) ]) - ]) - if test -n "$PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])"; then - if $PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP]); then - PECL_DEFINE([LIBCURL_TLSAUTH_SRP], [CURL_TLSAUTH_SRP]) - PECL_DEFINE([LIBCURL_TLSAUTH_DEF], [CURL_TLSAUTH_NONE]) - else - PECL_DEFINE([LIBCURL_TLSAUTH_SRP], ["SRP"]) - PECL_DEFINE([LIBCURL_TLSAUTH_DEF], [""]) + if test "$PECL_CACHE_VAR([LIBCURL_TLS13_CIPHERS])" = yes; then + PECL_DEFINE([HAVE_LIBCURL_TLS13_CIPHERS], [1]) fi - fi - ]) + ]) + fi ]) ]) dnl @@ -133,7 +197,7 @@ AC_DEFUN([PECL_HAVE_LIBCURL_ARES], [ #include int main(int argc, char *argv[]) { curl_version_info_data *data = curl_version_info(CURLVERSION_NOW); - if (data && data->ares && data->ares_num0) { + if (data && data->ares && data->ares_num) { return 0; } return 1; @@ -159,7 +223,7 @@ dnl AC_DEFUN([PECL_HAVE_LIBCURL_CA], [ CURL_CONFIG_CA=$($CURL_CONFIG --ca) if test -z "$CURL_CONFIG_CA"; then - CURL_CONFIG_CA=$($CURL_CONFIG --configure | $EGREP -o -- "--with-ca@<:@^'@:>@*" | $SED 's/.*=//') + CURL_CONFIG_CA=$($CURL_CONFIG --configure | $EGREP -o -- "--with-ca@<:@^\'@:>@*" | $SED 's/.*=//') fi PECL_CHECK_CA($CURL_CONFIG_CA, $CURL_CONFIG_CA) PECL_VAR([LIBCURL_CAPATH])=$PECL_VAR([CAPATH]) @@ -181,10 +245,10 @@ AC_DEFUN([PECL_CHECK_LIBCURL], [dnl PECL_CHECK_CONFIG(libcurl, $CURL_CONFIG, [--version | $SED -e 's/@<:@^0-9\.@:>@//g'], [--cflags], - [--libs | $EGREP -o -- '(^|\s)-L@<:@^ @:>@* ?'], - [--libs | $EGREP -o -- '(^|\s)-l@<:@^ @:>@* ?']dnl + [--libs | $EGREP -o -- '(^|\s)-L@<:@^ @:>@* ?' | xargs], + [--libs | $EGREP -o -- '(^|\s)-l@<:@^ @:>@* ?' | xargs]dnl ) ifelse([$2],,,[ PECL_HAVE_VERSION([libcurl], [$2]) ]) -]) \ No newline at end of file +])