prepare v4.2.5
[m6w6/ext-http] / config9.m4
1
2 m4_foreach(dir, [., ext/http], [
3 sinclude(dir/autoconf/pecl/pecl.m4)
4 sinclude(dir/autoconf/pecl/zlib.m4)
5 sinclude(dir/autoconf/pecl/libbrotli.m4)
6 sinclude(dir/autoconf/pecl/libcurl.m4)
7 sinclude(dir/autoconf/pecl/libevent.m4)
8 ])
9
10 PECL_INIT([http])
11
12 PHP_ARG_WITH([http], [whether to enable extended HTTP support],
13 [ --with-http Enable extended HTTP support])
14 if test "$PHP_HTTP" != "no"; then
15 dnl STDC
16 AC_TYPE_OFF_T
17 AC_TYPE_MBSTATE_T
18 dnl getdomainname() is declared in netdb.h on some platforms: AIX, OSF
19 AC_CHECK_HEADERS([netdb.h unistd.h wchar.h wctype.h arpa/inet.h])
20 AC_CHECK_FUNC(gethostname,,[
21 AC_CHECK_LIB(nsl, gethostname)
22 ])
23 AC_CHECK_FUNC(getdomainname,,[
24 AC_CHECK_LIB(nsl, getdomainname)
25 ])
26 AC_CHECK_FUNCS(mbrtowc mbtowc iswalnum inet_pton)
27
28 CFLAGS="$CFLAGS -Wno-strict-prototypes"
29
30 dnl ZLIB
31 PHP_ARG_WITH([http-zlib-dir], [whether/where to check for zlib],
32 [ --with-http-zlib-dir[=DIR] HTTP: where to find zlib], $PHP_HTTP)
33 PECL_CHECK_ZLIB([$PHP_HTTP_ZLIB_DIR], [1.2.0.4])
34 PECL_CHECK_DONE(zlib, $PECL_VAR([HAVE_ZLIB]))
35
36 dnl BROTLI
37 PHP_ARG_WITH([http-libbrotli-dir], [whether/where to check for libbrotli],
38 [ --with-http-libbrotli-dir[=DIR] HTTP: where to find libbrotli], $PHP_HTTP)
39 PECL_CHECK_LIBBROTLI([$PHP_HTTP_LIBBROTLI_DIR], [1.0])
40 PECL_CHECK_DONE(libbrotli, $PECL_VAR([HAVE_LIBBROTLI]))
41
42 dnl CURL
43 PHP_ARG_WITH([http-libcurl-dir], [whether/where to check for libcurl],
44 [ --with-http-libcurl-dir[=DIR] HTTP: where to find libcurl], $PHP_HTTP)
45 if test "$PHP_HTTP_LIBCURL_DIR" != "no"; then
46 PECL_CHECK_LIBCURL([$PHP_HTTP_LIBCURL_DIR], [7.18.2])
47 PECL_HAVE_LIBCURL_PROTOCOL([HTTP], [
48 PECL_HAVE_LIBCURL_FEATURE([HTTP2])
49 PECL_HAVE_LIBCURL_FEATURE([ALT-SVC])
50 PECL_HAVE_LIBCURL_FEATURE([HSTS])
51 PECL_HAVE_LIBCURL_ARES
52 PECL_HAVE_LIBCURL_SSL
53 PECL_HAVE_LIBCURL_CA
54 PECL_DEFINE([HAVE_CLIENT])
55 ])
56 PECL_CHECK_DONE(libcurl, [$PECL_VAR([HAVE_LIBCURL_PROTOCOL_HTTP])])
57 fi
58
59 dnl EVENT
60 PHP_ARG_WITH([http-libevent-dir], [whether/where to check for libevent],
61 [ --with-http-libevent-dir[=DIR] HTTP: where to find libevent], $PHP_HTTP_LIBCURL_DIR, no)
62 if test "$PHP_HTTP_LIBEVENT_DIR" != "no"; then
63 PECL_CHECK_LIBEVENT([$PHP_HTTP_LIBEVENT_DIR])
64 PECL_CHECK_DONE(libevent, [$PECL_VAR([HAVE_LIBEVENT])])
65 fi
66
67 dnl GNU IDNA
68 PHP_ARG_WITH([http-libidn2-dir], [whether/where to check for libidn2],
69 [ --with-http-libidn2-dir[=DIR] HTTP: where to find libidn2], $PHP_HTTP_LIBCURL_DIR, no)
70 if test "$PHP_HTTP_LIBIDN2_DIR" != "no"; then
71 PECL_CHECK_CUSTOM(libidn2, "$PHP_HTTP_LIBIDN2_DIR", idn2.h, idn2,
72 [$($EGREP "define IDN2_VERSION " "include/idn2.h" | $SED -e's/^.*VERSION //g' -e 's/@<:@^0-9\.@:>@//g')])
73 if $PECL_VAR([HAVE_LIBIDN2]); then
74 PECL_DEFINE([HAVE_IDNA2008])
75 fi
76 PECL_CHECK_DONE(libidn2, $PECL_VAR([HAVE_LIBIDN2]))
77 fi
78 PHP_ARG_WITH([http-libidn-dir], [whether/where to check for libidn],
79 [ --with-http-libidn-dir[=DIR] HTTP: where to find libidn], $PHP_HTTP_LIBCURL_DIR, no)
80 if test "$PHP_HTTP_LIBIDN_DIR" != "no"; then
81 PECL_CHECK_PKGCONFIG(libidn, [$PHP_HTTP_LIBIDN_DIR])
82 if $PECL_VAR([HAVE_LIBIDN]); then
83 PECL_HAVE_VERSION(libidn, 1.36, [
84 PECL_HAVE_VERSION(libidn, 1.39, [
85 PECL_DEFINE([HAVE_IDNA2003])
86 ], [
87 PECL_VAR([HAVE_LIBIDN])=false
88 AC_MSG_WARN([libidn locale detection broken; disabling libidn support])
89 ])
90 ], [
91 PECL_DEFINE([HAVE_IDNA2003])
92 ])
93 fi
94 PECL_CHECK_DONE(libidn, $PECL_VAR([HAVE_LIBIDN]))
95 fi
96
97 dnl ICU IDNA
98 PHP_ARG_WITH([http-libicu-dir], [whether/where to check for libicu],
99 [ --with-http-libicu-dir[=DIR] HTTP: where to find libicu], $PHP_HTTP_LIBCURL_DIR, no)
100 if test "$PHP_HTTP_LIBICU_DIR" != "no"; then
101 AC_PATH_PROG(ICU_CONFIG, icu-config, false, [$PHP_HTTP_LIBICU_DIR/bin:$PATH:/usr/local/bin])
102
103 if $ICU_CONFIG --exists >/dev/null 2>/dev/null; then
104 PECL_CHECK_CONFIG(libicu, [$ICU_CONFIG], [--version], [--cppflags], [--ldflags-searchpath], [--ldflags-libsonly])
105 else
106 PECL_CHECK_PKGCONFIG(icu-i18n, [$PHP_HTTP_LIBICU_DIR])
107 fi
108 AC_CACHE_CHECK([for uidna_IDNToASCII], PECL_CACHE_VAR([HAVE_UIDNA_IDNToASCII]), [
109 if printf "%s" "$CFLAGS" | $EGREP -q "(^|\s)-Werror\b"; then
110 if ! printf "%s" "$CFLAGS" | $EGREP -q "(^|\s)-Wno-error=deprecated-declarations\b"; then
111 CFLAGS="$CFLAGS -Wno-error=deprecated-declarations"
112 fi
113 fi
114 AC_TRY_LINK([
115 #include <unicode/uidna.h>
116 ], [
117 uidna_IDNToASCII(0, 0, 0, 0, 0, 0, 0);
118 ], [
119 PECL_CACHE_VAR([HAVE_UIDNA_IDNToASCII])=yes
120 ], [
121 PECL_CACHE_VAR([HAVE_UIDNA_IDNToASCII])=no
122 ])
123 ])
124 if $PECL_CACHE_VAR([HAVE_UIDNA_IDNTOASCII]); then
125 PECL_DEFINE([HAVE_IDNA2003])
126 PECL_DEFINE_FN([UIDNA_IDNTOASCII])
127 fi
128
129 AC_CACHE_CHECK([for uidna_nameToASCII_UTF8], PECL_CACHE_VAR([HAVE_UIDNA_NAMETOASCII_UTF8]), [
130 AC_TRY_LINK([
131 #include <unicode/uidna.h>
132 ], [
133 uidna_nameToASCII_UTF8(0, 0, 0, 0, 0, 0, 0);
134 ], [
135 PECL_CACHE_VAR([HAVE_UIDNA_NAMETOASCII_UTF8])=yes
136 ], [
137 PECL_CACHE_VAR([HAVE_UIDNA_NAMETOASCII_UTF8])=no
138 ])
139 ])
140 if $PECL_CACHE_VAR([HAVE_UIDNA_NAMETOASCII_UTF8]); then
141 PECL_DEFINE([HAVE_IDNA2008])
142 PECL_DEFINE_FN([uidna_nameToASCII_UTF8])
143 fi
144 PECL_CHECK_DONE(libicu, [$PECL_VAR([HAVE_LIBICU])])
145 fi
146
147 dnl IDNKIT2
148 PHP_ARG_WITH([http-libidnkit2-dir], [whether/where to check for libidnkit2],
149 [ --with-http-libidnkit2-dir[=DIR] HTTP: where to find libidnkit2], $PHP_HTTP_LIBCURL_DIR, no)
150 if test "$PHP_HTTP_LIBIDNKIT2_DIR" != "no"; then
151 PECL_CHECK_CUSTOM(libidnkit2, "$PHP_HTTP_LIBIDNKIT2_DIR", idn/api.h, idnkit,
152 [$($EGREP "define IDNKIT_VERSION_LIBIDN\b" "include/idn/version.h" | $SED -e's/^.*VERSION_LIBIDN//g' -e 's/@<:@^0-9\.@:>@//g')])
153 if $PECL_VAR([HAVE_LIBIDNKIT2]); then
154 PECL_DEFINE([HAVE_IDNA2008])
155 fi
156 PECL_CHECK_DONE(libidnkit2, [$PECL_VAR([HAVE_LIBIDNKIT2])])
157 fi
158 dnl IDNKIT1
159 PHP_ARG_WITH([http-libidnkit-dir], [whether/where to check for libidnkit],
160 [ --with-http-libidnkit-dir[=DIR] HTTP: where to find libidnkit], $PHP_HTTP_LIBCURL_DIR, no)
161 if test "$PHP_HTTP_LIBIDNKIT_DIR" != "no"; then
162 # libidnkit1 and libidnkit2 have the same API
163 if test "$PHP_HTTP_LIBIDNKIT2_DIR" != no && $PECL_VAR([HAVE_LIBIDNKIT2]); then
164 AC_MSG_WARN([libidnkit-$PECL_VAR([LIBIDNKIT2_VERSION]) already enabled, skipping libidnkit1])
165 else
166 PECL_CHECK_CUSTOM(libidnkit, "$PHP_HTTP_LIBIDNKIT_DIR", idn/api.h, idnkit,
167 [$($EGREP "define IDNKIT_VERSION\b" "include/idn/version.h" | $SED -e's/^.*VERSION//g' -e 's/@<:@^0-9\.@:>@//g')])
168 if $PECL_VAR([HAVE_LIBIDNKIT]); then
169 PECL_DEFINE([HAVE_IDNA2003])
170 fi
171 PECL_CHECK_DONE(libidnkit, [$PECL_VAR([HAVE_LIBIDNKIT])])
172 fi
173 fi
174
175 dnl EXTENSIONS
176 PECL_HAVE_PHP_EXT([raphf], [
177 PECL_HAVE_PHP_EXT_HEADER([raphf])
178 ], [
179 AC_MSG_ERROR([please install and enable pecl/raphf])
180 ])
181 PECL_HAVE_PHP_EXT([iconv])
182
183 dnl DONE
184 PHP_SUBST([HTTP_SHARED_LIBADD])
185
186 PECL_VAR([SRCDIR])=PHP_EXT_SRCDIR(http)
187 PECL_VAR([BUILDDIR])=PHP_EXT_BUILDDIR(http)
188
189 PHP_ADD_INCLUDE([$PECL_VAR([SRCDIR])/src])
190 PHP_ADD_BUILD_DIR([$PECL_VAR([BUILDDIR])/src])
191
192 PECL_VAR([HEADERS])=$(cd $PECL_VAR([SRCDIR])/src && echo *.h)
193 PECL_VAR([SOURCES])=$(cd $PECL_VAR([SRCDIR]) && echo src/*.c)
194
195 PHP_NEW_EXTENSION(http, [$PECL_VAR([SOURCES])], [$ext_shared])
196 PHP_INSTALL_HEADERS(ext/http, [php_http.h $PECL_VAR([HEADERS])])
197
198 PHP_ARG_WITH([http-shared-deps], [whether to depend on extensions which have been built shared],
199 [ --without-http-shared-deps HTTP: do not depend on extensions like hash
200 and iconv (when they are built shared)], yes, no)
201 if test "$PHP_HTTP_SHARED_DEPS" != "no"; then
202 if $PECL_VAR([HAVE_EXT_HASH]); then
203 PHP_ADD_EXTENSION_DEP([http], [hash], true)
204 fi
205 if $PECL_VAR([HAVE_EXT_ICONV]); then
206 PHP_ADD_EXTENSION_DEP([http], [iconv], true)
207 fi
208 fi
209 PHP_ADD_EXTENSION_DEP([http], [raphf], true)
210
211 PHP_SUBST(PECL_VAR([HEADERS]))
212 PHP_SUBST(PECL_VAR([SOURCES]))
213
214 PHP_SUBST(PECL_VAR([SRCDIR]))
215 PHP_SUBST(PECL_VAR([BUILDDIR]))
216
217 PHP_ADD_MAKEFILE_FRAGMENT
218
219 AC_DEFINE([HAVE_HTTP], [1], [Have extended HTTP support])
220 fi