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