blob: b8cd6cb8e30015f3b61cf417bcbf29e033d1cfff [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
6# Checks for programs.
gobrye721a522002-03-22 13:38:30 +00007CFLAGS=""
8
sewardjde4a1d02002-03-22 01:27:54 +00009AC_PROG_LN_S
10AC_PROG_CC
11AC_PROG_CPP
12AC_PROG_RANLIB
13
gobrye721a522002-03-22 13:38:30 +000014# Check for the compiler support
15if test "${GCC}" != "yes" ; then
16 AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
17fi
18
gobry1be19852002-03-26 20:44:55 +000019AS="${CC}"
20AC_SUBST(AS)
21ASFLAGS=""
22AC_SUBST(ASFLAGS)
23
gobrye721a522002-03-22 13:38:30 +000024# We don't want gcc 2.7
25AC_MSG_CHECKING([for a supported version of gcc])
26
27gcc_version=`${CC} --version`
28
29case "${gcc_version}" in
30 gcc-2.7.*)
31 AC_MSG_RESULT([no (${gcc_version})])
32 AC_MSG_ERROR([please use a recent (>= gcc-2.95) version of gcc])
33 ;;
34
35 *)
36 AC_MSG_RESULT([ok (${gcc_version})])
37 ;;
38esac
39
40# does this compiler support -mpreferred-stack-boundary=2 ?
41AC_MSG_CHECKING([for extra compiler options])
42
43CFLAGS="-mpreferred-stack-boundary=2"
44
45AC_TRY_COMPILE(, [
46
47int main () { return 0 ; }
48
49],
50[
51PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
52AC_MSG_RESULT([$PREFERRED_STACK_BOUNDARY])
53], [
54PREFERRED_STACK_BOUNDARY=""
55AC_MSG_RESULT([none])
56])
57
58AC_SUBST(PREFERRED_STACK_BOUNDARY)
59
sewardjde4a1d02002-03-22 01:27:54 +000060CFLAGS="-Winline -Wall -Wshadow -O -fomit-frame-pointer -g"
61AC_SUBST(CFLAGS)
62
63# Checks for the platform
64AC_CANONICAL_HOST
65
66AC_MSG_CHECKING([for a supported CPU])
67
gobrye721a522002-03-22 13:38:30 +000068case "${host_cpu}" in
sewardjde4a1d02002-03-22 01:27:54 +000069 i?86)
70 AC_MSG_RESULT([ok (${host_cpu})])
71 ;;
72
73 *)
74 AC_MSG_RESULT([no (${host_cpu})])
75 AC_MSG_ERROR([Valgrind is ix86 specific. Sorry])
76 ;;
77esac
78
79AC_MSG_CHECKING([for a supported OS])
80
gobrye721a522002-03-22 13:38:30 +000081case "${host_os}" in
sewardjde4a1d02002-03-22 01:27:54 +000082 *linux*)
83 AC_MSG_RESULT([ok (${host_os})])
84 ;;
85
86 *)
87 AC_MSG_RESULT([no (${host_os})])
88 AC_MSG_ERROR([Valgrind is Linux specific. Sorry])
89 ;;
90esac
91
92
93# Ok, this is linux. Check the kernel version
94AC_MSG_CHECKING([for the kernel version])
95
96kernel=`uname -r`
97
gobrye721a522002-03-22 13:38:30 +000098case "${kernel}" in
sewardjde4a1d02002-03-22 01:27:54 +000099 2.4.*)
100 AC_MSG_RESULT([2.4 family (${kernel})])
101 AC_DEFINE(KERNEL_2_4)
102 DEFAULT_SUPP="linux24.supp"
103 ;;
104
105 2.2.*)
106 AC_MSG_RESULT([2.2 family (${kernel})])
107 AC_DEFINE(KERNEL_2_2)
108 DEFAULT_SUPP="linux22.supp"
109 ;;
110
111 *)
112 AC_MSG_RESULT([unsupported (${kernel})])
113 AC_MSG_ERROR([Valgrind works on kernels 2.2 and 2.4])
114 ;;
115esac
116
117AC_SUBST(DEFAULT_SUPP)
118
119
120# Ok, this is linux. Check the kernel version
121AC_MSG_CHECKING([the glibc version])
122
123glibc=""
124
125AC_EGREP_CPP([GLIBC_21], [
126#include <features.h>
127#ifdef __GNU_LIBRARY__
128 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 1)
129 GLIBC_21
130 #endif
131#endif
132],
133glibc="2.1")
134
135AC_EGREP_CPP([GLIBC_22], [
136#include <features.h>
137#ifdef __GNU_LIBRARY__
138 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2)
139 GLIBC_22
140 #endif
141#endif
142],
143glibc="2.2")
144
gobrye721a522002-03-22 13:38:30 +0000145case "${glibc}" in
sewardjde4a1d02002-03-22 01:27:54 +0000146 2.1)
147 AC_MSG_RESULT(2.1 family)
148 AC_DEFINE(GLIBC_2_1)
149 ;;
150
151 2.2)
152 AC_MSG_RESULT(2.2 family)
153 AC_DEFINE(GLIBC_2_2)
154 ;;
155
156 *)
157 AC_MSG_RESULT(unsupported version)
158 AC_MSG_ERROR([Valgrind requires the glibc version 2.1 or 2.2])
159 ;;
160esac
161
162# try to detect the XFree version
163
gobrye721a522002-03-22 13:38:30 +0000164AC_PATH_X
165
166if test "${no_x}" != 'yes' ; then
167
168 AC_MSG_CHECKING([XFree version])
169
170 cat<<EOF > conftest.c
171#include <X11/Xlib.h>
172
173int main (int argc, char * argv [])
174{
175 Display * display = XOpenDisplay (NULL);
176
177 if (display) {
178 printf ("%s version=%d\n", ServerVendor (display), VendorRelease (display));
179 }
180
181 return 0;
182}
183EOF
184
185 ${CC} -o conftest conftest.c -I${x_includes} -L${x_libraries} -lX11 >&5 2>&1
186
187 if test "$?" != 0 ; then
188 AC_MSG_RESULT([cannot compile test program])
189 else
190 xfree=`./conftest`
191
192 case "${xfree}" in
193 *XFree86*)
194 ;;
195
196 *) AC_MSG_RESULT([not a XFree86 server])
197 ;;
198 esac
199
200 case "${xfree}" in
201
202 *version=4*)
203 AC_MSG_RESULT([XFree 4.x family])
204 AC_DEFINE(XFREE_4)
205 ;;
206
207 *version=3*)
208 AC_MSG_RESULT([XFree 3.x family])
209 AC_DEFINE(XFREE_3)
210 ;;
211
212 *) AC_MSG_RESULT([unknown XFree86 server (${xfree})])
213 ;;
214 esac
215 fi
216
217 rm -f conftest conftest.c
218fi
219
sewardjde4a1d02002-03-22 01:27:54 +0000220# Checks for header files.
221AC_HEADER_STDC
222AC_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])
223
224# Checks for typedefs, structures, and compiler characteristics.
225AC_C_CONST
226AC_TYPE_UID_T
227AC_TYPE_OFF_T
228AC_TYPE_SIZE_T
229AC_HEADER_TIME
230
231# Checks for library functions.
232AC_FUNC_MEMCMP
233AC_FUNC_MMAP
234AC_TYPE_SIGNAL
235
236AC_CHECK_FUNCS([floor memchr memset mkdir strchr strdup strpbrk strrchr strstr])
237
gobrye721a522002-03-22 13:38:30 +0000238AC_OUTPUT(
239 valgrind
240 valgrind.spec
sewardjde4a1d02002-03-22 01:27:54 +0000241 Makefile
242 docs/Makefile
243 tests/Makefile
244 demangle/Makefile)