]> granicus.if.org Git - strace/blob - configure.ac
2f813820815d9c3dce2d1ebb80d9dcd600cabd21
[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.7])
4 AC_CONFIG_SRCDIR([strace.c])
5 AC_CONFIG_AUX_DIR([.])
6 AM_CONFIG_HEADER([config.h])
7 AM_INIT_AUTOMAKE([foreign check-news dist-xz no-dist-gzip silent-rules])
8 AM_MAINTAINER_MODE
9 AC_CANONICAL_HOST
10
11 AC_PROG_CC
12 AC_USE_SYSTEM_EXTENSIONS
13
14 AC_MSG_CHECKING([for supported architecture])
15 case "$host_cpu" in
16 bfin)
17         arch=bfin
18         AC_DEFINE([BFIN], 1, [Define for the Blackfin architecture.])
19         ;;
20 i[[3456]]86|pentium)
21         arch=i386
22         AC_DEFINE([I386], 1, [Define for the i386 architecture.])
23         ;;
24 ia64)
25         arch=ia64
26         AC_DEFINE([IA64], 1, [Define for the IA64 architecture.])
27         ;;
28 m68k)
29         arch=m68k
30         AC_DEFINE([M68K], 1, [Define for the m68k architecture.])
31         ;;
32 sparc64*)
33         arch=sparc64
34         AC_DEFINE([SPARC64], 1, [Define for the SPARC64 architecture.])
35         ;;
36 sparc*)
37         arch=sparc
38         AC_DEFINE([SPARC], 1, [Define for the SPARC architecture.])
39         ;;
40 metag*)
41         arch=metag
42         AC_DEFINE([METAG], 1, [Define for the Meta architecture.])
43         ;;
44 mips*)
45         arch=mips
46         AC_DEFINE([MIPS], 1, [Define for the MIPS architecture.])
47         ;;
48 alpha*)
49         arch=alpha
50         AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.])
51         ;;
52 powerpc*)
53         arch=powerpc
54         AC_DEFINE([POWERPC], 1, [Define for the PowerPC architecture.])
55         if test $host_cpu = powerpc64; then
56                 AC_DEFINE([POWERPC64], 1, [Define for the PowerPC64 architecture.])
57         fi
58         ;;
59 arm*)
60         arch=arm
61         AC_DEFINE([ARM], 1, [Define for the ARM architecture.])
62         ;;
63 aarch64*)
64         arch=aarch64
65         AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.])
66         ;;
67 avr32*)
68         arch=avr32
69         AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.])
70         ;;
71 s390)
72         arch=s390
73         AC_DEFINE([S390], 1, [Define for the S390 architecture.])
74         ;;
75 s390x)
76         arch=s390x
77         AC_DEFINE([S390X], 1, [Define for the S390x architecture.])
78         ;;
79 hppa*|parisc*)
80         arch=hppa
81         AC_DEFINE([HPPA], 1, [Define for the HPPA architecture.])
82         ;;
83 sh64*)
84         arch=sh64
85         AC_DEFINE([SH64], 1, [Define for the SH64 architecture.])
86         ;;
87 sh*)
88         arch=sh
89         AC_DEFINE([SH], 1, [Define for the SH architecture.])
90         ;;
91 x86?64*)
92         AC_TRY_COMPILE(
93 [#ifndef __ILP32__
94 # error not x32
95 #endif], [], arch=x32, arch=x86_64)
96         if test "$arch" = "x86_64"; then
97                 AC_DEFINE([X86_64], 1, [Define for the 64bit AMD x86-64 architecture.])
98         else
99                 AC_DEFINE([X32], 1, [Define for the 32bit AMD x86-64 architecture.])
100         fi
101         ;;
102 cris|crisv10)
103         arch=crisv10
104         AC_DEFINE([CRISV10], 1, [Define for the CRISv10 architecture.])
105         ;;
106 crisv32)
107         arch=crisv32
108         AC_DEFINE([CRISV32], 1, [Define for the CRISv32 architecture.])
109         ;;
110 tile*)
111         arch=tile
112         AC_DEFINE([TILE], 1, [Define for the Tile architecture])
113         ;;
114 microblaze*)
115         arch=microblaze
116         AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.])
117         ;;
118 or1k*)
119         arch=or1k
120         AC_DEFINE([OR1K], 1, [Define for the OpenRISC 1000 architecture.])
121         ;;
122
123 *)
124         AC_MSG_RESULT([NO!])
125         AC_MSG_ERROR([architecture $host_cpu is not supported by strace])
126         ;;
127 esac
128 AC_MSG_RESULT($arch)
129
130 AC_SUBST(arch)
131
132 AM_CONDITIONAL([I386], [test x$arch = xi386])
133 AM_CONDITIONAL([X86_64], [test x$arch = xx86_64])
134 AM_CONDITIONAL([X32], [test x$arch = xx32])
135
136 AC_INCLUDEDIR
137
138 gl_WARN_ADD([-Wall])
139 gl_WARN_ADD([-Wwrite-strings])
140 AC_ARG_ENABLE([gcc-Werror],
141   [AS_HELP_STRING([--enable-gcc-Werror], [turn on gcc's -Werror option])],
142   [case $enableval in
143      yes) gl_WARN_ADD([-Werror]) ;;
144      no)  ;;
145      *)   AC_MSG_ERROR([bad value $enableval for gcc-Werror option]) ;;
146    esac]
147 )
148 AC_SUBST([WARN_CFLAGS])
149
150 AC_PROG_CPP
151 AC_PROG_INSTALL
152 AC_C_CONST
153 AC_C_BIGENDIAN
154 AC_HEADER_STDC
155 AC_HEADER_STDBOOL
156 AC_HEADER_DIRENT
157 AC_HEADER_STAT
158 AC_CHECK_MEMBERS(m4_normalize([
159         struct stat.st_aclcnt,
160         struct stat.st_blksize,
161         struct stat.st_blocks,
162         struct stat.st_flags,
163         struct stat.st_fstype,
164         struct stat.st_gen,
165         struct stat.st_level,
166         struct stat.st_rdev
167 ]))
168 AC_STAT64
169 AC_STATFS64
170
171 AC_TYPE_SIGNAL
172 AC_TYPE_UID_T
173 AC_TYPE_MODE_T
174 AC_TYPE_GETGROUPS
175 AC_HEADER_MAJOR
176 AC_CHECK_TYPES([sig_atomic_t, siginfo_t],,, [#include <signal.h>])
177 AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
178 [#include <sys/types.h>
179 #include <sys/socket.h>
180 #include <netinet/in.h>])
181 AC_CHECK_TYPES([long long])
182 AC_LITTLE_ENDIAN_LONG_LONG
183 AC_OFF_T_IS_LONG_LONG
184 AC_CHECK_TYPES([struct opthdr],,, [#include <sys/socket.h>])
185 AC_CHECK_TYPES([struct t_opthdr],,, [#include <sys/tiuser.h>])
186
187 AC_CHECK_FUNCS(m4_normalize([
188         fork
189         if_indextoname
190         inet_ntop
191         prctl
192         process_vm_readv
193         sendmsg
194         sigaction
195         stpcpy
196         strerror
197         strsignal
198         _sys_siglist
199         sys_siglist
200 ]))
201 AC_CHECK_HEADERS(m4_normalize([
202         asm/cachectl.h
203         asm/sysmips.h
204         elf.h
205         inttypes.h
206         ioctls.h
207         linux/capability.h
208         linux/perf_event.h
209         linux/ptrace.h
210         linux/utsname.h
211         mqueue.h
212         netinet/sctp.h
213         poll.h
214         stropts.h
215         sys/acl.h
216         sys/asynch.h
217         sys/conf.h
218         sys/epoll.h
219         sys/filio.h
220         sys/ioctl.h
221         sys/poll.h
222         sys/ptrace.h
223         sys/reg.h
224         sys/uio.h
225         sys/vfs.h
226 ]))
227 AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h],
228                  [], [], [#include <stddef.h>
229 #include <sys/socket.h>
230 #include <asm/types.h>])
231 AC_CHECK_HEADERS([asm/sigcontext.h], [], [], [#include <signal.h>])
232 AC_CHECK_TYPES([struct sigcontext_struct,
233                 struct sigcontext],,, [#include <signal.h>])
234 AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])
235
236 AC_CHECK_MEMBERS([struct msghdr.msg_control],,, [#include <sys/socket.h>])
237
238 AC_CHECK_MEMBERS([struct T_conn_res.QUEUE_ptr,
239                   struct T_conn_res.ACCEPTOR_id],,,
240 [#include <sys/stream.h>
241 #include <sys/tihdr.h>])
242
243 AC_CHECK_TYPES([struct __old_kernel_stat],,, [#include <asm/stat.h>])
244
245 AC_CHECK_TYPES([struct pt_all_user_regs, struct ia64_fpreg],,,
246                [#include <sys/ptrace.h>])
247
248 AC_CHECK_TYPES([struct user_desc],,, [#include <asm/ldt.h>])
249
250 AC_CHECK_MEMBERS([struct dqblk.dqb_curblocks],,, [#include <sys/quota.h>])
251
252 AC_CHECK_MEMBERS([struct sigcontext.sc_hi2],,, [#include <signal.h>
253 #ifdef HAVE_ASM_SIGCONTEXT_H
254 # include <asm/sigcontext.h>
255 #endif])
256
257 AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
258
259 AC_CHECK_DECLS([sys_errlist])
260 AC_CHECK_DECLS([sys_siglist, _sys_siglist],,, [#include <signal.h>])
261 AC_CHECK_DECLS(m4_normalize([
262         PTRACE_EVENT_CLONE,
263         PTRACE_EVENT_EXEC,
264         PTRACE_EVENT_EXIT,
265         PTRACE_EVENT_FORK,
266         PTRACE_EVENT_VFORK,
267         PTRACE_EVENT_VFORK_DONE,
268         PTRACE_GETEVENTMSG,
269         PTRACE_GETSIGINFO,
270         PTRACE_O_TRACECLONE,
271         PTRACE_O_TRACEEXEC,
272         PTRACE_O_TRACEEXIT,
273         PTRACE_O_TRACEFORK,
274         PTRACE_O_TRACESYSGOOD,
275         PTRACE_O_TRACEVFORK,
276         PTRACE_SETOPTIONS
277 ]),,, [#include <sys/ptrace.h>])
278
279 AC_CHECK_DECLS(m4_normalize([
280         LO_FLAGS_AUTOCLEAR,
281         LO_FLAGS_PARTSCAN
282 ]),,, [#include <linux/loop.h>])
283
284 AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
285         [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
286 #include <stdlib.h>
287 #include <linux/fs.h>], [return !BLKGETSIZE64;])],
288                            [ac_cv_have_blkgetsize64=yes], [ac_cv_have_blkgetsize64=no])]
289         if test $ac_cv_have_blkgetsize64 = yes; then
290                 AC_DEFINE([HAVE_BLKGETSIZE64], [1], [Define to 1 if you have BLKGETSIZE64.])
291         fi)
292
293 AC_CHECK_SIZEOF([long])
294 AC_CHECK_SIZEOF([rlim_t],,[#include <sys/resource.h>])
295
296 AC_CHECK_HEADERS([libaio.h], [
297         AC_CHECK_MEMBERS([struct iocb.u.c.flags],,, [#include <libaio.h>])
298         AC_CHECK_DECLS([IO_CMD_PWRITE, IO_CMD_PWRITEV],,, [#include <libaio.h>])
299 ])
300
301 AC_PATH_PROG([PERL], [perl])
302
303 AC_CONFIG_FILES([Makefile tests/Makefile])
304 AC_OUTPUT