ld/
[external/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         DEFAULT_TARGET=${targ_obj}
210         AC_SUBST(DEFAULT_TARGET)
211       fi
212     fi
213   fi
214 done
215
216 # Remove any duplicates.
217 to=""
218 for t in $targetobjs; do
219   case " $to " in
220   *" $t "*) ;;
221   *) to="$to $t" ;;
222   esac
223 done
224 targetobjs=$to
225
226 if test -n "$targ_32_little"; then
227   AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
228               [Define to support 32-bit little-endian targets])
229 fi
230 if test -n "$targ_32_big"; then
231   AC_DEFINE(HAVE_TARGET_32_BIG, 1,
232               [Define to support 32-bit big-endian targets])
233 fi
234 if test -n "$targ_64_little"; then
235   AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
236               [Define to support 64-bit little-endian targets])
237 fi
238 if test -n "$targ_64_big"; then
239   AC_DEFINE(HAVE_TARGET_64_BIG, 1,
240               [Define to support 64-bit big-endian targets])
241 fi
242
243 if test -n "$all_targets"; then
244   TARGETOBJS='$(ALL_TARGETOBJS)'
245 else
246   TARGETOBJS="$targetobjs"
247 fi
248 AC_SUBST(TARGETOBJS)
249
250 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
251                    [Default machine code])
252 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
253                    [Default size (32 or 64)])
254 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
255                    [Default big endian (true or false)])
256 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
257                    [Default OSABI code])
258
259 AC_ARG_WITH(lib-path,
260 [  --with-lib-path=dir1:dir2...  set default LIB_PATH],
261 [case "$withval" in
262  yes) LIB_PATH='"/lib:/usr/lib"' ;;
263  no) LIB_PATH='""' ;;
264  *) LIB_PATH='"'"$withval"'"' ;;
265  esac],
266 [LIB_PATH='"::DEFAULT::"'])
267 AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
268                    [Default library search path])
269 if test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias"; then
270   AC_DEFINE(NATIVE_LINKER, 1, [Whether configured as a native linker])
271 fi
272
273 AC_CHECK_TOOL(NM, nm)
274
275 AC_PROG_CC
276 AC_PROG_CXX
277 AC_PROG_YACC
278 AC_PROG_RANLIB
279 AC_PROG_INSTALL
280 AC_PROG_LN_S
281
282 AC_GNU_SOURCE
283
284 ZW_GNU_GETTEXT_SISTER_DIR
285 AM_PO_SUBDIRS
286
287 AC_C_BIGENDIAN
288
289 AC_EXEEXT
290
291 AM_CONDITIONAL(NATIVE_LINKER,
292   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
293 AM_CONDITIONAL(GCC, test "$GCC" = yes)
294
295 AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
296   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
297
298 dnl Test for whether static linking is supported.  Some systems do not
299 dnl install static libraries.  This only affects the set of tests that
300 dnl we run.
301 AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
302 [LDFLAGS_hold=$LDFLAGS
303 LDFLAGS="$LDFLAGS -static"
304 AC_LINK_IFELSE([
305 AC_LANG_PROGRAM([[void f() { }]])],
306 [gold_cv_lib_static=yes], [gold_cv_lib_static=no])
307 LDFLAGS=$LDFLAGS_hold])
308 AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
309
310 dnl Some architectures do not support taking pointers of functions
311 dnl defined in shared libraries except in -fPIC mode.  We need to
312 dnl tell the unittest framework if we're compiling for one of those
313 dnl targets, so it doesn't try to run the tests that do that.
314 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
315   case $target_cpu in
316     powerpc*) false;;
317     x86_64) false;;
318     sparc64) false;;
319     *) true;;
320   esac])
321
322 dnl Test for gcc 4.1 or later.  Full support for -mcmodel=medium is
323 dnl only available in gcc 4.1.
324 AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
325 [AC_COMPILE_IFELSE([
326 #if !defined __GNUC__
327 error
328 #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
329 error
330 #endif
331 ], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
332
333 save_CFLAGS="$CFLAGS"
334 CFLAGS="$CFLAGS -mcmodel=medium"
335 AC_COMPILE_IFELSE([int i;], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
336 CFLAGS="$save_CFLAGS"
337 dnl Whether we can test -mcmodel=medium.
338 AM_CONDITIONAL(MCMODEL_MEDIUM,
339 [test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
340
341 dnl Test for __thread support.
342 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
343 [AC_COMPILE_IFELSE([__thread int i = 1;],
344 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
345
346 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
347
348 dnl On GNU/Linux TLS in static programs only works when using glibc
349 dnl 2.4 or later.
350 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
351 [AC_COMPILE_IFELSE([
352 #include <features.h>
353 #if !defined __GLIBC__
354 error
355 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
356 error
357 #endif
358 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
359
360 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
361
362 dnl Test for #pragma omp threadprivate
363 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
364 [save_CFLAGS="$CFLAGS"
365 CFLAGS="$CFLAGS -fopenmp"
366 AC_COMPILE_IFELSE([
367 #include <omp.h>
368 int i;
369 #pragma omp threadprivate (i)
370 ], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
371 CFLAGS="$save_CFLAGS"])
372 if test "$gold_cv_c_threadprivate" = "yes"; then
373   AC_DEFINE(HAVE_OMP_SUPPORT, 1,
374             [Define if compiler supports #pragma omp threadprivate])
375 fi
376 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
377
378 dnl Test for the -ftls-dialect=gnu2 option.
379 save_CFLAGS="$CFLAGS"
380 CFLAGS="$CFLAGS -fpic -mtls-dialect=gnu2"
381 AC_COMPILE_IFELSE([
382 __thread int i;
383 void foo (void)
384 {
385   i = 10;
386 }
387 ], [have_tls_gnu2=yes], [have_tls_gnu2=no])
388 CFLAGS="$save_CFLAGS"
389 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
390
391 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
392 dnl only with glibc 2.9 or later.
393 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
394 [AC_COMPILE_IFELSE([
395 #include <features.h>
396 #if !defined __GLIBC__
397 error
398 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
399 error
400 #endif
401 ], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
402
403 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
404
405 dnl Test for the -frandom-seed option.
406 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
407 [save_CFLAGS="$CFLAGS"
408 CFLAGS="$CFLAGS -frandom-seed=foo"
409 AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
410 [gold_cv_c_random_seed=no])
411 CFLAGS="$save_CFLAGS"])
412 if test "$gold_cv_c_random_seed" = "yes"; then
413   # In Makefile, '$@' will be expanded to be the name of the file
414   # being built, providing a unique seed for each file.
415   RANDOM_SEED_CFLAGS=-frandom-seed=\$@
416 fi
417 AC_SUBST(RANDOM_SEED_CFLAGS)
418
419 dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
420 dnl 2.11 or later, and by binutils 2.20.1 or later.
421 AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
422 [save_LDFLAGS="$LDFLAGS"
423 LDFLAGS="$LDFLAGS -static"
424 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
425 #include <features.h>
426 #if !defined __GLIBC__
427 error
428 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
429 error
430 #endif
431 void func (void) { }
432 void invoke (void);
433 __asm__(".type invoke, %gnu_indirect_function");
434 typedef void (*funcptr) (void);
435 funcptr dispatch (void) __asm__ ("invoke");
436 funcptr dispatch (void) { return &func; }]],
437 [[invoke();]])
438 ], [
439 if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
440   gold_cv_lib_glibc_ifunc=both
441 else
442   gold_cv_lib_glibc_ifunc=dyn
443 fi], [gold_cv_lib_glibc_ifunc=no])
444 LDFLAGS="$save_LDFLAGS"])
445
446 AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
447 AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
448
449 AM_BINUTILS_WARNINGS
450
451 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
452 AC_SUBST(WARN_CXXFLAGS)
453
454 AC_ARG_WITH(gold-ldflags,
455 [  --with-gold-ldflags=FLAGS  additional link flags for gold],
456 [if test "$withval" = "no" -o "$withval" = "yes"; then
457    GOLD_LDFLAGS=
458  else
459    GOLD_LDFLAGS=$withval
460  fi],
461 [GOLD_LDFLAGS=])
462 AC_SUBST(GOLD_LDFLAGS)
463
464 AC_ARG_WITH(gold-ldadd,
465 [  --with-gold-ldadd=LIBS     additional libraries for gold],
466 [if test "$withval" = "no" -o "$withval" = "yes"; then
467    GOLD_LDADD=
468  else
469    GOLD_LDADD=$withval
470  fi],
471 [GOLD_LDADD=])
472 AC_SUBST(GOLD_LDADD)
473
474 dnl Force support for large files by default.  This may need to be
475 dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
476 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
477 AC_SUBST(LFS_CFLAGS)
478
479 AC_CHECK_HEADERS(sys/mman.h)
480 AC_CHECK_FUNCS(chsize mmap)
481 AC_REPLACE_FUNCS(pread ftruncate ffsll)
482
483 AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
484 [AC_LINK_IFELSE([
485 AC_LANG_PROGRAM([[
486 #include <sys/mman.h>
487 void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
488 ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
489 if test "$gold_cv_lib_mremap_maymove" = "yes"; then
490   AC_DEFINE(HAVE_MREMAP, 1,
491     [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
492 else
493   AC_LIBOBJ(mremap)
494 fi
495
496 # Link in zlib if we can.  This allows us to write compressed sections.
497 AM_ZLIB
498 AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes")
499
500 dnl We have to check these in C, not C++, because autoconf generates
501 dnl tests which have no type information, and current glibc provides
502 dnl multiple declarations of functions like basename when compiling
503 dnl with C++.
504 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
505
506 AC_LANG_PUSH(C++)
507
508 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
509 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
510 AC_CHECK_HEADERS(byteswap.h)
511
512 dnl When plugins enabled dynamic loader interface is required. Check headers
513 dnl which may provide this interface. In case of dlfcn.h add libdl to link.
514 AC_CHECK_HEADERS(windows.h)
515 AC_CHECK_HEADERS(dlfcn.h, [DLOPEN_LIBS="-ldl"], [DLOPEN_LIBS=""])
516 AC_SUBST(DLOPEN_LIBS)
517
518 AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
519 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
520
521 # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
522 # at link time with some versions of GCC.
523 AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
524 [gold_cv_unordered_map_rehash],
525 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
526 #include <tr1/unordered_map>
527 void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
528 ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
529 if test "$gold_cv_unordered_map_rehash" = "yes"; then
530   AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
531             [Define if ::std::tr1::unordered_map::rehash is usable])
532 fi
533
534 # Use of tr1/unordered_map with off_t as a key is not supported on GCC
535 # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
536 AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
537 [gold_cv_hash_off_t],
538 [CXXFLAGS_hold=$CXXFLAGS
539 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
540 AC_COMPILE_IFELSE([
541 #include <sys/types.h>
542 #include <tr1/unordered_map>
543 std::tr1::hash<off_t> h;
544 ],
545 [gold_cv_hash_off_t=yes],
546 [gold_cv_hash_off_t=no])
547 CXXFLAGS=$CXXFLAGS_hold])
548 if test "$gold_cv_hash_off_t" = "yes"; then
549    AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
550              [Define if std::tr1::hash<off_t> is usable])
551 fi
552
553 # gcc 4.3.0 doesn't recognize the printf attribute on a template
554 # function.  Check for that.  This is gcc bug 35546.  This test can
555 # probably be removed after the bug has been fixed for a while.
556 AC_CACHE_CHECK([whether we can use attributes with template functions],
557 [gold_cv_template_attribute],
558 [AC_COMPILE_IFELSE([
559 template<typename T> extern void foo(const char*, ...)
560   __attribute__ ((__format__ (__printf__, 1, 2)));
561 template<typename T> void foo(const char* format, ...) {}
562 void bar() { foo<int>("%s\n", "foo"); }
563 ], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
564 if test "$gold_cv_template_attribute" = "yes"; then
565   AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
566             [Define if attributes work on C++ templates])
567 fi
568
569 dnl Check if the system has struct stat::st_mtim.
570 AC_CACHE_CHECK([for struct stat::st_mtim.],
571 [gold_cv_stat_st_mtim],
572 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
573 #include <sys/stat.h>
574 long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
575 ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
576 if test "$gold_cv_stat_st_mtim" = "yes"; then
577   AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
578             [Define if struct stat has a field st_mtim with timespec for mtime])
579 fi
580
581 dnl Check if gcc supports the -gpubnames option.
582 save_CXXFLAGS="$CXXFLAGS"
583 CXXFLAGS="$CXXFLAGS -gpubnames"
584 AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
585 CXXFLAGS="$save_CXXFLAGS"
586 AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
587
588 AC_LANG_POP(C++)
589
590 AC_CHECK_HEADERS(locale.h)
591 AC_CHECK_FUNCS(setlocale)
592 AM_LC_MESSAGES
593
594 AM_MAINTAINER_MODE
595
596 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)