blob: 954df7c965b9ebfc561580d3be54031e822e86dd [file] [log] [blame]
sewardj01262142006-01-04 01:20:28 +00001
2##------------------------------------------------------------##
3#
4# The multiple-architecture stuff in this file is pretty
5# cryptic. Read docs/internals/multiple-architectures.txt
6# for at least a partial explanation of what is going on.
7#
8##------------------------------------------------------------##
9
sewardjde4a1d02002-03-22 01:27:54 +000010# Process this file with autoconf to produce a configure script.
sewardj96e6aa62011-10-25 09:20:05 +000011AC_INIT([Valgrind],[3.8.0.SVN],[valgrind-users@lists.sourceforge.net])
njn04e16982005-05-31 00:23:43 +000012AC_CONFIG_SRCDIR(coregrind/m_main.c)
bart417cf3e2011-10-22 09:21:24 +000013AC_CONFIG_HEADERS([config.h])
bart3a2dac02008-03-18 17:40:38 +000014AM_INIT_AUTOMAKE([foreign])
sewardjde4a1d02002-03-22 01:27:54 +000015
gobryb0ed4672002-03-27 20:58:58 +000016AM_MAINTAINER_MODE
17
njn7fd6d382009-01-22 21:56:32 +000018#----------------------------------------------------------------------------
njn7fd6d382009-01-22 21:56:32 +000019# Checks for various programs.
20#----------------------------------------------------------------------------
bartaca399a2010-08-15 18:54:15 +000021CFLAGS="-Wno-long-long $CFLAGS"
gobrye721a522002-03-22 13:38:30 +000022
sewardjde4a1d02002-03-22 01:27:54 +000023AC_PROG_LN_S
24AC_PROG_CC
bart0affa492008-03-18 17:53:09 +000025AM_PROG_CC_C_O
sewardjde4a1d02002-03-22 01:27:54 +000026AC_PROG_CPP
njn25e49d8e72002-09-23 09:36:25 +000027AC_PROG_CXX
njn629a5ec2009-07-14 01:29:39 +000028# AC_PROG_OBJC apparently causes problems on older Linux distros (eg. with
29# autoconf 2.59). If we ever have any Objective-C code in the Valgrind code
30# base (eg. most likely as Darwin-specific tests) we'll need one of the
31# following:
njn0cd26892009-07-12 23:07:13 +000032# - put AC_PROG_OBJC in a Darwin-specific part of this file
33# - Use AC_PROG_OBJC here and up the minimum autoconf version
34# - Use the following, which is apparently equivalent:
35# m4_ifdef([AC_PROG_OBJC],
36# [AC_PROG_OBJC],
37# [AC_CHECK_TOOL([OBJC], [gcc])
38# AC_SUBST([OBJC])
39# AC_SUBST([OBJCFLAGS])
40# ])
sewardjde4a1d02002-03-22 01:27:54 +000041AC_PROG_RANLIB
bart07de2c92010-05-29 06:44:28 +000042# provide a very basic definition for AC_PROG_SED if it's not provided by
43# autoconf (as e.g. in autoconf 2.59).
44m4_ifndef([AC_PROG_SED],
45 [AC_DEFUN([AC_PROG_SED],
46 [AC_ARG_VAR([SED])
47 AC_CHECK_PROGS([SED],[gsed sed])])])
bart12e91122010-05-15 08:37:24 +000048AC_PROG_SED
sewardjde4a1d02002-03-22 01:27:54 +000049
bartcddeaf52008-05-25 15:58:11 +000050# If no AR variable was specified, look up the name of the archiver. Otherwise
51# do not touch the AR variable.
52if test "x$AR" = "x"; then
bart07de2c92010-05-29 06:44:28 +000053 AC_PATH_PROGS([AR], [`echo $LD | $SED 's/ld$/ar/'` "ar"], [ar])
bartcddeaf52008-05-25 15:58:11 +000054fi
55AC_ARG_VAR([AR],[Archiver command])
56
gobrye721a522002-03-22 13:38:30 +000057# Check for the compiler support
58if test "${GCC}" != "yes" ; then
59 AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
60fi
61
sewardj2f685952002-12-22 19:32:23 +000062# figure out where perl lives
63AC_PATH_PROG(PERL, perl)
64
njn9315df32003-04-16 20:50:50 +000065# figure out where gdb lives
sewardjf8722ca2008-11-17 00:20:45 +000066AC_PATH_PROG(GDB, gdb, "/no/gdb/was/found/at/configure/time")
njnfe408942004-11-23 17:52:24 +000067AC_DEFINE_UNQUOTED(GDB_PATH, "$GDB", [path to GDB])
njn9315df32003-04-16 20:50:50 +000068
daywalker48ccca52002-04-15 00:31:58 +000069# some older automake's don't have it so try something on our own
70ifdef([AM_PROG_AS],[AM_PROG_AS],
71[
gobry1be19852002-03-26 20:44:55 +000072AS="${CC}"
73AC_SUBST(AS)
gobry3b777892002-04-04 09:18:39 +000074
gobry1be19852002-03-26 20:44:55 +000075ASFLAGS=""
76AC_SUBST(ASFLAGS)
daywalker48ccca52002-04-15 00:31:58 +000077])
gobry3b777892002-04-04 09:18:39 +000078
gobry3b777892002-04-04 09:18:39 +000079
njn0d2e58f2009-02-25 04:57:56 +000080# Check if 'diff' supports -u (universal diffs) and use it if possible.
81
82AC_MSG_CHECKING([for diff -u])
83AC_SUBST(DIFF)
84
sewardj6e9de462011-06-28 07:25:29 +000085# Comparing two identical files results in 0.
njn31f665e2009-02-26 21:25:50 +000086tmpfile="tmp-xxx-yyy-zzz"
87touch $tmpfile;
88if diff -u $tmpfile $tmpfile ; then
njn0d2e58f2009-02-25 04:57:56 +000089 AC_MSG_RESULT([yes])
90 DIFF="diff -u"
91else
92 AC_MSG_RESULT([no])
93 DIFF="diff"
94fi
njn31f665e2009-02-26 21:25:50 +000095rm $tmpfile
njn0d2e58f2009-02-25 04:57:56 +000096
97
sewardj535c50f2005-06-04 23:14:53 +000098# We don't want gcc < 3.0
gobrye721a522002-03-22 13:38:30 +000099AC_MSG_CHECKING([for a supported version of gcc])
100
bart85037442011-11-22 14:41:31 +0000101# Obtain the compiler version.
sewardja8ca2c52011-09-29 18:18:37 +0000102#
bart85037442011-11-22 14:41:31 +0000103# A few examples of how the ${CC} --version output looks like:
104#
105# Arch Linux: i686-pc-linux-gnu-gcc (GCC) 4.6.2
106# Debian Linux: gcc (Debian 4.3.2-1.1) 4.3.2
107# openSUSE: gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]
108# Exherbo Linux: x86_64-pc-linux-gnu-gcc (Exherbo gcc-4.6.2) 4.6.2
bartc5214062012-01-11 11:34:23 +0000109# MontaVista Linux for ARM: arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q1-203) 4.3.3
bart85037442011-11-22 14:41:31 +0000110# OS/X 10.6: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
111# OS/X 10.7: i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)
112# Clang: clang version 2.9 (tags/RELEASE_29/final)
sewardja8ca2c52011-09-29 18:18:37 +0000113#
bartc5214062012-01-11 11:34:23 +0000114[
115 gcc_version=`${CC} -dumpversion 2>/dev/null`
116 if test "x$gcc_version" = x; then
117 gcc_version=`${CC} --version \
118 | $SED -n -e 's/[^ ]*gcc[^ ]* ([^)]*) \([0-9.]*\).*$/\1/p' \
119 -e 's/[^ ]*clang version \([0-9.]*\).*$/\1/p'`
120 fi
121]
gobrye721a522002-03-22 13:38:30 +0000122
sewardj3ab7b662011-09-29 17:30:13 +0000123is_clang="notclang"
124if test "x`${CC} --version | head -n 1 | $SED 's/\(clang\) version.*/\1/'`" = "xclang" ; then
125 is_clang="clang"
126fi
127
128case "${is_clang}-${gcc_version}" in
129 notclang-3.*)
130 AC_MSG_RESULT([ok (${gcc_version})])
131 ;;
132 notclang-4.*)
133 AC_MSG_RESULT([ok (${gcc_version})])
134 ;;
135 clang-2.9)
136 AC_MSG_RESULT([ok (clang-${gcc_version})])
sewardj535c50f2005-06-04 23:14:53 +0000137 ;;
gobrye721a522002-03-22 13:38:30 +0000138 *)
sewardj3ab7b662011-09-29 17:30:13 +0000139 AC_MSG_RESULT([no (${gcc_version})])
140 AC_MSG_ERROR([please use gcc >= 3.0 or clang >= 2.9])
gobrye721a522002-03-22 13:38:30 +0000141 ;;
142esac
143
njn7fd6d382009-01-22 21:56:32 +0000144#----------------------------------------------------------------------------
145# Arch/OS/platform tests.
146#----------------------------------------------------------------------------
147# We create a number of arch/OS/platform-related variables. We prefix them
148# all with "VGCONF_" which indicates that they are defined at
149# configure-time, and distinguishes them from the VGA_*/VGO_*/VGP_*
150# variables used when compiling C files.
sewardj03d86f22006-10-17 00:57:24 +0000151
sewardjde4a1d02002-03-22 01:27:54 +0000152AC_CANONICAL_HOST
153
154AC_MSG_CHECKING([for a supported CPU])
sewardjbc692db2006-01-04 03:31:07 +0000155
njn7fd6d382009-01-22 21:56:32 +0000156# ARCH_MAX reflects the most that this CPU can do: for example if it
157# is a 64-bit capable PowerPC, then it must be set to ppc64 and not ppc32.
158# Ditto for amd64. It is used for more configuration below, but is not used
159# outside this file.
gobrye721a522002-03-22 13:38:30 +0000160case "${host_cpu}" in
sewardjde4a1d02002-03-22 01:27:54 +0000161 i?86)
162 AC_MSG_RESULT([ok (${host_cpu})])
njn7fd6d382009-01-22 21:56:32 +0000163 ARCH_MAX="x86"
sewardjde4a1d02002-03-22 01:27:54 +0000164 ;;
165
njnfe408942004-11-23 17:52:24 +0000166 x86_64)
167 AC_MSG_RESULT([ok (${host_cpu})])
njn7fd6d382009-01-22 21:56:32 +0000168 ARCH_MAX="amd64"
njnfe408942004-11-23 17:52:24 +0000169 ;;
170
sewardj2c48c7b2005-11-29 13:05:56 +0000171 powerpc64)
172 AC_MSG_RESULT([ok (${host_cpu})])
njn7fd6d382009-01-22 21:56:32 +0000173 ARCH_MAX="ppc64"
sewardj2c48c7b2005-11-29 13:05:56 +0000174 ;;
175
176 powerpc)
sewardj6e9de462011-06-28 07:25:29 +0000177 # On Linux this means only a 32-bit capable CPU.
cerion85665ca2005-06-20 15:51:07 +0000178 AC_MSG_RESULT([ok (${host_cpu})])
sewardj6e9de462011-06-28 07:25:29 +0000179 ARCH_MAX="ppc32"
nethercote9bcc9062004-10-13 13:50:01 +0000180 ;;
181
sewardjb5b87402011-03-07 16:05:35 +0000182 s390x)
183 AC_MSG_RESULT([ok (${host_cpu})])
184 ARCH_MAX="s390x"
185 ;;
186
sewardj59570ff2010-01-01 11:59:33 +0000187 armv7*)
188 AC_MSG_RESULT([ok (${host_cpu})])
189 ARCH_MAX="arm"
190 ;;
191
sewardj5db15402012-06-07 09:13:21 +0000192 mips)
193 AC_MSG_RESULT([ok (${host_cpu})])
194 ARCH_MAX="mips32"
195 ;;
196
197 mipsel)
198 AC_MSG_RESULT([ok (${host_cpu})])
199 ARCH_MAX="mips32"
200 ;;
201
202 mipsisa32r2)
203 AC_MSG_RESULT([ok (${host_cpu})])
204 ARCH_MAX="mips32"
205 ;;
206
sewardjde4a1d02002-03-22 01:27:54 +0000207 *)
208 AC_MSG_RESULT([no (${host_cpu})])
nethercote81d5c662004-10-13 13:18:51 +0000209 AC_MSG_ERROR([Unsupported host architecture. Sorry])
sewardjde4a1d02002-03-22 01:27:54 +0000210 ;;
211esac
212
njn7fd6d382009-01-22 21:56:32 +0000213#----------------------------------------------------------------------------
214
sewardj86e992f2006-01-28 18:39:09 +0000215# Sometimes it's convenient to subvert the bi-arch build system and
216# just have a single build even though the underlying platform is
217# capable of both. Hence handle --enable-only64bit and
218# --enable-only32bit. Complain if both are issued :-)
njn7fd6d382009-01-22 21:56:32 +0000219# [Actually, if either of these options are used, I think both get built,
220# but only one gets installed. So if you use an in-place build, both can be
221# used. --njn]
sewardj86e992f2006-01-28 18:39:09 +0000222
223# Check if a 64-bit only build has been requested
224AC_CACHE_CHECK([for a 64-bit only build], vg_cv_only64bit,
225 [AC_ARG_ENABLE(only64bit,
226 [ --enable-only64bit do a 64-bit only build],
227 [vg_cv_only64bit=$enableval],
228 [vg_cv_only64bit=no])])
229
230# Check if a 32-bit only build has been requested
231AC_CACHE_CHECK([for a 32-bit only build], vg_cv_only32bit,
232 [AC_ARG_ENABLE(only32bit,
233 [ --enable-only32bit do a 32-bit only build],
234 [vg_cv_only32bit=$enableval],
235 [vg_cv_only32bit=no])])
236
237# Stay sane
238if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then
239 AC_MSG_ERROR(
240 [Nonsensical: both --enable-only64bit and --enable-only32bit.])
241fi
242
njn7fd6d382009-01-22 21:56:32 +0000243#----------------------------------------------------------------------------
sewardj86e992f2006-01-28 18:39:09 +0000244
njn311303f2009-02-06 03:46:50 +0000245# VGCONF_OS is the primary build OS, eg. "linux". It is passed in to
246# compilation of many C files via -VGO_$(VGCONF_OS) and
247# -VGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS).
sewardjde4a1d02002-03-22 01:27:54 +0000248AC_MSG_CHECKING([for a supported OS])
njn7fd6d382009-01-22 21:56:32 +0000249AC_SUBST(VGCONF_OS)
sewardjde4a1d02002-03-22 01:27:54 +0000250
njnf76d27a2009-05-28 01:53:07 +0000251DEFAULT_SUPP=""
252
gobrye721a522002-03-22 13:38:30 +0000253case "${host_os}" in
mueller8c68e042004-01-03 15:21:14 +0000254 *linux*)
sewardjde4a1d02002-03-22 01:27:54 +0000255 AC_MSG_RESULT([ok (${host_os})])
njn7fd6d382009-01-22 21:56:32 +0000256 VGCONF_OS="linux"
mueller8c68e042004-01-03 15:21:14 +0000257
258 # Ok, this is linux. Check the kernel version
259 AC_MSG_CHECKING([for the kernel version])
260
261 kernel=`uname -r`
262
263 case "${kernel}" in
bart0419e512011-06-05 08:51:47 +0000264 2.6.*|3.*)
bart2d6e6e72011-06-05 10:01:48 +0000265 AC_MSG_RESULT([2.6.x/3.x family (${kernel})])
266 AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x or Linux 3.x])
mueller8c68e042004-01-03 15:21:14 +0000267 ;;
268
269 2.4.*)
270 AC_MSG_RESULT([2.4 family (${kernel})])
271 AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x])
272 ;;
273
mueller8c68e042004-01-03 15:21:14 +0000274 *)
275 AC_MSG_RESULT([unsupported (${kernel})])
nethercote4fa681f2004-11-08 17:51:39 +0000276 AC_MSG_ERROR([Valgrind works on kernels 2.4, 2.6])
mueller8c68e042004-01-03 15:21:14 +0000277 ;;
278 esac
279
280 ;;
281
njnf76d27a2009-05-28 01:53:07 +0000282 *darwin*)
283 AC_MSG_RESULT([ok (${host_os})])
284 VGCONF_OS="darwin"
njnea2d6fd2010-07-01 00:20:20 +0000285 AC_DEFINE([DARWIN_10_5], 100500, [DARWIN_VERS value for Mac OS X 10.5])
286 AC_DEFINE([DARWIN_10_6], 100600, [DARWIN_VERS value for Mac OS X 10.6])
287 AC_DEFINE([DARWIN_10_7], 100700, [DARWIN_VERS value for Mac OS X 10.7])
njnf76d27a2009-05-28 01:53:07 +0000288
289 AC_MSG_CHECKING([for the kernel version])
290 kernel=`uname -r`
291
292 # Nb: for Darwin we set DEFAULT_SUPP here. That's because Darwin
293 # has only one relevant version, the OS version. The `uname` check
294 # is a good way to get that version (i.e. "Darwin 9.6.0" is Mac OS
sewardj731f9cf2011-09-21 08:43:08 +0000295 # X 10.5.6, and "Darwin 10.x" is Mac OS X 10.6.x Snow Leopard,
296 # and possibly "Darwin 11.x" is Mac OS X 10.7.x Lion),
njnea2d6fd2010-07-01 00:20:20 +0000297 # and we don't know of an macros similar to __GLIBC__ to get that info.
njnf76d27a2009-05-28 01:53:07 +0000298 #
299 # XXX: `uname -r` won't do the right thing for cross-compiles, but
300 # that's not a problem yet.
sewardj731f9cf2011-09-21 08:43:08 +0000301 #
302 # jseward 21 Sept 2011: I seriously doubt whether V 3.7.0 will work
303 # on OS X 10.5.x; I haven't tested yet, and only plan to test 3.7.0
304 # on 10.6.8 and 10.7.1. Although tempted to delete the configure
305 # time support for 10.5 (the 9.* pattern just below), I'll leave it
306 # in for now, just in case anybody wants to give it a try. But I'm
307 # assuming that 3.7.0 is a Snow Leopard and Lion-only release.
njnf76d27a2009-05-28 01:53:07 +0000308 case "${kernel}" in
309 9.*)
310 AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard])
njnea2d6fd2010-07-01 00:20:20 +0000311 AC_DEFINE([DARWIN_VERS], DARWIN_10_5, [Darwin / Mac OS X version])
njnf76d27a2009-05-28 01:53:07 +0000312 DEFAULT_SUPP="darwin9.supp ${DEFAULT_SUPP}"
bart6ccda142009-07-23 07:37:32 +0000313 DEFAULT_SUPP="darwin9-drd.supp ${DEFAULT_SUPP}"
njnf76d27a2009-05-28 01:53:07 +0000314 ;;
njnea2d6fd2010-07-01 00:20:20 +0000315 10.*)
316 AC_MSG_RESULT([Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard])
317 AC_DEFINE([DARWIN_VERS], DARWIN_10_6, [Darwin / Mac OS X version])
318 DEFAULT_SUPP="darwin10.supp ${DEFAULT_SUPP}"
319 DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
320 ;;
sewardj731f9cf2011-09-21 08:43:08 +0000321 11.*)
322 AC_MSG_RESULT([Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion])
323 AC_DEFINE([DARWIN_VERS], DARWIN_10_7, [Darwin / Mac OS X version])
324 # FIXME: change these to xx11.supp
325 DEFAULT_SUPP="darwin11.supp ${DEFAULT_SUPP}"
326 DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
327 ;;
328 *)
njnf76d27a2009-05-28 01:53:07 +0000329 AC_MSG_RESULT([unsupported (${kernel})])
sewardj731f9cf2011-09-21 08:43:08 +0000330 AC_MSG_ERROR([Valgrind works on Darwin 10.x and 11.x (Mac OS X 10.6/7)])
njnf76d27a2009-05-28 01:53:07 +0000331 ;;
332 esac
333 ;;
334
sewardjde4a1d02002-03-22 01:27:54 +0000335 *)
336 AC_MSG_RESULT([no (${host_os})])
njncc58cea2010-07-05 07:21:22 +0000337 AC_MSG_ERROR([Valgrind is operating system specific. Sorry.])
sewardjde4a1d02002-03-22 01:27:54 +0000338 ;;
339esac
340
njn7fd6d382009-01-22 21:56:32 +0000341#----------------------------------------------------------------------------
342
tomd6398392006-06-07 17:44:36 +0000343# If we are building on a 64 bit platform test to see if the system
344# supports building 32 bit programs and disable 32 bit support if it
345# does not support building 32 bit programs
346
njn7fd6d382009-01-22 21:56:32 +0000347case "$ARCH_MAX-$VGCONF_OS" in
tomd6398392006-06-07 17:44:36 +0000348 amd64-linux|ppc64-linux)
349 AC_MSG_CHECKING([for 32 bit build support])
350 safe_CFLAGS=$CFLAGS
351 CFLAGS="-m32"
bart417cf3e2011-10-22 09:21:24 +0000352 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +0000353 return 0;
bart417cf3e2011-10-22 09:21:24 +0000354 ]])], [
tomd6398392006-06-07 17:44:36 +0000355 AC_MSG_RESULT([yes])
356 ], [
357 vg_cv_only64bit="yes"
358 AC_MSG_RESULT([no])
359 ])
360 CFLAGS=$safe_CFLAGS;;
361esac
362
363if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then
364 AC_MSG_ERROR(
365 [--enable-only32bit was specified but system does not support 32 bit builds])
366fi
nethercote888ecb72004-08-23 14:54:40 +0000367
njn7fd6d382009-01-22 21:56:32 +0000368#----------------------------------------------------------------------------
369
njn311303f2009-02-06 03:46:50 +0000370# VGCONF_ARCH_PRI is the arch for the primary build target, eg. "amd64". By
371# default it's the same as ARCH_MAX. But if, say, we do a build on an amd64
372# machine, but --enable-only32bit has been requested, then ARCH_MAX (see
373# above) will be "amd64" since that reflects the most that this cpu can do,
374# but VGCONF_ARCH_PRI will be downgraded to "x86", since that reflects the
375# arch corresponding to the primary build (VGCONF_PLATFORM_PRI_CAPS). It is
njn7fd6d382009-01-22 21:56:32 +0000376# passed in to compilation of many C files via -VGA_$(VGCONF_ARCH_PRI) and
377# -VGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS).
378AC_SUBST(VGCONF_ARCH_PRI)
379
njn3f8a6e92009-06-02 00:20:47 +0000380# VGCONF_ARCH_SEC is the arch for the secondary build target, eg. "x86".
381# It is passed in to compilation of many C files via -VGA_$(VGCONF_ARCH_SEC)
382# and -VGP_$(VGCONF_ARCH_SEC)_$(VGCONF_OS), if there is a secondary target.
383# It is empty if there is no secondary target.
384AC_SUBST(VGCONF_ARCH_SEC)
385
njn311303f2009-02-06 03:46:50 +0000386# VGCONF_PLATFORM_PRI_CAPS is the primary build target, eg. "AMD64_LINUX".
387# The entire system, including regression and performance tests, will be
388# built for this target. The "_CAPS" indicates that the name is in capital
389# letters, and it also uses '_' rather than '-' as a separator, because it's
njn7fd6d382009-01-22 21:56:32 +0000390# used to create various Makefile variables, which are all in caps by
njn311303f2009-02-06 03:46:50 +0000391# convention and cannot contain '-' characters. This is in contrast to
392# VGCONF_ARCH_PRI and VGCONF_OS which are not in caps.
njn7fd6d382009-01-22 21:56:32 +0000393AC_SUBST(VGCONF_PLATFORM_PRI_CAPS)
394
395# VGCONF_PLATFORM_SEC_CAPS is the secondary build target, if there is one.
396# Valgrind and tools will also be built for this target, but not the
397# regression or performance tests.
sewardj01262142006-01-04 01:20:28 +0000398#
njn7fd6d382009-01-22 21:56:32 +0000399# By default, the primary arch is the same as the "max" arch, as commented
400# above (at the definition of ARCH_MAX). We may choose to downgrade it in
401# the big case statement just below here, in the case where we're building
402# on a 64 bit machine but have been requested only to do a 32 bit build.
403AC_SUBST(VGCONF_PLATFORM_SEC_CAPS)
404
sewardj01262142006-01-04 01:20:28 +0000405AC_MSG_CHECKING([for a supported CPU/OS combination])
nethercote888ecb72004-08-23 14:54:40 +0000406
njnea2d6fd2010-07-01 00:20:20 +0000407# NB. The load address for a given platform may be specified in more
408# than one place, in some cases, depending on whether we're doing a biarch,
409# 32-bit only or 64-bit only build. eg see case for amd64-linux below.
410# Be careful to give consistent values in all subcases. Also, all four
411# valt_load_addres_{pri,sec}_{norml,inner} values must always be set,
412# even if it is to "0xUNSET".
413#
njn7fd6d382009-01-22 21:56:32 +0000414case "$ARCH_MAX-$VGCONF_OS" in
sewardj01262142006-01-04 01:20:28 +0000415 x86-linux)
njn7fd6d382009-01-22 21:56:32 +0000416 VGCONF_ARCH_PRI="x86"
njn3f8a6e92009-06-02 00:20:47 +0000417 VGCONF_ARCH_SEC=""
njn7fd6d382009-01-22 21:56:32 +0000418 VGCONF_PLATFORM_PRI_CAPS="X86_LINUX"
419 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000420 valt_load_address_pri_norml="0x38000000"
421 valt_load_address_pri_inner="0x28000000"
422 valt_load_address_sec_norml="0xUNSET"
423 valt_load_address_sec_inner="0xUNSET"
njn377c43f2009-05-19 07:39:22 +0000424 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
sewardj01262142006-01-04 01:20:28 +0000425 ;;
426 amd64-linux)
njnea2d6fd2010-07-01 00:20:20 +0000427 valt_load_address_sec_norml="0xUNSET"
428 valt_load_address_sec_inner="0xUNSET"
sewardj86e992f2006-01-28 18:39:09 +0000429 if test x$vg_cv_only64bit = xyes; then
njn7fd6d382009-01-22 21:56:32 +0000430 VGCONF_ARCH_PRI="amd64"
njn3f8a6e92009-06-02 00:20:47 +0000431 VGCONF_ARCH_SEC=""
njn7fd6d382009-01-22 21:56:32 +0000432 VGCONF_PLATFORM_PRI_CAPS="AMD64_LINUX"
433 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000434 valt_load_address_pri_norml="0x38000000"
435 valt_load_address_pri_inner="0x28000000"
sewardj86e992f2006-01-28 18:39:09 +0000436 elif test x$vg_cv_only32bit = xyes; then
njn7fd6d382009-01-22 21:56:32 +0000437 VGCONF_ARCH_PRI="x86"
njn3f8a6e92009-06-02 00:20:47 +0000438 VGCONF_ARCH_SEC=""
njn7fd6d382009-01-22 21:56:32 +0000439 VGCONF_PLATFORM_PRI_CAPS="X86_LINUX"
440 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000441 valt_load_address_pri_norml="0x38000000"
442 valt_load_address_pri_inner="0x28000000"
sewardj86e992f2006-01-28 18:39:09 +0000443 else
njn7fd6d382009-01-22 21:56:32 +0000444 VGCONF_ARCH_PRI="amd64"
njn3f8a6e92009-06-02 00:20:47 +0000445 VGCONF_ARCH_SEC="x86"
njn7fd6d382009-01-22 21:56:32 +0000446 VGCONF_PLATFORM_PRI_CAPS="AMD64_LINUX"
447 VGCONF_PLATFORM_SEC_CAPS="X86_LINUX"
njnea2d6fd2010-07-01 00:20:20 +0000448 valt_load_address_pri_norml="0x38000000"
449 valt_load_address_pri_inner="0x28000000"
450 valt_load_address_sec_norml="0x38000000"
451 valt_load_address_sec_inner="0x28000000"
sewardj86e992f2006-01-28 18:39:09 +0000452 fi
njn377c43f2009-05-19 07:39:22 +0000453 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
sewardj01262142006-01-04 01:20:28 +0000454 ;;
455 ppc32-linux)
njn7fd6d382009-01-22 21:56:32 +0000456 VGCONF_ARCH_PRI="ppc32"
njn3f8a6e92009-06-02 00:20:47 +0000457 VGCONF_ARCH_SEC=""
njn7fd6d382009-01-22 21:56:32 +0000458 VGCONF_PLATFORM_PRI_CAPS="PPC32_LINUX"
459 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000460 valt_load_address_pri_norml="0x38000000"
461 valt_load_address_pri_inner="0x28000000"
462 valt_load_address_sec_norml="0xUNSET"
463 valt_load_address_sec_inner="0xUNSET"
njn377c43f2009-05-19 07:39:22 +0000464 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
sewardj01262142006-01-04 01:20:28 +0000465 ;;
466 ppc64-linux)
njnea2d6fd2010-07-01 00:20:20 +0000467 valt_load_address_sec_norml="0xUNSET"
468 valt_load_address_sec_inner="0xUNSET"
sewardj86e992f2006-01-28 18:39:09 +0000469 if test x$vg_cv_only64bit = xyes; then
njn7fd6d382009-01-22 21:56:32 +0000470 VGCONF_ARCH_PRI="ppc64"
njn3f8a6e92009-06-02 00:20:47 +0000471 VGCONF_ARCH_SEC=""
njn7fd6d382009-01-22 21:56:32 +0000472 VGCONF_PLATFORM_PRI_CAPS="PPC64_LINUX"
473 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000474 valt_load_address_pri_norml="0x38000000"
475 valt_load_address_pri_inner="0x28000000"
sewardj86e992f2006-01-28 18:39:09 +0000476 elif test x$vg_cv_only32bit = xyes; then
njn7fd6d382009-01-22 21:56:32 +0000477 VGCONF_ARCH_PRI="ppc32"
njn3f8a6e92009-06-02 00:20:47 +0000478 VGCONF_ARCH_SEC=""
njn7fd6d382009-01-22 21:56:32 +0000479 VGCONF_PLATFORM_PRI_CAPS="PPC32_LINUX"
480 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000481 valt_load_address_pri_norml="0x38000000"
482 valt_load_address_pri_inner="0x28000000"
sewardj86e992f2006-01-28 18:39:09 +0000483 else
njn7fd6d382009-01-22 21:56:32 +0000484 VGCONF_ARCH_PRI="ppc64"
njn3f8a6e92009-06-02 00:20:47 +0000485 VGCONF_ARCH_SEC="ppc32"
njn7fd6d382009-01-22 21:56:32 +0000486 VGCONF_PLATFORM_PRI_CAPS="PPC64_LINUX"
487 VGCONF_PLATFORM_SEC_CAPS="PPC32_LINUX"
njnea2d6fd2010-07-01 00:20:20 +0000488 valt_load_address_pri_norml="0x38000000"
489 valt_load_address_pri_inner="0x28000000"
490 valt_load_address_sec_norml="0x38000000"
491 valt_load_address_sec_inner="0x28000000"
sewardj86e992f2006-01-28 18:39:09 +0000492 fi
njn377c43f2009-05-19 07:39:22 +0000493 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
sewardj01262142006-01-04 01:20:28 +0000494 ;;
njncc58cea2010-07-05 07:21:22 +0000495 # Darwin gets identified as 32-bit even when it supports 64-bit.
496 # (Not sure why, possibly because 'uname' returns "i386"?) Just about
497 # all Macs support both 32-bit and 64-bit, so we just build both. If
498 # someone has a really old 32-bit only machine they can (hopefully?)
499 # build with --enable-only32bit. See bug 243362.
500 x86-darwin|amd64-darwin)
501 ARCH_MAX="amd64"
njnea2d6fd2010-07-01 00:20:20 +0000502 valt_load_address_sec_norml="0xUNSET"
503 valt_load_address_sec_inner="0xUNSET"
njnf76d27a2009-05-28 01:53:07 +0000504 if test x$vg_cv_only64bit = xyes; then
505 VGCONF_ARCH_PRI="amd64"
njn3f8a6e92009-06-02 00:20:47 +0000506 VGCONF_ARCH_SEC=""
njnf76d27a2009-05-28 01:53:07 +0000507 VGCONF_PLATFORM_PRI_CAPS="AMD64_DARWIN"
508 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000509 valt_load_address_pri_norml="0x138000000"
510 valt_load_address_pri_inner="0x128000000"
njnf76d27a2009-05-28 01:53:07 +0000511 elif test x$vg_cv_only32bit = xyes; then
512 VGCONF_ARCH_PRI="x86"
njn3f8a6e92009-06-02 00:20:47 +0000513 VGCONF_ARCH_SEC=""
njnf76d27a2009-05-28 01:53:07 +0000514 VGCONF_PLATFORM_PRI_CAPS="X86_DARWIN"
515 VGCONF_PLATFORM_SEC_CAPS=""
516 VGCONF_ARCH_PRI_CAPS="x86"
njnea2d6fd2010-07-01 00:20:20 +0000517 valt_load_address_pri_norml="0x38000000"
518 valt_load_address_pri_inner="0x28000000"
njnf76d27a2009-05-28 01:53:07 +0000519 else
520 VGCONF_ARCH_PRI="amd64"
njn3f8a6e92009-06-02 00:20:47 +0000521 VGCONF_ARCH_SEC="x86"
njnf76d27a2009-05-28 01:53:07 +0000522 VGCONF_PLATFORM_PRI_CAPS="AMD64_DARWIN"
523 VGCONF_PLATFORM_SEC_CAPS="X86_DARWIN"
njnea2d6fd2010-07-01 00:20:20 +0000524 valt_load_address_pri_norml="0x138000000"
525 valt_load_address_pri_inner="0x128000000"
526 valt_load_address_sec_norml="0x38000000"
527 valt_load_address_sec_inner="0x28000000"
njnf76d27a2009-05-28 01:53:07 +0000528 fi
njnf76d27a2009-05-28 01:53:07 +0000529 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
530 ;;
sewardj59570ff2010-01-01 11:59:33 +0000531 arm-linux)
532 VGCONF_ARCH_PRI="arm"
533 VGCONF_PLATFORM_PRI_CAPS="ARM_LINUX"
534 VGCONF_PLATFORM_SEC_CAPS=""
njnea2d6fd2010-07-01 00:20:20 +0000535 valt_load_address_pri_norml="0x38000000"
536 valt_load_address_pri_inner="0x28000000"
537 valt_load_address_sec_norml="0xUNSET"
538 valt_load_address_sec_inner="0xUNSET"
sewardj59570ff2010-01-01 11:59:33 +0000539 AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
540 ;;
sewardjb5b87402011-03-07 16:05:35 +0000541 s390x-linux)
542 VGCONF_ARCH_PRI="s390x"
543 VGCONF_ARCH_SEC=""
544 VGCONF_PLATFORM_PRI_CAPS="S390X_LINUX"
545 VGCONF_PLATFORM_SEC_CAPS=""
546 # we want to have the generated code close to the dispatcher
547 valt_load_address_pri_norml="0x401000000"
548 valt_load_address_pri_inner="0x410000000"
549 valt_load_address_sec_norml="0xUNSET"
550 valt_load_address_sec_inner="0xUNSET"
551 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
552 ;;
sewardj5db15402012-06-07 09:13:21 +0000553 mips32-linux)
554 VGCONF_ARCH_PRI="mips32"
555 VGCONF_PLATFORM_PRI_CAPS="MIPS32_LINUX"
556 VGCONF_PLATFORM_SEC_CAPS=""
557 valt_load_address_pri_norml="0x38000000"
558 valt_load_address_pri_inner="0x28000000"
559 valt_load_address_sec_norml="0xUNSET"
560 valt_load_address_sec_inner="0xUNSET"
561 AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
562 AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
563 ;;
nethercote888ecb72004-08-23 14:54:40 +0000564 *)
njn7fd6d382009-01-22 21:56:32 +0000565 VGCONF_ARCH_PRI="unknown"
njn3f8a6e92009-06-02 00:20:47 +0000566 VGCONF_ARCH_SEC="unknown"
njn7fd6d382009-01-22 21:56:32 +0000567 VGCONF_PLATFORM_PRI_CAPS="UNKNOWN"
568 VGCONF_PLATFORM_SEC_CAPS="UNKNOWN"
njnea2d6fd2010-07-01 00:20:20 +0000569 valt_load_address_pri_norml="0xUNSET"
570 valt_load_address_pri_inner="0xUNSET"
571 valt_load_address_sec_norml="0xUNSET"
572 valt_load_address_sec_inner="0xUNSET"
njn377c43f2009-05-19 07:39:22 +0000573 AC_MSG_RESULT([no (${ARCH_MAX}-${VGCONF_OS})])
sewardj3e38ce02004-11-23 01:17:29 +0000574 AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doing a port.])
nethercote888ecb72004-08-23 14:54:40 +0000575 ;;
576esac
sewardjde4a1d02002-03-22 01:27:54 +0000577
njn7fd6d382009-01-22 21:56:32 +0000578#----------------------------------------------------------------------------
njna454ec02009-01-19 03:16:59 +0000579
njn7fd6d382009-01-22 21:56:32 +0000580# Set up VGCONF_ARCHS_INCLUDE_<arch>. Either one or two of these become
581# defined.
582AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_X86,
583 test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
njnf76d27a2009-05-28 01:53:07 +0000584 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_LINUX \
585 -o x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \
586 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN )
njn7fd6d382009-01-22 21:56:32 +0000587AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_AMD64,
njnf76d27a2009-05-28 01:53:07 +0000588 test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
589 -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN )
njn7fd6d382009-01-22 21:56:32 +0000590AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC32,
591 test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
sewardj6e9de462011-06-28 07:25:29 +0000592 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX )
njn7fd6d382009-01-22 21:56:32 +0000593AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC64,
sewardj6e9de462011-06-28 07:25:29 +0000594 test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX )
sewardj59570ff2010-01-01 11:59:33 +0000595AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_ARM,
596 test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
sewardjb5b87402011-03-07 16:05:35 +0000597AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_S390X,
598 test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX )
sewardj5db15402012-06-07 09:13:21 +0000599AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_MIPS32,
600 test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX )
sewardj03d86f22006-10-17 00:57:24 +0000601
njn7fd6d382009-01-22 21:56:32 +0000602# Set up VGCONF_PLATFORMS_INCLUDE_<platform>. Either one or two of these
603# become defined.
604AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_X86_LINUX,
605 test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
606 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_LINUX)
607AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX,
608 test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX)
609AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX,
610 test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
611 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX)
612AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX,
613 test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX)
sewardj59570ff2010-01-01 11:59:33 +0000614AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_ARM_LINUX,
615 test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX)
sewardjb5b87402011-03-07 16:05:35 +0000616AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_S390X_LINUX,
617 test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
618 -o x$VGCONF_PLATFORM_SEC_CAPS = xS390X_LINUX)
sewardj5db15402012-06-07 09:13:21 +0000619AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX,
620 test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX)
njnf76d27a2009-05-28 01:53:07 +0000621
njnf76d27a2009-05-28 01:53:07 +0000622AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_X86_DARWIN,
623 test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \
624 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN)
625AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN,
626 test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN)
627
628
sewardj72a2d802010-07-29 05:24:20 +0000629# Similarly, set up VGCONF_OS_IS_<os>. Exactly one of these becomes defined.
sewardj03d86f22006-10-17 00:57:24 +0000630# Relies on the assumption that the primary and secondary targets are
631# for the same OS, so therefore only necessary to test the primary.
njn7fd6d382009-01-22 21:56:32 +0000632AM_CONDITIONAL(VGCONF_OS_IS_LINUX,
633 test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
634 -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
635 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
sewardj59570ff2010-01-01 11:59:33 +0000636 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
sewardjb5b87402011-03-07 16:05:35 +0000637 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
sewardj5db15402012-06-07 09:13:21 +0000638 -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
639 -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX)
njnf76d27a2009-05-28 01:53:07 +0000640AM_CONDITIONAL(VGCONF_OS_IS_DARWIN,
641 test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \
642 -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN)
sewardj03d86f22006-10-17 00:57:24 +0000643
644
njn7fd6d382009-01-22 21:56:32 +0000645# Sometimes, in the Makefile.am files, it's useful to know whether or not
646# there is a secondary target.
njnee0c66a2009-06-01 23:59:20 +0000647AM_CONDITIONAL(VGCONF_HAVE_PLATFORM_SEC,
njn7fd6d382009-01-22 21:56:32 +0000648 test x$VGCONF_PLATFORM_SEC_CAPS != x)
tomfb7bcde2005-11-07 15:24:38 +0000649
philippef32cbe82012-05-18 16:48:20 +0000650dnl automake-1.10 does not have AM_COND_IF (added in 1.11), so we supply a
651dnl fallback definition
652dnl The macro is courtesy of Dave Hart:
653dnl https://lists.gnu.org/archive/html/automake/2010-12/msg00045.html
654m4_ifndef([AM_COND_IF], [AC_DEFUN([AM_COND_IF], [
655if test -z "$$1_TRUE"; then :
656 m4_n([$2])[]dnl
657m4_ifval([$3],
658[else
659 $3
660])dnl
661fi[]dnl
662])])
tomb637bad2005-11-08 12:28:35 +0000663
njn7fd6d382009-01-22 21:56:32 +0000664#----------------------------------------------------------------------------
665# Inner Valgrind?
666#----------------------------------------------------------------------------
667
njnd74b0ef2009-01-20 06:06:52 +0000668# Check if this should be built as an inner Valgrind, to be run within
669# another Valgrind. Choose the load address accordingly.
njnea2d6fd2010-07-01 00:20:20 +0000670AC_SUBST(VALT_LOAD_ADDRESS_PRI)
671AC_SUBST(VALT_LOAD_ADDRESS_SEC)
njnd74b0ef2009-01-20 06:06:52 +0000672AC_CACHE_CHECK([for use as an inner Valgrind], vg_cv_inner,
673 [AC_ARG_ENABLE(inner,
674 [ --enable-inner enables self-hosting],
675 [vg_cv_inner=$enableval],
676 [vg_cv_inner=no])])
677if test "$vg_cv_inner" = yes; then
678 AC_DEFINE([ENABLE_INNER], 1, [configured to run as an inner Valgrind])
njnea2d6fd2010-07-01 00:20:20 +0000679 VALT_LOAD_ADDRESS_PRI=$valt_load_address_pri_inner
680 VALT_LOAD_ADDRESS_SEC=$valt_load_address_sec_inner
njnd74b0ef2009-01-20 06:06:52 +0000681else
njnea2d6fd2010-07-01 00:20:20 +0000682 VALT_LOAD_ADDRESS_PRI=$valt_load_address_pri_norml
683 VALT_LOAD_ADDRESS_SEC=$valt_load_address_sec_norml
njnd74b0ef2009-01-20 06:06:52 +0000684fi
685
686
njn7fd6d382009-01-22 21:56:32 +0000687#----------------------------------------------------------------------------
sewardj5db15402012-06-07 09:13:21 +0000688# Define MIPS_PAGE_SHIFT (--with-pagesize)
689#----------------------------------------------------------------------------
690AC_ARG_WITH(pagesize,
691 [ --with-pagesize= override detected page size (4, 16 or 64)],
692 [psize=$withval],
693 [psize=0]
694)
695
696if test "$psize" = "0"; then
697 psizer=`getconf PAGESIZE`
698 let "psize=${psizer}/1024"
699fi
700
701if test "$psize" = "4"; then
702 AC_DEFINE([MIPS_PAGE_SHIFT], 12, [configured page size 4k])
703elif test "$psize" = "16"; then
704 AC_DEFINE([MIPS_PAGE_SHIFT], 14, [configured page size 16k])
705elif test "$psize" = "64"; then
706 AC_DEFINE([MIPS_PAGE_SHIFT], 16, [configured page size 64k])
707else
708 AC_DEFINE([MIPS_PAGE_SHIFT], 12, [configured default page size 4k])
709fi
710AC_MSG_RESULT([checking for Pagesize... ${psize}k])
711
712#----------------------------------------------------------------------------
713# Define shm_align for MIPS (--shared-memory-alignment)
714#----------------------------------------------------------------------------
715AC_ARG_WITH(alignment,
716 [ --with-alignment= shared memory alignment for MIPS],
717 [align=$withval],
718 [align=-1]
719)
720
721mod=`expr $align % 1024`
722
723let "psz=psize*1024*2"
724
725if test "$align" = "-1"; then
726 AC_DEFINE([SHM_ALIGNMENT], 2*(1UL << MIPS_PAGE_SHIFT),
727 [configured memory alignment 2*PAGE_SIZE])
728 AC_MSG_RESULT([checking for shared memory alignment... 2*PAGE_SIZE])
729elif test "$mod" = "0"; then
730 if test $align -lt $psz;
731 then
732 AC_MSG_ERROR([Alignment must be >= PAGE_SIZE])
733 else
734 AC_DEFINE_UNQUOTED([SHM_ALIGNMENT], ${align},
735 [configured memory alignment 2*PAGE_SIZE])
736 AC_MSG_RESULT([checking for shared memory alignment... ${align}])
737 fi
738else
739 AC_MSG_ERROR([Alignment % 1024 must be zero])
740fi
741
742
743#----------------------------------------------------------------------------
sewardjcb495c82011-07-11 20:42:34 +0000744# Extra fine-tuning of installation directories
745#----------------------------------------------------------------------------
746AC_ARG_WITH(tmpdir,
747 [ --with-tmpdir=PATH Specify path for temporary files],
748 tmpdir="$withval",
749 tmpdir="/tmp")
750AC_DEFINE_UNQUOTED(VG_TMPDIR, "$tmpdir", [Temporary files directory])
751
sewardj0ba37c92011-07-12 11:46:24 +0000752
sewardjcb495c82011-07-11 20:42:34 +0000753#----------------------------------------------------------------------------
njn7fd6d382009-01-22 21:56:32 +0000754# Libc and suppressions
755#----------------------------------------------------------------------------
756# This variable will collect the suppression files to be used.
njn7fd6d382009-01-22 21:56:32 +0000757AC_SUBST(DEFAULT_SUPP)
sewardj01262142006-01-04 01:20:28 +0000758
bart12e91122010-05-15 08:37:24 +0000759AC_CHECK_HEADER([features.h])
sewardjde4a1d02002-03-22 01:27:54 +0000760
bart12e91122010-05-15 08:37:24 +0000761if test x$ac_cv_header_features_h = xyes; then
762 rm -f conftest.$ac_ext
763 cat <<_ACEOF >conftest.$ac_ext
sewardjde4a1d02002-03-22 01:27:54 +0000764#include <features.h>
bart12e91122010-05-15 08:37:24 +0000765#if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__)
766glibc version is: __GLIBC__ __GLIBC_MINOR__
sewardjde4a1d02002-03-22 01:27:54 +0000767#endif
bart12e91122010-05-15 08:37:24 +0000768_ACEOF
769 GLIBC_VERSION="`$CPP conftest.$ac_ext | $SED -n 's/^glibc version is: //p' | $SED 's/ /./g'`"
770fi
bartb7c3f082010-05-13 06:32:36 +0000771
njnf76d27a2009-05-28 01:53:07 +0000772# not really a version check
773AC_EGREP_CPP([DARWIN_LIBC], [
774#include <sys/cdefs.h>
775#if defined(__DARWIN_VERS_1050)
776 DARWIN_LIBC
777#endif
778],
779GLIBC_VERSION="darwin")
780
sewardjcb495c82011-07-11 20:42:34 +0000781# not really a version check
782AC_EGREP_CPP([BIONIC_LIBC], [
783#if defined(__ANDROID__)
784 BIONIC_LIBC
785#endif
786],
787GLIBC_VERSION="bionic")
788
789
dirk07596a22008-04-25 11:33:30 +0000790AC_MSG_CHECKING([the GLIBC_VERSION version])
sewardj03d86f22006-10-17 00:57:24 +0000791
dirk07596a22008-04-25 11:33:30 +0000792case "${GLIBC_VERSION}" in
sewardjde4a1d02002-03-22 01:27:54 +0000793 2.2)
794 AC_MSG_RESULT(2.2 family)
daywalker418c7482002-10-16 13:09:26 +0000795 AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
sewardj2c4f3dd2007-11-11 06:13:01 +0000796 DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}"
797 DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
tom0a0fcee2008-01-05 00:12:45 +0000798 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
sewardjde4a1d02002-03-22 01:27:54 +0000799 ;;
800
sewardj08c7f012002-10-07 23:56:55 +0000801 2.3)
802 AC_MSG_RESULT(2.3 family)
daywalker418c7482002-10-16 13:09:26 +0000803 AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
sewardj2c4f3dd2007-11-11 06:13:01 +0000804 DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}"
sewardj68c80c12007-11-18 14:40:02 +0000805 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
tom0a0fcee2008-01-05 00:12:45 +0000806 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
sewardj08c7f012002-10-07 23:56:55 +0000807 ;;
808
njn781dba52005-06-30 04:06:38 +0000809 2.4)
810 AC_MSG_RESULT(2.4 family)
811 AC_DEFINE([GLIBC_2_4], 1, [Define to 1 if you're using glibc 2.4.x])
sewardj2c4f3dd2007-11-11 06:13:01 +0000812 DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}"
sewardj68c80c12007-11-18 14:40:02 +0000813 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
tom0a0fcee2008-01-05 00:12:45 +0000814 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
njn781dba52005-06-30 04:06:38 +0000815 ;;
816
dirkaece45c2006-10-12 08:17:49 +0000817 2.5)
818 AC_MSG_RESULT(2.5 family)
819 AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x])
sewardj2c4f3dd2007-11-11 06:13:01 +0000820 DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}"
sewardj68c80c12007-11-18 14:40:02 +0000821 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
tom0a0fcee2008-01-05 00:12:45 +0000822 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
dirkaece45c2006-10-12 08:17:49 +0000823 ;;
dirkc8bd0c52007-05-23 17:39:08 +0000824 2.6)
825 AC_MSG_RESULT(2.6 family)
826 AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x])
sewardj2c4f3dd2007-11-11 06:13:01 +0000827 DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}"
sewardj68c80c12007-11-18 14:40:02 +0000828 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
tom0a0fcee2008-01-05 00:12:45 +0000829 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
sewardj68c80c12007-11-18 14:40:02 +0000830 ;;
831 2.7)
832 AC_MSG_RESULT(2.7 family)
833 AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x])
dirk07596a22008-04-25 11:33:30 +0000834 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
sewardj68c80c12007-11-18 14:40:02 +0000835 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
tom0a0fcee2008-01-05 00:12:45 +0000836 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
dirkc8bd0c52007-05-23 17:39:08 +0000837 ;;
dirk07596a22008-04-25 11:33:30 +0000838 2.8)
839 AC_MSG_RESULT(2.8 family)
dirkeb939fc2008-04-27 20:38:47 +0000840 AC_DEFINE([GLIBC_2_8], 1, [Define to 1 if you're using glibc 2.8.x])
dirk07596a22008-04-25 11:33:30 +0000841 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
842 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
843 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
844 ;;
dirkd2e31eb2008-11-19 23:58:36 +0000845 2.9)
846 AC_MSG_RESULT(2.9 family)
847 AC_DEFINE([GLIBC_2_9], 1, [Define to 1 if you're using glibc 2.9.x])
848 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
849 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
850 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
851 ;;
sewardj5d425e82009-02-01 19:01:11 +0000852 2.10)
853 AC_MSG_RESULT(2.10 family)
854 AC_DEFINE([GLIBC_2_10], 1, [Define to 1 if you're using glibc 2.10.x])
855 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
856 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
857 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
858 ;;
bart0fac7ff2009-11-15 19:11:19 +0000859 2.11)
860 AC_MSG_RESULT(2.11 family)
861 AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x])
862 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
863 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
864 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
bartb7c3f082010-05-13 06:32:36 +0000865 ;;
866 2.12)
867 AC_MSG_RESULT(2.12 family)
868 AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x])
869 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
870 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
871 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
bart0fac7ff2009-11-15 19:11:19 +0000872 ;;
tomebd619b2011-02-10 09:09:09 +0000873 2.13)
874 AC_MSG_RESULT(2.13 family)
875 AC_DEFINE([GLIBC_2_13], 1, [Define to 1 if you're using glibc 2.13.x])
876 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
877 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
878 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
879 ;;
tomcc077412011-06-07 21:52:26 +0000880 2.14)
881 AC_MSG_RESULT(2.14 family)
882 AC_DEFINE([GLIBC_2_14], 1, [Define to 1 if you're using glibc 2.14.x])
883 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
884 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
885 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
886 ;;
dirke75fdeb2011-12-29 08:24:55 +0000887 2.15)
888 AC_MSG_RESULT(2.15 family)
889 AC_DEFINE([GLIBC_2_15], 1, [Define to 1 if you're using glibc 2.15.x])
890 DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
891 DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
892 DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
893 ;;
njnf76d27a2009-05-28 01:53:07 +0000894 darwin)
895 AC_MSG_RESULT(Darwin)
896 AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
897 # DEFAULT_SUPP set by kernel version check above.
898 ;;
sewardjcb495c82011-07-11 20:42:34 +0000899 bionic)
900 AC_MSG_RESULT(Bionic)
901 AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic])
902 DEFAULT_SUPP="bionic.supp ${DEFAULT_SUPP}"
903 ;;
dirkaece45c2006-10-12 08:17:49 +0000904
sewardjde4a1d02002-03-22 01:27:54 +0000905 *)
bart12e91122010-05-15 08:37:24 +0000906 AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
dirke75fdeb2011-12-29 08:24:55 +0000907 AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.15])
njnf76d27a2009-05-28 01:53:07 +0000908 AC_MSG_ERROR([or Darwin libc])
sewardjde4a1d02002-03-22 01:27:54 +0000909 ;;
910esac
911
dirk07596a22008-04-25 11:33:30 +0000912AC_SUBST(GLIBC_VERSION)
sewardj535c50f2005-06-04 23:14:53 +0000913
sewardj414f3582008-07-18 20:46:00 +0000914
915# Add default suppressions for the X client libraries. Make no
916# attempt to detect whether such libraries are installed on the
917# build machine (or even if any X facilities are present); just
918# add the suppressions antidisirregardless.
919DEFAULT_SUPP="xfree-4.supp ${DEFAULT_SUPP}"
920DEFAULT_SUPP="xfree-3.supp ${DEFAULT_SUPP}"
gobrye721a522002-03-22 13:38:30 +0000921
sewardjd2f95a02011-05-11 16:04:28 +0000922# Add glibc and X11 suppressions for exp-sgcheck
923DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}"
sewardj5744c022008-10-19 18:58:13 +0000924
sewardj2e10a682003-04-07 19:36:41 +0000925
njn7fd6d382009-01-22 21:56:32 +0000926#----------------------------------------------------------------------------
sewardjcb495c82011-07-11 20:42:34 +0000927# Platform variants?
928#----------------------------------------------------------------------------
929
930# Normally the PLAT = (ARCH, OS) characterisation of the platform is enough.
931# But there are times where we need a bit more control. The motivating
932# and currently only case is Android: this is almost identical to arm-linux,
933# but not quite. So this introduces the concept of platform variant tags,
934# which get passed in the compile as -DVGPV_<arch>_<os>_<variant> along
935# with the main -DVGP_<arch>_<os> definition.
936#
937# In almost all cases, the <variant> bit is "vanilla". But for Android
938# it is "android" instead.
939#
940# Consequently (eg), plain arm-linux would build with
941#
942# -DVGP_arm_linux -DVGPV_arm_linux_vanilla
943#
944# whilst an Android build would have
945#
946# -DVGP_arm_linux -DVGPV_arm_linux_android
947#
948# The setup of the platform variant is pushed relatively far down this
949# file in order that we can inspect any of the variables set above.
950
951# In the normal case ..
952VGCONF_PLATVARIANT="vanilla"
953
954# Android on ARM ?
955if test "$VGCONF_ARCH_PRI-$VGCONF_OS" = "arm-linux" \
956 -a "$GLIBC_VERSION" = "bionic";
957then
958 VGCONF_PLATVARIANT="android"
959fi
960
961AC_SUBST(VGCONF_PLATVARIANT)
962
963
964# FIXME: do we also want to define automake variables
965# VGCONF_PLATVARIANT_IS_<WHATEVER>, where WHATEVER is (currently)
966# VANILLA or ANDROID ? This would be in the style of VGCONF_ARCHS_INCLUDE,
967# VGCONF_PLATFORMS_INCLUDE and VGCONF_OS_IS above? Could easily enough
968# do that. Problem is that we can't do and-ing in Makefile.am's, but
969# that's what we'd need to do to use this, since what we'd want to write
970# is something like
971#
972# VGCONF_PLATFORMS_INCLUDE_ARM_LINUX && VGCONF_PLATVARIANT_IS_ANDROID
973#
sewardj0ba37c92011-07-12 11:46:24 +0000974# Hmm. Can't think of a nice clean solution to this.
975
976AM_CONDITIONAL(VGCONF_PLATVARIANT_IS_VANILLA,
977 test x$VGCONF_PLATVARIANT = xvanilla)
978AM_CONDITIONAL(VGCONF_PLATVARIANT_IS_ANDROID,
979 test x$VGCONF_PLATVARIANT = xandroid)
sewardjcb495c82011-07-11 20:42:34 +0000980
981
982#----------------------------------------------------------------------------
njn7fd6d382009-01-22 21:56:32 +0000983# Checking for various library functions and other definitions
984#----------------------------------------------------------------------------
985
bart59e2f182008-04-28 16:22:53 +0000986# Check for CLOCK_MONOTONIC
987
988AC_MSG_CHECKING([for CLOCK_MONOTONIC])
989
bart417cf3e2011-10-22 09:21:24 +0000990AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bart59e2f182008-04-28 16:22:53 +0000991#include <time.h>
bart417cf3e2011-10-22 09:21:24 +0000992]], [[
bart59e2f182008-04-28 16:22:53 +0000993 struct timespec t;
994 clock_gettime(CLOCK_MONOTONIC, &t);
995 return 0;
bart417cf3e2011-10-22 09:21:24 +0000996]])], [
bart59e2f182008-04-28 16:22:53 +0000997AC_MSG_RESULT([yes])
998AC_DEFINE([HAVE_CLOCK_MONOTONIC], 1,
999 [Define to 1 if you have the `CLOCK_MONOTONIC' constant.])
1000], [
1001AC_MSG_RESULT([no])
1002])
1003
bartfea06922008-05-03 09:12:15 +00001004
sewardj0c09bf02011-07-11 22:11:58 +00001005# Check for PTHREAD_RWLOCK_T
1006
1007AC_MSG_CHECKING([for pthread_rwlock_t])
1008
bart417cf3e2011-10-22 09:21:24 +00001009AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
sewardj0c09bf02011-07-11 22:11:58 +00001010#define _GNU_SOURCE
1011#include <pthread.h>
bart417cf3e2011-10-22 09:21:24 +00001012]], [[
sewardj0c09bf02011-07-11 22:11:58 +00001013 pthread_rwlock_t rwl;
bart417cf3e2011-10-22 09:21:24 +00001014]])], [
sewardj0c09bf02011-07-11 22:11:58 +00001015AC_MSG_RESULT([yes])
1016AC_DEFINE([HAVE_PTHREAD_RWLOCK_T], 1,
1017 [Define to 1 if you have the `pthread_rwlock_t' type.])
1018], [
1019AC_MSG_RESULT([no])
1020])
1021
1022
bartfea06922008-05-03 09:12:15 +00001023# Check for PTHREAD_MUTEX_ADAPTIVE_NP
1024
1025AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
1026
bart417cf3e2011-10-22 09:21:24 +00001027AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bartfea06922008-05-03 09:12:15 +00001028#define _GNU_SOURCE
1029#include <pthread.h>
bart417cf3e2011-10-22 09:21:24 +00001030]], [[
bartfea06922008-05-03 09:12:15 +00001031 return (PTHREAD_MUTEX_ADAPTIVE_NP);
bart417cf3e2011-10-22 09:21:24 +00001032]])], [
bartfea06922008-05-03 09:12:15 +00001033AC_MSG_RESULT([yes])
1034AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
1035 [Define to 1 if you have the `PTHREAD_MUTEX_ADAPTIVE_NP' constant.])
1036], [
1037AC_MSG_RESULT([no])
1038])
1039
1040
1041# Check for PTHREAD_MUTEX_ERRORCHECK_NP
1042
1043AC_MSG_CHECKING([for PTHREAD_MUTEX_ERRORCHECK_NP])
1044
bart417cf3e2011-10-22 09:21:24 +00001045AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bartfea06922008-05-03 09:12:15 +00001046#define _GNU_SOURCE
1047#include <pthread.h>
bart417cf3e2011-10-22 09:21:24 +00001048]], [[
bartfea06922008-05-03 09:12:15 +00001049 return (PTHREAD_MUTEX_ERRORCHECK_NP);
bart417cf3e2011-10-22 09:21:24 +00001050]])], [
bartfea06922008-05-03 09:12:15 +00001051AC_MSG_RESULT([yes])
1052AC_DEFINE([HAVE_PTHREAD_MUTEX_ERRORCHECK_NP], 1,
1053 [Define to 1 if you have the `PTHREAD_MUTEX_ERRORCHECK_NP' constant.])
1054], [
1055AC_MSG_RESULT([no])
1056])
1057
1058
1059# Check for PTHREAD_MUTEX_RECURSIVE_NP
1060
1061AC_MSG_CHECKING([for PTHREAD_MUTEX_RECURSIVE_NP])
1062
bart417cf3e2011-10-22 09:21:24 +00001063AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bartfea06922008-05-03 09:12:15 +00001064#define _GNU_SOURCE
1065#include <pthread.h>
bart417cf3e2011-10-22 09:21:24 +00001066]], [[
bartfea06922008-05-03 09:12:15 +00001067 return (PTHREAD_MUTEX_RECURSIVE_NP);
bart417cf3e2011-10-22 09:21:24 +00001068]])], [
bartfea06922008-05-03 09:12:15 +00001069AC_MSG_RESULT([yes])
1070AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], 1,
1071 [Define to 1 if you have the `PTHREAD_MUTEX_RECURSIVE_NP' constant.])
1072], [
1073AC_MSG_RESULT([no])
1074])
1075
1076
1077# Check for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
1078
1079AC_MSG_CHECKING([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP])
1080
bart417cf3e2011-10-22 09:21:24 +00001081AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bartfea06922008-05-03 09:12:15 +00001082#define _GNU_SOURCE
1083#include <pthread.h>
bart417cf3e2011-10-22 09:21:24 +00001084]], [[
bartfea06922008-05-03 09:12:15 +00001085 pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
1086 return 0;
bart417cf3e2011-10-22 09:21:24 +00001087]])], [
bartfea06922008-05-03 09:12:15 +00001088AC_MSG_RESULT([yes])
1089AC_DEFINE([HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], 1,
1090 [Define to 1 if you have the `PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' constant.])
1091], [
1092AC_MSG_RESULT([no])
1093])
1094
1095
bart5e389f12008-04-05 12:53:15 +00001096# Check whether pthread_mutex_t has a member called __m_kind.
1097
bartb11355c2010-04-29 16:37:26 +00001098AC_CHECK_MEMBER([pthread_mutex_t.__m_kind],
1099 [AC_DEFINE([HAVE_PTHREAD_MUTEX_T__M_KIND],
1100 1,
1101 [Define to 1 if pthread_mutex_t has a member called __m_kind.])
1102 ],
1103 [],
1104 [#include <pthread.h>])
bart5e389f12008-04-05 12:53:15 +00001105
1106
1107# Check whether pthread_mutex_t has a member called __data.__kind.
1108
bartb11355c2010-04-29 16:37:26 +00001109AC_CHECK_MEMBER([pthread_mutex_t.__data.__kind],
1110 [AC_DEFINE([HAVE_PTHREAD_MUTEX_T__DATA__KIND],
1111 1,
1112 [Define to 1 if pthread_mutex_t has a member __data.__kind.])
1113 ],
1114 [],
1115 [#include <pthread.h>])
bart5e389f12008-04-05 12:53:15 +00001116
1117
bart62c370e2008-05-12 18:50:51 +00001118# does this compiler support -maltivec and does it have the include file
1119# <altivec.h> ?
1120
1121AC_MSG_CHECKING([for Altivec])
1122
1123safe_CFLAGS=$CFLAGS
1124CFLAGS="-maltivec"
1125
bart417cf3e2011-10-22 09:21:24 +00001126AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bart62c370e2008-05-12 18:50:51 +00001127#include <altivec.h>
bart417cf3e2011-10-22 09:21:24 +00001128]], [[
bart62c370e2008-05-12 18:50:51 +00001129 vector unsigned int v;
bart417cf3e2011-10-22 09:21:24 +00001130]])], [
bart62c370e2008-05-12 18:50:51 +00001131ac_have_altivec=yes
1132AC_MSG_RESULT([yes])
sewardjf9fe6022010-09-03 14:36:50 +00001133AC_DEFINE([HAS_ALTIVEC], 1,
sewardj6467a152010-09-03 14:02:22 +00001134 [Define to 1 if gcc/as can do Altivec.])
bart62c370e2008-05-12 18:50:51 +00001135], [
1136ac_have_altivec=no
1137AC_MSG_RESULT([no])
1138])
1139CFLAGS=$safe_CFLAGS
1140
sewardj0e342a02010-09-03 23:49:33 +00001141AM_CONDITIONAL([HAS_ALTIVEC], [test x$ac_have_altivec = xyes])
bart62c370e2008-05-12 18:50:51 +00001142
1143
sewardjf34eb492011-04-15 11:57:05 +00001144# Check that both: the compiler supports -mvsx and that the assembler
1145# understands VSX instructions. If either of those doesn't work,
1146# conclude that we can't do VSX. NOTE: basically this is a kludge
1147# in that it conflates two things that should be separate -- whether
1148# the compiler understands the flag vs whether the assembler
1149# understands the opcodes. This really ought to be cleaned up
1150# and done properly, like it is for x86/x86_64.
1151
1152AC_MSG_CHECKING([for VSX])
1153
1154safe_CFLAGS=$CFLAGS
1155CFLAGS="-mvsx"
1156
bart417cf3e2011-10-22 09:21:24 +00001157AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
sewardjf34eb492011-04-15 11:57:05 +00001158#include <altivec.h>
bart417cf3e2011-10-22 09:21:24 +00001159]], [[
sewardjf34eb492011-04-15 11:57:05 +00001160 vector unsigned int v;
sewardj9b80ebb2011-04-15 21:16:00 +00001161 __asm__ __volatile__("xsmaddadp 32, 32, 33" ::: "memory","cc");
bart417cf3e2011-10-22 09:21:24 +00001162]])], [
sewardjf34eb492011-04-15 11:57:05 +00001163ac_have_vsx=yes
1164AC_MSG_RESULT([yes])
1165], [
1166ac_have_vsx=no
1167AC_MSG_RESULT([no])
1168])
1169CFLAGS=$safe_CFLAGS
1170
1171AM_CONDITIONAL(HAS_VSX, test x$ac_have_vsx = xyes)
1172
sewardjb0ccb4d2012-04-02 10:22:05 +00001173AC_MSG_CHECKING([that assembler knows DFP])
1174
1175AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1176]], [[
1177 __asm__ __volatile__("dadd 1, 2, 3");
1178]])], [
1179ac_asm_have_dfp=yes
1180AC_MSG_RESULT([yes])
1181], [
1182ac_asm_have_dfp=no
1183AC_MSG_RESULT([no])
1184])
1185
1186AC_MSG_CHECKING([that compiler knows -mhard-dfp switch])
1187safe_CFLAGS=$CFLAGS
1188CFLAGS="-mhard-dfp"
1189AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1190]], [[
1191 __asm__ __volatile__("dadd 1, 2, 3");
1192]])], [
1193ac_gcc_have_dfp=yes
1194AC_MSG_RESULT([yes])
1195], [
1196ac_gcc_have_dfp=no
1197AC_MSG_RESULT([no])
1198])
1199
sewardjb0ccb4d2012-04-02 10:22:05 +00001200CFLAGS=$safe_CFLAGS
1201
1202AM_CONDITIONAL(HAS_DFP, test x$ac_asm_have_dfp = xyes -a x$ac_gcc_have_dfp = xyes)
sewardjf34eb492011-04-15 11:57:05 +00001203
bart36dd85a2009-04-26 07:11:48 +00001204# Check for pthread_create@GLIBC2.0
1205AC_MSG_CHECKING([for pthread_create@GLIBC2.0()])
1206
bart16e1c5a2009-04-26 07:38:53 +00001207safe_CFLAGS=$CFLAGS
1208CFLAGS="-lpthread"
bart417cf3e2011-10-22 09:21:24 +00001209AC_LINK_IFELSE([AC_LANG_PROGRAM([[
bart36dd85a2009-04-26 07:11:48 +00001210extern int pthread_create_glibc_2_0(void*, const void*,
1211 void *(*)(void*), void*);
1212__asm__(".symver pthread_create_glibc_2_0, pthread_create@GLIBC_2.0");
bart417cf3e2011-10-22 09:21:24 +00001213]], [[
bart276ed3a2009-05-10 15:41:45 +00001214#ifdef __powerpc__
1215/*
1216 * Apparently on PowerPC linking this program succeeds and generates an
1217 * executable with the undefined symbol pthread_create@GLIBC_2.0.
1218 */
1219#error This test does not work properly on PowerPC.
1220#else
bart16e1c5a2009-04-26 07:38:53 +00001221 pthread_create_glibc_2_0(0, 0, 0, 0);
bart276ed3a2009-05-10 15:41:45 +00001222#endif
bart16e1c5a2009-04-26 07:38:53 +00001223 return 0;
bart417cf3e2011-10-22 09:21:24 +00001224]])], [
bart36dd85a2009-04-26 07:11:48 +00001225ac_have_pthread_create_glibc_2_0=yes
1226AC_MSG_RESULT([yes])
1227AC_DEFINE([HAVE_PTHREAD_CREATE_GLIBC_2_0], 1,
1228 [Define to 1 if you have the `pthread_create@glibc2.0' function.])
1229], [
1230ac_have_pthread_create_glibc_2_0=no
1231AC_MSG_RESULT([no])
1232])
bart16e1c5a2009-04-26 07:38:53 +00001233CFLAGS=$safe_CFLAGS
bart36dd85a2009-04-26 07:11:48 +00001234
1235AM_CONDITIONAL(HAVE_PTHREAD_CREATE_GLIBC_2_0,
bart24f53902009-04-26 11:29:02 +00001236 test x$ac_have_pthread_create_glibc_2_0 = xyes)
bart36dd85a2009-04-26 07:11:48 +00001237
1238
barta50aa8a2008-04-27 06:06:57 +00001239# Check for eventfd_t, eventfd() and eventfd_read()
1240AC_MSG_CHECKING([for eventfd()])
1241
bart417cf3e2011-10-22 09:21:24 +00001242AC_LINK_IFELSE([AC_LANG_PROGRAM([[
barta50aa8a2008-04-27 06:06:57 +00001243#include <sys/eventfd.h>
bart417cf3e2011-10-22 09:21:24 +00001244]], [[
barta50aa8a2008-04-27 06:06:57 +00001245 eventfd_t ev;
1246 int fd;
1247
1248 fd = eventfd(5, 0);
1249 eventfd_read(fd, &ev);
1250 return 0;
bart417cf3e2011-10-22 09:21:24 +00001251]])], [
barta50aa8a2008-04-27 06:06:57 +00001252AC_MSG_RESULT([yes])
1253AC_DEFINE([HAVE_EVENTFD], 1,
1254 [Define to 1 if you have the `eventfd' function.])
1255AC_DEFINE([HAVE_EVENTFD_READ], 1,
1256 [Define to 1 if you have the `eventfd_read' function.])
1257], [
1258AC_MSG_RESULT([no])
1259])
1260
1261
njn7fd6d382009-01-22 21:56:32 +00001262#----------------------------------------------------------------------------
1263# Checking for supported compiler flags.
1264#----------------------------------------------------------------------------
1265
sewardj535c50f2005-06-04 23:14:53 +00001266# does this compiler support -m32 ?
1267AC_MSG_CHECKING([if gcc accepts -m32])
1268
1269safe_CFLAGS=$CFLAGS
1270CFLAGS="-m32"
1271
bart417cf3e2011-10-22 09:21:24 +00001272AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001273 return 0;
bart417cf3e2011-10-22 09:21:24 +00001274]])], [
sewardj535c50f2005-06-04 23:14:53 +00001275FLAG_M32="-m32"
1276AC_MSG_RESULT([yes])
1277], [
1278FLAG_M32=""
1279AC_MSG_RESULT([no])
1280])
1281CFLAGS=$safe_CFLAGS
1282
1283AC_SUBST(FLAG_M32)
1284
1285
sewardj01262142006-01-04 01:20:28 +00001286# does this compiler support -m64 ?
1287AC_MSG_CHECKING([if gcc accepts -m64])
1288
1289safe_CFLAGS=$CFLAGS
1290CFLAGS="-m64"
1291
bart417cf3e2011-10-22 09:21:24 +00001292AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001293 return 0;
bart417cf3e2011-10-22 09:21:24 +00001294]])], [
sewardj01262142006-01-04 01:20:28 +00001295FLAG_M64="-m64"
1296AC_MSG_RESULT([yes])
1297], [
1298FLAG_M64=""
1299AC_MSG_RESULT([no])
1300])
1301CFLAGS=$safe_CFLAGS
1302
1303AC_SUBST(FLAG_M64)
1304
1305
sewardj67f1fcc2005-07-03 10:41:02 +00001306# does this compiler support -mmmx ?
1307AC_MSG_CHECKING([if gcc accepts -mmmx])
1308
1309safe_CFLAGS=$CFLAGS
1310CFLAGS="-mmmx"
1311
bart417cf3e2011-10-22 09:21:24 +00001312AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001313 return 0;
bart417cf3e2011-10-22 09:21:24 +00001314]])], [
sewardj67f1fcc2005-07-03 10:41:02 +00001315FLAG_MMMX="-mmmx"
1316AC_MSG_RESULT([yes])
1317], [
1318FLAG_MMMX=""
1319AC_MSG_RESULT([no])
1320])
1321CFLAGS=$safe_CFLAGS
1322
1323AC_SUBST(FLAG_MMMX)
1324
1325
1326# does this compiler support -msse ?
1327AC_MSG_CHECKING([if gcc accepts -msse])
1328
1329safe_CFLAGS=$CFLAGS
1330CFLAGS="-msse"
1331
bart417cf3e2011-10-22 09:21:24 +00001332AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001333 return 0;
bart417cf3e2011-10-22 09:21:24 +00001334]])], [
sewardj67f1fcc2005-07-03 10:41:02 +00001335FLAG_MSSE="-msse"
1336AC_MSG_RESULT([yes])
1337], [
1338FLAG_MSSE=""
1339AC_MSG_RESULT([no])
1340])
1341CFLAGS=$safe_CFLAGS
1342
1343AC_SUBST(FLAG_MSSE)
1344
1345
sewardj5b754b42002-06-03 22:53:35 +00001346# does this compiler support -mpreferred-stack-boundary=2 ?
1347AC_MSG_CHECKING([if gcc accepts -mpreferred-stack-boundary])
1348
daywalker3664f562003-10-17 13:43:46 +00001349safe_CFLAGS=$CFLAGS
sewardj5b754b42002-06-03 22:53:35 +00001350CFLAGS="-mpreferred-stack-boundary=2"
1351
bart417cf3e2011-10-22 09:21:24 +00001352AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001353 return 0;
bart417cf3e2011-10-22 09:21:24 +00001354]])], [
sewardj5b754b42002-06-03 22:53:35 +00001355PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
daywalker3664f562003-10-17 13:43:46 +00001356AC_MSG_RESULT([yes])
sewardj5b754b42002-06-03 22:53:35 +00001357], [
1358PREFERRED_STACK_BOUNDARY=""
1359AC_MSG_RESULT([no])
1360])
daywalker3664f562003-10-17 13:43:46 +00001361CFLAGS=$safe_CFLAGS
sewardj5b754b42002-06-03 22:53:35 +00001362
1363AC_SUBST(PREFERRED_STACK_BOUNDARY)
1364
sewardj535c50f2005-06-04 23:14:53 +00001365
sewardjb5f6f512005-03-10 23:59:00 +00001366# does this compiler support -Wno-pointer-sign ?
bart56730cd2008-05-11 06:41:46 +00001367AC_MSG_CHECKING([if gcc accepts -Wno-pointer-sign])
sewardjb5f6f512005-03-10 23:59:00 +00001368
1369safe_CFLAGS=$CFLAGS
1370CFLAGS="-Wno-pointer-sign"
1371
bart417cf3e2011-10-22 09:21:24 +00001372AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001373 return 0;
bart417cf3e2011-10-22 09:21:24 +00001374]])], [
sewardjb5f6f512005-03-10 23:59:00 +00001375no_pointer_sign=yes
1376AC_MSG_RESULT([yes])
1377], [
1378no_pointer_sign=no
1379AC_MSG_RESULT([no])
1380])
1381CFLAGS=$safe_CFLAGS
1382
1383if test x$no_pointer_sign = xyes; then
1384 CFLAGS="$CFLAGS -Wno-pointer-sign"
1385fi
1386
sewardj535c50f2005-06-04 23:14:53 +00001387
barte026bd22009-07-04 12:17:07 +00001388# does this compiler support -Wno-empty-body ?
1389
1390AC_MSG_CHECKING([if gcc accepts -Wno-empty-body])
1391
1392safe_CFLAGS=$CFLAGS
1393CFLAGS="-Wno-empty-body"
1394
bart417cf3e2011-10-22 09:21:24 +00001395AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
barte026bd22009-07-04 12:17:07 +00001396 return 0;
bart417cf3e2011-10-22 09:21:24 +00001397]])], [
barte026bd22009-07-04 12:17:07 +00001398AC_SUBST([FLAG_W_NO_EMPTY_BODY], [-Wno-empty-body])
1399AC_MSG_RESULT([yes])
bart417cf3e2011-10-22 09:21:24 +00001400], [
barte026bd22009-07-04 12:17:07 +00001401AC_SUBST([FLAG_W_NO_EMPTY_BODY], [])
1402AC_MSG_RESULT([no])
1403])
1404CFLAGS=$safe_CFLAGS
1405
1406
bart9d865fa2008-06-23 12:11:49 +00001407# does this compiler support -Wno-format-zero-length ?
1408
1409AC_MSG_CHECKING([if gcc accepts -Wno-format-zero-length])
1410
1411safe_CFLAGS=$CFLAGS
1412CFLAGS="-Wno-format-zero-length"
1413
bart417cf3e2011-10-22 09:21:24 +00001414AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bart9d865fa2008-06-23 12:11:49 +00001415 return 0;
bart417cf3e2011-10-22 09:21:24 +00001416]])], [
bart9d865fa2008-06-23 12:11:49 +00001417AC_SUBST([FLAG_W_NO_FORMAT_ZERO_LENGTH], [-Wno-format-zero-length])
1418AC_MSG_RESULT([yes])
bart417cf3e2011-10-22 09:21:24 +00001419], [
bart9d865fa2008-06-23 12:11:49 +00001420AC_SUBST([FLAG_W_NO_FORMAT_ZERO_LENGTH], [])
1421AC_MSG_RESULT([no])
1422])
1423CFLAGS=$safe_CFLAGS
1424
1425
bart8e216312011-05-15 17:05:36 +00001426# does this compiler support -Wno-nonnull ?
1427
1428AC_MSG_CHECKING([if gcc accepts -Wno-nonnull])
1429
1430safe_CFLAGS=$CFLAGS
1431CFLAGS="-Wno-nonnull"
1432
bart417cf3e2011-10-22 09:21:24 +00001433AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bart8e216312011-05-15 17:05:36 +00001434 return 0;
bart417cf3e2011-10-22 09:21:24 +00001435]])], [
bart8e216312011-05-15 17:05:36 +00001436AC_SUBST([FLAG_W_NO_NONNULL], [-Wno-nonnull])
1437AC_MSG_RESULT([yes])
bart417cf3e2011-10-22 09:21:24 +00001438], [
bart8e216312011-05-15 17:05:36 +00001439AC_SUBST([FLAG_W_NO_NONNULL], [])
1440AC_MSG_RESULT([no])
1441])
1442CFLAGS=$safe_CFLAGS
1443
1444
1445# does this compiler support -Wno-overflow ?
1446
1447AC_MSG_CHECKING([if gcc accepts -Wno-overflow])
1448
1449safe_CFLAGS=$CFLAGS
1450CFLAGS="-Wno-overflow"
1451
bart417cf3e2011-10-22 09:21:24 +00001452AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bart8e216312011-05-15 17:05:36 +00001453 return 0;
bart417cf3e2011-10-22 09:21:24 +00001454]])], [
bart8e216312011-05-15 17:05:36 +00001455AC_SUBST([FLAG_W_NO_OVERFLOW], [-Wno-overflow])
1456AC_MSG_RESULT([yes])
bart417cf3e2011-10-22 09:21:24 +00001457], [
bart8e216312011-05-15 17:05:36 +00001458AC_SUBST([FLAG_W_NO_OVERFLOW], [])
1459AC_MSG_RESULT([no])
1460])
1461CFLAGS=$safe_CFLAGS
1462
1463
bartbf9b85c2009-08-12 12:55:56 +00001464# does this compiler support -Wno-uninitialized ?
1465
1466AC_MSG_CHECKING([if gcc accepts -Wno-uninitialized])
1467
1468safe_CFLAGS=$CFLAGS
1469CFLAGS="-Wno-uninitialized"
1470
bart417cf3e2011-10-22 09:21:24 +00001471AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bartbf9b85c2009-08-12 12:55:56 +00001472 return 0;
bart417cf3e2011-10-22 09:21:24 +00001473]])], [
bartbf9b85c2009-08-12 12:55:56 +00001474AC_SUBST([FLAG_W_NO_UNINITIALIZED], [-Wno-uninitialized])
1475AC_MSG_RESULT([yes])
bart417cf3e2011-10-22 09:21:24 +00001476], [
bartbf9b85c2009-08-12 12:55:56 +00001477AC_SUBST([FLAG_W_NO_UNINITIALIZED], [])
1478AC_MSG_RESULT([no])
1479])
1480CFLAGS=$safe_CFLAGS
1481
1482
bart56730cd2008-05-11 06:41:46 +00001483# does this compiler support -Wextra or the older -W ?
1484
1485AC_MSG_CHECKING([if gcc accepts -Wextra or -W])
1486
1487safe_CFLAGS=$CFLAGS
1488CFLAGS="-Wextra"
1489
bart417cf3e2011-10-22 09:21:24 +00001490AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bart56730cd2008-05-11 06:41:46 +00001491 return 0;
bart417cf3e2011-10-22 09:21:24 +00001492]])], [
bart56730cd2008-05-11 06:41:46 +00001493AC_SUBST([FLAG_W_EXTRA], [-Wextra])
1494AC_MSG_RESULT([-Wextra])
1495], [
1496 CFLAGS="-W"
sewardj9bdf2a62011-10-27 06:22:23 +00001497 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bart56730cd2008-05-11 06:41:46 +00001498 return 0;
sewardj9bdf2a62011-10-27 06:22:23 +00001499 ]])], [
bart56730cd2008-05-11 06:41:46 +00001500 AC_SUBST([FLAG_W_EXTRA], [-W])
1501 AC_MSG_RESULT([-W])
1502 ], [
1503 AC_SUBST([FLAG_W_EXTRA], [])
1504 AC_MSG_RESULT([not supported])
1505 ])
1506])
1507CFLAGS=$safe_CFLAGS
1508
1509
sewardja72c26d2007-05-01 13:44:08 +00001510# does this compiler support -fno-stack-protector ?
bart56730cd2008-05-11 06:41:46 +00001511AC_MSG_CHECKING([if gcc accepts -fno-stack-protector])
sewardja72c26d2007-05-01 13:44:08 +00001512
1513safe_CFLAGS=$CFLAGS
1514CFLAGS="-fno-stack-protector"
1515
bart417cf3e2011-10-22 09:21:24 +00001516AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
njn9890ee12009-01-21 22:25:50 +00001517 return 0;
bart417cf3e2011-10-22 09:21:24 +00001518]])], [
sewardja72c26d2007-05-01 13:44:08 +00001519no_stack_protector=yes
1520FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector"
1521AC_MSG_RESULT([yes])
1522], [
1523no_stack_protector=no
1524FLAG_FNO_STACK_PROTECTOR=""
1525AC_MSG_RESULT([no])
1526])
1527CFLAGS=$safe_CFLAGS
1528
1529AC_SUBST(FLAG_FNO_STACK_PROTECTOR)
1530
1531if test x$no_stack_protector = xyes; then
1532 CFLAGS="$CFLAGS -fno-stack-protector"
1533fi
1534
1535
bart56730cd2008-05-11 06:41:46 +00001536# does this compiler support --param inline-unit-growth=... ?
1537
1538AC_MSG_CHECKING([if gcc accepts --param inline-unit-growth])
1539
1540safe_CFLAGS=$CFLAGS
1541CFLAGS="--param inline-unit-growth=900"
1542
bart417cf3e2011-10-22 09:21:24 +00001543AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
bart56730cd2008-05-11 06:41:46 +00001544 return 0;
bart417cf3e2011-10-22 09:21:24 +00001545]])], [
bart56730cd2008-05-11 06:41:46 +00001546AC_SUBST([FLAG_UNLIMITED_INLINE_UNIT_GROWTH],
1547 ["--param inline-unit-growth=900"])
1548AC_MSG_RESULT([yes])
1549], [
1550AC_SUBST([FLAG_UNLIMITED_INLINE_UNIT_GROWTH], [""])
1551AC_MSG_RESULT([no])
1552])
1553CFLAGS=$safe_CFLAGS
1554
1555
sewardjd9350682012-04-05 07:55:47 +00001556# does this compiler support -gdwarf-4 -fdebug-types-section ?
1557
1558AC_MSG_CHECKING([if gcc accepts -gdwarf-4 -fdebug-types-section])
1559
1560safe_CFLAGS=$CFLAGS
1561CFLAGS="-gdwarf-4 -fdebug-types-section"
1562
1563AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
1564 return 0;
1565]])], [
1566ac_have_dwarf4=yes
1567AC_MSG_RESULT([yes])
1568], [
1569ac_have_dwarf4=no
1570AC_MSG_RESULT([no])
1571])
1572AM_CONDITIONAL(DWARF4, test x$ac_have_dwarf4 = xyes)
1573CFLAGS=$safe_CFLAGS
1574
1575
sewardjd3645802010-06-13 22:13:58 +00001576# does the linker support -Wl,--build-id=none ? Note, it's
1577# important that we test indirectly via whichever C compiler
1578# is selected, rather than testing /usr/bin/ld or whatever
1579# directly.
bart699fbac2010-06-08 18:23:59 +00001580
sewardjd3645802010-06-13 22:13:58 +00001581AC_MSG_CHECKING([if the linker accepts -Wl,--build-id=none])
bart699fbac2010-06-08 18:23:59 +00001582
1583safe_CFLAGS=$CFLAGS
1584CFLAGS="-Wl,--build-id=none"
1585
bart8508c752010-06-10 06:26:21 +00001586AC_LINK_IFELSE(
1587[AC_LANG_PROGRAM([ ], [return 0;])],
bart699fbac2010-06-08 18:23:59 +00001588[
1589 AC_SUBST([FLAG_NO_BUILD_ID], ["-Wl,--build-id=none"])
1590 AC_MSG_RESULT([yes])
1591], [
1592 AC_SUBST([FLAG_NO_BUILD_ID], [""])
1593 AC_MSG_RESULT([no])
1594])
1595CFLAGS=$safe_CFLAGS
1596
1597
sewardj00f1e622006-03-12 16:47:10 +00001598# does the ppc assembler support "mtocrf" et al?
1599AC_MSG_CHECKING([if ppc32/64 as supports mtocrf/mfocrf])
1600
bart417cf3e2011-10-22 09:21:24 +00001601AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
sewardjdd4cbe12006-03-12 17:27:44 +00001602__asm__ __volatile__("mtocrf 4,0");
1603__asm__ __volatile__("mfocrf 0,4");
bart417cf3e2011-10-22 09:21:24 +00001604]])], [
sewardj00f1e622006-03-12 16:47:10 +00001605ac_have_as_ppc_mftocrf=yes
1606AC_MSG_RESULT([yes])
1607], [
1608ac_have_as_ppc_mftocrf=no
1609AC_MSG_RESULT([no])
1610])
1611if test x$ac_have_as_ppc_mftocrf = xyes ; then
1612 AC_DEFINE(HAVE_AS_PPC_MFTOCRF, 1, [Define to 1 if as supports mtocrf/mfocrf.])
1613fi
1614
1615
sewardjb5b87402011-03-07 16:05:35 +00001616CFLAGS=$safe_CFLAGS
1617
sewardjf0aabf82007-03-22 00:24:21 +00001618# does the x86/amd64 assembler understand SSE3 instructions?
sewardjfa18a262007-03-22 12:13:13 +00001619# Note, this doesn't generate a C-level symbol. It generates a
1620# automake-level symbol (BUILD_SSE3_TESTS), used in test Makefile.am's
sewardjf0aabf82007-03-22 00:24:21 +00001621AC_MSG_CHECKING([if x86/amd64 assembler speaks SSE3])
1622
bart417cf3e2011-10-22 09:21:24 +00001623AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
sewardjf0aabf82007-03-22 00:24:21 +00001624 do { long long int x;
1625 __asm__ __volatile__("fisttpq (%0)" : :"r"(&x) ); }
1626 while (0)
bart417cf3e2011-10-22 09:21:24 +00001627]])], [
sewardjf0aabf82007-03-22 00:24:21 +00001628ac_have_as_sse3=yes
1629AC_MSG_RESULT([yes])
1630], [
1631ac_have_as_sse3=no
1632AC_MSG_RESULT([no])
1633])
sewardjfa18a262007-03-22 12:13:13 +00001634
1635AM_CONDITIONAL(BUILD_SSE3_TESTS, test x$ac_have_as_sse3 = xyes)
sewardjf0aabf82007-03-22 00:24:21 +00001636
1637
sewardj6d6da5b2008-02-09 12:07:40 +00001638# Ditto for SSSE3 instructions (note extra S)
1639# Note, this doesn't generate a C-level symbol. It generates a
1640# automake-level symbol (BUILD_SSSE3_TESTS), used in test Makefile.am's
1641AC_MSG_CHECKING([if x86/amd64 assembler speaks SSSE3])
1642
florianc443b962011-10-28 21:37:19 +00001643save_CFLAGS="$CFLAGS"
1644CFLAGS="$CFLAGS -msse"
bart417cf3e2011-10-22 09:21:24 +00001645AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
sewardj6d6da5b2008-02-09 12:07:40 +00001646 do { long long int x;
1647 __asm__ __volatile__(
1648 "pabsb (%0),%%xmm7" : : "r"(&x) : "xmm7" ); }
1649 while (0)
bart417cf3e2011-10-22 09:21:24 +00001650]])], [
sewardj6d6da5b2008-02-09 12:07:40 +00001651ac_have_as_ssse3=yes
1652AC_MSG_RESULT([yes])
1653], [
1654ac_have_as_ssse3=no
1655AC_MSG_RESULT([no])
1656])
florianc443b962011-10-28 21:37:19 +00001657CFLAGS="$save_CFLAGS"
sewardj6d6da5b2008-02-09 12:07:40 +00001658
1659AM_CONDITIONAL(BUILD_SSSE3_TESTS, test x$ac_have_as_ssse3 = xyes)
1660
1661
sewardj27d176a2011-01-17 11:15:48 +00001662# does the x86/amd64 assembler understand the PCLMULQDQ instruction?
1663# Note, this doesn't generate a C-level symbol. It generates a
1664# automake-level symbol (BUILD_PCLMULQDQ_TESTS), used in test Makefile.am's
sewardje3ae8a32010-09-28 19:59:47 +00001665AC_MSG_CHECKING([if x86/amd64 assembler supports 'pclmulqdq'])
bart417cf3e2011-10-22 09:21:24 +00001666AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
sewardje3ae8a32010-09-28 19:59:47 +00001667 do {
1668 __asm__ __volatile__(
1669 "pclmulqdq \$17,%%xmm6,%%xmm7" : : : "xmm6", "xmm7" ); }
1670 while (0)
bart417cf3e2011-10-22 09:21:24 +00001671]])], [
sewardje3ae8a32010-09-28 19:59:47 +00001672ac_have_as_pclmulqdq=yes
1673AC_MSG_RESULT([yes])
1674], [
1675ac_have_as_pclmulqdq=no
1676AC_MSG_RESULT([no])
1677])
1678
1679AM_CONDITIONAL(BUILD_PCLMULQDQ_TESTS, test x$ac_have_as_pclmulqdq = xyes)
1680
1681
sewardj27d176a2011-01-17 11:15:48 +00001682# does the x86/amd64 assembler understand the LZCNT instruction?
1683# Note, this doesn't generate a C-level symbol. It generates a
1684# automake-level symbol (BUILD_LZCNT_TESTS), used in test Makefile.am's
bart55e438b2010-09-14 10:53:57 +00001685AC_MSG_CHECKING([if x86/amd64 assembler supports 'lzcnt'])
1686
bart417cf3e2011-10-22 09:21:24 +00001687AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
bart55e438b2010-09-14 10:53:57 +00001688 do {
1689 __asm__ __volatile__("lzcnt %rax,%rax");
1690 } while (0)
bart417cf3e2011-10-22 09:21:24 +00001691]])], [
bart55e438b2010-09-14 10:53:57 +00001692 ac_have_as_lzcnt=yes
1693 AC_MSG_RESULT([yes])
1694], [
1695 ac_have_as_lzcnt=no
1696 AC_MSG_RESULT([no])
1697])
1698
1699AM_CONDITIONAL([BUILD_LZCNT_TESTS], [test x$ac_have_as_lzcnt = xyes])
1700
sewardj27d176a2011-01-17 11:15:48 +00001701
1702# does the x86/amd64 assembler understand SSE 4.2 instructions?
1703# Note, this doesn't generate a C-level symbol. It generates a
1704# automake-level symbol (BUILD_SSE42_TESTS), used in test Makefile.am's
1705AC_MSG_CHECKING([if x86/amd64 assembler speaks SSE4.2])
1706
bart417cf3e2011-10-22 09:21:24 +00001707AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
sewardj27d176a2011-01-17 11:15:48 +00001708 do { long long int x;
1709 __asm__ __volatile__(
florianfdfca222012-01-17 13:16:50 +00001710 "crc32q %%r15,%%r15" : : : "r15" );
1711 __asm__ __volatile__(
1712 "pblendvb (%rcx), %xmm11"); }
sewardj27d176a2011-01-17 11:15:48 +00001713 while (0)
bart417cf3e2011-10-22 09:21:24 +00001714]])], [
sewardj27d176a2011-01-17 11:15:48 +00001715ac_have_as_sse42=yes
1716AC_MSG_RESULT([yes])
1717], [
1718ac_have_as_sse42=no
1719AC_MSG_RESULT([no])
1720])
1721
1722AM_CONDITIONAL(BUILD_SSE42_TESTS, test x$ac_have_as_sse42 = xyes)
1723
1724
sewardj9fb31ca2012-06-05 00:31:49 +00001725# does the x86/amd64 assembler understand AVX instructions?
1726# Note, this doesn't generate a C-level symbol. It generates a
1727# automake-level symbol (BUILD_AVX_TESTS), used in test Makefile.am's
1728AC_MSG_CHECKING([if x86/amd64 assembler speaks AVX])
1729
1730AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
1731 do { long long int x;
1732 __asm__ __volatile__(
1733 "vmovupd (%%rsp), %%ymm7" : : : "xmm7" );
1734 __asm__ __volatile__(
1735 "vaddpd %%ymm6,%%ymm7,%%ymm8" : : : "xmm6","xmm7","xmm8"); }
1736 while (0)
1737]])], [
1738ac_have_as_avx=yes
1739AC_MSG_RESULT([yes])
1740], [
1741ac_have_as_avx=no
1742AC_MSG_RESULT([no])
1743])
1744
1745AM_CONDITIONAL(BUILD_AVX_TESTS, test x$ac_have_as_avx = xyes)
1746
1747
sewardje089f012010-10-13 21:47:29 +00001748# XXX JRS 2010 Oct 13: what is this for? For sure, we don't need this
1749# when building the tool executables. I think we should get rid of it.
1750#
sewardjb5f6f512005-03-10 23:59:00 +00001751# Check for TLS support in the compiler and linker
bart2bd9a682011-10-22 09:46:16 +00001752AC_LINK_IFELSE([AC_LANG_PROGRAM([[static __thread int foo;]],
1753 [[return foo;]])],
1754 [vg_cv_linktime_tls=yes],
1755 [vg_cv_linktime_tls=no])
bartca9f2ad2008-06-02 07:14:20 +00001756# Native compilation: check whether running a program using TLS succeeds.
1757# Linking only is not sufficient -- e.g. on Red Hat 7.3 linking TLS programs
1758# succeeds but running programs using TLS fails.
bart2bd9a682011-10-22 09:46:16 +00001759# Cross-compiling: check whether linking a program using TLS succeeds.
bartca9f2ad2008-06-02 07:14:20 +00001760AC_CACHE_CHECK([for TLS support], vg_cv_tls,
1761 [AC_ARG_ENABLE(tls, [ --enable-tls platform supports TLS],
1762 [vg_cv_tls=$enableval],
1763 [AC_RUN_IFELSE([AC_LANG_PROGRAM([[static __thread int foo;]],
1764 [[return foo;]])],
1765 [vg_cv_tls=yes],
bart2bd9a682011-10-22 09:46:16 +00001766 [vg_cv_tls=no],
1767 [vg_cv_tls=$vg_cv_linktime_tls])])])
sewardjb5f6f512005-03-10 23:59:00 +00001768
1769if test "$vg_cv_tls" = yes; then
1770AC_DEFINE([HAVE_TLS], 1, [can use __thread to define thread-local variables])
1771fi
sewardj5b754b42002-06-03 22:53:35 +00001772
sewardj535c50f2005-06-04 23:14:53 +00001773
njn7fd6d382009-01-22 21:56:32 +00001774#----------------------------------------------------------------------------
bart62f54e42008-07-28 11:35:10 +00001775# Checks for C header files.
njn7fd6d382009-01-22 21:56:32 +00001776#----------------------------------------------------------------------------
1777
sewardjde4a1d02002-03-22 01:27:54 +00001778AC_HEADER_STDC
bartf5ceec82008-04-26 07:45:10 +00001779AC_CHECK_HEADERS([ \
bart1f2b1432009-01-16 12:06:54 +00001780 asm/unistd.h \
bartf5ceec82008-04-26 07:45:10 +00001781 endian.h \
1782 mqueue.h \
1783 sys/endian.h \
1784 sys/epoll.h \
1785 sys/eventfd.h \
bartce48fa92008-04-26 10:59:46 +00001786 sys/klog.h \
bartf5ceec82008-04-26 07:45:10 +00001787 sys/poll.h \
bart71bad292008-04-27 11:43:23 +00001788 sys/signal.h \
bartf5ceec82008-04-26 07:45:10 +00001789 sys/signalfd.h \
bart71bad292008-04-27 11:43:23 +00001790 sys/syscall.h \
1791 sys/time.h \
1792 sys/types.h \
bartf5ceec82008-04-26 07:45:10 +00001793 ])
sewardjde4a1d02002-03-22 01:27:54 +00001794
bart818f17e2011-09-17 06:24:49 +00001795# Verify whether the <linux/futex.h> header is usable.
1796AC_MSG_CHECKING([if <linux/futex.h> is usable])
1797
bart417cf3e2011-10-22 09:21:24 +00001798AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
bart818f17e2011-09-17 06:24:49 +00001799#include <linux/futex.h>
bart417cf3e2011-10-22 09:21:24 +00001800]], [[
bart818f17e2011-09-17 06:24:49 +00001801 return FUTEX_WAIT;
bart417cf3e2011-10-22 09:21:24 +00001802]])], [
bart78bfc712011-12-08 16:14:59 +00001803ac_have_usable_linux_futex_h=yes
bart818f17e2011-09-17 06:24:49 +00001804AC_DEFINE([HAVE_USABLE_LINUX_FUTEX_H], 1,
1805 [Define to 1 if you have a usable <linux/futex.h> header file.])
1806AC_MSG_RESULT([yes])
1807], [
bart78bfc712011-12-08 16:14:59 +00001808ac_have_usable_linux_futex_h=no
bart818f17e2011-09-17 06:24:49 +00001809AC_MSG_RESULT([no])
1810])
1811
njn7fd6d382009-01-22 21:56:32 +00001812#----------------------------------------------------------------------------
sewardjde4a1d02002-03-22 01:27:54 +00001813# Checks for typedefs, structures, and compiler characteristics.
njn7fd6d382009-01-22 21:56:32 +00001814#----------------------------------------------------------------------------
sewardjde4a1d02002-03-22 01:27:54 +00001815AC_TYPE_UID_T
1816AC_TYPE_OFF_T
1817AC_TYPE_SIZE_T
1818AC_HEADER_TIME
1819
sewardj535c50f2005-06-04 23:14:53 +00001820
njn7fd6d382009-01-22 21:56:32 +00001821#----------------------------------------------------------------------------
sewardjde4a1d02002-03-22 01:27:54 +00001822# Checks for library functions.
njn7fd6d382009-01-22 21:56:32 +00001823#----------------------------------------------------------------------------
sewardjde4a1d02002-03-22 01:27:54 +00001824AC_FUNC_MEMCMP
1825AC_FUNC_MMAP
sewardjde4a1d02002-03-22 01:27:54 +00001826
bart26288e42011-04-03 16:46:01 +00001827AC_CHECK_LIB([pthread], [pthread_create])
bart71bad292008-04-27 11:43:23 +00001828AC_CHECK_LIB([rt], [clock_gettime])
bart41ac62a2008-07-07 16:58:03 +00001829
bartf5ceec82008-04-26 07:45:10 +00001830AC_CHECK_FUNCS([ \
bart71bad292008-04-27 11:43:23 +00001831 clock_gettime\
bartf5ceec82008-04-26 07:45:10 +00001832 epoll_create \
1833 epoll_pwait \
bartce48fa92008-04-26 10:59:46 +00001834 klogctl \
bartf5ceec82008-04-26 07:45:10 +00001835 mallinfo \
1836 memchr \
1837 memset \
1838 mkdir \
njnf76d27a2009-05-28 01:53:07 +00001839 mremap \
bartf5ceec82008-04-26 07:45:10 +00001840 ppoll \
bart6d45e922009-01-20 13:45:38 +00001841 pthread_barrier_init \
1842 pthread_condattr_setclock \
1843 pthread_mutex_timedlock \
1844 pthread_rwlock_timedrdlock \
1845 pthread_rwlock_timedwrlock \
1846 pthread_spin_lock \
barta72a27b2010-04-29 06:22:17 +00001847 pthread_yield \
bartd1f724c2009-08-26 18:11:18 +00001848 readlinkat \
bartf5ceec82008-04-26 07:45:10 +00001849 semtimedop \
1850 signalfd \
njn6cc22472009-03-16 03:46:48 +00001851 sigwaitinfo \
bartf5ceec82008-04-26 07:45:10 +00001852 strchr \
1853 strdup \
1854 strpbrk \
1855 strrchr \
1856 strstr \
barta72a27b2010-04-29 06:22:17 +00001857 syscall \
bartf5ceec82008-04-26 07:45:10 +00001858 utimensat \
tom9e4b6362012-02-10 09:39:37 +00001859 process_vm_readv \
1860 process_vm_writev \
bartf5ceec82008-04-26 07:45:10 +00001861 ])
sewardjde4a1d02002-03-22 01:27:54 +00001862
bart623eec32008-07-29 17:54:49 +00001863# AC_CHECK_LIB adds any library found to the variable LIBS, and links these
1864# libraries with any shared object and/or executable. This is NOT what we
1865# want for e.g. vgpreload_core-x86-linux.so
1866LIBS=""
sewardj80637752006-03-02 13:48:21 +00001867
bart6d45e922009-01-20 13:45:38 +00001868AM_CONDITIONAL([HAVE_PTHREAD_BARRIER],
1869 [test x$ac_cv_func_pthread_barrier_init = xyes])
bart2eaa8f22009-01-20 14:01:16 +00001870AM_CONDITIONAL([HAVE_PTHREAD_MUTEX_TIMEDLOCK],
1871 [test x$ac_cv_func_pthread_mutex_timedlock = xyes])
bart6d45e922009-01-20 13:45:38 +00001872AM_CONDITIONAL([HAVE_PTHREAD_SPINLOCK],
1873 [test x$ac_cv_func_pthread_spin_lock = xyes])
1874
njn7fd6d382009-01-22 21:56:32 +00001875
1876#----------------------------------------------------------------------------
1877# MPI checks
1878#----------------------------------------------------------------------------
sewardj03d86f22006-10-17 00:57:24 +00001879# Do we have a useable MPI setup on the primary and/or secondary targets?
1880# On Linux, by default, assumes mpicc and -m32/-m64
sewardje9fa5062006-03-12 18:29:18 +00001881# Note: this is a kludge in that it assumes the specified mpicc
sewardj6e9de462011-06-28 07:25:29 +00001882# understands -m32/-m64 regardless of what is specified using
sewardj03d86f22006-10-17 00:57:24 +00001883# --with-mpicc=.
sewardj0ad46092006-03-02 17:09:16 +00001884MPI_CC="mpicc"
sewardj03d86f22006-10-17 00:57:24 +00001885
sewardje9fa5062006-03-12 18:29:18 +00001886mflag_primary=
njn7fd6d382009-01-22 21:56:32 +00001887if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
sewardj6e9de462011-06-28 07:25:29 +00001888 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
sewardj5db15402012-06-07 09:13:21 +00001889 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
1890 -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX ; then
sewardje9fa5062006-03-12 18:29:18 +00001891 mflag_primary=$FLAG_M32
njn7fd6d382009-01-22 21:56:32 +00001892elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
sewardjb5b87402011-03-07 16:05:35 +00001893 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
1894 -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
sewardje9fa5062006-03-12 18:29:18 +00001895 mflag_primary=$FLAG_M64
philippef7c54332012-05-17 15:32:54 +00001896elif test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN ; then
1897 mflag_primary="$FLAG_M32 -arch i386"
1898elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN ; then
1899 mflag_primary="$FLAG_M64 -arch x86_64"
sewardje9fa5062006-03-12 18:29:18 +00001900fi
1901
sewardj03d86f22006-10-17 00:57:24 +00001902mflag_secondary=
njn7fd6d382009-01-22 21:56:32 +00001903if test x$VGCONF_PLATFORM_SEC_CAPS = xX86_LINUX \
1904 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX ; then
sewardj03d86f22006-10-17 00:57:24 +00001905 mflag_secondary=$FLAG_M32
philippef7c54332012-05-17 15:32:54 +00001906elif test x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN ; then
1907 mflag_secondary="$FLAG_M32 -arch i386"
sewardj03d86f22006-10-17 00:57:24 +00001908fi
1909
1910
sewardj0ad46092006-03-02 17:09:16 +00001911AC_ARG_WITH(mpicc,
sewardjb70a6132006-05-27 21:14:09 +00001912 [ --with-mpicc= Specify name of MPI2-ised C compiler],
sewardj0ad46092006-03-02 17:09:16 +00001913 MPI_CC=$withval
1914)
sewardj03d86f22006-10-17 00:57:24 +00001915AC_SUBST(MPI_CC)
1916
philippef7c54332012-05-17 15:32:54 +00001917## We AM_COND_IF here instead of automake "if" in mpi/Makefile.am so that we can
1918## use these values in the check for a functioning mpicc.
1919##
1920## We leave the MPI_FLAG_M3264_ logic in mpi/Makefile.am and assume that
1921## mflag_primary/mflag_secondary are sufficient approximations of that behavior
1922AM_COND_IF([VGCONF_OS_IS_LINUX],
1923 [CFLAGS_MPI="-g -O -fno-omit-frame-pointer -Wall -fpic"
1924 LDFLAGS_MPI="-fpic -shared"])
1925AM_COND_IF([VGCONF_OS_IS_DARWIN],
1926 [CFLAGS_MPI="-g -O -fno-omit-frame-pointer -Wall -dynamic"
1927 LDFLAGS_MPI="-dynamic -dynamiclib -all_load"])
1928
1929AC_SUBST([CFLAGS_MPI])
1930AC_SUBST([LDFLAGS_MPI])
1931
1932
sewardj03d86f22006-10-17 00:57:24 +00001933## See if MPI_CC works for the primary target
1934##
1935AC_MSG_CHECKING([primary target for usable MPI2-compliant C compiler and mpi.h])
sewardj0ad46092006-03-02 17:09:16 +00001936saved_CC=$CC
sewardjde4f3842006-03-09 02:41:41 +00001937saved_CFLAGS=$CFLAGS
sewardj0ad46092006-03-02 17:09:16 +00001938CC=$MPI_CC
philippef7c54332012-05-17 15:32:54 +00001939CFLAGS="$CFLAGS_MPI $mflag_primary"
1940saved_LDFLAGS="$LDFLAGS"
1941LDFLAGS="$LDFLAGS_MPI $mflag_primary"
bart417cf3e2011-10-22 09:21:24 +00001942AC_LINK_IFELSE([AC_LANG_PROGRAM([[
sewardj1a85e602006-03-08 15:26:10 +00001943#include <mpi.h>
1944#include <stdio.h>
bart417cf3e2011-10-22 09:21:24 +00001945]], [[
philippef7c54332012-05-17 15:32:54 +00001946 int ni, na, nd, comb;
sewardjde4f3842006-03-09 02:41:41 +00001947 int r = MPI_Init(NULL,NULL);
philippef7c54332012-05-17 15:32:54 +00001948 r |= MPI_Type_get_envelope( MPI_INT, &ni, &na, &nd, &comb );
1949 r |= MPI_Finalize();
sewardjde4f3842006-03-09 02:41:41 +00001950 return r;
bart417cf3e2011-10-22 09:21:24 +00001951]])], [
sewardj03d86f22006-10-17 00:57:24 +00001952ac_have_mpi2_pri=yes
sewardj1a85e602006-03-08 15:26:10 +00001953AC_MSG_RESULT([yes, $MPI_CC])
sewardj80637752006-03-02 13:48:21 +00001954], [
sewardj03d86f22006-10-17 00:57:24 +00001955ac_have_mpi2_pri=no
sewardj80637752006-03-02 13:48:21 +00001956AC_MSG_RESULT([no])
1957])
sewardj0ad46092006-03-02 17:09:16 +00001958CC=$saved_CC
sewardjde4f3842006-03-09 02:41:41 +00001959CFLAGS=$saved_CFLAGS
philippef7c54332012-05-17 15:32:54 +00001960LDFLAGS="$saved_LDFLAGS"
sewardj03d86f22006-10-17 00:57:24 +00001961AM_CONDITIONAL(BUILD_MPIWRAP_PRI, test x$ac_have_mpi2_pri = xyes)
sewardj80637752006-03-02 13:48:21 +00001962
sewardj03d86f22006-10-17 00:57:24 +00001963## See if MPI_CC works for the secondary target. Complication: what if
1964## there is no secondary target? We need this to then fail.
1965## Kludge this by making MPI_CC something which will surely fail in
1966## such a case.
1967##
1968AC_MSG_CHECKING([secondary target for usable MPI2-compliant C compiler and mpi.h])
1969saved_CC=$CC
1970saved_CFLAGS=$CFLAGS
philippef7c54332012-05-17 15:32:54 +00001971saved_LDFLAGS="$LDFLAGS"
1972LDFLAGS="$LDFLAGS_MPI $mflag_secondary"
njn7fd6d382009-01-22 21:56:32 +00001973if test x$VGCONF_PLATFORM_SEC_CAPS = x ; then
sewardj03d86f22006-10-17 00:57:24 +00001974 CC="$MPI_CC this will surely fail"
1975else
1976 CC=$MPI_CC
1977fi
philippef7c54332012-05-17 15:32:54 +00001978CFLAGS="$CFLAGS_MPI $mflag_secondary"
bart417cf3e2011-10-22 09:21:24 +00001979AC_LINK_IFELSE([AC_LANG_PROGRAM([[
sewardj03d86f22006-10-17 00:57:24 +00001980#include <mpi.h>
1981#include <stdio.h>
bart417cf3e2011-10-22 09:21:24 +00001982]], [[
philippef7c54332012-05-17 15:32:54 +00001983 int ni, na, nd, comb;
sewardj03d86f22006-10-17 00:57:24 +00001984 int r = MPI_Init(NULL,NULL);
philippef7c54332012-05-17 15:32:54 +00001985 r |= MPI_Type_get_envelope( MPI_INT, &ni, &na, &nd, &comb );
1986 r |= MPI_Finalize();
sewardj03d86f22006-10-17 00:57:24 +00001987 return r;
bart417cf3e2011-10-22 09:21:24 +00001988]])], [
sewardj03d86f22006-10-17 00:57:24 +00001989ac_have_mpi2_sec=yes
1990AC_MSG_RESULT([yes, $MPI_CC])
1991], [
1992ac_have_mpi2_sec=no
1993AC_MSG_RESULT([no])
1994])
1995CC=$saved_CC
1996CFLAGS=$saved_CFLAGS
philippef7c54332012-05-17 15:32:54 +00001997LDFLAGS="$saved_LDFLAGS"
sewardj03d86f22006-10-17 00:57:24 +00001998AM_CONDITIONAL(BUILD_MPIWRAP_SEC, test x$ac_have_mpi2_sec = xyes)
sewardj80637752006-03-02 13:48:21 +00001999
2000
njn7fd6d382009-01-22 21:56:32 +00002001#----------------------------------------------------------------------------
2002# Other library checks
2003#----------------------------------------------------------------------------
bart2ef12d42010-10-18 16:32:11 +00002004# There now follow some tests for Boost, and OpenMP. These
sewardj493c4ef2008-12-13 16:45:19 +00002005# tests are present because Drd has some regression tests that use
2006# these packages. All regression test programs all compiled only
2007# for the primary target. And so it is important that the configure
2008# checks that follow, use the correct -m32 or -m64 flag for the
2009# primary target (called $mflag_primary). Otherwise, we can end up
2010# in a situation (eg) where, on amd64-linux, the test for Boost checks
2011# for usable 64-bit Boost facilities, but because we are doing a 32-bit
2012# only build (meaning, the primary target is x86-linux), the build
2013# of the regtest programs that use Boost fails, because they are
2014# build as 32-bit (IN THIS EXAMPLE).
2015#
2016# Hence: ALWAYS USE $mflag_primary FOR CONFIGURE TESTS FOR FACILITIES
2017# NEEDED BY THE REGRESSION TEST PROGRAMS.
2018
2019
sewardj493c4ef2008-12-13 16:45:19 +00002020# Check whether the boost library 1.35 or later has been installed.
2021# The Boost.Threads library has undergone a major rewrite in version 1.35.0.
2022
2023AC_MSG_CHECKING([for boost])
2024
2025AC_LANG(C++)
2026safe_CXXFLAGS=$CXXFLAGS
bart7129c722012-04-18 18:34:22 +00002027CXXFLAGS="$mflag_primary"
2028safe_LIBS="$LIBS"
2029LIBS="-lboost_thread-mt $LIBS"
sewardj493c4ef2008-12-13 16:45:19 +00002030
bart128fc522011-03-12 10:36:35 +00002031AC_LINK_IFELSE([AC_LANG_SOURCE([
sewardj493c4ef2008-12-13 16:45:19 +00002032#include <boost/thread.hpp>
2033static void thread_func(void)
2034{ }
2035int main(int argc, char** argv)
2036{
2037 boost::thread t(thread_func);
2038 return 0;
2039}
bart128fc522011-03-12 10:36:35 +00002040])],
sewardj493c4ef2008-12-13 16:45:19 +00002041[
2042ac_have_boost_1_35=yes
2043AC_SUBST([BOOST_CFLAGS], [])
bartbb31f2d2012-04-18 18:42:34 +00002044AC_SUBST([BOOST_LIBS], [-lboost_thread-mt])
sewardj493c4ef2008-12-13 16:45:19 +00002045AC_MSG_RESULT([yes])
2046], [
2047ac_have_boost_1_35=no
2048AC_MSG_RESULT([no])
2049])
2050
bart7129c722012-04-18 18:34:22 +00002051LIBS="$safe_LIBS"
sewardj493c4ef2008-12-13 16:45:19 +00002052CXXFLAGS=$safe_CXXFLAGS
2053AC_LANG(C)
2054
2055AM_CONDITIONAL([HAVE_BOOST_1_35], [test x$ac_have_boost_1_35 = xyes])
2056
2057
2058# does this compiler support -fopenmp, does it have the include file
2059# <omp.h> and does it have libgomp ?
2060
2061AC_MSG_CHECKING([for OpenMP])
2062
2063safe_CFLAGS=$CFLAGS
sewardjc876a2f2009-01-22 22:44:30 +00002064CFLAGS="-fopenmp $mflag_primary"
sewardj493c4ef2008-12-13 16:45:19 +00002065
bart128fc522011-03-12 10:36:35 +00002066AC_LINK_IFELSE([AC_LANG_SOURCE([
sewardj493c4ef2008-12-13 16:45:19 +00002067#include <omp.h>
2068int main(int argc, char** argv)
2069{
2070 omp_set_dynamic(0);
2071 return 0;
2072}
bart128fc522011-03-12 10:36:35 +00002073])],
sewardj493c4ef2008-12-13 16:45:19 +00002074[
2075ac_have_openmp=yes
2076AC_MSG_RESULT([yes])
2077], [
2078ac_have_openmp=no
2079AC_MSG_RESULT([no])
2080])
2081CFLAGS=$safe_CFLAGS
2082
2083AM_CONDITIONAL([HAVE_OPENMP], [test x$ac_have_openmp = xyes])
2084
2085
bart78bfc712011-12-08 16:14:59 +00002086# does this compiler have built-in functions for atomic memory access for the
2087# primary target ?
2088AC_MSG_CHECKING([if gcc supports __sync_add_and_fetch for the primary target])
sewardjc876a2f2009-01-22 22:44:30 +00002089
2090safe_CFLAGS=$CFLAGS
2091CFLAGS="$mflag_primary"
2092
bart417cf3e2011-10-22 09:21:24 +00002093AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
sewardjc876a2f2009-01-22 22:44:30 +00002094 int variable = 1;
2095 return (__sync_bool_compare_and_swap(&variable, 1, 2)
2096 && __sync_add_and_fetch(&variable, 1) ? 1 : 0)
bart417cf3e2011-10-22 09:21:24 +00002097]])], [
bartb4ff7822011-12-10 19:48:04 +00002098 ac_have_builtin_atomic_primary=yes
sewardjc876a2f2009-01-22 22:44:30 +00002099 AC_MSG_RESULT([yes])
bart78bfc712011-12-08 16:14:59 +00002100 AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Define to 1 if gcc supports __sync_bool_compare_and_swap() and __sync_add_and_fetch() for the primary target])
bart417cf3e2011-10-22 09:21:24 +00002101], [
bartb4ff7822011-12-10 19:48:04 +00002102 ac_have_builtin_atomic_primary=no
sewardjc876a2f2009-01-22 22:44:30 +00002103 AC_MSG_RESULT([no])
2104])
2105
2106CFLAGS=$safe_CFLAGS
2107
bartb4ff7822011-12-10 19:48:04 +00002108AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC],
2109 [test x$ac_have_builtin_atomic_primary = xyes])
bartc82d1372009-05-31 16:21:23 +00002110
bart78bfc712011-12-08 16:14:59 +00002111
2112# does this compiler have built-in functions for atomic memory access for the
2113# secondary target ?
2114
2115if test x$VGCONF_PLATFORM_SEC_CAPS != x; then
2116
2117AC_MSG_CHECKING([if gcc supports __sync_add_and_fetch for the secondary target])
2118
2119safe_CFLAGS=$CFLAGS
2120CFLAGS="$mflag_secondary"
2121
2122AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
2123 int variable = 1;
2124 return (__sync_add_and_fetch(&variable, 1) ? 1 : 0)
2125]])], [
2126 ac_have_builtin_atomic_secondary=yes
2127 AC_MSG_RESULT([yes])
2128], [
2129 ac_have_builtin_atomic_secondary=no
2130 AC_MSG_RESULT([no])
2131])
2132
2133CFLAGS=$safe_CFLAGS
2134
2135fi
2136
2137AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC_SECONDARY],
2138 [test x$ac_have_builtin_atomic_secondary = xyes])
2139
bart1e856ea2011-12-17 12:53:23 +00002140# does this compiler have built-in functions for atomic memory access on
2141# 64-bit integers for all targets ?
2142
2143AC_MSG_CHECKING([if gcc supports __sync_add_and_fetch on uint64_t for all targets])
2144
2145AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2146 #include <stdint.h>
2147]], [[
2148 uint64_t variable = 1;
2149 return __sync_add_and_fetch(&variable, 1)
2150]])], [
2151 ac_have_builtin_atomic64_primary=yes
2152], [
2153 ac_have_builtin_atomic64_primary=no
2154])
2155
2156if test x$VGCONF_PLATFORM_SEC_CAPS != x; then
2157
2158safe_CFLAGS=$CFLAGS
2159CFLAGS="$mflag_secondary"
2160
2161AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2162 #include <stdint.h>
2163]], [[
2164 uint64_t variable = 1;
2165 return __sync_add_and_fetch(&variable, 1)
2166]])], [
2167 ac_have_builtin_atomic64_secondary=yes
2168], [
2169 ac_have_builtin_atomic64_secondary=no
2170])
2171
2172CFLAGS=$safe_CFLAGS
2173
2174fi
2175
2176if test x$ac_have_builtin_atomic64_primary = xyes && \
2177 test x$VGCONF_PLATFORM_SEC_CAPS = x \
2178 -o x$ac_have_builtin_atomic64_secondary = xyes; then
2179 AC_MSG_RESULT([yes])
2180 ac_have_builtin_atomic64=yes
2181else
2182 AC_MSG_RESULT([no])
2183 ac_have_builtin_atomic64=no
2184fi
2185
2186AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC64],
2187 [test x$ac_have_builtin_atomic64 = xyes])
2188
bart78bfc712011-12-08 16:14:59 +00002189
barte8740422011-03-24 20:27:54 +00002190# does g++ have built-in functions for atomic memory access ?
bart78bfc712011-12-08 16:14:59 +00002191AC_MSG_CHECKING([if g++ supports __sync_add_and_fetch])
barte8740422011-03-24 20:27:54 +00002192
2193safe_CXXFLAGS=$CXXFLAGS
2194CXXFLAGS="$mflag_primary"
2195
2196AC_LANG_PUSH(C++)
bart417cf3e2011-10-22 09:21:24 +00002197AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
barte8740422011-03-24 20:27:54 +00002198 int variable = 1;
2199 return (__sync_bool_compare_and_swap(&variable, 1, 2)
2200 && __sync_add_and_fetch(&variable, 1) ? 1 : 0)
bart417cf3e2011-10-22 09:21:24 +00002201]])], [
barte8740422011-03-24 20:27:54 +00002202 ac_have_builtin_atomic_cxx=yes
2203 AC_MSG_RESULT([yes])
2204 AC_DEFINE(HAVE_BUILTIN_ATOMIC_CXX, 1, [Define to 1 if g++ supports __sync_bool_compare_and_swap() and __sync_add_and_fetch()])
bart417cf3e2011-10-22 09:21:24 +00002205], [
barte8740422011-03-24 20:27:54 +00002206 ac_have_builtin_atomic_cxx=no
2207 AC_MSG_RESULT([no])
2208])
2209AC_LANG_POP(C++)
2210
2211CXXFLAGS=$safe_CXXFLAGS
2212
2213AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC_CXX], [test x$ac_have_builtin_atomic_cxx = xyes])
sewardjc876a2f2009-01-22 22:44:30 +00002214
bart78bfc712011-12-08 16:14:59 +00002215
2216if test x$ac_have_usable_linux_futex_h = xyes \
bartb4ff7822011-12-10 19:48:04 +00002217 -a x$ac_have_builtin_atomic_primary = xyes; then
bart78bfc712011-12-08 16:14:59 +00002218 ac_enable_linux_ticket_lock_primary=yes
2219fi
2220AM_CONDITIONAL([ENABLE_LINUX_TICKET_LOCK_PRIMARY],
2221 [test x$ac_enable_linux_ticket_lock_primary = xyes])
2222
2223if test x$VGCONF_PLATFORM_SEC_CAPS != x \
2224 -a x$ac_have_usable_linux_futex_h = xyes \
2225 -a x$ac_have_builtin_atomic_secondary = xyes; then
2226 ac_enable_linux_ticket_lock_secondary=yes
2227fi
2228AM_CONDITIONAL([ENABLE_LINUX_TICKET_LOCK_SECONDARY],
2229 [test x$ac_enable_linux_ticket_lock_secondary = xyes])
2230
2231
bartf68af882011-12-10 19:42:05 +00002232# does libstdc++ support annotating shared pointers ?
2233AC_MSG_CHECKING([if libstdc++ supports annotating shared pointers])
2234
2235safe_CXXFLAGS=$CFLAGS
2236CXXFLAGS="-std=c++0x"
2237
2238AC_LANG_PUSH(C++)
2239AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2240 #include <memory>
2241]], [[
2242 std::shared_ptr<int> p
2243]])], [
2244 ac_have_shared_ptr=yes
2245], [
2246 ac_have_shared_ptr=no
2247])
2248if test x$ac_have_shared_ptr = xyes; then
2249 # If compilation of the program below fails because of a syntax error
2250 # triggered by substituting one of the annotation macros then that
2251 # means that libstdc++ supports these macros.
2252 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2253 #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(a) (a)----
2254 #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(a) (a)----
2255 #include <memory>
2256 ]], [[
2257 std::shared_ptr<int> p
2258 ]])], [
2259 ac_have_shared_pointer_annotation=no
2260 AC_MSG_RESULT([no])
2261 ], [
2262 ac_have_shared_pointer_annotation=yes
2263 AC_MSG_RESULT([yes])
2264 AC_DEFINE(HAVE_SHARED_POINTER_ANNOTATION, 1,
2265 [Define to 1 if libstd++ supports annotating shared pointers])
2266 ])
2267else
2268 ac_have_shared_pointer_annotation=no
2269 AC_MSG_RESULT([no])
2270fi
2271AC_LANG_POP(C++)
2272
2273CXXFLAGS=$safe_CXXFLAGS
2274
2275AM_CONDITIONAL([HAVE_SHARED_POINTER_ANNOTATION],
2276 [test x$ac_have_shared_pointer_annotation = xyes])
2277
2278
njn7fd6d382009-01-22 21:56:32 +00002279#----------------------------------------------------------------------------
2280# Ok. We're done checking.
2281#----------------------------------------------------------------------------
sewardj80637752006-03-02 13:48:21 +00002282
njn8b68b642009-06-24 00:37:09 +00002283# Nb: VEX/Makefile is generated from Makefile.vex.in.
2284AC_CONFIG_FILES([
sewardjde4a1d02002-03-22 01:27:54 +00002285 Makefile
njn8b68b642009-06-24 00:37:09 +00002286 VEX/Makefile:Makefile.vex.in
njn25cac76cb2002-09-23 11:21:57 +00002287 valgrind.spec
muellerbddd6072003-11-19 21:50:07 +00002288 valgrind.pc
dirk07596a22008-04-25 11:33:30 +00002289 glibc-2.X.supp
njn254d542432002-09-23 16:09:39 +00002290 docs/Makefile
2291 tests/Makefile
njnc2e7f482002-09-27 08:44:17 +00002292 tests/vg_regtest
njnec0c27a2005-12-10 23:11:28 +00002293 perf/Makefile
2294 perf/vg_perf
sewardj3b290482011-05-06 21:02:55 +00002295 gdbserver_tests/Makefile
njn254d542432002-09-23 16:09:39 +00002296 include/Makefile
njn7a6e7462002-11-09 17:53:30 +00002297 auxprogs/Makefile
njn8b68b642009-06-24 00:37:09 +00002298 mpi/Makefile
njn25ab726032002-09-23 16:24:41 +00002299 coregrind/Makefile
njn25cac76cb2002-09-23 11:21:57 +00002300 memcheck/Makefile
2301 memcheck/tests/Makefile
njnc6168192004-11-29 13:54:10 +00002302 memcheck/tests/amd64/Makefile
njnc6168192004-11-29 13:54:10 +00002303 memcheck/tests/x86/Makefile
njn3b3b76d2009-01-19 03:44:19 +00002304 memcheck/tests/linux/Makefile
njnf76d27a2009-05-28 01:53:07 +00002305 memcheck/tests/darwin/Makefile
njnea2d6fd2010-07-01 00:20:20 +00002306 memcheck/tests/amd64-linux/Makefile
njna454ec02009-01-19 03:16:59 +00002307 memcheck/tests/x86-linux/Makefile
sewardj0e342a02010-09-03 23:49:33 +00002308 memcheck/tests/ppc32/Makefile
2309 memcheck/tests/ppc64/Makefile
florian0bb707e2012-05-30 20:46:58 +00002310 memcheck/tests/s390x/Makefile
njn25cac76cb2002-09-23 11:21:57 +00002311 cachegrind/Makefile
njn25cac76cb2002-09-23 11:21:57 +00002312 cachegrind/tests/Makefile
njnc6168192004-11-29 13:54:10 +00002313 cachegrind/tests/x86/Makefile
njnf2df9b52002-10-04 11:35:47 +00002314 cachegrind/cg_annotate
njn69d495d2010-06-30 05:23:34 +00002315 cachegrind/cg_diff
weidendoa17f2a32006-03-20 10:27:30 +00002316 callgrind/Makefile
2317 callgrind/callgrind_annotate
2318 callgrind/callgrind_control
2319 callgrind/tests/Makefile
njn25cac76cb2002-09-23 11:21:57 +00002320 helgrind/Makefile
njnf2df9b52002-10-04 11:35:47 +00002321 helgrind/tests/Makefile
nethercotec9f36922004-02-14 16:40:02 +00002322 massif/Makefile
nethercotec9f36922004-02-14 16:40:02 +00002323 massif/tests/Makefile
njnd5a8d242007-11-02 20:44:57 +00002324 massif/ms_print
njn25cac76cb2002-09-23 11:21:57 +00002325 lackey/Makefile
njnf2df9b52002-10-04 11:35:47 +00002326 lackey/tests/Makefile
njn25cac76cb2002-09-23 11:21:57 +00002327 none/Makefile
2328 none/tests/Makefile
njnc6168192004-11-29 13:54:10 +00002329 none/tests/amd64/Makefile
cerion85665ca2005-06-20 15:51:07 +00002330 none/tests/ppc32/Makefile
sewardj2c48c7b2005-11-29 13:05:56 +00002331 none/tests/ppc64/Makefile
njnc6168192004-11-29 13:54:10 +00002332 none/tests/x86/Makefile
sewardj59570ff2010-01-01 11:59:33 +00002333 none/tests/arm/Makefile
sewardjb5b87402011-03-07 16:05:35 +00002334 none/tests/s390x/Makefile
sewardj5db15402012-06-07 09:13:21 +00002335 none/tests/mips32/Makefile
njn0458a122009-02-13 06:23:46 +00002336 none/tests/linux/Makefile
njnf76d27a2009-05-28 01:53:07 +00002337 none/tests/darwin/Makefile
njn06ca3322009-04-15 23:10:04 +00002338 none/tests/x86-linux/Makefile
sewardjd2f95a02011-05-11 16:04:28 +00002339 exp-sgcheck/Makefile
2340 exp-sgcheck/tests/Makefile
bartccf17de2008-07-04 15:14:35 +00002341 drd/Makefile
bartccf17de2008-07-04 15:14:35 +00002342 drd/scripts/download-and-build-splash2
2343 drd/tests/Makefile
njndbebecc2009-07-14 01:39:54 +00002344 exp-bbv/Makefile
njndbebecc2009-07-14 01:39:54 +00002345 exp-bbv/tests/Makefile
2346 exp-bbv/tests/x86/Makefile
2347 exp-bbv/tests/x86-linux/Makefile
2348 exp-bbv/tests/amd64-linux/Makefile
2349 exp-bbv/tests/ppc32-linux/Makefile
vince226e0782010-01-06 15:22:11 +00002350 exp-bbv/tests/arm-linux/Makefile
sewardj4d7d8f52010-10-12 10:09:15 +00002351 exp-dhat/Makefile
2352 exp-dhat/tests/Makefile
njn8b68b642009-06-24 00:37:09 +00002353])
sewardjd3645802010-06-13 22:13:58 +00002354AC_CONFIG_FILES([coregrind/link_tool_exe_linux],
2355 [chmod +x coregrind/link_tool_exe_linux])
2356AC_CONFIG_FILES([coregrind/link_tool_exe_darwin],
2357 [chmod +x coregrind/link_tool_exe_darwin])
njn8b68b642009-06-24 00:37:09 +00002358AC_OUTPUT
gobry3b777892002-04-04 09:18:39 +00002359
2360cat<<EOF
2361
njn311303f2009-02-06 03:46:50 +00002362 Maximum build arch: ${ARCH_MAX}
2363 Primary build arch: ${VGCONF_ARCH_PRI}
njn3f8a6e92009-06-02 00:20:47 +00002364 Secondary build arch: ${VGCONF_ARCH_SEC}
njn311303f2009-02-06 03:46:50 +00002365 Build OS: ${VGCONF_OS}
njn7fd6d382009-01-22 21:56:32 +00002366 Primary build target: ${VGCONF_PLATFORM_PRI_CAPS}
2367 Secondary build target: ${VGCONF_PLATFORM_SEC_CAPS}
sewardjcb495c82011-07-11 20:42:34 +00002368 Platform variant: ${VGCONF_PLATVARIANT}
2369 Primary -DVGPV string: -DVGPV_${VGCONF_ARCH_PRI}_${VGCONF_OS}_${VGCONF_PLATVARIANT}=1
sewardje95d94f2008-09-19 09:02:19 +00002370 Default supp files: ${DEFAULT_SUPP}
gobry3b777892002-04-04 09:18:39 +00002371
gobry3b777892002-04-04 09:18:39 +00002372EOF