xref: /aosp_15_r20/external/cronet/third_party/libevent/configure.in (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Workerdnl configure.in for libevent
2*6777b538SAndroid Build Coastguard Workerdnl Dug Song <[email protected]>
3*6777b538SAndroid Build Coastguard WorkerAC_INIT(event.c)
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard WorkerAM_INIT_AUTOMAKE(libevent,1.4.15)
6*6777b538SAndroid Build Coastguard WorkerAM_CONFIG_HEADER(config.h)
7*6777b538SAndroid Build Coastguard Workerdnl AM_MAINTAINER_MODE
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard WorkerAC_CONFIG_MACRO_DIR([m4])
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard WorkerAC_CANONICAL_HOST
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard WorkerAC_DEFINE(NUMERIC_VERSION, 0x01040f00, [Numeric representation of the version])
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard Workerdnl Initialize prefix.
16*6777b538SAndroid Build Coastguard Workerif test "$prefix" = "NONE"; then
17*6777b538SAndroid Build Coastguard Worker   prefix="/usr/local"
18*6777b538SAndroid Build Coastguard Workerfi
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard Workerdnl Checks for programs.
21*6777b538SAndroid Build Coastguard WorkerAC_PROG_CC
22*6777b538SAndroid Build Coastguard WorkerAC_PROG_INSTALL
23*6777b538SAndroid Build Coastguard WorkerAC_PROG_LN_S
24*6777b538SAndroid Build Coastguard Worker
25*6777b538SAndroid Build Coastguard WorkerAC_PROG_GCC_TRADITIONAL
26*6777b538SAndroid Build Coastguard Workerif test "$GCC" = yes ; then
27*6777b538SAndroid Build Coastguard Worker        CFLAGS="$CFLAGS -Wall"
28*6777b538SAndroid Build Coastguard Worker        # And disable the strict-aliasing optimization, since it breaks
29*6777b538SAndroid Build Coastguard Worker        # our sockaddr-handling code in strange ways.
30*6777b538SAndroid Build Coastguard Worker        CFLAGS="$CFLAGS -fno-strict-aliasing"
31*6777b538SAndroid Build Coastguard Workerfi
32*6777b538SAndroid Build Coastguard Worker
33*6777b538SAndroid Build Coastguard Workerdnl Libevent 1.4 isn't multithreaded, but some of its functions are
34*6777b538SAndroid Build Coastguard Workerdnl documented to be reentrant.  If you don't define the right macros
35*6777b538SAndroid Build Coastguard Workerdnl on some platforms, you get non-reentrant versions of the libc
36*6777b538SAndroid Build Coastguard Workerdnl functinos (like an errno that's shared by all threads).
37*6777b538SAndroid Build Coastguard WorkerAC_MSG_CHECKING([whether we need extra flags to make libc reentrant])
38*6777b538SAndroid Build Coastguard Workercase $host in
39*6777b538SAndroid Build Coastguard Worker   *solaris* | *-osf* | *-hpux* )
40*6777b538SAndroid Build Coastguard Worker     AC_MSG_RESULT([-D_REENTRANT])
41*6777b538SAndroid Build Coastguard Worker     CFLAGS="$CFLAGS -D_REENTRANT"
42*6777b538SAndroid Build Coastguard Worker     ;;
43*6777b538SAndroid Build Coastguard Worker   *-aix* | *-freebsd* | *-darwin* )
44*6777b538SAndroid Build Coastguard Worker     AC_MSG_RESULT([-D_THREAD_SAFE])
45*6777b538SAndroid Build Coastguard Worker     CFLAGS="$CFLAGS -D_THREAD_SAFE"
46*6777b538SAndroid Build Coastguard Worker     ;;
47*6777b538SAndroid Build Coastguard Worker   *)
48*6777b538SAndroid Build Coastguard Worker     AC_MSG_RESULT(no)
49*6777b538SAndroid Build Coastguard Worker     ;;
50*6777b538SAndroid Build Coastguard Workeresac
51*6777b538SAndroid Build Coastguard Worker
52*6777b538SAndroid Build Coastguard WorkerAC_ARG_ENABLE(gcc-warnings,
53*6777b538SAndroid Build Coastguard Worker     AS_HELP_STRING(--enable-gcc-warnings, enable verbose warnings with GCC))
54*6777b538SAndroid Build Coastguard Worker
55*6777b538SAndroid Build Coastguard WorkerAC_PROG_LIBTOOL
56*6777b538SAndroid Build Coastguard Worker
57*6777b538SAndroid Build Coastguard Workerdnl   Uncomment "AC_DISABLE_SHARED" to make shared librraries not get
58*6777b538SAndroid Build Coastguard Workerdnl   built by default.  You can also turn shared libs on and off from
59*6777b538SAndroid Build Coastguard Workerdnl   the command line with --enable-shared and --disable-shared.
60*6777b538SAndroid Build Coastguard Workerdnl AC_DISABLE_SHARED
61*6777b538SAndroid Build Coastguard WorkerAC_SUBST(LIBTOOL_DEPS)
62*6777b538SAndroid Build Coastguard Worker
63*6777b538SAndroid Build Coastguard Workerdnl Checks for libraries.
64*6777b538SAndroid Build Coastguard WorkerAC_CHECK_LIB(socket, socket)
65*6777b538SAndroid Build Coastguard WorkerAC_CHECK_LIB(resolv, inet_aton)
66*6777b538SAndroid Build Coastguard WorkerAC_CHECK_LIB(rt, clock_gettime)
67*6777b538SAndroid Build Coastguard WorkerAC_CHECK_LIB(nsl, inet_ntoa)
68*6777b538SAndroid Build Coastguard Worker
69*6777b538SAndroid Build Coastguard Workerdnl Checks for header files.
70*6777b538SAndroid Build Coastguard WorkerAC_HEADER_STDC
71*6777b538SAndroid Build Coastguard WorkerAC_CHECK_HEADERS(fcntl.h stdarg.h inttypes.h stdint.h poll.h signal.h unistd.h sys/epoll.h sys/time.h sys/queue.h sys/event.h sys/param.h sys/ioctl.h sys/select.h sys/devpoll.h port.h netinet/in6.h sys/socket.h)
72*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_queue_h" = "xyes"; then
73*6777b538SAndroid Build Coastguard Worker	AC_MSG_CHECKING(for TAILQ_FOREACH in sys/queue.h)
74*6777b538SAndroid Build Coastguard Worker	AC_EGREP_CPP(yes,
75*6777b538SAndroid Build Coastguard Worker[
76*6777b538SAndroid Build Coastguard Worker#include <sys/queue.h>
77*6777b538SAndroid Build Coastguard Worker#ifdef TAILQ_FOREACH
78*6777b538SAndroid Build Coastguard Worker yes
79*6777b538SAndroid Build Coastguard Worker#endif
80*6777b538SAndroid Build Coastguard Worker],	[AC_MSG_RESULT(yes)
81*6777b538SAndroid Build Coastguard Worker	 AC_DEFINE(HAVE_TAILQFOREACH, 1,
82*6777b538SAndroid Build Coastguard Worker		[Define if TAILQ_FOREACH is defined in <sys/queue.h>])],
83*6777b538SAndroid Build Coastguard Worker	AC_MSG_RESULT(no)
84*6777b538SAndroid Build Coastguard Worker	)
85*6777b538SAndroid Build Coastguard Workerfi
86*6777b538SAndroid Build Coastguard Worker
87*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_time_h" = "xyes"; then
88*6777b538SAndroid Build Coastguard Worker	AC_MSG_CHECKING(for timeradd in sys/time.h)
89*6777b538SAndroid Build Coastguard Worker	AC_EGREP_CPP(yes,
90*6777b538SAndroid Build Coastguard Worker[
91*6777b538SAndroid Build Coastguard Worker#include <sys/time.h>
92*6777b538SAndroid Build Coastguard Worker#ifdef timeradd
93*6777b538SAndroid Build Coastguard Worker yes
94*6777b538SAndroid Build Coastguard Worker#endif
95*6777b538SAndroid Build Coastguard Worker],	[ AC_DEFINE(HAVE_TIMERADD, 1,
96*6777b538SAndroid Build Coastguard Worker		[Define if timeradd is defined in <sys/time.h>])
97*6777b538SAndroid Build Coastguard Worker	  AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
98*6777b538SAndroid Build Coastguard Worker)
99*6777b538SAndroid Build Coastguard Workerfi
100*6777b538SAndroid Build Coastguard Worker
101*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_time_h" = "xyes"; then
102*6777b538SAndroid Build Coastguard Worker	AC_MSG_CHECKING(for timercmp in sys/time.h)
103*6777b538SAndroid Build Coastguard Worker	AC_EGREP_CPP(yes,
104*6777b538SAndroid Build Coastguard Worker[
105*6777b538SAndroid Build Coastguard Worker#include <sys/time.h>
106*6777b538SAndroid Build Coastguard Worker#ifdef timercmp
107*6777b538SAndroid Build Coastguard Worker yes
108*6777b538SAndroid Build Coastguard Worker#endif
109*6777b538SAndroid Build Coastguard Worker],	[ AC_DEFINE(HAVE_TIMERCMP, 1,
110*6777b538SAndroid Build Coastguard Worker		[Define if timercmp is defined in <sys/time.h>])
111*6777b538SAndroid Build Coastguard Worker	  AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
112*6777b538SAndroid Build Coastguard Worker)
113*6777b538SAndroid Build Coastguard Workerfi
114*6777b538SAndroid Build Coastguard Worker
115*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_time_h" = "xyes"; then
116*6777b538SAndroid Build Coastguard Worker	AC_MSG_CHECKING(for timerclear in sys/time.h)
117*6777b538SAndroid Build Coastguard Worker	AC_EGREP_CPP(yes,
118*6777b538SAndroid Build Coastguard Worker[
119*6777b538SAndroid Build Coastguard Worker#include <sys/time.h>
120*6777b538SAndroid Build Coastguard Worker#ifdef timerclear
121*6777b538SAndroid Build Coastguard Worker yes
122*6777b538SAndroid Build Coastguard Worker#endif
123*6777b538SAndroid Build Coastguard Worker],	[ AC_DEFINE(HAVE_TIMERCLEAR, 1,
124*6777b538SAndroid Build Coastguard Worker		[Define if timerclear is defined in <sys/time.h>])
125*6777b538SAndroid Build Coastguard Worker	  AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
126*6777b538SAndroid Build Coastguard Worker)
127*6777b538SAndroid Build Coastguard Workerfi
128*6777b538SAndroid Build Coastguard Worker
129*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_time_h" = "xyes"; then
130*6777b538SAndroid Build Coastguard Worker	AC_MSG_CHECKING(for timerisset in sys/time.h)
131*6777b538SAndroid Build Coastguard Worker	AC_EGREP_CPP(yes,
132*6777b538SAndroid Build Coastguard Worker[
133*6777b538SAndroid Build Coastguard Worker#include <sys/time.h>
134*6777b538SAndroid Build Coastguard Worker#ifdef timerisset
135*6777b538SAndroid Build Coastguard Worker yes
136*6777b538SAndroid Build Coastguard Worker#endif
137*6777b538SAndroid Build Coastguard Worker],	[ AC_DEFINE(HAVE_TIMERISSET, 1,
138*6777b538SAndroid Build Coastguard Worker		[Define if timerisset is defined in <sys/time.h>])
139*6777b538SAndroid Build Coastguard Worker	  AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
140*6777b538SAndroid Build Coastguard Worker)
141*6777b538SAndroid Build Coastguard Workerfi
142*6777b538SAndroid Build Coastguard Worker
143*6777b538SAndroid Build Coastguard Workerdnl - check if the macro WIN32 is defined on this compiler.
144*6777b538SAndroid Build Coastguard Workerdnl - (this is how we check for a windows version of GCC)
145*6777b538SAndroid Build Coastguard WorkerAC_MSG_CHECKING(for WIN32)
146*6777b538SAndroid Build Coastguard WorkerAC_TRY_COMPILE(,
147*6777b538SAndroid Build Coastguard Worker	[
148*6777b538SAndroid Build Coastguard Worker#ifndef WIN32
149*6777b538SAndroid Build Coastguard Workerdie horribly
150*6777b538SAndroid Build Coastguard Worker#endif
151*6777b538SAndroid Build Coastguard Worker	],
152*6777b538SAndroid Build Coastguard Worker	bwin32=true; AC_MSG_RESULT(yes),
153*6777b538SAndroid Build Coastguard Worker	bwin32=false; AC_MSG_RESULT(no),
154*6777b538SAndroid Build Coastguard Worker)
155*6777b538SAndroid Build Coastguard Worker
156*6777b538SAndroid Build Coastguard WorkerAM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
157*6777b538SAndroid Build Coastguard Worker
158*6777b538SAndroid Build Coastguard Workerdnl Checks for typedefs, structures, and compiler characteristics.
159*6777b538SAndroid Build Coastguard WorkerAC_C_CONST
160*6777b538SAndroid Build Coastguard WorkerAC_C_INLINE
161*6777b538SAndroid Build Coastguard WorkerAC_HEADER_TIME
162*6777b538SAndroid Build Coastguard Worker
163*6777b538SAndroid Build Coastguard Workerdnl Checks for library functions.
164*6777b538SAndroid Build Coastguard WorkerAC_CHECK_FUNCS(gettimeofday vasprintf fcntl clock_gettime strtok_r strsep getaddrinfo getnameinfo strlcpy inet_ntop signal sigaction strtoll issetugid geteuid getegid)
165*6777b538SAndroid Build Coastguard Worker
166*6777b538SAndroid Build Coastguard WorkerAC_CHECK_SIZEOF(long)
167*6777b538SAndroid Build Coastguard Worker
168*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_func_clock_gettime" = "xyes"; then
169*6777b538SAndroid Build Coastguard Worker   AC_DEFINE(DNS_USE_CPU_CLOCK_FOR_ID, 1, [Define if clock_gettime is available in libc])
170*6777b538SAndroid Build Coastguard Workerelse
171*6777b538SAndroid Build Coastguard Worker   AC_DEFINE(DNS_USE_GETTIMEOFDAY_FOR_ID, 1, [Define is no secure id variant is available])
172*6777b538SAndroid Build Coastguard Workerfi
173*6777b538SAndroid Build Coastguard Worker
174*6777b538SAndroid Build Coastguard WorkerAC_MSG_CHECKING(for F_SETFD in fcntl.h)
175*6777b538SAndroid Build Coastguard WorkerAC_EGREP_CPP(yes,
176*6777b538SAndroid Build Coastguard Worker[
177*6777b538SAndroid Build Coastguard Worker#define _GNU_SOURCE
178*6777b538SAndroid Build Coastguard Worker#include <fcntl.h>
179*6777b538SAndroid Build Coastguard Worker#ifdef F_SETFD
180*6777b538SAndroid Build Coastguard Workeryes
181*6777b538SAndroid Build Coastguard Worker#endif
182*6777b538SAndroid Build Coastguard Worker],	[ AC_DEFINE(HAVE_SETFD, 1,
183*6777b538SAndroid Build Coastguard Worker	      [Define if F_SETFD is defined in <fcntl.h>])
184*6777b538SAndroid Build Coastguard Worker	  AC_MSG_RESULT(yes) ], AC_MSG_RESULT(no))
185*6777b538SAndroid Build Coastguard Worker
186*6777b538SAndroid Build Coastguard Workerneedsignal=no
187*6777b538SAndroid Build Coastguard Workerhaveselect=no
188*6777b538SAndroid Build Coastguard WorkerAC_CHECK_FUNCS(select, [haveselect=yes], )
189*6777b538SAndroid Build Coastguard Workerif test "x$haveselect" = "xyes" ; then
190*6777b538SAndroid Build Coastguard Worker	AC_LIBOBJ(select)
191*6777b538SAndroid Build Coastguard Worker	needsignal=yes
192*6777b538SAndroid Build Coastguard Workerfi
193*6777b538SAndroid Build Coastguard Worker
194*6777b538SAndroid Build Coastguard Workerhavepoll=no
195*6777b538SAndroid Build Coastguard WorkerAC_CHECK_FUNCS(poll, [havepoll=yes], )
196*6777b538SAndroid Build Coastguard Workerif test "x$havepoll" = "xyes" ; then
197*6777b538SAndroid Build Coastguard Worker	AC_LIBOBJ(poll)
198*6777b538SAndroid Build Coastguard Worker	needsignal=yes
199*6777b538SAndroid Build Coastguard Workerfi
200*6777b538SAndroid Build Coastguard Worker
201*6777b538SAndroid Build Coastguard Workerhaveepoll=no
202*6777b538SAndroid Build Coastguard WorkerAC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
203*6777b538SAndroid Build Coastguard Workerif test "x$haveepoll" = "xyes" ; then
204*6777b538SAndroid Build Coastguard Worker	AC_DEFINE(HAVE_EPOLL, 1,
205*6777b538SAndroid Build Coastguard Worker		[Define if your system supports the epoll system calls])
206*6777b538SAndroid Build Coastguard Worker	AC_LIBOBJ(epoll)
207*6777b538SAndroid Build Coastguard Worker	needsignal=yes
208*6777b538SAndroid Build Coastguard Workerfi
209*6777b538SAndroid Build Coastguard Worker
210*6777b538SAndroid Build Coastguard Workerhavedevpoll=no
211*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_devpoll_h" = "xyes"; then
212*6777b538SAndroid Build Coastguard Worker	AC_DEFINE(HAVE_DEVPOLL, 1,
213*6777b538SAndroid Build Coastguard Worker		    [Define if /dev/poll is available])
214*6777b538SAndroid Build Coastguard Worker        AC_LIBOBJ(devpoll)
215*6777b538SAndroid Build Coastguard Workerfi
216*6777b538SAndroid Build Coastguard Worker
217*6777b538SAndroid Build Coastguard Workerhavekqueue=no
218*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_event_h" = "xyes"; then
219*6777b538SAndroid Build Coastguard Worker	AC_CHECK_FUNCS(kqueue, [havekqueue=yes], )
220*6777b538SAndroid Build Coastguard Worker	if test "x$havekqueue" = "xyes" ; then
221*6777b538SAndroid Build Coastguard Worker		AC_MSG_CHECKING(for working kqueue)
222*6777b538SAndroid Build Coastguard Worker		AC_TRY_RUN(
223*6777b538SAndroid Build Coastguard Worker#include <sys/types.h>
224*6777b538SAndroid Build Coastguard Worker#include <sys/time.h>
225*6777b538SAndroid Build Coastguard Worker#include <sys/event.h>
226*6777b538SAndroid Build Coastguard Worker#include <stdio.h>
227*6777b538SAndroid Build Coastguard Worker#include <unistd.h>
228*6777b538SAndroid Build Coastguard Worker#include <fcntl.h>
229*6777b538SAndroid Build Coastguard Worker
230*6777b538SAndroid Build Coastguard Workerint
231*6777b538SAndroid Build Coastguard Workermain(int argc, char **argv)
232*6777b538SAndroid Build Coastguard Worker{
233*6777b538SAndroid Build Coastguard Worker	int kq;
234*6777b538SAndroid Build Coastguard Worker	int n;
235*6777b538SAndroid Build Coastguard Worker	int fd[[2]];
236*6777b538SAndroid Build Coastguard Worker	struct kevent ev;
237*6777b538SAndroid Build Coastguard Worker	struct timespec ts;
238*6777b538SAndroid Build Coastguard Worker	char buf[[8000]];
239*6777b538SAndroid Build Coastguard Worker
240*6777b538SAndroid Build Coastguard Worker	if (pipe(fd) == -1)
241*6777b538SAndroid Build Coastguard Worker		exit(1);
242*6777b538SAndroid Build Coastguard Worker	if (fcntl(fd[[1]], F_SETFL, O_NONBLOCK) == -1)
243*6777b538SAndroid Build Coastguard Worker		exit(1);
244*6777b538SAndroid Build Coastguard Worker
245*6777b538SAndroid Build Coastguard Worker	while ((n = write(fd[[1]], buf, sizeof(buf))) == sizeof(buf))
246*6777b538SAndroid Build Coastguard Worker		;
247*6777b538SAndroid Build Coastguard Worker
248*6777b538SAndroid Build Coastguard Worker        if ((kq = kqueue()) == -1)
249*6777b538SAndroid Build Coastguard Worker		exit(1);
250*6777b538SAndroid Build Coastguard Worker
251*6777b538SAndroid Build Coastguard Worker	memset(&ev, 0, sizeof(ev));
252*6777b538SAndroid Build Coastguard Worker	ev.ident = fd[[1]];
253*6777b538SAndroid Build Coastguard Worker	ev.filter = EVFILT_WRITE;
254*6777b538SAndroid Build Coastguard Worker	ev.flags = EV_ADD | EV_ENABLE;
255*6777b538SAndroid Build Coastguard Worker	n = kevent(kq, &ev, 1, NULL, 0, NULL);
256*6777b538SAndroid Build Coastguard Worker	if (n == -1)
257*6777b538SAndroid Build Coastguard Worker		exit(1);
258*6777b538SAndroid Build Coastguard Worker
259*6777b538SAndroid Build Coastguard Worker	read(fd[[0]], buf, sizeof(buf));
260*6777b538SAndroid Build Coastguard Worker
261*6777b538SAndroid Build Coastguard Worker	ts.tv_sec = 0;
262*6777b538SAndroid Build Coastguard Worker	ts.tv_nsec = 0;
263*6777b538SAndroid Build Coastguard Worker	n = kevent(kq, NULL, 0, &ev, 1, &ts);
264*6777b538SAndroid Build Coastguard Worker	if (n == -1 || n == 0)
265*6777b538SAndroid Build Coastguard Worker		exit(1);
266*6777b538SAndroid Build Coastguard Worker
267*6777b538SAndroid Build Coastguard Worker	exit(0);
268*6777b538SAndroid Build Coastguard Worker}, [AC_MSG_RESULT(yes)
269*6777b538SAndroid Build Coastguard Worker    AC_DEFINE(HAVE_WORKING_KQUEUE, 1,
270*6777b538SAndroid Build Coastguard Worker		[Define if kqueue works correctly with pipes])
271*6777b538SAndroid Build Coastguard Worker    AC_LIBOBJ(kqueue)], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
272*6777b538SAndroid Build Coastguard Worker	fi
273*6777b538SAndroid Build Coastguard Workerfi
274*6777b538SAndroid Build Coastguard Worker
275*6777b538SAndroid Build Coastguard Workerhaveepollsyscall=no
276*6777b538SAndroid Build Coastguard Workerif test "x$ac_cv_header_sys_epoll_h" = "xyes"; then
277*6777b538SAndroid Build Coastguard Worker	if test "x$haveepoll" = "xno" ; then
278*6777b538SAndroid Build Coastguard Worker		AC_MSG_CHECKING(for epoll system call)
279*6777b538SAndroid Build Coastguard Worker		AC_TRY_RUN(
280*6777b538SAndroid Build Coastguard Worker#include <stdint.h>
281*6777b538SAndroid Build Coastguard Worker#include <sys/param.h>
282*6777b538SAndroid Build Coastguard Worker#include <sys/types.h>
283*6777b538SAndroid Build Coastguard Worker#include <sys/syscall.h>
284*6777b538SAndroid Build Coastguard Worker#include <sys/epoll.h>
285*6777b538SAndroid Build Coastguard Worker#include <unistd.h>
286*6777b538SAndroid Build Coastguard Worker
287*6777b538SAndroid Build Coastguard Workerint
288*6777b538SAndroid Build Coastguard Workerepoll_create(int size)
289*6777b538SAndroid Build Coastguard Worker{
290*6777b538SAndroid Build Coastguard Worker	return (syscall(__NR_epoll_create, size));
291*6777b538SAndroid Build Coastguard Worker}
292*6777b538SAndroid Build Coastguard Worker
293*6777b538SAndroid Build Coastguard Workerint
294*6777b538SAndroid Build Coastguard Workermain(int argc, char **argv)
295*6777b538SAndroid Build Coastguard Worker{
296*6777b538SAndroid Build Coastguard Worker	int epfd;
297*6777b538SAndroid Build Coastguard Worker
298*6777b538SAndroid Build Coastguard Worker	epfd = epoll_create(256);
299*6777b538SAndroid Build Coastguard Worker	exit (epfd == -1 ? 1 : 0);
300*6777b538SAndroid Build Coastguard Worker}, [AC_MSG_RESULT(yes)
301*6777b538SAndroid Build Coastguard Worker    AC_DEFINE(HAVE_EPOLL, 1,
302*6777b538SAndroid Build Coastguard Worker	[Define if your system supports the epoll system calls])
303*6777b538SAndroid Build Coastguard Worker    needsignal=yes
304*6777b538SAndroid Build Coastguard Worker    AC_LIBOBJ(epoll_sub)
305*6777b538SAndroid Build Coastguard Worker    AC_LIBOBJ(epoll)], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
306*6777b538SAndroid Build Coastguard Worker	fi
307*6777b538SAndroid Build Coastguard Workerfi
308*6777b538SAndroid Build Coastguard Worker
309*6777b538SAndroid Build Coastguard Workerhaveeventports=no
310*6777b538SAndroid Build Coastguard WorkerAC_CHECK_FUNCS(port_create, [haveeventports=yes], )
311*6777b538SAndroid Build Coastguard Workerif test "x$haveeventports" = "xyes" ; then
312*6777b538SAndroid Build Coastguard Worker	AC_DEFINE(HAVE_EVENT_PORTS, 1,
313*6777b538SAndroid Build Coastguard Worker		[Define if your system supports event ports])
314*6777b538SAndroid Build Coastguard Worker	AC_LIBOBJ(evport)
315*6777b538SAndroid Build Coastguard Worker	needsignal=yes
316*6777b538SAndroid Build Coastguard Workerfi
317*6777b538SAndroid Build Coastguard Workerif test "x$bwin32" = "xtrue"; then
318*6777b538SAndroid Build Coastguard Worker	needsignal=yes
319*6777b538SAndroid Build Coastguard Workerfi
320*6777b538SAndroid Build Coastguard Workerif test "x$bwin32" = "xtrue"; then
321*6777b538SAndroid Build Coastguard Worker	needsignal=yes
322*6777b538SAndroid Build Coastguard Workerfi
323*6777b538SAndroid Build Coastguard Workerif test "x$needsignal" = "xyes" ; then
324*6777b538SAndroid Build Coastguard Worker	AC_LIBOBJ(signal)
325*6777b538SAndroid Build Coastguard Workerfi
326*6777b538SAndroid Build Coastguard Worker
327*6777b538SAndroid Build Coastguard WorkerAC_TYPE_PID_T
328*6777b538SAndroid Build Coastguard WorkerAC_TYPE_SIZE_T
329*6777b538SAndroid Build Coastguard WorkerAC_CHECK_TYPES([uint64_t, uint32_t, uint16_t, uint8_t], , ,
330*6777b538SAndroid Build Coastguard Worker[#ifdef HAVE_STDINT_H
331*6777b538SAndroid Build Coastguard Worker#include <stdint.h>
332*6777b538SAndroid Build Coastguard Worker#elif defined(HAVE_INTTYPES_H)
333*6777b538SAndroid Build Coastguard Worker#include <inttypes.h>
334*6777b538SAndroid Build Coastguard Worker#endif
335*6777b538SAndroid Build Coastguard Worker#ifdef HAVE_SYS_TYPES_H
336*6777b538SAndroid Build Coastguard Worker#include <sys/types.h>
337*6777b538SAndroid Build Coastguard Worker#endif])
338*6777b538SAndroid Build Coastguard WorkerAC_CHECK_TYPES([fd_mask], , ,
339*6777b538SAndroid Build Coastguard Worker[#ifdef HAVE_SYS_TYPES_H
340*6777b538SAndroid Build Coastguard Worker#include <sys/types.h>
341*6777b538SAndroid Build Coastguard Worker#endif
342*6777b538SAndroid Build Coastguard Worker#ifdef HAVE_SELECT_H
343*6777b538SAndroid Build Coastguard Worker#include <select.h>
344*6777b538SAndroid Build Coastguard Worker#endif])
345*6777b538SAndroid Build Coastguard Worker
346*6777b538SAndroid Build Coastguard WorkerAC_CHECK_SIZEOF(long long)
347*6777b538SAndroid Build Coastguard WorkerAC_CHECK_SIZEOF(int)
348*6777b538SAndroid Build Coastguard WorkerAC_CHECK_SIZEOF(short)
349*6777b538SAndroid Build Coastguard WorkerAC_CHECK_TYPES([struct in6_addr], , ,
350*6777b538SAndroid Build Coastguard Worker[#ifdef WIN32
351*6777b538SAndroid Build Coastguard Worker#include <winsock2.h>
352*6777b538SAndroid Build Coastguard Worker#else
353*6777b538SAndroid Build Coastguard Worker#include <sys/types.h>
354*6777b538SAndroid Build Coastguard Worker#include <netinet/in.h>
355*6777b538SAndroid Build Coastguard Worker#include <sys/socket.h>
356*6777b538SAndroid Build Coastguard Worker#endif
357*6777b538SAndroid Build Coastguard Worker#ifdef HAVE_NETINET_IN6_H
358*6777b538SAndroid Build Coastguard Worker#include <netinet/in6.h>
359*6777b538SAndroid Build Coastguard Worker#endif])
360*6777b538SAndroid Build Coastguard Worker
361*6777b538SAndroid Build Coastguard WorkerAC_MSG_CHECKING([for socklen_t])
362*6777b538SAndroid Build Coastguard WorkerAC_TRY_COMPILE([
363*6777b538SAndroid Build Coastguard Worker #include <sys/types.h>
364*6777b538SAndroid Build Coastguard Worker #include <sys/socket.h>],
365*6777b538SAndroid Build Coastguard Worker  [socklen_t x;],
366*6777b538SAndroid Build Coastguard Worker  AC_MSG_RESULT([yes]),
367*6777b538SAndroid Build Coastguard Worker  [AC_MSG_RESULT([no])
368*6777b538SAndroid Build Coastguard Worker  AC_DEFINE(socklen_t, unsigned int,
369*6777b538SAndroid Build Coastguard Worker	[Define to unsigned int if you dont have it])]
370*6777b538SAndroid Build Coastguard Worker)
371*6777b538SAndroid Build Coastguard Worker
372*6777b538SAndroid Build Coastguard WorkerAC_MSG_CHECKING([whether our compiler supports __func__])
373*6777b538SAndroid Build Coastguard WorkerAC_TRY_COMPILE([],
374*6777b538SAndroid Build Coastguard Worker [ const char *cp = __func__; ],
375*6777b538SAndroid Build Coastguard Worker AC_MSG_RESULT([yes]),
376*6777b538SAndroid Build Coastguard Worker AC_MSG_RESULT([no])
377*6777b538SAndroid Build Coastguard Worker AC_MSG_CHECKING([whether our compiler supports __FUNCTION__])
378*6777b538SAndroid Build Coastguard Worker AC_TRY_COMPILE([],
379*6777b538SAndroid Build Coastguard Worker   [ const char *cp = __FUNCTION__; ],
380*6777b538SAndroid Build Coastguard Worker   AC_MSG_RESULT([yes])
381*6777b538SAndroid Build Coastguard Worker   AC_DEFINE(__func__, __FUNCTION__,
382*6777b538SAndroid Build Coastguard Worker         [Define to appropriate substitue if compiler doesnt have __func__]),
383*6777b538SAndroid Build Coastguard Worker   AC_MSG_RESULT([no])
384*6777b538SAndroid Build Coastguard Worker   AC_DEFINE(__func__, __FILE__,
385*6777b538SAndroid Build Coastguard Worker         [Define to appropriate substitue if compiler doesnt have __func__])))
386*6777b538SAndroid Build Coastguard Worker
387*6777b538SAndroid Build Coastguard Worker
388*6777b538SAndroid Build Coastguard Worker# Add some more warnings which we use in development but not in the
389*6777b538SAndroid Build Coastguard Worker# released versions.  (Some relevant gcc versions can't handle these.)
390*6777b538SAndroid Build Coastguard Workerif test x$enable_gcc_warnings = xyes; then
391*6777b538SAndroid Build Coastguard Worker
392*6777b538SAndroid Build Coastguard Worker  AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [
393*6777b538SAndroid Build Coastguard Worker#if !defined(__GNUC__) || (__GNUC__ < 4)
394*6777b538SAndroid Build Coastguard Worker#error
395*6777b538SAndroid Build Coastguard Worker#endif]), have_gcc4=yes, have_gcc4=no)
396*6777b538SAndroid Build Coastguard Worker
397*6777b538SAndroid Build Coastguard Worker  AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [
398*6777b538SAndroid Build Coastguard Worker#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
399*6777b538SAndroid Build Coastguard Worker#error
400*6777b538SAndroid Build Coastguard Worker#endif]), have_gcc42=yes, have_gcc42=no)
401*6777b538SAndroid Build Coastguard Worker
402*6777b538SAndroid Build Coastguard Worker  CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2 -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wbad-function-cast -Wswitch-enum -Werror"
403*6777b538SAndroid Build Coastguard Worker  CFLAGS="$CFLAGS -Wno-unused-parameter -Wno-sign-compare -Wstrict-aliasing"
404*6777b538SAndroid Build Coastguard Worker
405*6777b538SAndroid Build Coastguard Worker  if test x$have_gcc4 = xyes ; then
406*6777b538SAndroid Build Coastguard Worker    # These warnings break gcc 3.3.5 and work on gcc 4.0.2
407*6777b538SAndroid Build Coastguard Worker    CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement"
408*6777b538SAndroid Build Coastguard Worker    #CFLAGS="$CFLAGS -Wold-style-definition"
409*6777b538SAndroid Build Coastguard Worker  fi
410*6777b538SAndroid Build Coastguard Worker
411*6777b538SAndroid Build Coastguard Worker  if test x$have_gcc42 = xyes ; then
412*6777b538SAndroid Build Coastguard Worker    # These warnings break gcc 4.0.2 and work on gcc 4.2
413*6777b538SAndroid Build Coastguard Worker    CFLAGS="$CFLAGS -Waddress -Wnormalized=id -Woverride-init"
414*6777b538SAndroid Build Coastguard Worker  fi
415*6777b538SAndroid Build Coastguard Worker
416*6777b538SAndroid Build Coastguard Worker##This will break the world on some 64-bit architectures
417*6777b538SAndroid Build Coastguard Worker# CFLAGS="$CFLAGS -Winline"
418*6777b538SAndroid Build Coastguard Worker
419*6777b538SAndroid Build Coastguard Workerfi
420*6777b538SAndroid Build Coastguard Worker
421*6777b538SAndroid Build Coastguard WorkerAC_OUTPUT(Makefile test/Makefile sample/Makefile)
422