blob: d1b61557c5e374876cda27e15afef0d756dde3a1 [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
sewardjde4a1d02002-03-22 01:27:54 +00009# Checks for programs.
gobrye721a522002-03-22 13:38:30 +000010CFLAGS=""
11
sewardjde4a1d02002-03-22 01:27:54 +000012AC_PROG_LN_S
13AC_PROG_CC
14AC_PROG_CPP
njn25e49d8e72002-09-23 09:36:25 +000015AC_PROG_CXX
sewardjde4a1d02002-03-22 01:27:54 +000016AC_PROG_RANLIB
17
gobrye721a522002-03-22 13:38:30 +000018# Check for the compiler support
19if test "${GCC}" != "yes" ; then
20 AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
21fi
22
sewardj2f685952002-12-22 19:32:23 +000023# figure out where perl lives
24AC_PATH_PROG(PERL, perl)
25
njn9315df32003-04-16 20:50:50 +000026# figure out where gdb lives
27AC_PATH_PROG(GDB, gdb)
njn17b85352003-04-18 12:54:24 +000028# autoheader tries to execute the 3rd string or something; I get warnings when
29# it's defined. So just leave it undefined. --njn 2002-Apr-18
30AC_DEFINE_UNQUOTED(GDB_PATH, "$GDB", "")
njn9315df32003-04-16 20:50:50 +000031
daywalker48ccca52002-04-15 00:31:58 +000032# some older automake's don't have it so try something on our own
33ifdef([AM_PROG_AS],[AM_PROG_AS],
34[
gobry1be19852002-03-26 20:44:55 +000035AS="${CC}"
36AC_SUBST(AS)
gobry3b777892002-04-04 09:18:39 +000037
gobry1be19852002-03-26 20:44:55 +000038ASFLAGS=""
39AC_SUBST(ASFLAGS)
daywalker48ccca52002-04-15 00:31:58 +000040])
gobry3b777892002-04-04 09:18:39 +000041
42# This variable will collect the individual suppression files
43# depending on the results of autoconf
44
45DEFAULT_SUPP=""
46
47
gobrye721a522002-03-22 13:38:30 +000048# We don't want gcc 2.7
49AC_MSG_CHECKING([for a supported version of gcc])
50
daywalker870ac4c2002-05-21 00:09:48 +000051gcc_version=`${CC} --version | head -n 1`
gobrye721a522002-03-22 13:38:30 +000052
53case "${gcc_version}" in
54 gcc-2.7.*)
55 AC_MSG_RESULT([no (${gcc_version})])
56 AC_MSG_ERROR([please use a recent (>= gcc-2.95) version of gcc])
57 ;;
58
59 *)
60 AC_MSG_RESULT([ok (${gcc_version})])
61 ;;
62esac
63
gobrye721a522002-03-22 13:38:30 +000064
sewardjde4a1d02002-03-22 01:27:54 +000065# Checks for the platform
66AC_CANONICAL_HOST
67
68AC_MSG_CHECKING([for a supported CPU])
nethercote888ecb72004-08-23 14:54:40 +000069AC_SUBST(VG_ARCH)
nethercote2b72e942004-10-25 14:05:56 +000070AC_SUBST(KICKSTART_BASE)
sewardjde4a1d02002-03-22 01:27:54 +000071
gobrye721a522002-03-22 13:38:30 +000072case "${host_cpu}" in
sewardjde4a1d02002-03-22 01:27:54 +000073 i?86)
74 AC_MSG_RESULT([ok (${host_cpu})])
nethercote888ecb72004-08-23 14:54:40 +000075 VG_ARCH="x86"
nethercote2b72e942004-10-25 14:05:56 +000076 KICKSTART_BASE="0xb0000000"
sewardjde4a1d02002-03-22 01:27:54 +000077 ;;
78
nethercote9bcc9062004-10-13 13:50:01 +000079 powerpc*)
80 AC_MSG_RESULT([no (${host_cpu})])
nethercoteda8735a2004-10-19 14:24:42 +000081 VG_ARCH="ppc"
nethercote2b72e942004-10-25 14:05:56 +000082 KICKSTART_BASE="0x70000000"
nethercote9bcc9062004-10-13 13:50:01 +000083 AC_MSG_ERROR([PowerPC not supported. Sorry])
84 ;;
85
sewardjde4a1d02002-03-22 01:27:54 +000086 *)
87 AC_MSG_RESULT([no (${host_cpu})])
nethercote81d5c662004-10-13 13:18:51 +000088 AC_MSG_ERROR([Unsupported host architecture. Sorry])
sewardjde4a1d02002-03-22 01:27:54 +000089 ;;
90esac
91
92AC_MSG_CHECKING([for a supported OS])
nethercote888ecb72004-08-23 14:54:40 +000093AC_SUBST(VG_OS)
sewardjde4a1d02002-03-22 01:27:54 +000094
gobrye721a522002-03-22 13:38:30 +000095case "${host_os}" in
mueller8c68e042004-01-03 15:21:14 +000096 *linux*)
sewardjde4a1d02002-03-22 01:27:54 +000097 AC_MSG_RESULT([ok (${host_os})])
nethercote888ecb72004-08-23 14:54:40 +000098 VG_OS="linux"
mueller8c68e042004-01-03 15:21:14 +000099
100 # Ok, this is linux. Check the kernel version
101 AC_MSG_CHECKING([for the kernel version])
102
103 kernel=`uname -r`
104
105 case "${kernel}" in
106 2.6.*)
107 AC_MSG_RESULT([2.6 family (${kernel})])
108 AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x])
109 ;;
110
111 2.4.*)
112 AC_MSG_RESULT([2.4 family (${kernel})])
113 AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x])
114 ;;
115
116 2.2.*)
117 AC_MSG_RESULT([2.2 family (${kernel})])
118 AC_DEFINE([KERNEL_2_2], 1, [Define to 1 if you're using Linux 2.2.x])
119 ;;
120
121 *)
122 AC_MSG_RESULT([unsupported (${kernel})])
123 AC_MSG_ERROR([Valgrind works on kernels 2.2, 2.4, 2.6])
124 ;;
125 esac
126
127 ;;
128
129 *freebsd*)
130 AC_MSG_RESULT([ok (${host_os})])
nethercote888ecb72004-08-23 14:54:40 +0000131 VG_OS="freebsd"
sewardjde4a1d02002-03-22 01:27:54 +0000132 ;;
133
134 *)
135 AC_MSG_RESULT([no (${host_os})])
mueller8c68e042004-01-03 15:21:14 +0000136 AC_MSG_ERROR([Valgrind is operating system specific. Sorry. Please consider doing a port.])
sewardjde4a1d02002-03-22 01:27:54 +0000137 ;;
138esac
139
nethercote888ecb72004-08-23 14:54:40 +0000140AC_MSG_CHECKING([for a supported CPU/OS combination])
141AC_SUBST(VG_PLATFORM)
142
143VG_PLATFORM="$VG_ARCH-$VG_OS"
144
145case $VG_PLATFORM in
146 x86-linux)
147 AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
148 ;;
149
150 *)
151 AC_MSG_RESULT([no (${host_cpu}-${host_os})])
152 AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doin
153g a port.])
154 ;;
155esac
sewardjde4a1d02002-03-22 01:27:54 +0000156
sewardjde4a1d02002-03-22 01:27:54 +0000157AC_SUBST(DEFAULT_SUPP)
158
sewardjde4a1d02002-03-22 01:27:54 +0000159glibc=""
160
161AC_EGREP_CPP([GLIBC_21], [
162#include <features.h>
163#ifdef __GNU_LIBRARY__
164 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 1)
165 GLIBC_21
166 #endif
167#endif
168],
169glibc="2.1")
170
171AC_EGREP_CPP([GLIBC_22], [
172#include <features.h>
173#ifdef __GNU_LIBRARY__
174 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2)
175 GLIBC_22
176 #endif
177#endif
178],
179glibc="2.2")
180
sewardj08c7f012002-10-07 23:56:55 +0000181AC_EGREP_CPP([GLIBC_23], [
182#include <features.h>
183#ifdef __GNU_LIBRARY__
184 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 3)
185 GLIBC_23
186 #endif
187#endif
188],
189glibc="2.3")
190
daywalkere9212b32003-06-15 22:39:15 +0000191# Ok, this is linux. Check the kernel version
192AC_MSG_CHECKING([the glibc version])
193
gobrye721a522002-03-22 13:38:30 +0000194case "${glibc}" in
sewardjde4a1d02002-03-22 01:27:54 +0000195 2.1)
196 AC_MSG_RESULT(2.1 family)
daywalker418c7482002-10-16 13:09:26 +0000197 AC_DEFINE([GLIBC_2_1], 1, [Define to 1 if you're using glibc 2.1.x])
gobry3b777892002-04-04 09:18:39 +0000198 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.1.supp"
sewardjde4a1d02002-03-22 01:27:54 +0000199 ;;
200
201 2.2)
202 AC_MSG_RESULT(2.2 family)
daywalker418c7482002-10-16 13:09:26 +0000203 AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
gobry3b777892002-04-04 09:18:39 +0000204 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.2.supp"
sewardjde4a1d02002-03-22 01:27:54 +0000205 ;;
206
sewardj08c7f012002-10-07 23:56:55 +0000207 2.3)
208 AC_MSG_RESULT(2.3 family)
daywalker418c7482002-10-16 13:09:26 +0000209 AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
daywalker63f6f782003-05-27 00:19:52 +0000210 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.3.supp"
sewardj08c7f012002-10-07 23:56:55 +0000211 ;;
212
sewardjde4a1d02002-03-22 01:27:54 +0000213 *)
214 AC_MSG_RESULT(unsupported version)
sewardj08c7f012002-10-07 23:56:55 +0000215 AC_MSG_ERROR([Valgrind requires the glibc version 2.1, 2.2 or 2.3])
sewardjde4a1d02002-03-22 01:27:54 +0000216 ;;
217esac
218
sewardj3e909ce2002-06-03 13:27:15 +0000219# APIs introduced in recent glibc versions
220
221AC_MSG_CHECKING([whether sched_param has a sched_priority member])
222AC_CACHE_VAL(vg_have_sched_priority,
223[
224AC_TRY_COMPILE([#include <pthread.h>],[
225struct sched_param p; p.sched_priority=1;],
226vg_have_sched_priority=yes,
227vg_have_sched_priority=no)
228])
229AC_MSG_RESULT($vg_have_sched_priority)
230if test "$vg_have_sched_priority" = yes; then
daywalker418c7482002-10-16 13:09:26 +0000231AC_DEFINE([HAVE_SCHED_PRIORITY], 1, [pthread / sched_priority exists])
sewardj3e909ce2002-06-03 13:27:15 +0000232fi
233
234AC_MSG_CHECKING([whether nfds_t is defined])
235AC_CACHE_VAL(vg_have_nfds_t,
236[
237AC_TRY_COMPILE([#include <sys/poll.h>],[
238nfds_t i=0;],
239vg_have_nfds_t=yes,
240vg_have_nfds_t=no)
241])
242AC_MSG_RESULT($vg_have_nfds_t)
243if test "$vg_have_nfds_t" = yes; then
daywalker418c7482002-10-16 13:09:26 +0000244AC_DEFINE([HAVE_NFDS_T], 1, [nfds_t exists])
sewardj3e909ce2002-06-03 13:27:15 +0000245fi
246
sewardjde4a1d02002-03-22 01:27:54 +0000247# try to detect the XFree version
sewardj8ce25cd2002-06-18 01:05:58 +0000248# JRS 2002-06-17: this is completely bogus because it
249# detects the server version, whereas we need to know the
250# client library version. So what follows is hacked to
251# use all the X supp files regardless of what is detected.
252# This is really stoooopid and should be fixed properly.
sewardjde4a1d02002-03-22 01:27:54 +0000253
gobrye721a522002-03-22 13:38:30 +0000254AC_PATH_X
255
256if test "${no_x}" != 'yes' ; then
257
thughesfd8a3802004-08-30 10:31:21 +0000258 AC_MSG_CHECKING([X version])
gobrye721a522002-03-22 13:38:30 +0000259
260 cat<<EOF > conftest.c
261#include <X11/Xlib.h>
262
263int main (int argc, char * argv [])
264{
265 Display * display = XOpenDisplay (NULL);
266
267 if (display) {
268 printf ("%s version=%d\n", ServerVendor (display), VendorRelease (display));
269 }
270
271 return 0;
272}
273EOF
274
275 ${CC} -o conftest conftest.c -I${x_includes} -L${x_libraries} -lX11 >&5 2>&1
276
277 if test "$?" != 0 ; then
278 AC_MSG_RESULT([cannot compile test program])
279 else
280 xfree=`./conftest`
281
282 case "${xfree}" in
283 *XFree86*)
thughesfd8a3802004-08-30 10:31:21 +0000284 case "${xfree}" in
285 *version=4*)
286 AC_MSG_RESULT([XFree 4.x family])
287 AC_DEFINE([XFREE_4], 1, [Define to 1 if you're using XFree 4.x])
288 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
289 # haaaaaaack!
290 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-3.supp"
291 ;;
gobrye721a522002-03-22 13:38:30 +0000292
thughesfd8a3802004-08-30 10:31:21 +0000293 *version=3*)
294 AC_MSG_RESULT([XFree 3.x family])
295 AC_DEFINE([XFREE_3], 1, [Define to 1 if you're using XFree86 3.x])
296 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-3.supp"
297 # haaaaaaack!
298 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
299 ;;
300
301 *) AC_MSG_RESULT([unknown XFree86 server (${xfree})])
302 # haaaaaaack!
303 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-3.supp"
304 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
305 ;;
306 esac
307 ;;
308 *X.Org*)
309 case "${xfree}" in
310 *version=6*)
311 AC_MSG_RESULT([X.Org 6.x family])
312 AC_DEFINE([XFREE_4], 1, [Define to 1 if you're using XFree 4.x])
313 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
314 # haaaaaaack!
315 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-3.supp"
316 ;;
317 esac
318 ;;
gobrye721a522002-03-22 13:38:30 +0000319 *) AC_MSG_RESULT([not a XFree86 server])
320 ;;
321 esac
322
gobrye721a522002-03-22 13:38:30 +0000323 fi
324
325 rm -f conftest conftest.c
326fi
327
sewardj2e10a682003-04-07 19:36:41 +0000328
daywalker3664f562003-10-17 13:43:46 +0000329# check if the GNU as supports CFI directives
330AC_MSG_CHECKING([if gas accepts .cfi])
muellerece14bd2003-10-31 03:43:48 +0000331AC_TRY_LINK(, [
daywalker3664f562003-10-17 13:43:46 +0000332
333__asm__ __volatile__ (".cfi_startproc\n"
334 ".cfi_adjust_cfa_offset 0x0\n"
335 ".cfi_endproc\n");
336],
337[
338 AC_DEFINE_UNQUOTED([HAVE_GAS_CFI], 1, [Define if your GNU as supports .cfi])
339 AC_MSG_RESULT(yes)
340],
341 AC_MSG_RESULT(no)
342)
sewardj2e10a682003-04-07 19:36:41 +0000343
sewardj5b754b42002-06-03 22:53:35 +0000344# does this compiler support -mpreferred-stack-boundary=2 ?
345AC_MSG_CHECKING([if gcc accepts -mpreferred-stack-boundary])
346
daywalker3664f562003-10-17 13:43:46 +0000347safe_CFLAGS=$CFLAGS
sewardj5b754b42002-06-03 22:53:35 +0000348CFLAGS="-mpreferred-stack-boundary=2"
349
350AC_TRY_COMPILE(, [
351
352int main () { return 0 ; }
353
354],
355[
356PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
daywalker3664f562003-10-17 13:43:46 +0000357AC_MSG_RESULT([yes])
sewardj5b754b42002-06-03 22:53:35 +0000358], [
359PREFERRED_STACK_BOUNDARY=""
360AC_MSG_RESULT([no])
361])
daywalker3664f562003-10-17 13:43:46 +0000362CFLAGS=$safe_CFLAGS
sewardj5b754b42002-06-03 22:53:35 +0000363
364AC_SUBST(PREFERRED_STACK_BOUNDARY)
365
366
367
sewardjde4a1d02002-03-22 01:27:54 +0000368# Checks for header files.
369AC_HEADER_STDC
nethercote2baf9aa2004-08-24 14:38:53 +0000370AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/socket.h sys/statfs.h sys/time.h sys/endian.h endian.h termios.h unistd.h utime.h linux/fb.h mqueue.h linux/compiler.h])
371
thughes33448cc2004-08-24 23:09:07 +0000372AH_TEMPLATE([HAVE_LINUX_MII_H], [])
373AC_MSG_CHECKING([for linux/mii.h])
374AC_PREPROC_IFELSE([#include <linux/mii.h>],
375 [AC_DEFINE([HAVE_LINUX_MII_H])
376 AC_MSG_RESULT([yes])],
377 [AC_MSG_RESULT([no])])
sewardjde4a1d02002-03-22 01:27:54 +0000378
379# Checks for typedefs, structures, and compiler characteristics.
sewardjde4a1d02002-03-22 01:27:54 +0000380AC_TYPE_UID_T
381AC_TYPE_OFF_T
382AC_TYPE_SIZE_T
383AC_HEADER_TIME
thughesebed9982004-06-12 17:25:25 +0000384AC_CHECK_TYPES(__pthread_unwind_buf_t,,,[#include <pthread.h>])
thughesbe811712004-06-17 23:04:58 +0000385AC_CHECK_TYPES(u16,,,[#include <linux/mii.h>])
sewardjde4a1d02002-03-22 01:27:54 +0000386
387# Checks for library functions.
388AC_FUNC_MEMCMP
389AC_FUNC_MMAP
390AC_TYPE_SIGNAL
391
thughesbeb6eb92004-06-14 12:33:43 +0000392AC_CHECK_FUNCS([floor memchr memset mkdir strchr strdup strpbrk strrchr strstr semtimedop])
sewardjde4a1d02002-03-22 01:27:54 +0000393
gobrye721a522002-03-22 13:38:30 +0000394AC_OUTPUT(
sewardjde4a1d02002-03-22 01:27:54 +0000395 Makefile
njn25cac76cb2002-09-23 11:21:57 +0000396 valgrind.spec
muellerbddd6072003-11-19 21:50:07 +0000397 valgrind.pc
njn254d542432002-09-23 16:09:39 +0000398 docs/Makefile
399 tests/Makefile
njnc2e7f482002-09-27 08:44:17 +0000400 tests/vg_regtest
njn251ffab942002-09-23 16:42:19 +0000401 tests/unused/Makefile
nethercotee90c6832004-10-18 18:07:49 +0000402 include/valgrind.h
njn254d542432002-09-23 16:09:39 +0000403 include/Makefile
nethercotec06e2132004-09-03 13:45:29 +0000404 include/x86/Makefile
njn7a6e7462002-11-09 17:53:30 +0000405 auxprogs/Makefile
njn25ab726032002-09-23 16:24:41 +0000406 coregrind/Makefile
407 coregrind/demangle/Makefile
408 coregrind/docs/Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000409 coregrind/x86/Makefile
nethercotef94fe2f2004-09-10 14:23:59 +0000410 coregrind/x86-linux/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000411 addrcheck/Makefile
njnf2df9b52002-10-04 11:35:47 +0000412 addrcheck/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000413 addrcheck/tests/x86/Makefile
njn7da8fa72002-10-03 10:38:40 +0000414 addrcheck/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000415 memcheck/Makefile
416 memcheck/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000417 memcheck/tests/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000418 memcheck/docs/Makefile
419 cachegrind/Makefile
nethercoteb35a8b92004-09-11 16:45:27 +0000420 cachegrind/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000421 cachegrind/tests/Makefile
nethercotea255d802004-10-19 17:00:59 +0000422 cachegrind/tests/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000423 cachegrind/docs/Makefile
njnf2df9b52002-10-04 11:35:47 +0000424 cachegrind/cg_annotate
njn25cac76cb2002-09-23 11:21:57 +0000425 helgrind/Makefile
njnf2df9b52002-10-04 11:35:47 +0000426 helgrind/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000427 helgrind/tests/x86/Makefile
njn83157fc2002-10-03 10:07:34 +0000428 helgrind/docs/Makefile
nethercotec9f36922004-02-14 16:40:02 +0000429 massif/Makefile
430 massif/hp2ps/Makefile
431 massif/tests/Makefile
432 massif/docs/Makefile
433 corecheck/Makefile
434 corecheck/tests/Makefile
435 corecheck/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000436 lackey/Makefile
njnf2df9b52002-10-04 11:35:47 +0000437 lackey/tests/Makefile
njn83157fc2002-10-03 10:07:34 +0000438 lackey/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000439 none/Makefile
440 none/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000441 none/tests/x86/Makefile
njn9bc8c002002-10-02 13:49:13 +0000442 none/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000443)
gobry3b777892002-04-04 09:18:39 +0000444
445cat<<EOF
446
447Using the following suppressions by default:
448
449 ${DEFAULT_SUPP}
450EOF
451
452cat<<EOF > default.supp
453# This is a generated file, composed of the following suppression rules:
454#
455# ${DEFAULT_SUPP}
456#
457
458EOF
459
460for file in ${DEFAULT_SUPP} ; do
461 cat ${srcdir}/$file >> default.supp
462done