2 dnl PECL_HAVE_LIBCURL_FEATURE(feature[, code-if-yes[, code-if-no]])
4 dnl Checks $CURL_CONFIG --feature.
5 dnl Defines PHP_<PECL_NAME>_HAVE_LIBCURL_<FEATURE>
7 AC_DEFUN([PECL_HAVE_LIBCURL_FEATURE], [dnl
8 AC_REQUIRE([PECL_PROG_EGREP])dnl
9 AC_CACHE_CHECK([for $1 feature in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1]), [
10 if $CURL_CONFIG --feature | $EGREP -q $1; then
11 PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1])=yes
13 PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1])=no
16 PECL_VAR([HAVE_LIBCURL_FEATURE_$1])=$PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1])
17 if $PECL_VAR([HAVE_LIBCURL_FEATURE_$1]); then
18 PECL_DEFINE([HAVE_LIBCURL_$1])
25 dnl PECL_HAVE_LIBCURL_PROTOCOL(protocol[, code-if-yes[, code-if-no]])
27 AC_DEFUN([PECL_HAVE_LIBCURL_PROTOCOL], [
28 AC_CACHE_CHECK([for $1 protocol in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_PROTOCOL_$1]), [
29 if $CURL_CONFIG --protocols | $EGREP -q $1; then
30 PECL_CACHE_VAR([HAVE_LIBCURL_PROTOCOL_$1])=yes
32 PECL_CACHE_VAR([HAVE_LIBCURL_PROTOCOL_$1])=no
35 PECL_VAR([HAVE_LIBCURL_PROTOCOL_$1])=$PECL_CACHE_VAR([HAVE_LIBCURL_PROTOCOL_$1])
36 if $PECL_VAR([HAVE_LIBCURL_PROTOCOL_$1]); then
37 PECL_DEFINE([HAVE_LIBCURL_$1])
44 dnl PECL_HAVE_LIBCURL_SSLLIB(ssllib-name, headers, libs)
46 AC_DEFUN([PECL_HAVE_LIBCURL_SSLLIB], [
47 AC_CACHE_CHECK([for $1 providing SSL in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_$1]), [
49 #include <curl/curl.h>
50 int main(int argc, char *argv[]) {
51 curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
52 if (data && data->ssl_version && *data->ssl_version) {
53 const char *ptr = data->ssl_version;
54 while(*ptr == ' ') ++ptr;
55 return strncasecmp(ptr, "$1", sizeof("$1")-1);
60 PECL_CACHE_VAR([HAVE_LIBCURL_$1])=yes
62 PECL_CACHE_VAR([HAVE_LIBCURL_$1])=no
65 PECL_VAR([HAVE_LIBCURL_$1])=$PECL_CACHE_VAR([HAVE_LIBCURL_$1])
66 if $PECL_VAR([HAVE_LIBCURL_$1]); then
67 PECL_DEFINE([HAVE_LIBCURL_$1])
68 m4_foreach_w(header, $2, [AC_CHECK_HEADER(header,, [
69 PECL_VAR([HAVE_LIBCURL_$1])=false
72 if $PECL_VAR([HAVE_LIBCURL_$1]); then
73 m4_foreach_w(lib, $3, [
74 PHP_ADD_LIBRARY(lib, true, [AS_TR_CPP(PECL_NAME[_SHARED_LIBADD])])
81 dnl PECL_HAVE_LIBCURL_SSL
83 AC_DEFUN([PECL_HAVE_LIBCURL_SSL], [
84 PECL_HAVE_LIBCURL_FEATURE([SSL], [
85 PECL_HAVE_LIBCURL_SSLLIB([OpenSSL], [openssl/ssl.h openssl/crypto.h], [ssl crypto])
86 PECL_HAVE_LIBCURL_SSLLIB([GnuTLS], [gnutls.h gcrypt.h], [gnutls gcrypt])
87 PECL_HAVE_LIBCURL_SSLLIB([NSS])
88 PECL_HAVE_LIBCURL_SSLLIB([SecureTransport])
89 PECL_HAVE_LIBCURL_SSLLIB([GSKit])
91 PECL_HAVE_CONST([curl/curl.h], [CURLOPT_TLSAUTH_TYPE], int, [
92 PECL_DEFINE([HAVE_LIBCURL_TLSAUTH_TYPE])
93 AC_CACHE_CHECK([whether CURLOPT_TLSAUTH_TYPE expects CURL_TLSAUTH_SRP], PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP]), [
94 PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=
96 #include <curl/curl.h>
97 int main(int argc, char *argv[]) {
98 CURL *ch = curl_easy_init();
99 return curl_easy_setopt(ch, CURLOPT_TLSAUTH_TYPE, CURL_TLSAUTH_SRP);
102 PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=yes
105 #include <curl/curl.h>
106 int main(int argc, char *argv[]) {
107 CURL *ch = curl_easy_init();
108 return curl_easy_setopt(ch, CURLOPT_TLSAUTH_TYPE, "SRP");
111 PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=no
115 if test -n "$PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])"; then
116 if $PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP]); then
117 PECL_DEFINE([LIBCURL_TLSAUTH_SRP], [CURL_TLSAUTH_SRP])
118 PECL_DEFINE([LIBCURL_TLSAUTH_DEF], [CURL_TLSAUTH_NONE])
120 PECL_DEFINE([LIBCURL_TLSAUTH_SRP], ["SRP"])
121 PECL_DEFINE([LIBCURL_TLSAUTH_DEF], [""])
128 dnl PECL_HAVE_LIBCURL_ARES
130 AC_DEFUN([PECL_HAVE_LIBCURL_ARES], [
131 AC_CACHE_CHECK([for c-ares providing AsynchDNS in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_ARES]), [
133 #include <curl/curl.h>
134 int main(int argc, char *argv[]) {
135 curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
136 if (data && data->ares && data->ares_num0) {
142 PECL_CACHE_VAR([HAVE_LIBCURL_ARES])=yes
144 PECL_CACHE_VAR([HAVE_LIBCURL_ARES])=no
147 PECL_VAR([HAVE_LIBCURL_ARES])=$PECL_CACHE_VAR([HAVE_LIBCURL_ARES])
148 if $PECL_VAR([HAVE_LIBCURL_ARES]); then
149 PECL_DEFINE([HAVE_LIBCURL_ARES])
153 dnl PECL_HAVE_LIBCURL_CA
155 dnl Checks for any installed default CA path/info with PECL_CHECK_CA providing curl's ca config.
156 dnl Defines shell vars PHP_<PECL_NAME>_LIBCURL_CAPATH and PHP_<PECL_NAME>_LIBCURL_CAINFO
157 dnl additionally to those defined in PECL_CHECK_CA.
159 AC_DEFUN([PECL_HAVE_LIBCURL_CA], [
160 CURL_CONFIG_CA=$($CURL_CONFIG --ca)
161 if test -z "$CURL_CONFIG_CA"; then
162 CURL_CONFIG_CA=$($CURL_CONFIG --configure | $EGREP -o -- "--with-ca@<:@^'@:>@*" | $SED 's/.*=//')
164 PECL_CHECK_CA($CURL_CONFIG_CA, $CURL_CONFIG_CA)
165 PECL_VAR([LIBCURL_CAPATH])=$PECL_VAR([CAPATH])
166 PECL_VAR([LIBCURL_CAINFO])=$PECL_VAR([CAINFO])
169 dnl PECL_CHECK_LIBCURL(search-dir[, min-version])
171 dnl Defines shell var $CURL_CONFIG (false if curl-config could not be found).
173 dnl Calls PECL_CHECK_CONFIG(libcurl ...) for its tests.
174 dnl Call PECL_CHECK_DONE(libcurl[, success]) yourself when you're done
175 dnl with any subtests. This is IMPORTANT!
177 AC_DEFUN([PECL_CHECK_LIBCURL], [dnl
178 AC_REQUIRE([PECL_PROG_SED])dnl
179 AC_REQUIRE([PECL_PROG_EGREP])dnl
180 AC_PATH_PROG([CURL_CONFIG], [curl-config], false, [$1/bin:$PATH:/usr/local/bin])
181 PECL_CHECK_CONFIG(libcurl, $CURL_CONFIG,
182 [--version | $SED -e 's/@<:@^0-9\.@:>@//g'],
184 [--libs | $EGREP -o -- '-L@<:@^ @:>@* ?'],
185 [--libs | $EGREP -o -- '-l@<:@^ @:>@* ?']dnl
188 PECL_HAVE_VERSION([libcurl], [$2])