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)
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 ;;
97 if test "$threads" = "yes"; then
98 AC_DEFINE(ENABLE_THREADS, 1,
99 [Define to do multi-threaded linking])
101 AM_CONDITIONAL(THREADS, test "$threads" = "yes")
104 if test "$plugins" = "yes"; then
105 AC_DEFINE(ENABLE_PLUGINS, 1,
106 [Define to enable linker plugins])
108 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
110 # Decide if -z relro should be enabled in ELF linker by default.
111 ac_default_ld_z_relro=unset
112 # Provide a configure time option to override our default.
114 AS_HELP_STRING([--enable-relro],
115 [enable -z relro in ELF linker by default]),
116 [case "${enableval}" in
117 yes) ac_default_ld_z_relro=1 ;;
118 no) ac_default_ld_z_relro=0 ;;
120 if test "${ac_default_ld_z_relro}" = unset; then
121 ac_default_ld_z_relro=1
123 AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
124 $ac_default_ld_z_relro,
125 [Define to 1 if you want to enable -z relro in ELF linker by default.])
127 AC_ARG_ENABLE([targets],
128 [ --enable-targets alternative target configurations],
129 [case "${enableval}" in
131 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
137 enable_targets=$enableval
140 [# For now, enable all targets by default
144 # Canonicalize the enabled targets.
145 if test -n "$enable_targets"; then
146 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
147 result=`$ac_config_sub $targ 2>/dev/null`
148 if test -n "$result"; then
149 canon_targets="$canon_targets $result"
151 # Permit unrecognized target names, like "all".
152 canon_targets="$canon_targets $targ"
157 # Decide which "--hash-style" to use by default
158 # Provide a configure time option to override our default.
159 AC_ARG_ENABLE([default-hash-style],
160 AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
161 [use this default hash style]),
162 [case "${enable_default_hash_style}" in
163 sysv | gnu | both) ;;
164 *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
167 # Enable gnu hash only on GNU targets, but not mips
168 mips*-*-*) enable_default_hash_style=sysv ;;
169 *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
170 *) enable_default_hash_style=sysv ;;
173 AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE],
174 ["${enable_default_hash_style}"],
175 [Set the default --hash-style value])
177 # See which specific instantiations we need.
183 default_osabi=ELFOSABI_NONE
188 for targ in $target $canon_targets; do
189 if test "$targ" = "all"; then
196 . ${srcdir}/configure.tgt
198 if test "$targ_obj" = "UNKNOWN"; then
199 AC_MSG_ERROR("unsupported target $targ")
201 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
202 if test "$targ_extra_obj" != ""; then
203 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
205 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
206 if test "$targ_big_endian" = "true" \
207 -o "$targ_extra_big_endian" = "true"; then
210 if test "$targ_big_endian" = "false" \
211 -o "$targ_extra_big_endian" = "false"; then
215 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
216 if test "$targ_big_endian" = "true" \
217 -o "$targ_extra_big_endian" = "true"; then
220 if test "$targ_big_endian" = "false" \
221 -o "$targ_extra_big_endian" = "false"; then
226 if test "$target" = "$targ"; then
227 default_machine=$targ_machine
228 default_size=$targ_size
229 default_big_endian=$targ_big_endian
230 default_osabi=$targ_osabi
232 AM_CONDITIONAL(DEFAULT_TARGET_AARCH64, test "$targ_obj" = "aarch64")
233 AM_CONDITIONAL(DEFAULT_TARGET_ARM, test "$targ_obj" = "arm")
234 AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
235 AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
236 AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
237 AM_CONDITIONAL(DEFAULT_TARGET_S390, test "$targ_obj" = "s390")
240 if test "$targ_obj" = "x86_64"; then
242 x86_64*-linux-gnux32)
251 AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$target_x86_64" = "yes")
252 AM_CONDITIONAL(DEFAULT_TARGET_X32, test "$target_x32" = "yes")
253 AM_CONDITIONAL(DEFAULT_TARGET_X86_64_OR_X32,
254 test "$target_x86_64" = "yes" -o "$target_x32" = "yes")
255 AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
256 AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
257 DEFAULT_TARGET=${targ_obj}
258 AC_SUBST(DEFAULT_TARGET)
264 # Remove any duplicates.
266 for t in $targetobjs; do
274 if test -n "$targ_32_little"; then
275 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
276 [Define to support 32-bit little-endian targets])
278 if test -n "$targ_32_big"; then
279 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
280 [Define to support 32-bit big-endian targets])
282 if test -n "$targ_64_little"; then
283 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
284 [Define to support 64-bit little-endian targets])
286 if test -n "$targ_64_big"; then
287 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
288 [Define to support 64-bit big-endian targets])
291 if test -n "$all_targets"; then
292 TARGETOBJS='$(ALL_TARGETOBJS)'
294 TARGETOBJS="$targetobjs"
298 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
299 [Default machine code])
300 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
301 [Default size (32 or 64)])
302 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
303 [Default big endian (true or false)])
304 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
305 [Default OSABI code])
307 AC_ARG_WITH(lib-path,
308 [ --with-lib-path=dir1:dir2... set default LIB_PATH],
310 yes) LIB_PATH='"/lib:/usr/lib"' ;;
312 *) LIB_PATH='"'"$withval"'"' ;;
314 [LIB_PATH='"::DEFAULT::"'])
315 AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
316 [Default library search path])
317 if test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias"; then
318 AC_DEFINE(NATIVE_LINKER, 1, [Whether configured as a native linker])
321 AC_CHECK_TOOL(NM, nm)
332 ZW_GNU_GETTEXT_SISTER_DIR
339 AM_CONDITIONAL(NATIVE_LINKER,
340 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
341 AM_CONDITIONAL(GCC, test "$GCC" = yes)
343 AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
344 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
346 dnl Test for whether static linking is supported. Some systems do not
347 dnl install static libraries. This only affects the set of tests that
349 AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
350 [LDFLAGS_hold=$LDFLAGS
351 LDFLAGS="$LDFLAGS -static"
353 AC_LANG_PROGRAM([[void f() { }]])],
354 [gold_cv_lib_static=yes], [gold_cv_lib_static=no])
355 LDFLAGS=$LDFLAGS_hold])
356 AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
358 dnl Some architectures do not support taking pointers of functions
359 dnl defined in shared libraries except in -fPIC mode. We need to
360 dnl tell the unittest framework if we're compiling for one of those
361 dnl targets, so it doesn't try to run the tests that do that.
362 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
371 dnl Test for gcc 4.1 or later. Full support for -mcmodel=medium is
372 dnl only available in gcc 4.1.
373 AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
374 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
375 #if !defined __GNUC__
377 #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
380 ])], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
382 save_CFLAGS="$CFLAGS"
383 CFLAGS="$CFLAGS -mcmodel=medium"
384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
385 CFLAGS="$save_CFLAGS"
386 dnl Whether we can test -mcmodel=medium.
387 AM_CONDITIONAL(MCMODEL_MEDIUM,
388 [test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
390 AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
391 [gold_cv_merge_constants], [
392 save_CFLAGS="$CFLAGS"
393 CFLAGS="$CFLAGS -fmerge-constants"
394 AC_COMPILE_IFELSE([AC_LANG_SOURCE([const char *s = "foo";])],
395 [gold_cv_merge_constants=yes],
396 [gold_cv_merge_constants=no])
397 CFLAGS="$save_CFLAGS"])
398 AC_SUBST([MERGE_CONSTANTS_FLAG])
399 AS_IF([test "$gold_cv_merge_constants" = yes],
400 [MERGE_CONSTANTS_FLAG=-fmerge-constants],
401 [MERGE_CONSTANTS_FLAG=])
403 dnl Test for __thread support.
404 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
405 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([__thread int i = 1;])],
406 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
408 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
410 dnl On GNU/Linux TLS in static programs only works when using glibc
412 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
413 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
414 #include <features.h>
415 #if !defined __GLIBC__
417 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
420 ])], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
422 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
424 dnl Test for #pragma omp threadprivate
425 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
426 [save_CFLAGS="$CFLAGS"
427 CFLAGS="$CFLAGS -fopenmp"
428 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
431 #pragma omp threadprivate (i)
432 ])], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
433 CFLAGS="$save_CFLAGS"])
434 if test "$gold_cv_c_threadprivate" = "yes"; then
435 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
436 [Define if compiler supports #pragma omp threadprivate])
438 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
440 dnl Test for the -ftls-dialect=gnu2 option.
441 dnl Use -Werror in case of compilers that make unknown -m options warnings.
442 dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
443 dnl gets set later by default Autoconf magic to include -Werror. (We are
444 dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2
445 dnl but does not grok -Werror.)
446 save_CFLAGS="$CFLAGS"
447 CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2"
448 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
454 ])], [have_tls_gnu2=yes], [have_tls_gnu2=no])
455 CFLAGS="$save_CFLAGS"
456 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
458 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
459 dnl only with glibc 2.9 or later.
460 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
461 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
462 #include <features.h>
463 #if !defined __GLIBC__
465 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
468 ])], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
470 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
472 dnl Test for the -frandom-seed option.
473 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
474 [save_CFLAGS="$CFLAGS"
475 CFLAGS="$CFLAGS -frandom-seed=foo"
476 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [gold_cv_c_random_seed=yes],
477 [gold_cv_c_random_seed=no])
478 CFLAGS="$save_CFLAGS"])
479 if test "$gold_cv_c_random_seed" = "yes"; then
480 # In Makefile, '$@' will be expanded to be the name of the file
481 # being built, providing a unique seed for each file.
482 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
484 AC_SUBST(RANDOM_SEED_CFLAGS)
486 dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
487 dnl 2.11 or later, and by binutils 2.20.1 or later.
488 AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
489 [save_LDFLAGS="$LDFLAGS"
490 LDFLAGS="$LDFLAGS -static"
491 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
492 #include <features.h>
493 #if !defined __GLIBC__
495 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
500 __asm__(".type invoke, %gnu_indirect_function");
501 typedef void (*funcptr) (void);
502 funcptr dispatch (void) __asm__ ("invoke");
503 funcptr dispatch (void) { return &func; }]],
506 if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
507 gold_cv_lib_glibc_ifunc=both
509 gold_cv_lib_glibc_ifunc=dyn
510 fi], [gold_cv_lib_glibc_ifunc=no])
511 LDFLAGS="$save_LDFLAGS"])
513 AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
514 AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
518 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
519 AC_SUBST(WARN_CXXFLAGS)
521 AC_ARG_WITH(gold-ldflags,
522 [ --with-gold-ldflags=FLAGS additional link flags for gold],
523 [if test "$withval" = "no" -o "$withval" = "yes"; then
526 GOLD_LDFLAGS=$withval
529 AC_SUBST(GOLD_LDFLAGS)
531 AC_ARG_WITH(gold-ldadd,
532 [ --with-gold-ldadd=LIBS additional libraries for gold],
533 [if test "$withval" = "no" -o "$withval" = "yes"; then
541 dnl Force support for large files by default. This may need to be
542 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
543 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
546 AC_CHECK_HEADERS(sys/mman.h)
547 AC_CHECK_FUNCS(chsize mmap)
548 AC_REPLACE_FUNCS(pread ftruncate ffsll)
550 AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
553 #include <sys/mman.h>
554 void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
555 ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
556 if test "$gold_cv_lib_mremap_maymove" = "yes"; then
557 AC_DEFINE(HAVE_MREMAP, 1,
558 [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
563 # Link in zlib if we can. This allows us to write compressed sections.
566 dnl We have to check these in C, not C++, because autoconf generates
567 dnl tests which have no type information, and current glibc provides
568 dnl multiple declarations of functions like basename when compiling
570 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
572 dnl Check if gcc supports the -gpubnames option.
573 dnl Use -Werror in case of compilers that make unknown -g options warnings.
574 dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
575 dnl gets set later by default Autoconf magic to include -Werror. (We are
576 dnl assuming here that there is no compiler that groks -gpubnames
577 dnl but does not grok -Werror.)
578 save_CFLAGS="$CFLAGS"
579 CFLAGS="$CFLAGS -Werror -gpubnames"
580 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_pubnames=yes], [have_pubnames=no])
581 CFLAGS="$save_CFLAGS"
582 AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
584 dnl Check if gcc supports the -fno-use-linker-plugin option.
585 save_CFLAGS="$CFLAGS"
586 CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
587 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
588 CFLAGS="$save_CFLAGS"
589 AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
593 AC_CHECK_HEADERS(unordered_set unordered_map)
594 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
595 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
596 AC_CHECK_HEADERS(byteswap.h)
598 dnl When plugins enabled dynamic loader interface is required. Check headers
599 dnl which may provide this interface. Add the necessary library to link.
600 AC_CHECK_HEADERS(windows.h)
601 AC_CHECK_HEADERS(dlfcn.h)
602 AC_SEARCH_LIBS(dlopen, [dl dld])
603 case "$ac_cv_search_dlopen" in
604 no*) DLOPEN_LIBS="";;
605 *) DLOPEN_LIBS="$ac_cv_search_dlopen";;
607 AC_SUBST(DLOPEN_LIBS)
609 AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
610 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
612 # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
613 # at link time with some versions of GCC.
614 AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
615 [gold_cv_unordered_map_rehash],
616 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
617 #include <tr1/unordered_map>
618 void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
619 ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
620 if test "$gold_cv_unordered_map_rehash" = "yes"; then
621 AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
622 [Define if ::std::tr1::unordered_map::rehash is usable])
625 # Use of tr1/unordered_map with off_t as a key is not supported on GCC
626 # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
627 AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
628 [gold_cv_hash_off_t],
629 [CXXFLAGS_hold=$CXXFLAGS
630 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
631 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
632 #include <sys/types.h>
633 #include <tr1/unordered_map>
634 std::tr1::hash<off_t> h;
636 [gold_cv_hash_off_t=yes],
637 [gold_cv_hash_off_t=no])
638 CXXFLAGS=$CXXFLAGS_hold])
639 if test "$gold_cv_hash_off_t" = "yes"; then
640 AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
641 [Define if std::tr1::hash<off_t> is usable])
644 # gcc 4.3.0 doesn't recognize the printf attribute on a template
645 # function. Check for that. This is gcc bug 35546. This test can
646 # probably be removed after the bug has been fixed for a while.
647 AC_CACHE_CHECK([whether we can use attributes with template functions],
648 [gold_cv_template_attribute],
649 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
650 template<typename T> extern void foo(const char*, ...)
651 __attribute__ ((__format__ (__printf__, 1, 2)));
652 template<typename T> void foo(const char* format, ...) {}
653 void bar() { foo<int>("%s\n", "foo"); }
654 ])], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
655 if test "$gold_cv_template_attribute" = "yes"; then
656 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
657 [Define if attributes work on C++ templates])
660 dnl Check if the system has struct stat::st_mtim.
661 AC_CACHE_CHECK([for struct stat::st_mtim.],
662 [gold_cv_stat_st_mtim],
663 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
664 #include <sys/stat.h>
665 long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
666 ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
667 if test "$gold_cv_stat_st_mtim" = "yes"; then
668 AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
669 [Define if struct stat has a field st_mtim with timespec for mtime])
674 AC_CHECK_HEADERS(locale.h)
675 AC_CHECK_FUNCS(setlocale)
680 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)