blob: bf635435d174e24e500304f6fc438557d3a159ba [file] [log] [blame]
sewardjde4a1d02002-03-22 01:27:54 +00001# Process this file with autoconf to produce a configure script.
2AC_INIT(vg_clientmalloc.c)
3AM_CONFIG_HEADER(config.h)
sewardjc40438f2002-03-24 12:10:57 +00004AM_INIT_AUTOMAKE(valgrind, 20020324)
sewardjde4a1d02002-03-22 01:27:54 +00005
gobryb0ed4672002-03-27 20:58:58 +00006AM_MAINTAINER_MODE
7
sewardjde4a1d02002-03-22 01:27:54 +00008# Checks for programs.
gobrye721a522002-03-22 13:38:30 +00009CFLAGS=""
10
sewardjde4a1d02002-03-22 01:27:54 +000011AC_PROG_LN_S
12AC_PROG_CC
13AC_PROG_CPP
14AC_PROG_RANLIB
15
gobrye721a522002-03-22 13:38:30 +000016# Check for the compiler support
17if test "${GCC}" != "yes" ; then
18 AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
19fi
20
gobry1be19852002-03-26 20:44:55 +000021AS="${CC}"
22AC_SUBST(AS)
23ASFLAGS=""
24AC_SUBST(ASFLAGS)
25
gobrye721a522002-03-22 13:38:30 +000026# We don't want gcc 2.7
27AC_MSG_CHECKING([for a supported version of gcc])
28
29gcc_version=`${CC} --version`
30
31case "${gcc_version}" in
32 gcc-2.7.*)
33 AC_MSG_RESULT([no (${gcc_version})])
34 AC_MSG_ERROR([please use a recent (>= gcc-2.95) version of gcc])
35 ;;
36
37 *)
38 AC_MSG_RESULT([ok (${gcc_version})])
39 ;;
40esac
41
42# does this compiler support -mpreferred-stack-boundary=2 ?
43AC_MSG_CHECKING([for extra compiler options])
44
45CFLAGS="-mpreferred-stack-boundary=2"
46
47AC_TRY_COMPILE(, [
48
49int main () { return 0 ; }
50
51],
52[
53PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
54AC_MSG_RESULT([$PREFERRED_STACK_BOUNDARY])
55], [
56PREFERRED_STACK_BOUNDARY=""
57AC_MSG_RESULT([none])
58])
59
60AC_SUBST(PREFERRED_STACK_BOUNDARY)
61
sewardjde4a1d02002-03-22 01:27:54 +000062CFLAGS="-Winline -Wall -Wshadow -O -fomit-frame-pointer -g"
63AC_SUBST(CFLAGS)
64
65# Checks for the platform
66AC_CANONICAL_HOST
67
68AC_MSG_CHECKING([for a supported CPU])
69
gobrye721a522002-03-22 13:38:30 +000070case "${host_cpu}" in
sewardjde4a1d02002-03-22 01:27:54 +000071 i?86)
72 AC_MSG_RESULT([ok (${host_cpu})])
73 ;;
74
75 *)
76 AC_MSG_RESULT([no (${host_cpu})])
77 AC_MSG_ERROR([Valgrind is ix86 specific. Sorry])
78 ;;
79esac
80
81AC_MSG_CHECKING([for a supported OS])
82
gobrye721a522002-03-22 13:38:30 +000083case "${host_os}" in
sewardjde4a1d02002-03-22 01:27:54 +000084 *linux*)
85 AC_MSG_RESULT([ok (${host_os})])
86 ;;
87
88 *)
89 AC_MSG_RESULT([no (${host_os})])
90 AC_MSG_ERROR([Valgrind is Linux specific. Sorry])
91 ;;
92esac
93
94
95# Ok, this is linux. Check the kernel version
96AC_MSG_CHECKING([for the kernel version])
97
98kernel=`uname -r`
99
gobrye721a522002-03-22 13:38:30 +0000100case "${kernel}" in
sewardjde4a1d02002-03-22 01:27:54 +0000101 2.4.*)
102 AC_MSG_RESULT([2.4 family (${kernel})])
103 AC_DEFINE(KERNEL_2_4)
104 DEFAULT_SUPP="linux24.supp"
105 ;;
106
107 2.2.*)
108 AC_MSG_RESULT([2.2 family (${kernel})])
109 AC_DEFINE(KERNEL_2_2)
110 DEFAULT_SUPP="linux22.supp"
111 ;;
112
113 *)
114 AC_MSG_RESULT([unsupported (${kernel})])
115 AC_MSG_ERROR([Valgrind works on kernels 2.2 and 2.4])
116 ;;
117esac
118
119AC_SUBST(DEFAULT_SUPP)
120
121
122# Ok, this is linux. Check the kernel version
123AC_MSG_CHECKING([the glibc version])
124
125glibc=""
126
127AC_EGREP_CPP([GLIBC_21], [
128#include <features.h>
129#ifdef __GNU_LIBRARY__
130 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 1)
131 GLIBC_21
132 #endif
133#endif
134],
135glibc="2.1")
136
137AC_EGREP_CPP([GLIBC_22], [
138#include <features.h>
139#ifdef __GNU_LIBRARY__
140 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2)
141 GLIBC_22
142 #endif
143#endif
144],
145glibc="2.2")
146
gobrye721a522002-03-22 13:38:30 +0000147case "${glibc}" in
sewardjde4a1d02002-03-22 01:27:54 +0000148 2.1)
149 AC_MSG_RESULT(2.1 family)
150 AC_DEFINE(GLIBC_2_1)
151 ;;
152
153 2.2)
154 AC_MSG_RESULT(2.2 family)
155 AC_DEFINE(GLIBC_2_2)
156 ;;
157
158 *)
159 AC_MSG_RESULT(unsupported version)
160 AC_MSG_ERROR([Valgrind requires the glibc version 2.1 or 2.2])
161 ;;
162esac
163
164# try to detect the XFree version
165
gobrye721a522002-03-22 13:38:30 +0000166AC_PATH_X
167
168if test "${no_x}" != 'yes' ; then
169
170 AC_MSG_CHECKING([XFree version])
171
172 cat<<EOF > conftest.c
173#include <X11/Xlib.h>
174
175int main (int argc, char * argv [])
176{
177 Display * display = XOpenDisplay (NULL);
178
179 if (display) {
180 printf ("%s version=%d\n", ServerVendor (display), VendorRelease (display));
181 }
182
183 return 0;
184}
185EOF
186
187 ${CC} -o conftest conftest.c -I${x_includes} -L${x_libraries} -lX11 >&5 2>&1
188
189 if test "$?" != 0 ; then
190 AC_MSG_RESULT([cannot compile test program])
191 else
192 xfree=`./conftest`
193
194 case "${xfree}" in
195 *XFree86*)
196 ;;
197
198 *) AC_MSG_RESULT([not a XFree86 server])
199 ;;
200 esac
201
202 case "${xfree}" in
203
204 *version=4*)
205 AC_MSG_RESULT([XFree 4.x family])
206 AC_DEFINE(XFREE_4)
207 ;;
208
209 *version=3*)
210 AC_MSG_RESULT([XFree 3.x family])
211 AC_DEFINE(XFREE_3)
212 ;;
213
214 *) AC_MSG_RESULT([unknown XFree86 server (${xfree})])
215 ;;
216 esac
217 fi
218
219 rm -f conftest conftest.c
220fi
221
sewardjde4a1d02002-03-22 01:27:54 +0000222# Checks for header files.
223AC_HEADER_STDC
224AC_CHECK_HEADERS([fcntl.h malloc.h stdlib.h string.h sys/socket.h sys/statfs.h sys/time.h termios.h unistd.h utime.h])
225
226# Checks for typedefs, structures, and compiler characteristics.
227AC_C_CONST
228AC_TYPE_UID_T
229AC_TYPE_OFF_T
230AC_TYPE_SIZE_T
231AC_HEADER_TIME
232
233# Checks for library functions.
234AC_FUNC_MEMCMP
235AC_FUNC_MMAP
236AC_TYPE_SIGNAL
237
238AC_CHECK_FUNCS([floor memchr memset mkdir strchr strdup strpbrk strrchr strstr])
239
gobrye721a522002-03-22 13:38:30 +0000240AC_OUTPUT(
241 valgrind
242 valgrind.spec
sewardjde4a1d02002-03-22 01:27:54 +0000243 Makefile
244 docs/Makefile
245 tests/Makefile
246 demangle/Makefile)