1 dnl Process this file with autoconf to produce a configure script.
3 dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
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.
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.
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/>.
21 AC_CONFIG_SRCDIR(gold.cc)
25 AM_INIT_AUTOMAKE([no-dist parallel-tests])
27 AM_CONFIG_HEADER(config.h:config.in)
29 AC_USE_SYSTEM_EXTENSIONS
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
38 #define __CONFIG_H__ 1])
41 [ --with-sysroot[=DIR] search for usr/lib et al within DIR],
42 [sysroot=$withval], [sysroot=no])
44 if test "$sysroot" = "yes"; then
45 sysroot='${exec_prefix}/${target_alias}/sys-root'
46 elif test "$sysroot" = "no"; then
51 if test -n "$sysroot"; then
53 "${prefix}" | "${prefix}/"* | \
54 "${exec_prefix}" | "${exec_prefix}/"* | \
55 '${prefix}' | '${prefix}/'*| \
56 '${exec_prefix}' | '${exec_prefix}/'*)
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])
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.
71 installed_linker=ld.gold
73 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
74 [case "${enableval}" in
76 install_as_default=yes
79 if test x${enable_ld} = xno; then
80 install_as_default=yes
84 [install_as_default=no])
85 AC_SUBST(install_as_default)
86 AC_SUBST(installed_linker)
89 if test "$plugins" = "yes"; then
90 AC_DEFINE(ENABLE_PLUGINS, 1,
91 [Define to enable linker plugins])
93 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
95 # Decide if -z relro should be enabled in ELF linker by default.
96 ac_default_ld_z_relro=unset
97 # Provide a configure time option to override our default.
99 AS_HELP_STRING([--enable-relro],
100 [enable -z relro in ELF linker by default]),
101 [case "${enableval}" in
102 yes) ac_default_ld_z_relro=1 ;;
103 no) ac_default_ld_z_relro=0 ;;
105 if test "${ac_default_ld_z_relro}" = unset; then
106 ac_default_ld_z_relro=1
108 AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
109 $ac_default_ld_z_relro,
110 [Define to 1 if you want to enable -z relro in ELF linker by default.])
112 AC_ARG_ENABLE([targets],
113 [ --enable-targets alternative target configurations],
114 [case "${enableval}" in
116 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
122 enable_targets=$enableval
125 [# For now, enable all targets by default
129 # Canonicalize the enabled targets.
130 if test -n "$enable_targets"; then
131 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
132 result=`$ac_config_sub $targ 2>/dev/null`
133 if test -n "$result"; then
134 canon_targets="$canon_targets $result"
136 # Permit unrecognized target names, like "all".
137 canon_targets="$canon_targets $targ"
142 # Decide which "--hash-style" to use by default
143 # Provide a configure time option to override our default.
144 AC_ARG_ENABLE([default-hash-style],
145 AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
146 [use this default hash style]),
147 [case "${enable_default_hash_style}" in
148 sysv | gnu | both) ;;
149 *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
152 # Enable gnu hash only on GNU targets, but not mips
153 mips*-*-*) enable_default_hash_style=sysv ;;
154 *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
155 *) enable_default_hash_style=sysv ;;
158 AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE],
159 ["${enable_default_hash_style}"],
160 [Set the default --hash-style value])
162 # See which specific instantiations we need.
168 default_osabi=ELFOSABI_NONE
173 for targ in $target $canon_targets; do
174 if test "$targ" = "all"; then
181 . ${srcdir}/configure.tgt
183 if test "$targ_obj" = "UNKNOWN"; then
184 AC_MSG_ERROR("unsupported target $targ")
186 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
187 if test "$targ_extra_obj" != ""; then
188 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
190 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
191 if test "$targ_big_endian" = "true" \
192 -o "$targ_extra_big_endian" = "true"; then
195 if test "$targ_big_endian" = "false" \
196 -o "$targ_extra_big_endian" = "false"; then
200 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
201 if test "$targ_big_endian" = "true" \
202 -o "$targ_extra_big_endian" = "true"; then
205 if test "$targ_big_endian" = "false" \
206 -o "$targ_extra_big_endian" = "false"; then
211 if test "$target" = "$targ"; then
212 default_machine=$targ_machine
213 default_size=$targ_size
214 default_big_endian=$targ_big_endian
215 default_osabi=$targ_osabi
217 AM_CONDITIONAL(DEFAULT_TARGET_AARCH64, test "$targ_obj" = "aarch64")
218 AM_CONDITIONAL(DEFAULT_TARGET_ARM, test "$targ_obj" = "arm")
219 AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
220 AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
221 AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
222 AM_CONDITIONAL(DEFAULT_TARGET_S390, test "$targ_obj" = "s390")
225 if test "$targ_obj" = "x86_64"; then
227 x86_64*-linux-gnux32)
236 AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$target_x86_64" = "yes")
237 AM_CONDITIONAL(DEFAULT_TARGET_X32, test "$target_x32" = "yes")
238 AM_CONDITIONAL(DEFAULT_TARGET_X86_64_OR_X32,
239 test "$target_x86_64" = "yes" -o "$target_x32" = "yes")
240 AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
241 AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
242 DEFAULT_TARGET=${targ_obj}
243 AC_SUBST(DEFAULT_TARGET)
249 # Remove any duplicates.
251 for t in $targetobjs; do
259 if test -n "$targ_32_little"; then
260 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
261 [Define to support 32-bit little-endian targets])
263 if test -n "$targ_32_big"; then
264 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
265 [Define to support 32-bit big-endian targets])
267 if test -n "$targ_64_little"; then
268 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
269 [Define to support 64-bit little-endian targets])
271 if test -n "$targ_64_big"; then
272 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
273 [Define to support 64-bit big-endian targets])
276 if test -n "$all_targets"; then
277 TARGETOBJS='$(ALL_TARGETOBJS)'
279 TARGETOBJS="$targetobjs"
283 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
284 [Default machine code])
285 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
286 [Default size (32 or 64)])
287 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
288 [Default big endian (true or false)])
289 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
290 [Default OSABI code])
292 AC_ARG_WITH(lib-path,
293 [ --with-lib-path=dir1:dir2... set default LIB_PATH],
295 yes) LIB_PATH='"/lib:/usr/lib"' ;;
297 *) LIB_PATH='"'"$withval"'"' ;;
299 [LIB_PATH='"::DEFAULT::"'])
300 AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
301 [Default library search path])
302 if test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias"; then
303 AC_DEFINE(NATIVE_LINKER, 1, [Whether configured as a native linker])
306 AC_CHECK_TOOL(NM, nm)
317 ZW_GNU_GETTEXT_SISTER_DIR
324 AM_CONDITIONAL(NATIVE_LINKER,
325 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
326 AM_CONDITIONAL(GCC, test "$GCC" = yes)
328 AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
329 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
331 dnl Test for whether static linking is supported. Some systems do not
332 dnl install static libraries. This only affects the set of tests that
334 AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
335 [LDFLAGS_hold=$LDFLAGS
336 LDFLAGS="$LDFLAGS -static"
338 AC_LANG_PROGRAM([[void f() { }]])],
339 [gold_cv_lib_static=yes], [gold_cv_lib_static=no])
340 LDFLAGS=$LDFLAGS_hold])
341 AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
343 dnl Some architectures do not support taking pointers of functions
344 dnl defined in shared libraries except in -fPIC mode. We need to
345 dnl tell the unittest framework if we're compiling for one of those
346 dnl targets, so it doesn't try to run the tests that do that.
347 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
356 dnl Test for gcc 4.1 or later. Full support for -mcmodel=medium is
357 dnl only available in gcc 4.1.
358 AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
359 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
360 #if !defined __GNUC__
362 #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
365 ])], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
367 save_CFLAGS="$CFLAGS"
368 CFLAGS="$CFLAGS -mcmodel=medium"
369 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
370 CFLAGS="$save_CFLAGS"
371 dnl Whether we can test -mcmodel=medium.
372 AM_CONDITIONAL(MCMODEL_MEDIUM,
373 [test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
375 AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
376 [gold_cv_merge_constants], [
377 save_CFLAGS="$CFLAGS"
378 CFLAGS="$CFLAGS -fmerge-constants"
379 AC_COMPILE_IFELSE([AC_LANG_SOURCE([const char *s = "foo";])],
380 [gold_cv_merge_constants=yes],
381 [gold_cv_merge_constants=no])
382 CFLAGS="$save_CFLAGS"])
383 AC_SUBST([MERGE_CONSTANTS_FLAG])
384 AS_IF([test "$gold_cv_merge_constants" = yes],
385 [MERGE_CONSTANTS_FLAG=-fmerge-constants],
386 [MERGE_CONSTANTS_FLAG=])
388 dnl Test for __thread support.
389 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
390 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([__thread int i = 1;])],
391 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
393 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
395 dnl On GNU/Linux TLS in static programs only works when using glibc
397 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
398 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
399 #include <features.h>
400 #if !defined __GLIBC__
402 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
405 ])], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
407 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
409 dnl Test for #pragma omp threadprivate
410 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
411 [save_CFLAGS="$CFLAGS"
412 CFLAGS="$CFLAGS -fopenmp"
413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
416 #pragma omp threadprivate (i)
417 ])], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
418 CFLAGS="$save_CFLAGS"])
419 if test "$gold_cv_c_threadprivate" = "yes"; then
420 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
421 [Define if compiler supports #pragma omp threadprivate])
423 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
425 dnl Test for the -ftls-dialect=gnu2 option.
426 dnl Use -Werror in case of compilers that make unknown -m options warnings.
427 dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
428 dnl gets set later by default Autoconf magic to include -Werror. (We are
429 dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2
430 dnl but does not grok -Werror.)
431 save_CFLAGS="$CFLAGS"
432 CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2"
433 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
439 ])], [have_tls_gnu2=yes], [have_tls_gnu2=no])
440 CFLAGS="$save_CFLAGS"
441 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
443 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
444 dnl only with glibc 2.9 or later.
445 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
446 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
447 #include <features.h>
448 #if !defined __GLIBC__
450 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
453 ])], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
455 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
457 dnl Test for the -frandom-seed option.
458 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
459 [save_CFLAGS="$CFLAGS"
460 CFLAGS="$CFLAGS -frandom-seed=foo"
461 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [gold_cv_c_random_seed=yes],
462 [gold_cv_c_random_seed=no])
463 CFLAGS="$save_CFLAGS"])
464 if test "$gold_cv_c_random_seed" = "yes"; then
465 # In Makefile, '$@' will be expanded to be the name of the file
466 # being built, providing a unique seed for each file.
467 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
469 AC_SUBST(RANDOM_SEED_CFLAGS)
471 dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
472 dnl 2.11 or later, and by binutils 2.20.1 or later.
473 AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
474 [save_LDFLAGS="$LDFLAGS"
475 LDFLAGS="$LDFLAGS -static"
476 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
477 #include <features.h>
478 #if !defined __GLIBC__
480 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
485 __asm__(".type invoke, %gnu_indirect_function");
486 typedef void (*funcptr) (void);
487 funcptr dispatch (void) __asm__ ("invoke");
488 funcptr dispatch (void) { return &func; }]],
491 if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
492 gold_cv_lib_glibc_ifunc=both
494 gold_cv_lib_glibc_ifunc=dyn
495 fi], [gold_cv_lib_glibc_ifunc=no])
496 LDFLAGS="$save_LDFLAGS"])
498 AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
499 AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
503 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
504 AC_SUBST(WARN_CXXFLAGS)
506 AC_ARG_WITH(gold-ldflags,
507 [ --with-gold-ldflags=FLAGS additional link flags for gold],
508 [if test "$withval" = "no" -o "$withval" = "yes"; then
511 GOLD_LDFLAGS=$withval
514 AC_SUBST(GOLD_LDFLAGS)
516 AC_ARG_WITH(gold-ldadd,
517 [ --with-gold-ldadd=LIBS additional libraries for gold],
518 [if test "$withval" = "no" -o "$withval" = "yes"; then
526 dnl Force support for large files by default. This may need to be
527 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
528 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
531 AC_CHECK_HEADERS(sys/mman.h)
532 AC_CHECK_FUNCS(chsize mmap)
533 AC_REPLACE_FUNCS(pread ftruncate ffsll)
535 AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
538 #include <sys/mman.h>
539 void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
540 ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
541 if test "$gold_cv_lib_mremap_maymove" = "yes"; then
542 AC_DEFINE(HAVE_MREMAP, 1,
543 [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
548 # Link in zlib if we can. This allows us to write compressed sections.
551 AC_ARG_ENABLE([threads],
552 [[ --enable-threads[=ARG] multi-threaded linking [ARG={auto,yes,no}]]],
553 [case "${enableval}" in
554 yes | "") threads=yes ;;
556 auto) threads=auto ;;
561 if test "$threads" = "yes"; then
562 AX_PTHREAD([threads=yes], AC_MSG_ERROR([pthread not found]))
563 elif test "$threads" = "auto"; then
564 AX_PTHREAD([threads=yes], [threads=no])
567 if test "$threads" = "yes"; then
568 AC_DEFINE(ENABLE_THREADS, 1,
569 [Define to do multi-threaded linking])
571 AM_CONDITIONAL(THREADS, test "$threads" = "yes")
573 dnl We have to check these in C, not C++, because autoconf generates
574 dnl tests which have no type information, and current glibc provides
575 dnl multiple declarations of functions like basename when compiling
577 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
579 dnl Check if gcc supports the -gpubnames option.
580 dnl Use -Werror in case of compilers that make unknown -g options warnings.
581 dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
582 dnl gets set later by default Autoconf magic to include -Werror. (We are
583 dnl assuming here that there is no compiler that groks -gpubnames
584 dnl but does not grok -Werror.)
585 save_CFLAGS="$CFLAGS"
586 CFLAGS="$CFLAGS -Werror -gpubnames"
587 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_pubnames=yes], [have_pubnames=no])
588 CFLAGS="$save_CFLAGS"
589 AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
591 dnl Check if gcc supports the -fno-use-linker-plugin option.
592 save_CFLAGS="$CFLAGS"
593 CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
594 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
595 CFLAGS="$save_CFLAGS"
596 AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
600 AC_CHECK_HEADERS(unordered_set unordered_map)
601 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
602 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
603 AC_CHECK_HEADERS(byteswap.h)
605 dnl When plugins enabled dynamic loader interface is required. Check headers
606 dnl which may provide this interface. Add the necessary library to link.
607 AC_CHECK_HEADERS(windows.h)
608 AC_CHECK_HEADERS(dlfcn.h)
609 AC_SEARCH_LIBS(dlopen, [dl dld])
610 case "$ac_cv_search_dlopen" in
611 no*) DLOPEN_LIBS="";;
612 *) DLOPEN_LIBS="$ac_cv_search_dlopen";;
614 AC_SUBST(DLOPEN_LIBS)
616 AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
617 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
619 # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
620 # at link time with some versions of GCC.
621 AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
622 [gold_cv_unordered_map_rehash],
623 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
624 #include <tr1/unordered_map>
625 void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
626 ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
627 if test "$gold_cv_unordered_map_rehash" = "yes"; then
628 AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
629 [Define if ::std::tr1::unordered_map::rehash is usable])
632 # Use of tr1/unordered_map with off_t as a key is not supported on GCC
633 # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
634 AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
635 [gold_cv_hash_off_t],
636 [CXXFLAGS_hold=$CXXFLAGS
637 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
638 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
639 #include <sys/types.h>
640 #include <tr1/unordered_map>
641 std::tr1::hash<off_t> h;
643 [gold_cv_hash_off_t=yes],
644 [gold_cv_hash_off_t=no])
645 CXXFLAGS=$CXXFLAGS_hold])
646 if test "$gold_cv_hash_off_t" = "yes"; then
647 AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
648 [Define if std::tr1::hash<off_t> is usable])
651 # gcc 4.3.0 doesn't recognize the printf attribute on a template
652 # function. Check for that. This is gcc bug 35546. This test can
653 # probably be removed after the bug has been fixed for a while.
654 AC_CACHE_CHECK([whether we can use attributes with template functions],
655 [gold_cv_template_attribute],
656 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
657 template<typename T> extern void foo(const char*, ...)
658 __attribute__ ((__format__ (__printf__, 1, 2)));
659 template<typename T> void foo(const char* format, ...) {}
660 void bar() { foo<int>("%s\n", "foo"); }
661 ])], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
662 if test "$gold_cv_template_attribute" = "yes"; then
663 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
664 [Define if attributes work on C++ templates])
667 dnl Check if the system has struct stat::st_mtim.
668 AC_CACHE_CHECK([for struct stat::st_mtim.],
669 [gold_cv_stat_st_mtim],
670 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
671 #include <sys/stat.h>
672 long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
673 ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
674 if test "$gold_cv_stat_st_mtim" = "yes"; then
675 AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
676 [Define if struct stat has a field st_mtim with timespec for mtime])
681 AC_CHECK_HEADERS(locale.h)
682 AC_CHECK_FUNCS(setlocale)
687 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)