Merge branch 'v2.6.x' of ../ext-http
[m6w6/ext-http] / autoconf / pecl / libcurl.m4
1 dnl
2 dnl PECL_HAVE_LIBCURL_FEATURE(feature[, code-if-yes[, code-if-no]])
3 dnl
4 dnl Checks $CURL_CONFIG --feature.
5 dnl Defines PHP_<PECL_NAME>_HAVE_LIBCURL_<FEATURE>
6 dnl
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
12 else
13 PECL_CACHE_VAR([HAVE_LIBCURL_FEATURE_$1])=no
14 fi
15 ])
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])
19 $2
20 else
21 ifelse([$3],,:,[$3])
22 fi
23 ])
24 dnl
25 dnl PECL_HAVE_LIBCURL_PROTOCOL(protocol[, code-if-yes[, code-if-no]])
26 dnl
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
31 else
32 PECL_CACHE_VAR([HAVE_LIBCURL_PROTOCOL_$1])=no
33 fi
34 ])
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])
38 $2
39 else
40 ifelse([$3],,:,[$3])
41 fi
42 ])
43 dnl
44 dnl PECL_HAVE_LIBCURL_SSLLIB(ssllib-name, headers, libs)
45 dnl
46 AC_DEFUN([PECL_HAVE_LIBCURL_SSLLIB], [
47 AC_CACHE_CHECK([for $1 providing SSL in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_$1]), [
48 AC_TRY_RUN([
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);
56 }
57 return 1;
58 }
59 ], [
60 PECL_CACHE_VAR([HAVE_LIBCURL_$1])=yes
61 ], [
62 PECL_CACHE_VAR([HAVE_LIBCURL_$1])=no
63 ])
64 ])
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
70 ])])
71 ifelse([$3],,,[
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])])
75 ])
76 fi
77 ])
78 fi
79 ])
80 dnl
81 dnl PECL_HAVE_LIBCURL_SSL
82 dnl
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])
90
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])=
95 AC_TRY_RUN([
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);
100 }
101 ], [
102 PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=yes
103 ], [
104 AC_TRY_RUN([
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");
109 }
110 ], [
111 PECL_CACHE_VAR([LIBCURL_TLSAUTH_SRP])=no
112 ])
113 ])
114 ])
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])
119 else
120 PECL_DEFINE([LIBCURL_TLSAUTH_SRP], ["SRP"])
121 PECL_DEFINE([LIBCURL_TLSAUTH_DEF], [""])
122 fi
123 fi
124 ])
125 ])
126 ])
127 dnl
128 dnl PECL_HAVE_LIBCURL_ARES
129 dnl
130 AC_DEFUN([PECL_HAVE_LIBCURL_ARES], [
131 AC_CACHE_CHECK([for c-ares providing AsynchDNS in libcurl], PECL_CACHE_VAR([HAVE_LIBCURL_ARES]), [
132 AC_TRY_RUN([
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) {
137 return 0;
138 }
139 return 1;
140 }
141 ], [
142 PECL_CACHE_VAR([HAVE_LIBCURL_ARES])=yes
143 ], [
144 PECL_CACHE_VAR([HAVE_LIBCURL_ARES])=no
145 ])
146 ])
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])
150 fi
151 ])
152 dnl
153 dnl PECL_HAVE_LIBCURL_CA
154 dnl
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.
158 dnl
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/.*=//')
163 fi
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])
167 ])
168 dnl
169 dnl PECL_CHECK_LIBCURL(search-dir[, min-version])
170 dnl
171 dnl Defines shell var $CURL_CONFIG (false if curl-config could not be found).
172 dnl
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!
176 dnl
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'],
183 [--cflags],
184 [--libs | $EGREP -o -- '(^|\s)-L@<:@^ @:>@* ?'],
185 [--libs | $EGREP -o -- '(^|\s)-l@<:@^ @:>@* ?']dnl
186 )
187 ifelse([$2],,,[
188 PECL_HAVE_VERSION([libcurl], [$2])
189 ])
190 ])