blob: 1401ea191b5f98e76b11a45c4a2181af49e6681a [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
sewardj50629ec2004-11-22 13:44:11 +00009# Where is VEX ? ToDo: --with-vex=
10VEX_DIR=/home/sewardj/Vex/vex/trunk
11AC_SUBST(VEX_DIR)
12
sewardjde4a1d02002-03-22 01:27:54 +000013# Checks for programs.
gobrye721a522002-03-22 13:38:30 +000014CFLAGS=""
15
sewardjde4a1d02002-03-22 01:27:54 +000016AC_PROG_LN_S
17AC_PROG_CC
thughesa92ffd52004-11-01 09:50:57 +000018AM_PROG_CC_C_O
sewardjde4a1d02002-03-22 01:27:54 +000019AC_PROG_CPP
njn25e49d8e72002-09-23 09:36:25 +000020AC_PROG_CXX
sewardjde4a1d02002-03-22 01:27:54 +000021AC_PROG_RANLIB
22
gobrye721a522002-03-22 13:38:30 +000023# Check for the compiler support
24if test "${GCC}" != "yes" ; then
25 AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
26fi
27
sewardj2f685952002-12-22 19:32:23 +000028# figure out where perl lives
29AC_PATH_PROG(PERL, perl)
30
njn9315df32003-04-16 20:50:50 +000031# figure out where gdb lives
32AC_PATH_PROG(GDB, gdb)
njn17b85352003-04-18 12:54:24 +000033# autoheader tries to execute the 3rd string or something; I get warnings when
34# it's defined. So just leave it undefined. --njn 2002-Apr-18
35AC_DEFINE_UNQUOTED(GDB_PATH, "$GDB", "")
njn9315df32003-04-16 20:50:50 +000036
daywalker48ccca52002-04-15 00:31:58 +000037# some older automake's don't have it so try something on our own
38ifdef([AM_PROG_AS],[AM_PROG_AS],
39[
gobry1be19852002-03-26 20:44:55 +000040AS="${CC}"
41AC_SUBST(AS)
gobry3b777892002-04-04 09:18:39 +000042
gobry1be19852002-03-26 20:44:55 +000043ASFLAGS=""
44AC_SUBST(ASFLAGS)
daywalker48ccca52002-04-15 00:31:58 +000045])
gobry3b777892002-04-04 09:18:39 +000046
47# This variable will collect the individual suppression files
48# depending on the results of autoconf
49
50DEFAULT_SUPP=""
51
52
gobrye721a522002-03-22 13:38:30 +000053# We don't want gcc 2.7
54AC_MSG_CHECKING([for a supported version of gcc])
55
daywalker870ac4c2002-05-21 00:09:48 +000056gcc_version=`${CC} --version | head -n 1`
gobrye721a522002-03-22 13:38:30 +000057
58case "${gcc_version}" in
59 gcc-2.7.*)
60 AC_MSG_RESULT([no (${gcc_version})])
61 AC_MSG_ERROR([please use a recent (>= gcc-2.95) version of gcc])
62 ;;
63
64 *)
65 AC_MSG_RESULT([ok (${gcc_version})])
66 ;;
67esac
68
gobrye721a522002-03-22 13:38:30 +000069
sewardjde4a1d02002-03-22 01:27:54 +000070# Checks for the platform
71AC_CANONICAL_HOST
72
73AC_MSG_CHECKING([for a supported CPU])
nethercote888ecb72004-08-23 14:54:40 +000074AC_SUBST(VG_ARCH)
nethercote2b72e942004-10-25 14:05:56 +000075AC_SUBST(KICKSTART_BASE)
nethercotecf4d9972004-10-25 15:21:00 +000076AC_SUBST(ARCH_CORE_AM_CFLAGS)
77AC_SUBST(ARCH_TOOL_AM_CFLAGS)
nethercote8df0a402004-10-25 19:20:14 +000078AC_SUBST(ARCH_CORE_AM_CCASFLAGS)
sewardjde4a1d02002-03-22 01:27:54 +000079
gobrye721a522002-03-22 13:38:30 +000080case "${host_cpu}" in
sewardjde4a1d02002-03-22 01:27:54 +000081 i?86)
82 AC_MSG_RESULT([ok (${host_cpu})])
nethercote888ecb72004-08-23 14:54:40 +000083 VG_ARCH="x86"
nethercote2b72e942004-10-25 14:05:56 +000084 KICKSTART_BASE="0xb0000000"
nethercotecf4d9972004-10-25 15:21:00 +000085 ARCH_CORE_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -DELFSZ=32"
86 ARCH_TOOL_AM_CFLAGS="-fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@"
nethercote8df0a402004-10-25 19:20:14 +000087 ARCH_CORE_AM_CCASFLAGS=""
sewardjde4a1d02002-03-22 01:27:54 +000088 ;;
89
nethercote9bcc9062004-10-13 13:50:01 +000090 powerpc*)
91 AC_MSG_RESULT([no (${host_cpu})])
nethercoteda8735a2004-10-19 14:24:42 +000092 VG_ARCH="ppc"
nethercote2b72e942004-10-25 14:05:56 +000093 KICKSTART_BASE="0x70000000"
nethercotecf4d9972004-10-25 15:21:00 +000094 ARCH_CORE_AM_CFLAGS="-DELFSZ=32"
95 ARCH_TOOL_AM_CFLAGS="-fpic"
nethercote8df0a402004-10-25 19:20:14 +000096 ARCH_CORE_AM_CCASFLAGS="-Wa,-maltivec"
nethercote9bcc9062004-10-13 13:50:01 +000097 AC_MSG_ERROR([PowerPC not supported. Sorry])
98 ;;
99
sewardjde4a1d02002-03-22 01:27:54 +0000100 *)
101 AC_MSG_RESULT([no (${host_cpu})])
nethercote81d5c662004-10-13 13:18:51 +0000102 AC_MSG_ERROR([Unsupported host architecture. Sorry])
sewardjde4a1d02002-03-22 01:27:54 +0000103 ;;
104esac
105
106AC_MSG_CHECKING([for a supported OS])
nethercote888ecb72004-08-23 14:54:40 +0000107AC_SUBST(VG_OS)
sewardjde4a1d02002-03-22 01:27:54 +0000108
gobrye721a522002-03-22 13:38:30 +0000109case "${host_os}" in
mueller8c68e042004-01-03 15:21:14 +0000110 *linux*)
sewardjde4a1d02002-03-22 01:27:54 +0000111 AC_MSG_RESULT([ok (${host_os})])
nethercote888ecb72004-08-23 14:54:40 +0000112 VG_OS="linux"
mueller8c68e042004-01-03 15:21:14 +0000113
114 # Ok, this is linux. Check the kernel version
115 AC_MSG_CHECKING([for the kernel version])
116
117 kernel=`uname -r`
118
119 case "${kernel}" in
120 2.6.*)
121 AC_MSG_RESULT([2.6 family (${kernel})])
122 AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x])
123 ;;
124
125 2.4.*)
126 AC_MSG_RESULT([2.4 family (${kernel})])
127 AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x])
128 ;;
129
mueller8c68e042004-01-03 15:21:14 +0000130 *)
131 AC_MSG_RESULT([unsupported (${kernel})])
nethercote4fa681f2004-11-08 17:51:39 +0000132 AC_MSG_ERROR([Valgrind works on kernels 2.4, 2.6])
mueller8c68e042004-01-03 15:21:14 +0000133 ;;
134 esac
135
136 ;;
137
138 *freebsd*)
139 AC_MSG_RESULT([ok (${host_os})])
nethercote888ecb72004-08-23 14:54:40 +0000140 VG_OS="freebsd"
sewardjde4a1d02002-03-22 01:27:54 +0000141 ;;
142
143 *)
144 AC_MSG_RESULT([no (${host_os})])
mueller8c68e042004-01-03 15:21:14 +0000145 AC_MSG_ERROR([Valgrind is operating system specific. Sorry. Please consider doing a port.])
sewardjde4a1d02002-03-22 01:27:54 +0000146 ;;
147esac
148
nethercote888ecb72004-08-23 14:54:40 +0000149AC_MSG_CHECKING([for a supported CPU/OS combination])
150AC_SUBST(VG_PLATFORM)
151
152VG_PLATFORM="$VG_ARCH-$VG_OS"
153
154case $VG_PLATFORM in
155 x86-linux)
156 AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
157 ;;
158
159 *)
160 AC_MSG_RESULT([no (${host_cpu}-${host_os})])
161 AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doin
162g a port.])
163 ;;
164esac
sewardjde4a1d02002-03-22 01:27:54 +0000165
sewardjde4a1d02002-03-22 01:27:54 +0000166AC_SUBST(DEFAULT_SUPP)
167
sewardjde4a1d02002-03-22 01:27:54 +0000168glibc=""
169
170AC_EGREP_CPP([GLIBC_21], [
171#include <features.h>
172#ifdef __GNU_LIBRARY__
173 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 1)
174 GLIBC_21
175 #endif
176#endif
177],
178glibc="2.1")
179
180AC_EGREP_CPP([GLIBC_22], [
181#include <features.h>
182#ifdef __GNU_LIBRARY__
183 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2)
184 GLIBC_22
185 #endif
186#endif
187],
188glibc="2.2")
189
sewardj08c7f012002-10-07 23:56:55 +0000190AC_EGREP_CPP([GLIBC_23], [
191#include <features.h>
192#ifdef __GNU_LIBRARY__
193 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 3)
194 GLIBC_23
195 #endif
196#endif
197],
198glibc="2.3")
199
daywalkere9212b32003-06-15 22:39:15 +0000200AC_MSG_CHECKING([the glibc version])
201
gobrye721a522002-03-22 13:38:30 +0000202case "${glibc}" in
sewardjde4a1d02002-03-22 01:27:54 +0000203 2.1)
204 AC_MSG_RESULT(2.1 family)
daywalker418c7482002-10-16 13:09:26 +0000205 AC_DEFINE([GLIBC_2_1], 1, [Define to 1 if you're using glibc 2.1.x])
gobry3b777892002-04-04 09:18:39 +0000206 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.1.supp"
sewardjde4a1d02002-03-22 01:27:54 +0000207 ;;
208
209 2.2)
210 AC_MSG_RESULT(2.2 family)
daywalker418c7482002-10-16 13:09:26 +0000211 AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
gobry3b777892002-04-04 09:18:39 +0000212 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.2.supp"
sewardjde4a1d02002-03-22 01:27:54 +0000213 ;;
214
sewardj08c7f012002-10-07 23:56:55 +0000215 2.3)
216 AC_MSG_RESULT(2.3 family)
daywalker418c7482002-10-16 13:09:26 +0000217 AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
daywalker63f6f782003-05-27 00:19:52 +0000218 DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.3.supp"
sewardj08c7f012002-10-07 23:56:55 +0000219 ;;
220
sewardjde4a1d02002-03-22 01:27:54 +0000221 *)
222 AC_MSG_RESULT(unsupported version)
sewardj08c7f012002-10-07 23:56:55 +0000223 AC_MSG_ERROR([Valgrind requires the glibc version 2.1, 2.2 or 2.3])
sewardjde4a1d02002-03-22 01:27:54 +0000224 ;;
225esac
226
sewardj3e909ce2002-06-03 13:27:15 +0000227# APIs introduced in recent glibc versions
228
229AC_MSG_CHECKING([whether sched_param has a sched_priority member])
230AC_CACHE_VAL(vg_have_sched_priority,
231[
232AC_TRY_COMPILE([#include <pthread.h>],[
233struct sched_param p; p.sched_priority=1;],
234vg_have_sched_priority=yes,
235vg_have_sched_priority=no)
236])
237AC_MSG_RESULT($vg_have_sched_priority)
238if test "$vg_have_sched_priority" = yes; then
daywalker418c7482002-10-16 13:09:26 +0000239AC_DEFINE([HAVE_SCHED_PRIORITY], 1, [pthread / sched_priority exists])
sewardj3e909ce2002-06-03 13:27:15 +0000240fi
241
nethercote3d260f62004-10-31 19:39:18 +0000242# We don't know how to detect the X client library version
243# (detecting the server version is easy, bu no help). So we
244# just use a hack: always include the suppressions for both
245# versions 3 and 4.
gobrye721a522002-03-22 13:38:30 +0000246AC_PATH_X
gobrye721a522002-03-22 13:38:30 +0000247if test "${no_x}" != 'yes' ; then
nethercote3d260f62004-10-31 19:39:18 +0000248 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
249 DEFAULT_SUPP="${DEFAULT_SUPP} xfree-3.supp"
gobrye721a522002-03-22 13:38:30 +0000250fi
251
sewardj2e10a682003-04-07 19:36:41 +0000252
sewardj5b754b42002-06-03 22:53:35 +0000253# does this compiler support -mpreferred-stack-boundary=2 ?
254AC_MSG_CHECKING([if gcc accepts -mpreferred-stack-boundary])
255
daywalker3664f562003-10-17 13:43:46 +0000256safe_CFLAGS=$CFLAGS
sewardj5b754b42002-06-03 22:53:35 +0000257CFLAGS="-mpreferred-stack-boundary=2"
258
259AC_TRY_COMPILE(, [
sewardj5b754b42002-06-03 22:53:35 +0000260int main () { return 0 ; }
sewardj5b754b42002-06-03 22:53:35 +0000261],
262[
263PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
daywalker3664f562003-10-17 13:43:46 +0000264AC_MSG_RESULT([yes])
sewardj5b754b42002-06-03 22:53:35 +0000265], [
266PREFERRED_STACK_BOUNDARY=""
267AC_MSG_RESULT([no])
268])
daywalker3664f562003-10-17 13:43:46 +0000269CFLAGS=$safe_CFLAGS
sewardj5b754b42002-06-03 22:53:35 +0000270
271AC_SUBST(PREFERRED_STACK_BOUNDARY)
272
273
nethercote7f390022004-10-25 17:18:24 +0000274# Check for PIE support in the compiler and linker
275AC_CACHE_CHECK([for PIE support], vg_cv_pie,
276 [safe_CFLAGS=$CFLAGS
277 CFLAGS="$CFLAGS -fpie"
278 safe_LDFLAGS=$LDFLAGS
279 LDFLAGS="$LDFLAGS -pie"
280 AC_TRY_LINK([int foo;],
281 [],
282 [vg_cv_pie=yes],
283 [vg_cv_pie=no])
284 CFLAGS=$safe_CFLAGS
285 LDFLAGS=$safe_LDFLAGS])
286if test "$vg_cv_pie" = yes; then
287AC_DEFINE([HAVE_PIE], 1, [can create position-independent executables])
288fi
289AM_CONDITIONAL(USE_PIE, test "$vg_cv_pie" = "yes")
290
sewardj5b754b42002-06-03 22:53:35 +0000291
sewardjde4a1d02002-03-22 01:27:54 +0000292# Checks for header files.
293AC_HEADER_STDC
nethercote3d260f62004-10-31 19:39:18 +0000294AC_CHECK_HEADERS([sys/endian.h endian.h mqueue.h])
sewardjde4a1d02002-03-22 01:27:54 +0000295
296# Checks for typedefs, structures, and compiler characteristics.
sewardjde4a1d02002-03-22 01:27:54 +0000297AC_TYPE_UID_T
298AC_TYPE_OFF_T
299AC_TYPE_SIZE_T
300AC_HEADER_TIME
thughesebed9982004-06-12 17:25:25 +0000301AC_CHECK_TYPES(__pthread_unwind_buf_t,,,[#include <pthread.h>])
sewardjde4a1d02002-03-22 01:27:54 +0000302
303# Checks for library functions.
304AC_FUNC_MEMCMP
305AC_FUNC_MMAP
306AC_TYPE_SIGNAL
307
thughesbeb6eb92004-06-14 12:33:43 +0000308AC_CHECK_FUNCS([floor memchr memset mkdir strchr strdup strpbrk strrchr strstr semtimedop])
sewardjde4a1d02002-03-22 01:27:54 +0000309
gobrye721a522002-03-22 13:38:30 +0000310AC_OUTPUT(
sewardjde4a1d02002-03-22 01:27:54 +0000311 Makefile
njn25cac76cb2002-09-23 11:21:57 +0000312 valgrind.spec
muellerbddd6072003-11-19 21:50:07 +0000313 valgrind.pc
njn254d542432002-09-23 16:09:39 +0000314 docs/Makefile
315 tests/Makefile
njnc2e7f482002-09-27 08:44:17 +0000316 tests/vg_regtest
njn251ffab942002-09-23 16:42:19 +0000317 tests/unused/Makefile
nethercotee90c6832004-10-18 18:07:49 +0000318 include/valgrind.h
njn254d542432002-09-23 16:09:39 +0000319 include/Makefile
nethercotec06e2132004-09-03 13:45:29 +0000320 include/x86/Makefile
nethercote73b526f2004-10-31 18:48:21 +0000321 include/linux/Makefile
322 include/x86-linux/Makefile
njn7a6e7462002-11-09 17:53:30 +0000323 auxprogs/Makefile
njn25ab726032002-09-23 16:24:41 +0000324 coregrind/Makefile
325 coregrind/demangle/Makefile
326 coregrind/docs/Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000327 coregrind/x86/Makefile
nethercote8ff888f2004-11-17 17:11:45 +0000328 coregrind/linux/Makefile
nethercotef94fe2f2004-09-10 14:23:59 +0000329 coregrind/x86-linux/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000330 addrcheck/Makefile
njnf2df9b52002-10-04 11:35:47 +0000331 addrcheck/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000332 addrcheck/tests/x86/Makefile
njn7da8fa72002-10-03 10:38:40 +0000333 addrcheck/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000334 memcheck/Makefile
335 memcheck/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000336 memcheck/tests/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000337 memcheck/docs/Makefile
338 cachegrind/Makefile
nethercoteb35a8b92004-09-11 16:45:27 +0000339 cachegrind/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000340 cachegrind/tests/Makefile
nethercotea255d802004-10-19 17:00:59 +0000341 cachegrind/tests/x86/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000342 cachegrind/docs/Makefile
njnf2df9b52002-10-04 11:35:47 +0000343 cachegrind/cg_annotate
njn25cac76cb2002-09-23 11:21:57 +0000344 helgrind/Makefile
njnf2df9b52002-10-04 11:35:47 +0000345 helgrind/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000346 helgrind/tests/x86/Makefile
njn83157fc2002-10-03 10:07:34 +0000347 helgrind/docs/Makefile
nethercotec9f36922004-02-14 16:40:02 +0000348 massif/Makefile
349 massif/hp2ps/Makefile
350 massif/tests/Makefile
351 massif/docs/Makefile
352 corecheck/Makefile
353 corecheck/tests/Makefile
354 corecheck/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000355 lackey/Makefile
njnf2df9b52002-10-04 11:35:47 +0000356 lackey/tests/Makefile
njn83157fc2002-10-03 10:07:34 +0000357 lackey/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000358 none/Makefile
359 none/tests/Makefile
nethercotebfd20192004-10-19 18:54:11 +0000360 none/tests/x86/Makefile
njn9bc8c002002-10-02 13:49:13 +0000361 none/docs/Makefile
njn25cac76cb2002-09-23 11:21:57 +0000362)
gobry3b777892002-04-04 09:18:39 +0000363
364cat<<EOF
365
366Using the following suppressions by default:
367
368 ${DEFAULT_SUPP}
369EOF
370
371cat<<EOF > default.supp
372# This is a generated file, composed of the following suppression rules:
373#
374# ${DEFAULT_SUPP}
375#
376
377EOF
378
379for file in ${DEFAULT_SUPP} ; do
380 cat ${srcdir}/$file >> default.supp
381done