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