*** empty log message ***
[platform/upstream/binutils.git] / gold / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl
3 dnl   Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
4 dnl   Free Software Foundation, Inc.
5 dnl
6 dnl This file is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 3 of the License, or
9 dnl (at your option) any later version.
10 dnl 
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 dnl GNU General Public License for more details.
15 dnl 
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; see the file COPYING3.  If not see
18 dnl <http://www.gnu.org/licenses/>.
19 dnl
20
21 AC_PREREQ(2.59)
22
23 AC_INIT(gold, 0.1)
24 AC_CONFIG_SRCDIR(gold.cc)
25
26 AC_CANONICAL_TARGET
27
28 AM_INIT_AUTOMAKE([no-dist parallel-tests])
29
30 AM_CONFIG_HEADER(config.h:config.in)
31
32 # PR 14072
33 AH_VERBATIM([00_CONFIG_H_CHECK],
34 [/* Check that config.h is #included before system headers
35    (this works only for glibc, but that should be enough).  */
36 #if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
37 #  error config.h must be #included before system headers
38 #endif
39 #define __CONFIG_H__ 1])
40
41 AC_ARG_WITH(sysroot,
42 [  --with-sysroot[=DIR]    search for usr/lib et al within DIR],
43 [sysroot=$withval], [sysroot=no])
44
45 if test "$sysroot" = "yes"; then
46   sysroot='${exec_prefix}/${target_alias}/sys-root'
47 elif test "$sysroot" = "no"; then
48   sysroot=
49 fi
50
51 sysroot_relocatable=0
52 if test -n "$sysroot"; then
53   case "sysroot" in
54     "${prefix}" | "${prefix}/"* | \
55     "${exec_prefix}" | "${exec_prefix}/"* | \
56     '${prefix}' | '${prefix}/'*| \
57     '${exec_prefix}' | '${exec_prefix}/'*)
58       sysroot_relocatable=1
59       ;;
60   esac
61 fi
62
63 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
64   [System root for target files])
65 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
66   [Whether the system root can be relocated])
67
68 dnl "install_as_default" is true if the linker to be installed as the
69 dnl default linker, ld.
70 dnl "installed_linker" is the installed gold linker name.
71
72 installed_linker=ld.gold
73 AC_ARG_ENABLE(gold,
74 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
75 [case "${enableval}" in
76  default)
77    install_as_default=yes
78    ;;
79  yes)
80    if test x${enable_ld} = xno; then
81      install_as_default=yes
82    fi
83    ;;
84  esac],
85 [install_as_default=no])
86 AC_SUBST(install_as_default)
87 AC_SUBST(installed_linker)
88
89 dnl For now threads are a configure time option.
90 AC_ARG_ENABLE([threads],
91 [  --enable-threads        multi-threaded linking],
92 [case "${enableval}" in
93   yes | "") threads=yes ;;
94   no) threads=no ;;
95   *) threads=yes ;;
96  esac],
97 [threads=no])
98 if test "$threads" = "yes"; then
99   AC_DEFINE(ENABLE_THREADS, 1,
100             [Define to do multi-threaded linking])
101 fi
102 AM_CONDITIONAL(THREADS, test "$threads" = "yes")
103
104 AC_ARG_ENABLE([plugins],
105 [  --enable-plugins        linker plugins],
106 [case "${enableval}" in
107   yes | "") plugins=yes ;;
108   no) plugins=no ;;
109   *) plugins=yes ;;
110  esac],
111 [plugins=no])
112 if test "$plugins" = "yes"; then
113   AC_DEFINE(ENABLE_PLUGINS, 1,
114             [Define to enable linker plugins])
115 fi
116 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
117
118 AC_ARG_ENABLE([targets],
119 [  --enable-targets        alternative target configurations],
120 [case "${enableval}" in
121   yes | "")
122     AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
123     ;;
124   no)
125     enable_targets=
126     ;;
127   *)
128     enable_targets=$enableval
129     ;;
130 esac],
131 [# For now, enable all targets by default
132  enable_targets=all
133 ])
134
135 # Canonicalize the enabled targets.
136 if test -n "$enable_targets"; then
137   for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
138     result=`$ac_config_sub $targ 2>/dev/null`
139     if test -n "$result"; then
140       canon_targets="$canon_targets $result"
141     else
142       # Permit unrecognized target names, like "all".
143       canon_targets="$canon_targets $targ"
144     fi
145   done
146 fi
147
148 # See which specific instantiations we need.
149 targetobjs=
150 all_targets=
151 default_machine=
152 default_size=
153 default_big_endian=
154 default_osabi=ELFOSABI_NONE
155 targ_32_little=
156 targ_32_big=
157 targ_64_little=
158 targ_64_big=
159 for targ in $target $canon_targets; do
160   if test "$targ" = "all"; then
161     targ_32_little=yes
162     targ_32_big=yes
163     targ_64_little=yes
164     targ_64_big=yes
165     all_targets=yes
166   else
167     . ${srcdir}/configure.tgt
168
169     if test "$targ_obj" = "UNKNOWN"; then
170       AC_MSG_ERROR("unsupported target $targ")
171     else
172       targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
173       if test "$targ_extra_obj" != ""; then
174         targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
175       fi
176       if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
177           if test "$targ_big_endian" = "true" \
178               -o "$targ_extra_big_endian" = "true"; then
179               targ_32_big=yes
180           fi
181           if test "$targ_big_endian" = "false" \
182               -o "$targ_extra_big_endian" = "false"; then
183               targ_32_little=yes
184           fi
185       fi
186       if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
187           if test "$targ_big_endian" = "true" \
188               -o "$targ_extra_big_endian" = "true"; then
189               targ_64_big=yes
190           fi
191           if test "$targ_big_endian" = "false" \
192               -o "$targ_extra_big_endian" = "false"; then
193               targ_64_little=yes
194           fi
195       fi
196
197       if test "$target" = "$targ"; then
198         default_machine=$targ_machine
199         default_size=$targ_size
200         default_big_endian=$targ_big_endian
201         default_osabi=$targ_osabi
202
203         AM_CONDITIONAL(DEFAULT_TARGET_ARM, test "$targ_obj" = "arm")
204         AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
205         AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
206         AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
207         AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$targ_obj" = "x86_64")
208         AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
209       fi
210     fi
211   fi
212 done
213
214 # Remove any duplicates.
215 to=""
216 for t in $targetobjs; do
217   case " $to " in
218   *" $t "*) ;;
219   *) to="$to $t" ;;
220   esac
221 done
222 targetobjs=$to
223
224 if test -n "$targ_32_little"; then
225   AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
226               [Define to support 32-bit little-endian targets])
227 fi
228 if test -n "$targ_32_big"; then
229   AC_DEFINE(HAVE_TARGET_32_BIG, 1,
230               [Define to support 32-bit big-endian targets])
231 fi
232 if test -n "$targ_64_little"; then
233   AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
234               [Define to support 64-bit little-endian targets])
235 fi
236 if test -n "$targ_64_big"; then
237   AC_DEFINE(HAVE_TARGET_64_BIG, 1,
238               [Define to support 64-bit big-endian targets])
239 fi
240
241 if test -n "$all_targets"; then
242   TARGETOBJS='$(ALL_TARGETOBJS)'
243 else
244   TARGETOBJS="$targetobjs"
245 fi
246 AC_SUBST(TARGETOBJS)
247
248 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
249                    [Default machine code])
250 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
251                    [Default size (32 or 64)])
252 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
253                    [Default big endian (true or false)])
254 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
255                    [Default OSABI code])
256
257 AC_ARG_WITH(lib-path,
258 [  --with-lib-path=dir1:dir2...  set default LIB_PATH],
259 [case "$withval" in
260  yes) LIB_PATH='"/lib:/usr/lib"' ;;
261  no) LIB_PATH='""' ;;
262  *) LIB_PATH='"'"$withval"'"' ;;
263  esac],
264 [LIB_PATH='"::DEFAULT::"'])
265 AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
266                    [Default library search path])
267 if test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias"; then
268   AC_DEFINE(NATIVE_LINKER, 1, [Whether configured as a native linker])
269 fi
270
271 AC_CHECK_TOOL(NM, nm)
272
273 AC_PROG_CC
274 AC_PROG_CXX
275 AC_PROG_YACC
276 AC_PROG_RANLIB
277 AC_PROG_INSTALL
278 AC_PROG_LN_S
279
280 AC_GNU_SOURCE
281
282 ZW_GNU_GETTEXT_SISTER_DIR
283 AM_PO_SUBDIRS
284
285 AC_C_BIGENDIAN
286
287 AC_EXEEXT
288
289 AM_CONDITIONAL(NATIVE_LINKER,
290   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
291 AM_CONDITIONAL(GCC, test "$GCC" = yes)
292
293 AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
294   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
295
296 dnl Test for whether static linking is supported.  Some systems do not
297 dnl install static libraries.  This only affects the set of tests that
298 dnl we run.
299 AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
300 [LDFLAGS_hold=$LDFLAGS
301 LDFLAGS="$LDFLAGS -static"
302 AC_LINK_IFELSE([
303 AC_LANG_PROGRAM([[void f() { }]])],
304 [gold_cv_lib_static=yes], [gold_cv_lib_static=no])
305 LDFLAGS=$LDFLAGS_hold])
306 AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
307
308 dnl Some architectures do not support taking pointers of functions
309 dnl defined in shared libraries except in -fPIC mode.  We need to
310 dnl tell the unittest framework if we're compiling for one of those
311 dnl targets, so it doesn't try to run the tests that do that.
312 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
313   case $target_cpu in
314     powerpc*) false;;
315     x86_64) false;;
316     sparc64) false;;
317     *) true;;
318   esac])
319
320 dnl Test for gcc 4.1 or later.  Full support for -mcmodel=medium is
321 dnl only available in gcc 4.1.
322 AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
323 [AC_COMPILE_IFELSE([
324 #if !defined __GNUC__
325 error
326 #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
327 error
328 #endif
329 ], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
330
331 save_CFLAGS="$CFLAGS"
332 CFLAGS="$CFLAGS -mcmodel=medium"
333 AC_COMPILE_IFELSE([int i;], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
334 CFLAGS="$save_CFLAGS"
335 dnl Whether we can test -mcmodel=medium.
336 AM_CONDITIONAL(MCMODEL_MEDIUM,
337 [test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
338
339 dnl Test for __thread support.
340 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
341 [AC_COMPILE_IFELSE([__thread int i = 1;],
342 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
343
344 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
345
346 dnl On GNU/Linux TLS in static programs only works when using glibc
347 dnl 2.4 or later.
348 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
349 [AC_COMPILE_IFELSE([
350 #include <features.h>
351 #if !defined __GLIBC__
352 error
353 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
354 error
355 #endif
356 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
357
358 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
359
360 dnl Test for #pragma omp threadprivate
361 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
362 [save_CFLAGS="$CFLAGS"
363 CFLAGS="$CFLAGS -fopenmp"
364 AC_COMPILE_IFELSE([
365 #include <omp.h>
366 int i;
367 #pragma omp threadprivate (i)
368 ], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
369 CFLAGS="$save_CFLAGS"])
370 if test "$gold_cv_c_threadprivate" = "yes"; then
371   AC_DEFINE(HAVE_OMP_SUPPORT, 1,
372             [Define if compiler supports #pragma omp threadprivate])
373 fi
374 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
375
376 dnl Test for the -ftls-dialect=gnu2 option.
377 save_CFLAGS="$CFLAGS"
378 CFLAGS="$CFLAGS -fpic -mtls-dialect=gnu2"
379 AC_COMPILE_IFELSE([
380 __thread int i;
381 void foo (void)
382 {
383   i = 10;
384 }
385 ], [have_tls_gnu2=yes], [have_tls_gnu2=no])
386 CFLAGS="$save_CFLAGS"
387 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
388
389 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
390 dnl only with glibc 2.9 or later.
391 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
392 [AC_COMPILE_IFELSE([
393 #include <features.h>
394 #if !defined __GLIBC__
395 error
396 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
397 error
398 #endif
399 ], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
400
401 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
402
403 dnl Test for the -frandom-seed option.
404 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
405 [save_CFLAGS="$CFLAGS"
406 CFLAGS="$CFLAGS -frandom-seed=foo"
407 AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
408 [gold_cv_c_random_seed=no])
409 CFLAGS="$save_CFLAGS"])
410 if test "$gold_cv_c_random_seed" = "yes"; then
411   # In Makefile, '$@' will be expanded to be the name of the file
412   # being built, providing a unique seed for each file.
413   RANDOM_SEED_CFLAGS=-frandom-seed=\$@
414 fi
415 AC_SUBST(RANDOM_SEED_CFLAGS)
416
417 dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
418 dnl 2.11 or later, and by binutils 2.20.1 or later.
419 AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
420 [save_LDFLAGS="$LDFLAGS"
421 LDFLAGS="$LDFLAGS -static"
422 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
423 #include <features.h>
424 #if !defined __GLIBC__
425 error
426 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
427 error
428 #endif
429 void func (void) { }
430 void invoke (void);
431 __asm__(".type invoke, %gnu_indirect_function");
432 typedef void (*funcptr) (void);
433 funcptr dispatch (void) __asm__ ("invoke");
434 funcptr dispatch (void) { return &func; }]],
435 [[invoke();]])
436 ], [
437 if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
438   gold_cv_lib_glibc_ifunc=both
439 else
440   gold_cv_lib_glibc_ifunc=dyn
441 fi], [gold_cv_lib_glibc_ifunc=no])
442 LDFLAGS="$save_LDFLAGS"])
443
444 AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
445 AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
446
447 AM_BINUTILS_WARNINGS
448
449 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
450 AC_SUBST(WARN_CXXFLAGS)
451
452 AC_ARG_WITH(gold-ldflags,
453 [  --with-gold-ldflags=FLAGS  additional link flags for gold],
454 [if test "$withval" = "no" -o "$withval" = "yes"; then
455    GOLD_LDFLAGS=
456  else
457    GOLD_LDFLAGS=$withval
458  fi],
459 [GOLD_LDFLAGS=])
460 AC_SUBST(GOLD_LDFLAGS)
461
462 AC_ARG_WITH(gold-ldadd,
463 [  --with-gold-ldadd=LIBS     additional libraries for gold],
464 [if test "$withval" = "no" -o "$withval" = "yes"; then
465    GOLD_LDADD=
466  else
467    GOLD_LDADD=$withval
468  fi],
469 [GOLD_LDADD=])
470 AC_SUBST(GOLD_LDADD)
471
472 dnl Force support for large files by default.  This may need to be
473 dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
474 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
475 AC_SUBST(LFS_CFLAGS)
476
477 AC_CHECK_HEADERS(sys/mman.h)
478 AC_CHECK_FUNCS(chsize mmap)
479 AC_REPLACE_FUNCS(pread ftruncate ffsll)
480
481 AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
482 [AC_LINK_IFELSE([
483 AC_LANG_PROGRAM([[
484 #include <sys/mman.h>
485 void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
486 ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
487 if test "$gold_cv_lib_mremap_maymove" = "yes"; then
488   AC_DEFINE(HAVE_MREMAP, 1,
489     [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
490 else
491   AC_LIBOBJ(mremap)
492 fi
493
494 # Link in zlib if we can.  This allows us to write compressed sections.
495 AM_ZLIB
496 AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes")
497
498 dnl We have to check these in C, not C++, because autoconf generates
499 dnl tests which have no type information, and current glibc provides
500 dnl multiple declarations of functions like basename when compiling
501 dnl with C++.
502 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
503
504 AC_LANG_PUSH(C++)
505
506 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
507 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
508 AC_CHECK_HEADERS(byteswap.h)
509
510 dnl When plugins enabled dynamic loader interface is required. Check headers
511 dnl which may provide this interface. In case of dlfcn.h add libdl to link.
512 AC_CHECK_HEADERS(windows.h)
513 AC_CHECK_HEADERS(dlfcn.h, [DLOPEN_LIBS="-ldl"], [DLOPEN_LIBS=""])
514 AC_SUBST(DLOPEN_LIBS)
515
516 AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
517 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
518
519 # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
520 # at link time with some versions of GCC.
521 AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
522 [gold_cv_unordered_map_rehash],
523 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
524 #include <tr1/unordered_map>
525 void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
526 ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
527 if test "$gold_cv_unordered_map_rehash" = "yes"; then
528   AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
529             [Define if ::std::tr1::unordered_map::rehash is usable])
530 fi
531
532 # Use of tr1/unordered_map with off_t as a key is not supported on GCC
533 # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
534 AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
535 [gold_cv_hash_off_t],
536 [CXXFLAGS_hold=$CXXFLAGS
537 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
538 AC_COMPILE_IFELSE([
539 #include <sys/types.h>
540 #include <tr1/unordered_map>
541 std::tr1::hash<off_t> h;
542 ],
543 [gold_cv_hash_off_t=yes],
544 [gold_cv_hash_off_t=no])
545 CXXFLAGS=$CXXFLAGS_hold])
546 if test "$gold_cv_hash_off_t" = "yes"; then
547    AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
548              [Define if std::tr1::hash<off_t> is usable])
549 fi
550
551 # gcc 4.3.0 doesn't recognize the printf attribute on a template
552 # function.  Check for that.  This is gcc bug 35546.  This test can
553 # probably be removed after the bug has been fixed for a while.
554 AC_CACHE_CHECK([whether we can use attributes with template functions],
555 [gold_cv_template_attribute],
556 [AC_COMPILE_IFELSE([
557 template<typename T> extern void foo(const char*, ...)
558   __attribute__ ((__format__ (__printf__, 1, 2)));
559 template<typename T> void foo(const char* format, ...) {}
560 void bar() { foo<int>("%s\n", "foo"); }
561 ], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
562 if test "$gold_cv_template_attribute" = "yes"; then
563   AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
564             [Define if attributes work on C++ templates])
565 fi
566
567 dnl Check if the system has struct stat::st_mtim.
568 AC_CACHE_CHECK([for struct stat::st_mtim.],
569 [gold_cv_stat_st_mtim],
570 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
571 #include <sys/stat.h>
572 long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
573 ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
574 if test "$gold_cv_stat_st_mtim" = "yes"; then
575   AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
576             [Define if struct stat has a field st_mtim with timespec for mtime])
577 fi
578
579 dnl Check if gcc supports the -gpubnames option.
580 save_CXXFLAGS="$CXXFLAGS"
581 CXXFLAGS="$CXXFLAGS -gpubnames"
582 AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
583 CXXFLAGS="$save_CXXFLAGS"
584 AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
585
586 AC_LANG_POP(C++)
587
588 AC_CHECK_HEADERS(locale.h)
589 AC_CHECK_FUNCS(setlocale)
590 AM_LC_MESSAGES
591
592 AM_MAINTAINER_MODE
593
594 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)