]> granicus.if.org Git - strace/blob - configure.ac
mips n32: fix preadv/pwritev offset decoding
[strace] / configure.ac
1 dnl Process this file with autoconf to create configure.  Use autoreconf.
2 AC_PREREQ(2.57)
3 AC_INIT([strace],
4         m4_esyscmd([./git-version-gen .tarball-version]),
5         [strace-devel@lists.sourceforge.net])
6 AC_CONFIG_SRCDIR([strace.c])
7 AC_CONFIG_AUX_DIR([.])
8 AC_CONFIG_HEADERS([config.h])
9 AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip silent-rules parallel-tests])
10 AM_MAINTAINER_MODE
11 AC_CANONICAL_HOST
12
13 AC_PROG_CC
14 AX_PROG_CC_FOR_BUILD
15 AC_USE_SYSTEM_EXTENSIONS
16
17 AC_MSG_CHECKING([for supported architecture])
18 case "$host_cpu" in
19 bfin)
20         arch=bfin
21         AC_DEFINE([BFIN], 1, [Define for the Blackfin architecture.])
22         ;;
23 i[[3456]]86|pentium)
24         arch=i386
25         AC_DEFINE([I386], 1, [Define for the i386 architecture.])
26         ;;
27 ia64)
28         arch=ia64
29         AC_DEFINE([IA64], 1, [Define for the IA64 architecture.])
30         ;;
31 m68k)
32         arch=m68k
33         AC_DEFINE([M68K], 1, [Define for the m68k architecture.])
34         ;;
35 sparc64*)
36         arch=sparc64
37         AC_DEFINE([SPARC64], 1, [Define for the SPARC64 architecture.])
38         ;;
39 sparc*)
40         arch=sparc
41         AC_DEFINE([SPARC], 1, [Define for the SPARC architecture.])
42         ;;
43 metag*)
44         arch=metag
45         AC_DEFINE([METAG], 1, [Define for the Meta architecture.])
46         ;;
47 mips*)
48         arch=mips
49         AC_DEFINE([MIPS], 1, [Define for the MIPS architecture.])
50         ;;
51 alpha*)
52         arch=alpha
53         AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.])
54         ;;
55 powerpc*)
56         AC_DEFINE([POWERPC], 1, [Define for the PowerPC architecture.])
57         AC_TRY_COMPILE(
58 [#ifndef __LP64__
59 # error 32 bit
60 #endif], [], arch=powerpc64, arch=powerpc)
61         if test "$arch" = "powerpc64"; then
62                 AC_DEFINE([POWERPC64], 1, [Define for the PowerPC64 architecture.])
63         fi
64         ;;
65 arm*)
66         arch=arm
67         AC_DEFINE([ARM], 1, [Define for the ARM architecture.])
68         ;;
69 aarch64*)
70         arch=aarch64
71         AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.])
72         ;;
73 avr32*)
74         arch=avr32
75         AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.])
76         ;;
77 arc*)
78         arch=arc
79         AC_DEFINE([ARC], 1, [Define for the ARC architecture.])
80         ;;
81 s390)
82         arch=s390
83         AC_DEFINE([S390], 1, [Define for the S390 architecture.])
84         ;;
85 s390x)
86         arch=s390x
87         AC_DEFINE([S390X], 1, [Define for the S390x architecture.])
88         ;;
89 hppa*|parisc*)
90         arch=hppa
91         AC_DEFINE([HPPA], 1, [Define for the HPPA architecture.])
92         ;;
93 sh64*)
94         arch=sh64
95         AC_DEFINE([SH64], 1, [Define for the SH64 architecture.])
96         ;;
97 sh*)
98         arch=sh
99         AC_DEFINE([SH], 1, [Define for the SH architecture.])
100         ;;
101 x86?64*)
102         AC_TRY_COMPILE(
103 [#ifndef __ILP32__
104 # error not x32
105 #endif], [], arch=x32, arch=x86_64)
106         if test "$arch" = "x86_64"; then
107                 AC_DEFINE([X86_64], 1, [Define for the 64bit AMD x86-64 architecture.])
108         else
109                 AC_DEFINE([X32], 1, [Define for the 32bit AMD x86-64 architecture.])
110         fi
111         ;;
112 cris|crisv10)
113         arch=crisv10
114         AC_DEFINE([CRISV10], 1, [Define for the CRISv10 architecture.])
115         ;;
116 crisv32)
117         arch=crisv32
118         AC_DEFINE([CRISV32], 1, [Define for the CRISv32 architecture.])
119         ;;
120 tile*)
121         arch=tile
122         AC_DEFINE([TILE], 1, [Define for the Tile architecture])
123         ;;
124 microblaze*)
125         arch=microblaze
126         AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.])
127         ;;
128 or1k*)
129         arch=or1k
130         AC_DEFINE([OR1K], 1, [Define for the OpenRISC 1000 architecture.])
131         ;;
132
133 xtensa*)
134         arch=xtensa
135         AC_DEFINE([XTENSA], 1, [Define for the Xtensa architecture])
136         ;;
137
138 *)
139         AC_MSG_RESULT([NO!])
140         AC_MSG_ERROR([architecture $host_cpu is not supported by strace])
141         ;;
142 esac
143 AC_MSG_RESULT($arch)
144
145 AC_SUBST(arch)
146
147 if test "$arch" = mips; then
148         AC_CACHE_CHECK([for MIPS ABI], [ac_cv_mips_abi],
149                 [AC_COMPILE_IFELSE(
150                         [AC_LANG_PROGRAM([[#include <sgidefs.h>]],
151                                          [[int i[_MIPS_SIM == _MIPS_SIM_ABI32 ? 1 : - 1];]])],
152                         [ac_cv_mips_abi=o32],
153                 [AC_COMPILE_IFELSE(
154                         [AC_LANG_PROGRAM([[#include <sgidefs.h>]],
155                                          [[int i[_MIPS_SIM == _MIPS_SIM_NABI32 ? 1 : - 1];]])],
156                         [ac_cv_mips_abi=n32],
157                 [AC_COMPILE_IFELSE(
158                         [AC_LANG_PROGRAM([[#include <sgidefs.h>]],
159                                          [[int i[_MIPS_SIM == _MIPS_SIM_ABI64 ? 1 : - 1];]])],
160                         [ac_cv_mips_abi=n64],
161                         [ac_cv_mips_abi=unknown])])])])
162         case "$ac_cv_mips_abi" in
163                 o32) AC_DEFINE([LINUX_MIPSO32], [1], [Define for _MIPS_SIM_ABI32.]);;
164                 n32) AC_DEFINE([LINUX_MIPSN32], [1], [Define for _MIPS_SIM_NABI32.]);;
165                 n64) AC_DEFINE([LINUX_MIPSN64], [1], [Define for _MIPS_SIM_ABI64.]);;
166                 *) AC_MSG_ERROR([Unsupported _MIPS_SIM]);;
167         esac
168 fi
169
170 AC_ARG_ENABLE([arm-oabi],
171               [AS_HELP_STRING([--enable-arm-oabi],
172                               [enable OABI support on ARM EABI])],
173               [], [enable_arm_oabi=no])
174 case "$enable_arm_oabi" in
175         yes) enable_arm_oabi=1 ;;
176         no) enable_arm_oabi=0 ;;
177         *) AC_MSG_ERROR([bad value $enable_arm_oabi for arm-oabi option]) ;;
178 esac
179 AC_DEFINE_UNQUOTED([ENABLE_ARM_OABI], [$enable_arm_oabi],
180                    [Define to 1 if you want OABI support on ARM EABI.])
181
182 gl_WARN_ADD([-Wall])
183 gl_WARN_ADD([-Wwrite-strings])
184 gl_WARN_ADD([-Wsign-compare])
185 AC_ARG_ENABLE([gcc-Werror],
186   [AS_HELP_STRING([--enable-gcc-Werror], [turn on gcc's -Werror option])],
187   [case $enableval in
188      yes) gl_WARN_ADD([-Werror]) ;;
189      no)  ;;
190      *)   AC_MSG_ERROR([bad value $enableval for gcc-Werror option]) ;;
191    esac]
192 )
193 AC_SUBST([WARN_CFLAGS])
194
195 AC_PROG_CPP
196 AC_PROG_INSTALL
197 AC_C_CONST
198 AC_C_BIGENDIAN
199 AC_HEADER_STDC
200 AC_HEADER_STDBOOL
201 AC_HEADER_DIRENT
202 AC_HEADER_STAT
203 AC_CHECK_MEMBERS(m4_normalize([
204         struct stat.st_blksize,
205         struct stat.st_blocks,
206         struct stat.st_flags,
207         struct stat.st_fstype,
208         struct stat.st_gen,
209         struct stat.st_rdev
210 ]))
211
212 AC_TYPE_SIGNAL
213 AC_TYPE_UID_T
214 AC_TYPE_MODE_T
215 AC_TYPE_GETGROUPS
216 AC_HEADER_MAJOR
217 AC_CHECK_TYPES([sig_atomic_t],,, [#include <signal.h>])
218 AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
219 [#include <sys/types.h>
220 #include <sys/socket.h>
221 #include <netinet/in.h>])
222 AC_LITTLE_ENDIAN_LONG_LONG
223
224 AC_CHECK_FUNCS(m4_normalize([
225         fanotify_mark
226         fopen64
227         fork
228         fputs_unlocked
229         if_indextoname
230         inet_ntop
231         prctl
232         preadv
233         process_vm_readv
234         pwritev
235         sendmsg
236         sendmmsg
237         sigaction
238         stpcpy
239         strerror
240         strsignal
241 ]))
242 AC_CHECK_HEADERS(m4_normalize([
243         asm/cachectl.h
244         asm/sysmips.h
245         bluetooth/bluetooth.h
246         elf.h
247         inttypes.h
248         ioctls.h
249         linux/bsg.h
250         linux/falloc.h
251         linux/filter.h
252         linux/hiddev.h
253         linux/mmtimer.h
254         linux/perf_event.h
255         linux/seccomp.h
256         linux/securebits.h
257         linux/utsname.h
258         mqueue.h
259         netinet/sctp.h
260         poll.h
261         scsi/sg.h
262         stropts.h
263         sys/conf.h
264         sys/epoll.h
265         sys/fanotify.h
266         sys/filio.h
267         sys/ioctl.h
268         sys/poll.h
269         sys/reg.h
270         sys/vfs.h
271         sys/xattr.h
272 ]))
273 AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h],
274                  [], [], [#include <stddef.h>
275 #include <sys/socket.h>
276 #include <asm/types.h>])
277 AC_CHECK_HEADERS([asm/sigcontext.h], [], [], [#include <signal.h>])
278 AC_CHECK_TYPES([struct sigcontext],,, [#include <signal.h>])
279 AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])
280
281 AC_CHECK_TYPES([struct mmsghdr],,, [#include <sys/socket.h>])
282 AC_CHECK_MEMBERS([struct msghdr.msg_control],,, [#include <sys/socket.h>])
283
284 AC_CHECK_TYPES([struct stat64],,, [#include <sys/types.h>
285 #include <asm/stat.h>])
286 AC_CHECK_TYPES([struct __old_kernel_stat],,, [#include <asm/stat.h>])
287 AC_CHECK_TYPES([struct statfs64],,, [#include <sys/vfs.h>])
288
289 AC_CHECK_TYPES([struct pt_all_user_regs, struct ia64_fpreg, struct ptrace_peeksiginfo_args],,,
290                [#include <sys/ptrace.h>])
291
292 AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
293
294 AC_CHECK_MEMBERS([struct sigevent._sigev_un._pad,
295                   struct sigevent.__pad,
296                   siginfo_t.si_syscall,
297                   siginfo_t.si_timerid,
298                   siginfo_t.si_overrun],,, [#include <signal.h>])
299
300 AC_CHECK_MEMBERS([struct sysinfo.totalhigh,
301                   struct sysinfo.freehigh,
302                   struct sysinfo.mem_unit],,, [#include <sys/sysinfo.h>])
303
304 AC_CHECK_TYPES([struct flock64],,, [#include <fcntl.h>])
305
306 AC_CHECK_HEADERS([libaio.h], [
307         AC_CHECK_MEMBERS([struct iocb.u.c.flags],,, [#include <libaio.h>])
308         AC_CHECK_DECLS([IO_CMD_PWRITE, IO_CMD_PWRITEV],,, [#include <libaio.h>])
309 ])
310
311 AC_CHECK_HEADERS([linux/input.h], [
312         AC_CHECK_MEMBERS([struct input_absinfo.resolution],,, [#include <linux/input.h>])
313 ])
314
315 AC_CHECK_DECLS([sys_errlist])
316 AC_CHECK_DECLS(m4_normalize([
317         PTRACE_PEEKUSER,
318         PTRACE_POKEUSER
319 ]),,, [#include <sys/ptrace.h>])
320
321 AC_CHECK_DECLS(m4_normalize([
322         P_PID,
323         P_PPID,
324         P_PGID,
325         P_SID,
326         P_CID,
327         P_UID,
328         P_GID,
329         P_ALL,
330         P_LWPID
331 ]),,, [#include <sys/wait.h>])
332
333 AC_CHECK_DECLS(m4_normalize([
334         LO_FLAGS_READ_ONLY,
335         LO_FLAGS_AUTOCLEAR,
336         LO_FLAGS_PARTSCAN
337 ]),,, [#include <linux/loop.h>])
338
339 AC_CHECK_DECLS(m4_normalize([
340         CTL_KERN,
341         CTL_VM,
342         CTL_NET,
343         CTL_PROC,
344         CTL_FS,
345         CTL_DEBUG,
346         CTL_DEV,
347         CTL_BUS,
348         CTL_ABI,
349         CTL_CPU,
350         CTL_ARLAN,
351         CTL_S390DBF,
352         CTL_SUNRPC,
353         CTL_PM,
354         CTL_FRV,
355         KERN_OSTYPE,
356         KERN_OSRELEASE,
357         KERN_OSREV,
358         KERN_VERSION,
359         KERN_SECUREMASK,
360         KERN_PROF,
361         KERN_NODENAME,
362         KERN_DOMAINNAME,
363         KERN_PANIC,
364         KERN_REALROOTDEV,
365         KERN_SPARC_REBOOT,
366         KERN_CTLALTDEL,
367         KERN_PRINTK,
368         KERN_NAMETRANS,
369         KERN_PPC_HTABRECLAIM,
370         KERN_PPC_ZEROPAGED,
371         KERN_PPC_POWERSAVE_NAP,
372         KERN_MODPROBE,
373         KERN_SG_BIG_BUFF,
374         KERN_ACCT,
375         KERN_PPC_L2CR,
376         KERN_RTSIGNR,
377         KERN_RTSIGMAX,
378         KERN_SHMMAX,
379         KERN_MSGMAX,
380         KERN_MSGMNB,
381         KERN_MSGPOOL,
382         KERN_SYSRQ,
383         KERN_MAX_THREADS,
384         KERN_RANDOM,
385         KERN_SHMALL,
386         KERN_MSGMNI,
387         KERN_SEM,
388         KERN_SPARC_STOP_A,
389         KERN_SHMMNI,
390         KERN_OVERFLOWUID,
391         KERN_OVERFLOWGID,
392         KERN_SHMPATH,
393         KERN_HOTPLUG,
394         KERN_IEEE_EMULATION_WARNINGS,
395         KERN_S390_USER_DEBUG_LOGGING,
396         KERN_CORE_USES_PID,
397         KERN_TAINTED,
398         KERN_CADPID,
399         KERN_PIDMAX,
400         KERN_CORE_PATTERN,
401         KERN_PANIC_ON_OOPS,
402         KERN_HPPA_PWRSW,
403         KERN_HPPA_UNALIGNED,
404         KERN_PRINTK_RATELIMIT,
405         KERN_PRINTK_RATELIMIT_BURST,
406         KERN_PTY,
407         KERN_NGROUPS_MAX,
408         KERN_SPARC_SCONS_PWROFF,
409         KERN_HZ_TIMER,
410         KERN_UNKNOWN_NMI_PANIC,
411         KERN_BOOTLOADER_TYPE,
412         KERN_RANDOMIZE,
413         KERN_SETUID_DUMPABLE,
414         KERN_SPIN_RETRY,
415         KERN_ACPI_VIDEO_FLAGS,
416         KERN_IA64_UNALIGNED,
417         KERN_COMPAT_LOG,
418         KERN_MAX_LOCK_DEPTH,
419         KERN_NMI_WATCHDOG,
420         KERN_PANIC_ON_NMI,
421         NET_CORE,
422         NET_ETHER,
423         NET_802,
424         NET_UNIX,
425         NET_IPV4,
426         NET_IPX,
427         NET_ATALK,
428         NET_NETROM,
429         NET_AX25,
430         NET_BRIDGE,
431         NET_ROSE,
432         NET_IPV6,
433         NET_X25,
434         NET_TR,
435         NET_DECNET,
436         NET_ECONET,
437         NET_SCTP,
438         NET_LLC,
439         NET_NETFILTER,
440         NET_DCCP,
441         NET_IRDA,
442         NET_CORE_WMEM_MAX,
443         NET_CORE_RMEM_MAX,
444         NET_CORE_WMEM_DEFAULT,
445         NET_CORE_RMEM_DEFAULT,
446         NET_CORE_DESTROY_DELAY,
447         NET_CORE_MAX_BACKLOG,
448         NET_CORE_FASTROUTE,
449         NET_CORE_MSG_COST,
450         NET_CORE_MSG_BURST,
451         NET_CORE_OPTMEM_MAX,
452         NET_CORE_HOT_LIST_LENGTH,
453         NET_CORE_DIVERT_VERSION,
454         NET_CORE_NO_CONG_THRESH,
455         NET_CORE_NO_CONG,
456         NET_CORE_LO_CONG,
457         NET_CORE_MOD_CONG,
458         NET_CORE_DEV_WEIGHT,
459         NET_CORE_SOMAXCONN,
460         NET_CORE_BUDGET,
461         NET_CORE_AEVENT_ETIME,
462         NET_CORE_AEVENT_RSEQTH,
463         NET_CORE_WARNINGS,
464         NET_IPV4_FORWARD,
465         NET_IPV4_DYNADDR,
466         NET_IPV4_CONF,
467         NET_IPV4_NEIGH,
468         NET_IPV4_ROUTE,
469         NET_IPV4_FIB_HASH,
470         NET_IPV4_NETFILTER,
471         NET_IPV4_TCP_TIMESTAMPS,
472         NET_IPV4_TCP_WINDOW_SCALING,
473         NET_IPV4_TCP_SACK,
474         NET_IPV4_TCP_RETRANS_COLLAPSE,
475         NET_IPV4_DEFAULT_TTL,
476         NET_IPV4_AUTOCONFIG,
477         NET_IPV4_NO_PMTU_DISC,
478         NET_IPV4_TCP_SYN_RETRIES,
479         NET_IPV4_IPFRAG_HIGH_THRESH,
480         NET_IPV4_IPFRAG_LOW_THRESH,
481         NET_IPV4_IPFRAG_TIME,
482         NET_IPV4_TCP_MAX_KA_PROBES,
483         NET_IPV4_TCP_KEEPALIVE_TIME,
484         NET_IPV4_TCP_KEEPALIVE_PROBES,
485         NET_IPV4_TCP_RETRIES1,
486         NET_IPV4_TCP_RETRIES2,
487         NET_IPV4_TCP_FIN_TIMEOUT,
488         NET_IPV4_IP_MASQ_DEBUG,
489         NET_TCP_SYNCOOKIES,
490         NET_TCP_STDURG,
491         NET_TCP_RFC1337,
492         NET_TCP_SYN_TAILDROP,
493         NET_TCP_MAX_SYN_BACKLOG,
494         NET_IPV4_LOCAL_PORT_RANGE,
495         NET_IPV4_ICMP_ECHO_IGNORE_ALL,
496         NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS,
497         NET_IPV4_ICMP_SOURCEQUENCH_RATE,
498         NET_IPV4_ICMP_DESTUNREACH_RATE,
499         NET_IPV4_ICMP_TIMEEXCEED_RATE,
500         NET_IPV4_ICMP_PARAMPROB_RATE,
501         NET_IPV4_ICMP_ECHOREPLY_RATE,
502         NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,
503         NET_IPV4_IGMP_MAX_MEMBERSHIPS,
504         NET_TCP_TW_RECYCLE,
505         NET_IPV4_ALWAYS_DEFRAG,
506         NET_IPV4_TCP_KEEPALIVE_INTVL,
507         NET_IPV4_INET_PEER_THRESHOLD,
508         NET_IPV4_INET_PEER_MINTTL,
509         NET_IPV4_INET_PEER_MAXTTL,
510         NET_IPV4_INET_PEER_GC_MINTIME,
511         NET_IPV4_INET_PEER_GC_MAXTIME,
512         NET_TCP_ORPHAN_RETRIES,
513         NET_TCP_ABORT_ON_OVERFLOW,
514         NET_TCP_SYNACK_RETRIES,
515         NET_TCP_MAX_ORPHANS,
516         NET_TCP_MAX_TW_BUCKETS,
517         NET_TCP_FACK,
518         NET_TCP_REORDERING,
519         NET_TCP_ECN,
520         NET_TCP_DSACK,
521         NET_TCP_MEM,
522         NET_TCP_WMEM,
523         NET_TCP_RMEM,
524         NET_TCP_APP_WIN,
525         NET_TCP_ADV_WIN_SCALE,
526         NET_IPV4_NONLOCAL_BIND,
527         NET_IPV4_ICMP_RATELIMIT,
528         NET_IPV4_ICMP_RATEMASK,
529         NET_TCP_TW_REUSE,
530         NET_TCP_FRTO,
531         NET_TCP_LOW_LATENCY,
532         NET_IPV4_IPFRAG_SECRET_INTERVAL,
533         NET_IPV4_IGMP_MAX_MSF,
534         NET_TCP_NO_METRICS_SAVE,
535         NET_TCP_DEFAULT_WIN_SCALE,
536         NET_TCP_MODERATE_RCVBUF,
537         NET_TCP_TSO_WIN_DIVISOR,
538         NET_TCP_BIC_BETA,
539         NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,
540         NET_TCP_CONG_CONTROL,
541         NET_TCP_ABC,
542         NET_IPV4_IPFRAG_MAX_DIST,
543         NET_TCP_MTU_PROBING,
544         NET_TCP_BASE_MSS,
545         NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,
546         NET_TCP_DMA_COPYBREAK,
547         NET_TCP_SLOW_START_AFTER_IDLE,
548         NET_CIPSOV4_CACHE_ENABLE,
549         NET_CIPSOV4_CACHE_BUCKET_SIZE,
550         NET_CIPSOV4_RBM_OPTFMT,
551         NET_CIPSOV4_RBM_STRICTVALID,
552         NET_TCP_AVAIL_CONG_CONTROL,
553         NET_TCP_ALLOWED_CONG_CONTROL,
554         NET_TCP_MAX_SSTHRESH,
555         NET_TCP_FRTO_RESPONSE,
556         NET_IPV4_ROUTE_FLUSH,
557         NET_IPV4_ROUTE_MIN_DELAY,
558         NET_IPV4_ROUTE_MAX_DELAY,
559         NET_IPV4_ROUTE_GC_THRESH,
560         NET_IPV4_ROUTE_MAX_SIZE,
561         NET_IPV4_ROUTE_GC_MIN_INTERVAL,
562         NET_IPV4_ROUTE_GC_TIMEOUT,
563         NET_IPV4_ROUTE_GC_INTERVAL,
564         NET_IPV4_ROUTE_REDIRECT_LOAD,
565         NET_IPV4_ROUTE_REDIRECT_NUMBER,
566         NET_IPV4_ROUTE_REDIRECT_SILENCE,
567         NET_IPV4_ROUTE_ERROR_COST,
568         NET_IPV4_ROUTE_ERROR_BURST,
569         NET_IPV4_ROUTE_GC_ELASTICITY,
570         NET_IPV4_ROUTE_MTU_EXPIRES,
571         NET_IPV4_ROUTE_MIN_PMTU,
572         NET_IPV4_ROUTE_MIN_ADVMSS,
573         NET_IPV4_ROUTE_SECRET_INTERVAL,
574         NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,
575         NET_IPV4_CONF_FORWARDING,
576         NET_IPV4_CONF_MC_FORWARDING,
577         NET_IPV4_CONF_PROXY_ARP,
578         NET_IPV4_CONF_ACCEPT_REDIRECTS,
579         NET_IPV4_CONF_SECURE_REDIRECTS,
580         NET_IPV4_CONF_SEND_REDIRECTS,
581         NET_IPV4_CONF_SHARED_MEDIA,
582         NET_IPV4_CONF_RP_FILTER,
583         NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE,
584         NET_IPV4_CONF_BOOTP_RELAY,
585         NET_IPV4_CONF_LOG_MARTIANS,
586         NET_IPV4_CONF_TAG,
587         NET_IPV4_CONF_ARPFILTER,
588         NET_IPV4_CONF_MEDIUM_ID,
589         NET_IPV4_CONF_NOXFRM,
590         NET_IPV4_CONF_NOPOLICY,
591         NET_IPV4_CONF_FORCE_IGMP_VERSION,
592         NET_IPV4_CONF_ARP_ANNOUNCE,
593         NET_IPV4_CONF_ARP_IGNORE,
594         NET_IPV4_CONF_PROMOTE_SECONDARIES,
595         NET_IPV4_CONF_ARP_ACCEPT,
596         NET_IPV4_CONF_ARP_NOTIFY,
597         NET_IPV6_CONF,
598         NET_IPV6_NEIGH,
599         NET_IPV6_ROUTE,
600         NET_IPV6_ICMP,
601         NET_IPV6_BINDV6ONLY,
602         NET_IPV6_IP6FRAG_HIGH_THRESH,
603         NET_IPV6_IP6FRAG_LOW_THRESH,
604         NET_IPV6_IP6FRAG_TIME,
605         NET_IPV6_IP6FRAG_SECRET_INTERVAL,
606         NET_IPV6_MLD_MAX_MSF,
607         NET_IPV6_ROUTE_FLUSH,
608         NET_IPV6_ROUTE_GC_THRESH,
609         NET_IPV6_ROUTE_MAX_SIZE,
610         NET_IPV6_ROUTE_GC_MIN_INTERVAL,
611         NET_IPV6_ROUTE_GC_TIMEOUT,
612         NET_IPV6_ROUTE_GC_INTERVAL,
613         NET_IPV6_ROUTE_GC_ELASTICITY,
614         NET_IPV6_ROUTE_MTU_EXPIRES,
615         NET_IPV6_ROUTE_MIN_ADVMSS,
616         NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,
617         NET_UNIX_DESTROY_DELAY,
618         NET_UNIX_DELETE_DELAY,
619         NET_UNIX_MAX_DGRAM_QLEN,
620         VM_OVERCOMMIT_MEMORY,
621         VM_PAGE_CLUSTER,
622         VM_DIRTY_BACKGROUND,
623         VM_DIRTY_RATIO,
624         VM_DIRTY_WB_CS,
625         VM_DIRTY_EXPIRE_CS,
626         VM_NR_PDFLUSH_THREADS,
627         VM_OVERCOMMIT_RATIO,
628         VM_PAGEBUF,
629         VM_HUGETLB_PAGES,
630         VM_SWAPPINESS,
631         VM_LOWMEM_RESERVE_RATIO,
632         VM_MIN_FREE_KBYTES,
633         VM_MAX_MAP_COUNT,
634         VM_LAPTOP_MODE,
635         VM_BLOCK_DUMP,
636         VM_HUGETLB_GROUP,
637         VM_VFS_CACHE_PRESSURE,
638         VM_LEGACY_VA_LAYOUT,
639         VM_SWAP_TOKEN_TIMEOUT
640 ]),,,
641 [#include <sys/types.h>
642 #include <linux/sysctl.h>])
643
644 AC_CHECK_DECLS(m4_normalize([
645         V4L2_FIELD_ANY,
646         V4L2_FIELD_NONE,
647         V4L2_FIELD_TOP,
648         V4L2_FIELD_BOTTOM,
649         V4L2_FIELD_INTERLACED,
650         V4L2_FIELD_SEQ_TB,
651         V4L2_FIELD_SEQ_BT,
652         V4L2_FIELD_ALTERNATE,
653         V4L2_FIELD_INTERLACED_TB,
654         V4L2_FIELD_INTERLACED_BT,
655         V4L2_BUF_TYPE_VIDEO_CAPTURE,
656         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
657         V4L2_BUF_TYPE_VIDEO_OUTPUT,
658         V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
659         V4L2_BUF_TYPE_VIDEO_OVERLAY,
660         V4L2_BUF_TYPE_VBI_CAPTURE,
661         V4L2_BUF_TYPE_VBI_OUTPUT,
662         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE,
663         V4L2_BUF_TYPE_SLICED_VBI_OUTPUT,
664         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY,
665         V4L2_TUNER_RADIO,
666         V4L2_TUNER_ANALOG_TV,
667         V4L2_TUNER_DIGITAL_TV,
668         V4L2_MEMORY_MMAP,
669         V4L2_MEMORY_USERPTR,
670         V4L2_MEMORY_OVERLAY,
671         V4L2_MEMORY_DMABUF,
672         V4L2_COLORSPACE_SMPTE170M,
673         V4L2_COLORSPACE_SMPTE240M,
674         V4L2_COLORSPACE_REC709,
675         V4L2_COLORSPACE_BT878,
676         V4L2_COLORSPACE_470_SYSTEM_M,
677         V4L2_COLORSPACE_470_SYSTEM_BG,
678         V4L2_COLORSPACE_JPEG,
679         V4L2_COLORSPACE_SRGB,
680         V4L2_PRIORITY_UNSET,
681         V4L2_PRIORITY_BACKGROUND,
682         V4L2_PRIORITY_INTERACTIVE,
683         V4L2_PRIORITY_RECORD,
684         V4L2_FRMSIZE_TYPE_DISCRETE,
685         V4L2_FRMSIZE_TYPE_CONTINUOUS,
686         V4L2_FRMSIZE_TYPE_STEPWISE,
687         V4L2_FRMIVAL_TYPE_DISCRETE,
688         V4L2_FRMIVAL_TYPE_CONTINUOUS,
689         V4L2_FRMIVAL_TYPE_STEPWISE,
690         V4L2_CTRL_TYPE_INTEGER,
691         V4L2_CTRL_TYPE_BOOLEAN,
692         V4L2_CTRL_TYPE_MENU,
693         V4L2_CTRL_TYPE_BUTTON,
694         V4L2_CTRL_TYPE_INTEGER64,
695         V4L2_CTRL_TYPE_CTRL_CLASS,
696         V4L2_CTRL_TYPE_STRING,
697         V4L2_CTRL_TYPE_BITMASK,
698         V4L2_CTRL_TYPE_INTEGER_MENU
699 ]),,, [#include <linux/videodev2.h>])
700
701 AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
702         [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
703 #include <stdlib.h>
704 #include <linux/fs.h>], [return !BLKGETSIZE64;])],
705                            [ac_cv_have_blkgetsize64=yes], [ac_cv_have_blkgetsize64=no])]
706         if test $ac_cv_have_blkgetsize64 = yes; then
707                 AC_DEFINE([HAVE_BLKGETSIZE64], [1], [Define to 1 if you have BLKGETSIZE64.])
708         fi)
709
710 AC_CHECK_SIZEOF([long])
711 AC_CHECK_SIZEOF([long long])
712 AC_CHECK_SIZEOF([off_t],,[#include <sys/types.h>])
713
714 AC_CACHE_CHECK([for SA_RESTORER], [st_cv_sa_restorer],
715                [st_cv_sa_restorer="$(echo SA_RESTORER |
716                         $CPP $CPPFLAGS -P -imacros asm/signal.h - |
717                         grep ^0x)"
718                 test -n "$st_cv_sa_restorer" || st_cv_sa_restorer=no])
719 if test "x$st_cv_sa_restorer" != xno; then
720         AC_DEFINE_UNQUOTED([ASM_SA_RESTORER], [$st_cv_sa_restorer],
721                            [SA_RESTORER defined in <asm/signal.h>])
722 fi
723
724 AC_CACHE_CHECK([for __builtin_popcount], [st_cv_have___builtin_popcount],
725                [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_popcount(0)])],
726                                [st_cv_have___builtin_popcount=yes],
727                                [st_cv_have___builtin_popcount=no])])
728 if test "x$st_cv_have___builtin_popcount" = xyes; then
729         AC_DEFINE([HAVE___BUILTIN_POPCOUNT], [1],
730                   [Define to 1 if the system provides __builtin_popcount function])
731 fi
732
733 AC_CHECK_LIB([dl], [dladdr], [dl_LIBS='-ldl'], [dl_LIBS=])
734 if test "x$ac_cv_lib_dl_dladdr" = xyes; then
735         AC_DEFINE([HAVE_DLADDR], [1], [Define to 1 if the system provides dladdr])
736 fi
737 AC_SUBST(dl_LIBS)
738
739 AC_PATH_PROG([PERL], [perl])
740
741 dnl stack trace with libunwind
742 libunwind_CPPFLAGS=
743 libunwind_LDFLAGS=
744 libunwind_LIBS=
745 AC_ARG_WITH([libunwind],
746             [AS_HELP_STRING([--with-libunwind],
747                             [use libunwind to implement stack tracing support])],
748             [case "${withval}" in
749              yes|no|check) ;;
750              *) with_libunwind=yes
751                 libunwind_CPPFLAGS="-I${withval}/include"
752                 libunwind_LDFLAGS="-L${withval}/lib" ;;
753              esac],
754             [with_libunwind=check]
755 )
756
757 use_libunwind=no
758 AS_IF([test "x$with_libunwind" != xno],
759       [saved_CPPFLAGS="$CPPFLAGS"
760        CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
761
762        AC_CHECK_HEADERS([libunwind-ptrace.h],
763          [saved_LDFLAGS="$LDFLAGS"
764           LDFLAGS="$LDFLAGS $libunwind_LDFLAGS"
765
766           AC_CHECK_LIB([unwind], [backtrace],
767             [libunwind_LIBS="-lunwind $libunwind_LIBS"
768
769              AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic])
770              saved_LIBS="$LIBS"
771              LIBS="-lunwind-generic $libunwind_LIBS $LIBS"
772
773              AC_LINK_IFELSE(
774                [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]],
775                                 [[return !unw_create_addr_space(0, 0)]])
776                ],
777                [AC_MSG_RESULT([yes])
778                 libunwind_LIBS="-lunwind-generic $libunwind_LIBS"
779
780                 AC_CHECK_LIB([unwind-ptrace], [_UPT_create],
781                   [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
782                    use_libunwind=yes
783                   ],
784                   [if test "x$with_libunwind" != xcheck; then
785                      AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace])
786                    fi
787                   ],
788                   [$libunwind_LIBS]
789                 )
790                ],
791                [AC_MSG_RESULT([no])
792                 if test "x$with_libunwind" != xcheck; then
793                   AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic])
794                 fi
795                ]
796              )
797
798              LIBS="$saved_LIBS"
799             ],
800             [if test "x$with_libunwind" != xcheck; then
801                AC_MSG_FAILURE([failed to find libunwind])
802              fi
803             ],
804             [$libunwind_LIBS]
805           )
806
807           LDFLAGS="$saved_LDFLAGS"
808          ],
809          [if test "x$with_libunwind" != xcheck; then
810             AC_MSG_FAILURE([failed to find libunwind-ptrace.h])
811           fi
812          ]
813        )
814
815        CPPFLAGS="$saved_CPPFLAGS"
816       ]
817 )
818
819 dnl enable libunwind
820 AC_MSG_CHECKING([whether to enable stack tracing support using libunwind])
821 if test "x$use_libunwind" = xyes; then
822         AC_DEFINE([USE_LIBUNWIND], 1, [Compile stack tracing functionality])
823         AC_SUBST(libunwind_LIBS)
824         AC_SUBST(libunwind_LDFLAGS)
825         AC_SUBST(libunwind_CPPFLAGS)
826 fi
827 AM_CONDITIONAL([USE_LIBUNWIND], [test "x$use_libunwind" = xyes])
828 AC_MSG_RESULT([$use_libunwind])
829
830 if test "$arch" = mips && test "$no_create" != yes; then
831         mkdir -p linux/mips
832         if $srcdir/linux/mips/genstub.sh linux/mips; then
833                 AC_MSG_RESULT([Generated MIPS syscallent stubs])
834         else
835                 AC_MSG_FAILURE([Failed to generate syscallent stubs])
836         fi
837 fi
838
839 have_m32=no
840 case "$arch" in
841         aarch64|powerpc64|sparc64|tile|x32|x86_64)
842         AC_MSG_CHECKING([for -m32 runtime support])
843         saved_CFLAGS="$CFLAGS"
844         CFLAGS="$CFLAGS -m32"
845         AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(){return 0;}]])],
846                 [have_m32=yes],[have_m32=no],[have_m32=no])
847         CFLAGS="$saved_CFLAGS"
848         AC_MSG_RESULT($have_m32)
849         ;;
850 esac
851 AM_CONDITIONAL([HAVE_M32_RUNTIME], [test "$have_m32" = yes])
852
853 have_mx32=no
854 case "$arch" in
855         x86_64)
856         AC_MSG_CHECKING([for -mx32 runtime support])
857         saved_CFLAGS="$CFLAGS"
858         CFLAGS="$CFLAGS -mx32"
859         AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(){return 0;}]])],
860                 [have_mx32=yes],[have_mx32=no],[have_mx32=no])
861         CFLAGS="$saved_CFLAGS"
862         AC_MSG_RESULT($have_mx32)
863         ;;
864 esac
865 AM_CONDITIONAL([HAVE_MX32_RUNTIME], [test "$have_mx32" = yes])
866
867 AC_CONFIG_FILES([Makefile tests/Makefile tests-m32/Makefile tests-mx32/Makefile])
868 AC_OUTPUT