blob: 222e03ff919b83fd69981734149889816b1027c5 [file] [log] [blame]
sewardjde4a1d02002-03-22 01:27:54 +00001# Process this file with autoconf to produce a configure script.
jsewarddc0b4e82004-08-31 16:26:27 +00002AC_INIT(Valgrind, 2.3.0.CVS, valgrind-users@lists.sourceforge.net)
thughes6dbad732004-08-29 09:46:38 +00003AC_CONFIG_SRCDIR(coregrind/vg_main.c)
sewardjde4a1d02002-03-22 01:27:54 +00004AM_CONFIG_HEADER(config.h)
thughes6dbad732004-08-29 09:46:38 +00005AM_INIT_AUTOMAKE
sewardjde4a1d02002-03-22 01:27:54 +00006
gobryb0ed4672002-03-27 20:58:58 +00007AM_MAINTAINER_MODE
8
njn8738c282004-11-23 16:31:56 +00009# Where is VEX ?
njnfe408942004-11-23 17:52:24 +000010# Nb: For the 2nd arg, the help string, AS_HELP_STRING is the proper way, but
11# older autoconfs don't support it... here's what it would say:
12#
13# AS_HELP_STRING([--with-vex], [Vex directory (must be specified!)]),
14#
njn8738c282004-11-23 16:31:56 +000015AC_ARG_WITH(vex,
njnfe408942004-11-23 17:52:24 +000016 [ --with-vex=<DIR> Vex directory (must be specified!)],
njn8738c282004-11-23 16:31:56 +000017[
18 AC_CHECK_FILE($withval/pub/libvex.h,
19 [VEX_DIR=$withval],
20 [AC_MSG_ERROR([Directory '$withval' does not exist, or does not contain Vex])])
21],
22[
23 AC_MSG_ERROR([You must specify --with-vex=<DIR>])
24])
sewardj50629ec2004-11-22 13:44:11 +000025AC_SUBST(VEX_DIR)
26
sewardjde4a1d02002-03-22 01:27:54 +000027# Checks for programs.
gobrye721a522002-03-22 13:38:30 +000028CFLAGS=""
29
sewardjde4a1d02002-03-22 01:27:54 +000030AC_PROG_LN_S
31AC_PROG_CC
thughesa92ffd52004-11-01 09:50:57 +000032AM_PROG_CC_C_O
sewardjde4a1d02002-03-22 01:27:54 +000033AC_PROG_CPP
njn25e49d8e72002-09-23 09:36:25 +000034AC_PROG_CXX
sewardjde4a1d02002-03-22 01:27:54 +000035AC_PROG_RANLIB
36
gobrye721a522002-03-22 13:38:30 +000037# Check for the compiler support
38if test "${GCC}" != "yes" ; then
39 AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
40fi
41
sewardj2f685952002-12-22 19:32:23 +000042# figure out where perl lives
43AC_PATH_PROG(PERL, perl)
44
njn9315df32003-04-16 20:50:50 +000045# figure out where gdb lives
46AC_PATH_PROG(GDB, gdb)
njnfe408942004-11-23 17:52:24 +000047AC_DEFINE_UNQUOTED(GDB_PATH, "$GDB", [path to GDB])
njn9315df32003-04-16 20:50:50 +000048
daywalker48ccca52002-04-15 00:31:58 +000049# some older automake's don't have it so try something on our own
50ifdef([AM_PROG_AS],[AM_PROG_AS],
51[
gobry1be19852002-03-26 20:44:55 +000052AS="${CC}"
53AC_SUBST(AS)
gobry3b777892002-04-04 09:18:39 +000054
gobry1be19852002-03-26 20:44:55 +000055ASFLAGS=""
56AC_SUBST(ASFLAGS)
daywalker48ccca52002-04-15 00:31:58 +000057])
gobry3b777892002-04-04 09:18:39 +000058
59# This variable will collect the individual suppression files
60# depending on the results of autoconf
61
62DEFAULT_SUPP=""
63
64
gobrye721a522002-03-22 13:38:30 +000065# We don't want gcc 2.7
66AC_MSG_CHECKING([for a supported version of gcc])
67
daywalker870ac4c2002-05-21 00:09:48 +000068gcc_version=`${CC} --version | head -n 1`
gobrye721a522002-03-22 13:38:30 +000069
70case "${gcc_version}" in
71 gcc-2.7.*)
72 AC_MSG_RESULT([no (${gcc_version})])
73 AC_MSG_ERROR([please use a recent (>= gcc-2.95) version of gcc])
74 ;;
75
76 *)
77 AC_MSG_RESULT([ok (${gcc_version})])
78 ;;
79esac
80
gobrye721a522002-03-22 13:38:30 +000081
sewardjde4a1d02002-03-22 01:27:54 +000082# Checks for the platform
83AC_CANONICAL_HOST
84
85AC_MSG_CHECKING([for a supported CPU])
nethercote888ecb72004-08-23 14:54:40 +000086AC_SUBST(VG_ARCH)
nethercote2b72e942004-10-25 14:05:56 +000087AC_SUBST(KICKSTART_BASE)
nethercotecf4d9972004-10-25 15:21:00 +000088AC_SUBST(ARCH_CORE_AM_CFLAGS)
89AC_SUBST(ARCH_TOOL_AM_CFLAGS)
nethercote8df0a402004-10-25 19:20:14 +000090AC_SUBST(ARCH_CORE_AM_CCASFLAGS)
sewardjde4a1d02002-03-22 01:27:54 +000091
gobrye721a522002-03-22 13:38:30 +000092case "${host_cpu}" in
sewardjde4a1d02002-03-22 01:27:54 +000093 i?86)
94 AC_MSG_RESULT([ok (${host_cpu})])
nethercote888ecb72004-08-23 14:54:40 +000095 VG_ARCH="x86"
nethercote2b72e942004-10-25 14:05:56 +000096 KICKSTART_BASE="0xb0000000"
nethercotecf4d9972004-10-25 15:21:00 +000097 ARCH_CORE_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -DELFSZ=32"
98 ARCH_TOOL_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@"
nethercote8df0a402004-10-25 19:20:14 +000099 ARCH_CORE_AM_CCASFLAGS=""
sewardjde4a1d02002-03-22 01:27:54 +0000100 ;;
101
njnfe408942004-11-23 17:52:24 +0000102 x86_64)
103 AC_MSG_RESULT([ok (${host_cpu})])
104 VG_ARCH="amd64"
105 # OOO: relocations under x86-64 small model are 32-bit signed
106 # quantities; therefore going above 0x7fffffff doesn't work... this is
107 # a problem.
108 KICKSTART_BASE="0x70000000"
109 ARCH_CORE_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -DELFSZ=64"
110 ARCH_TOOL_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@"
111 ARCH_CORE_AM_CCASFLAGS=""
112 ;;
113
sewardj3e38ce02004-11-23 01:17:29 +0000114 arm*)
115 AC_MSG_RESULT([ok (${host_cpu})])
116 VG_ARCH="arm"
117 KICKSTART_BASE="0xb0000000"
118 ARCH_CORE_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -DELFSZ=32"
119 ARCH_TOOL_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@"
120 ARCH_CORE_AM_CCASFLAGS=""
121 ;;
122
nethercote9bcc9062004-10-13 13:50:01 +0000123 powerpc*)
124 AC_MSG_RESULT([no (${host_cpu})])
nethercoteda8735a2004-10-19 14:24:42 +0000125 VG_ARCH="ppc"
nethercote2b72e942004-10-25 14:05:56 +0000126 KICKSTART_BASE="0x70000000"
nethercotecf4d9972004-10-25 15:21:00 +0000127 ARCH_CORE_AM_CFLAGS="-DELFSZ=32"
128 ARCH_TOOL_AM_CFLAGS="-fpic"
nethercote8df0a402004-10-25 19:20:14 +0000129 ARCH_CORE_AM_CCASFLAGS="-Wa,-maltivec"
nethercote9bcc9062004-10-13 13:50:01 +0000130 AC_MSG_ERROR([PowerPC not supported. Sorry])
131 ;;
132
sewardjde4a1d02002-03-22 01:27:54 +0000133 *)
134 AC_MSG_RESULT([no (${host_cpu})])
nethercote81d5c662004-10-13 13:18:51 +0000135 AC_MSG_ERROR([Unsupported host architecture. Sorry])
sewardjde4a1d02002-03-22 01:27:54 +0000136 ;;
137esac
138
139AC_MSG_CHECKING([for a supported OS])
nethercote888ecb72004-08-23 14:54:40 +0000140AC_SUBST(VG_OS)
sewardjde4a1d02002-03-22 01:27:54 +0000141
gobrye721a522002-03-22 13:38:30 +0000142case "${host_os}" in
mueller8c68e042004-01-03 15:21:14 +0000143 *linux*)
sewardjde4a1d02002-03-22 01:27:54 +0000144 AC_MSG_RESULT([ok (${host_os})])
nethercote888ecb72004-08-23 14:54:40 +0000145 VG_OS="linux"
mueller8c68e042004-01-03 15:21:14 +0000146
147 # Ok, this is linux. Check the kernel version
148 AC_MSG_CHECKING([for the kernel version])
149
150 kernel=`uname -r`
151
152 case "${kernel}" in
153 2.6.*)
154 AC_MSG_RESULT([2.6 family (${kernel})])
155 AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x])
156 ;;
157
158 2.4.*)
159 AC_MSG_RESULT([2.4 family (${kernel})])
160 AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x])
161 ;;
162
mueller8c68e042004-01-03 15:21:14 +0000163 *)
164 AC_MSG_RESULT([unsupported (${kernel})])
nethercote4fa681f2004-11-08 17:51:39 +0000165 AC_MSG_ERROR([Valgrind works on kernels 2.4, 2.6])
mueller8c68e042004-01-03 15:21:14 +0000166 ;;
167 esac
168
169 ;;
170
171 *freebsd*)
172 AC_MSG_RESULT([ok (${host_os})])
nethercote888ecb72004-08-23 14:54:40 +0000173 VG_OS="freebsd"
sewardjde4a1d02002-03-22 01:27:54 +0000174 ;;
175
176 *)
177 AC_MSG_RESULT([no (${host_os})])
mueller8c68e042004-01-03 15:21:14 +0000178 AC_MSG_ERROR([Valgrind is operating system specific. Sorry. Please consider doing a port.])
sewardjde4a1d02002-03-22 01:27:54 +0000179 ;;
180esac
181
nethercote888ecb72004-08-23 14:54:40 +0000182AC_MSG_CHECKING([for a supported CPU/OS combination])
183AC_SUBST(VG_PLATFORM)
184
185VG_PLATFORM="$VG_ARCH-$VG_OS"
186
187case $VG_PLATFORM in
njnfe408942004-11-23 17:52:24 +0000188 x86-linux|amd64-linux|arm-linux)
sewardj3e38ce02004-11-23 01:17:29 +0000189 AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
190 ;;
191
nethercote888ecb72004-08-23 14:54:40 +0000192 *)
193 AC_MSG_RESULT([no (${host_cpu}-${host_os})])
sewardj3e38ce02004-11-23 01:17:29 +0000194 AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doing a port.])
nethercote888ecb72004-08-23 14:54:40 +0000195 ;;
196esac
sewardjde4a1d02002-03-22 01:27:54 +0000197
sewardjde4a1d02002-03-22 01:27:54 +0000198AC_SUBST(DEFAULT_SUPP)
199
sewardjde4a1d02002-03-22 01:27:54 +0000200glibc=""
201
202AC_EGREP_CPP([GLIBC_21], [
203#include <features.h>
204#ifdef __GNU_LIBRARY__
205 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 1)
206 GLIBC_21
207 #endif
208#endif
209],
210glibc="2.1")
211
212AC_EGREP_CPP([GLIBC_22], [
213#include <features.h>
214#ifdef __GNU_LIBRARY__
215 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2)
216 GLIBC_22
217 #endif
218#endif
219],
220glibc="2.2")
221
sewardj08c7f012002-10-07 23:56:55 +0000222AC_EGREP_CPP([GLIBC_23], [
223#include <features.h>
224#ifdef __GNU_LIBRARY__
225 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 3)
226 GLIBC_23
227 #endif
228#endif
229],
230glibc="2.3")
231
daywalkere9212b32003-06-15 22:39:15 +0000232AC_MSG_CHECKING([the glibc version])
233
gobrye721a522002-03-22 13:38:30 +0000234case "${glibc}" in
sewardjde4a1d02002-03-22 01:27:54 +0000235 2.1)
236 AC_MSG_RESULT(2.1 family)
daywalker418c7482002-10-16 13:09:26 +0000237 AC_DEFINE([GLIBC_2_1], 1, [Define to 1 if you're using glibc 2.1.x])
gobry3b777892002-04-04 09:18:39 +0000238 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.1.supp"
sewardjde4a1d02002-03-22 01:27:54 +0000239 ;;
240
241 2.2)
242 AC_MSG_RESULT(2.2 family)
daywalker418c7482002-10-16 13:09:26 +0000243 AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
gobry3b777892002-04-04 09:18:39 +0000244 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.2.supp"
sewardjde4a1d02002-03-22 01:27:54 +0000245 ;;
246
sewardj08c7f012002-10-07 23:56:55 +0000247 2.3)
248 AC_MSG_RESULT(2.3 family)
daywalker418c7482002-10-16 13:09:26 +0000249 AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
daywalker63f6f782003-05-27 00:19:52 +0000250 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.3.supp"
sewardj08c7f012002-10-07 23:56:55 +0000251 ;;
252
sewardjde4a1d02002-03-22 01:27:54 +0000253 *)
254 AC_MSG_RESULT(unsupported version)
sewardj08c7f012002-10-07 23:56:55 +0000255 AC_MSG_ERROR([Valgrind requires the glibc version 2.1, 2.2 or 2.3])
sewardjde4a1d02002-03-22 01:27:54 +0000256 ;;
257esac
258
sewardj3e909ce2002-06-03 13:27:15 +0000259# APIs introduced in recent glibc versions
260
261AC_MSG_CHECKING([whether sched_param has a sched_priority member])
262AC_CACHE_VAL(vg_have_sched_priority,
263[
264AC_TRY_COMPILE([#include <pthread.h>],[
265struct sched_param p; p.sched_priority=1;],
266vg_have_sched_priority=yes,
267vg_have_sched_priority=no)
268])
269AC_MSG_RESULT($vg_have_sched_priority)
270if test "$vg_have_sched_priority" = yes; then
daywalker418c7482002-10-16 13:09:26 +0000271AC_DEFINE([HAVE_SCHED_PRIORITY], 1, [pthread / sched_priority exists])
sewardj3e909ce2002-06-03 13:27:15 +0000272fi
273
nethercote3d260f62004-10-31 19:39:18 +0000274# We don't know how to detect the X client library version
275# (detecting the server version is easy, bu no help). So we
276# just use a hack: always include the suppressions for both
277# versions 3 and 4.
gobrye721a522002-03-22 13:38:30 +0000278AC_PATH_X
gobrye721a522002-03-22 13:38:30 +0000279if test "${no_x}" != 'yes' ; then
nethercote3d260f62004-10-31 19:39:18 +0000280 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
281 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-3.supp"
gobrye721a522002-03-22 13:38:30 +0000282fi
283
sewardj2e10a682003-04-07 19:36:41 +0000284
sewardj5b754b42002-06-03 22:53:35 +0000285# does this compiler support -mpreferred-stack-boundary=2 ?
286AC_MSG_CHECKING([if gcc accepts -mpreferred-stack-boundary])
287
daywalker3664f562003-10-17 13:43:46 +0000288safe_CFLAGS=$CFLAGS
sewardj5b754b42002-06-03 22:53:35 +0000289CFLAGS="-mpreferred-stack-boundary=2"
290
291AC_TRY_COMPILE(, [
sewardj5b754b42002-06-03 22:53:35 +0000292int main () { return 0 ; }
sewardj5b754b42002-06-03 22:53:35 +0000293],
294[
295PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
daywalker3664f562003-10-17 13:43:46 +0000296AC_MSG_RESULT([yes])
sewardj5b754b42002-06-03 22:53:35 +0000297], [
298PREFERRED_STACK_BOUNDARY=""
299AC_MSG_RESULT([no])
300])
daywalker3664f562003-10-17 13:43:46 +0000301CFLAGS=$safe_CFLAGS
sewardj5b754b42002-06-03 22:53:35 +0000302
303AC_SUBST(PREFERRED_STACK_BOUNDARY)
304
305
nethercote7f390022004-10-25 17:18:24 +0000306# Check for PIE support in the compiler and linker
307AC_CACHE_CHECK([for PIE support], vg_cv_pie,
308 [safe_CFLAGS=$CFLAGS
309 CFLAGS="$CFLAGS -fpie"
310 safe_LDFLAGS=$LDFLAGS
311 LDFLAGS="$LDFLAGS -pie"
312 AC_TRY_LINK([int foo;],
313 [],
314 [vg_cv_pie=yes],
315 [vg_cv_pie=no])
316 CFLAGS=$safe_CFLAGS
317 LDFLAGS=$safe_LDFLAGS])
318if test "$vg_cv_pie" = yes; then
319AC_DEFINE([HAVE_PIE], 1, [can create position-independent executables])
320fi
321AM_CONDITIONAL(USE_PIE, test "$vg_cv_pie" = "yes")
322
sewardj5b754b42002-06-03 22:53:35 +0000323
sewardjde4a1d02002-03-22 01:27:54 +0000324# Checks for header files.
325AC_HEADER_STDC
nethercote3d260f62004-10-31 19:39:18 +0000326AC_CHECK_HEADERS([sys/endian.h endian.h mqueue.h])
sewardjde4a1d02002-03-22 01:27:54 +0000327
328# Checks for typedefs, structures, and compiler characteristics.
sewardjde4a1d02002-03-22 01:27:54 +0000329AC_TYPE_UID_T
330AC_TYPE_OFF_T
331AC_TYPE_SIZE_T
332AC_HEADER_TIME
thughesebed9982004-06-12 17:25:25 +0000333AC_CHECK_TYPES(__pthread_unwind_buf_t,,,[#include <pthread.h>])
sewardjde4a1d02002-03-22 01:27:54 +0000334
335# Checks for library functions.
336AC_FUNC_MEMCMP
337AC_FUNC_MMAP
338AC_TYPE_SIGNAL
339
thughesbeb6eb92004-06-14 12:33:43 +0000340AC_CHECK_FUNCS([floor memchr memset mkdir strchr strdup strpbrk strrchr strstr semtimedop])
sewardjde4a1d02002-03-22 01:27:54 +0000341
gobrye721a522002-03-22 13:38:30 +0000342AC_OUTPUT(
sewardjde4a1d02002-03-22 01:27:54 +0000343 Makefile
njn25cac76cb2002-09-23 11:21:57 +0000344 valgrind.spec
muellerbddd6072003-11-19 21:50:07 +0000345 valgrind.pc
njn254d542432002-09-23 16:09:39 +0000346 docs/Makefile
347 tests/Makefile
njnc2e7f482002-09-27 08:44:17 +0000348 tests/vg_regtest
njn251ffab942002-09-23 16:42:19 +0000349 tests/unused/Makefile
nethercotee90c6832004-10-18 18:07:49 +0000350 include/valgrind.h
njn254d542432002-09-23 16:09:39 +0000351 include/Makefile
nethercotec06e2132004-09-03 13:45:29 +0000352 include/x86/Makefile
nethercote73b526f2004-10-31 18:48:21 +0000353 include/linux/Makefile
354 include/x86-linux/Makefile
njn7a6e7462002-11-09 17:53:30 +0000355 auxprogs/Makefile
njn25ab726032002-09-23 16:24:41 +0000356 coregrind/Makefile
357 coregrind/demangle/Makefile
358 coregrind/docs/Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000359 coregrind/x86/Makefile
nethercote8ff888f2004-11-17 17:11:45 +0000360 coregrind/linux/Makefile
nethercotef94fe2f2004-09-10 14:23:59 +0000361 coregrind/x86-linux/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000362 addrcheck/Makefile
njnf2df9b52002-10-04 11:35:47 +0000363 addrcheck/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000364 addrcheck/tests/x86/Makefile
njn7da8fa72002-10-03 10:38:40 +0000365 addrcheck/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000366 memcheck/Makefile
367 memcheck/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000368 memcheck/tests/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000369 memcheck/docs/Makefile
370 cachegrind/Makefile
nethercoteb35a8b92004-09-11 16:45:27 +0000371 cachegrind/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000372 cachegrind/tests/Makefile
nethercotea255d802004-10-19 17:00:59 +0000373 cachegrind/tests/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000374 cachegrind/docs/Makefile
njnf2df9b52002-10-04 11:35:47 +0000375 cachegrind/cg_annotate
njn25cac76cb2002-09-23 11:21:57 +0000376 helgrind/Makefile
njnf2df9b52002-10-04 11:35:47 +0000377 helgrind/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000378 helgrind/tests/x86/Makefile
njn83157fc2002-10-03 10:07:34 +0000379 helgrind/docs/Makefile
nethercotec9f36922004-02-14 16:40:02 +0000380 massif/Makefile
381 massif/hp2ps/Makefile
382 massif/tests/Makefile
383 massif/docs/Makefile
384 corecheck/Makefile
385 corecheck/tests/Makefile
386 corecheck/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000387 lackey/Makefile
njnf2df9b52002-10-04 11:35:47 +0000388 lackey/tests/Makefile
njn83157fc2002-10-03 10:07:34 +0000389 lackey/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000390 none/Makefile
391 none/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000392 none/tests/x86/Makefile
njn9bc8c002002-10-02 13:49:13 +0000393 none/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000394)
gobry3b777892002-04-04 09:18:39 +0000395
396cat<<EOF
397
398Using the following suppressions by default:
399
400 ${DEFAULT_SUPP}
401EOF
402
403cat<<EOF > default.supp
404# This is a generated file, composed of the following suppression rules:
405#
406# ${DEFAULT_SUPP}
407#
408
409EOF
410
411for file in ${DEFAULT_SUPP} ; do
412 cat ${srcdir}/$file >> default.supp
413done