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