gold/
[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 AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
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 AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
342 [gold_cv_merge_constants], [
343 save_CFLAGS="$CFLAGS"
344 CFLAGS="$CFLAGS -fmerge-constants"
345 AC_COMPILE_IFELSE([const char *s = "foo";],
346 [gold_cv_merge_constants=yes],
347 [gold_cv_merge_constants=no])
348 CFLAGS="$save_CFLAGS"])
349 AC_SUBST([MERGE_CONSTANTS_FLAG])
350 AS_IF([test "$gold_cv_merge_constants" = yes],
351 [MERGE_CONSTANTS_FLAG=-fmerge-constants],
352 [MERGE_CONSTANTS_FLAG=])
353
354 dnl Test for __thread support.
355 AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
356 [AC_COMPILE_IFELSE([__thread int i = 1;],
357 [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
358
359 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
360
361 dnl On GNU/Linux TLS in static programs only works when using glibc
362 dnl 2.4 or later.
363 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
364 [AC_COMPILE_IFELSE([
365 #include <features.h>
366 #if !defined __GLIBC__
367 error
368 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
369 error
370 #endif
371 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
372
373 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
374
375 dnl Test for #pragma omp threadprivate
376 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
377 [save_CFLAGS="$CFLAGS"
378 CFLAGS="$CFLAGS -fopenmp"
379 AC_COMPILE_IFELSE([
380 #include <omp.h>
381 int i;
382 #pragma omp threadprivate (i)
383 ], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
384 CFLAGS="$save_CFLAGS"])
385 if test "$gold_cv_c_threadprivate" = "yes"; then
386 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
387 [Define if compiler supports #pragma omp threadprivate])
388 fi
389 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
390
391 dnl Test for the -ftls-dialect=gnu2 option.
392 dnl Use -Werror in case of compilers that make unknown -m options warnings.
393 dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
394 dnl gets set later by default Autoconf magic to include -Werror. (We are
395 dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2
396 dnl but does not grok -Werror.)
397 save_CFLAGS="$CFLAGS"
398 CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2"
399 AC_COMPILE_IFELSE([
400 __thread int i;
401 void foo (void)
402 {
403 i = 10;
404 }
405 ], [have_tls_gnu2=yes], [have_tls_gnu2=no])
406 CFLAGS="$save_CFLAGS"
407 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
408
409 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
410 dnl only with glibc 2.9 or later.
411 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
412 [AC_COMPILE_IFELSE([
413 #include <features.h>
414 #if !defined __GLIBC__
415 error
416 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
417 error
418 #endif
419 ], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
420
421 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
422
423 dnl Test for the -frandom-seed option.
424 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
425 [save_CFLAGS="$CFLAGS"
426 CFLAGS="$CFLAGS -frandom-seed=foo"
427 AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
428 [gold_cv_c_random_seed=no])
429 CFLAGS="$save_CFLAGS"])
430 if test "$gold_cv_c_random_seed" = "yes"; then
431 # In Makefile, '$@' will be expanded to be the name of the file
432 # being built, providing a unique seed for each file.
433 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
434 fi
435 AC_SUBST(RANDOM_SEED_CFLAGS)
436
437 dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
438 dnl 2.11 or later, and by binutils 2.20.1 or later.
439 AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
440 [save_LDFLAGS="$LDFLAGS"
441 LDFLAGS="$LDFLAGS -static"
442 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
443 #include <features.h>
444 #if !defined __GLIBC__
445 error
446 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
447 error
448 #endif
449 void func (void) { }
450 void invoke (void);
451 __asm__(".type invoke, %gnu_indirect_function");
452 typedef void (*funcptr) (void);
453 funcptr dispatch (void) __asm__ ("invoke");
454 funcptr dispatch (void) { return &func; }]],
455 [[invoke();]])
456 ], [
457 if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
458 gold_cv_lib_glibc_ifunc=both
459 else
460 gold_cv_lib_glibc_ifunc=dyn
461 fi], [gold_cv_lib_glibc_ifunc=no])
462 LDFLAGS="$save_LDFLAGS"])
463
464 AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
465 AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
466
467 AM_BINUTILS_WARNINGS
468
469 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
470 AC_SUBST(WARN_CXXFLAGS)
471
472 AC_ARG_WITH(gold-ldflags,
473 [ --with-gold-ldflags=FLAGS additional link flags for gold],
474 [if test "$withval" = "no" -o "$withval" = "yes"; then
475 GOLD_LDFLAGS=
476 else
477 GOLD_LDFLAGS=$withval
478 fi],
479 [GOLD_LDFLAGS=])
480 AC_SUBST(GOLD_LDFLAGS)
481
482 AC_ARG_WITH(gold-ldadd,
483 [ --with-gold-ldadd=LIBS additional libraries for gold],
484 [if test "$withval" = "no" -o "$withval" = "yes"; then
485 GOLD_LDADD=
486 else
487 GOLD_LDADD=$withval
488 fi],
489 [GOLD_LDADD=])
490 AC_SUBST(GOLD_LDADD)
491
492 dnl Force support for large files by default. This may need to be
493 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
494 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
495 AC_SUBST(LFS_CFLAGS)
496
497 AC_CHECK_HEADERS(sys/mman.h)
498 AC_CHECK_FUNCS(chsize mmap)
499 AC_REPLACE_FUNCS(pread ftruncate ffsll)
500
501 AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
502 [AC_LINK_IFELSE([
503 AC_LANG_PROGRAM([[
504 #include <sys/mman.h>
505 void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
506 ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
507 if test "$gold_cv_lib_mremap_maymove" = "yes"; then
508 AC_DEFINE(HAVE_MREMAP, 1,
509 [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
510 else
511 AC_LIBOBJ(mremap)
512 fi
513
514 # Link in zlib if we can. This allows us to write compressed sections.
515 AM_ZLIB
516 AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes")
517
518 dnl We have to check these in C, not C++, because autoconf generates
519 dnl tests which have no type information, and current glibc provides
520 dnl multiple declarations of functions like basename when compiling
521 dnl with C++.
522 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
523
524 dnl Check if gcc supports the -gpubnames option.
525 dnl Use -Werror in case of compilers that make unknown -g options warnings.
526 dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
527 dnl gets set later by default Autoconf magic to include -Werror. (We are
528 dnl assuming here that there is no compiler that groks -gpubnames
529 dnl but does not grok -Werror.)
530 save_CFLAGS="$CFLAGS"
531 CFLAGS="$CFLAGS -Werror -gpubnames"
532 AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
533 CFLAGS="$save_CFLAGS"
534 AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
535
536 dnl Check if gcc supports the -fno-use-linker-plugin option.
537 save_CFLAGS="$CFLAGS"
538 CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
539 AC_COMPILE_IFELSE([int i;], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
540 CFLAGS="$save_CFLAGS"
541 AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
542
543 AC_LANG_PUSH(C++)
544
545 AC_CHECK_HEADERS(unordered_set unordered_map)
546 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
547 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
548 AC_CHECK_HEADERS(byteswap.h)
549
550 dnl When plugins enabled dynamic loader interface is required. Check headers
551 dnl which may provide this interface. Add the necessary library to link.
552 AC_CHECK_HEADERS(windows.h)
553 AC_CHECK_HEADERS(dlfcn.h)
554 AC_SEARCH_LIBS(dlopen, [dl dld])
555 case "$ac_cv_search_dlopen" in
556 no*) DLOPEN_LIBS="";;
557 *) DLOPEN_LIBS="$ac_cv_search_dlopen";;
558 esac
559 AC_SUBST(DLOPEN_LIBS)
560
561 AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
562 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
563
564 # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
565 # at link time with some versions of GCC.
566 AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
567 [gold_cv_unordered_map_rehash],
568 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
569 #include <tr1/unordered_map>
570 void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
571 ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
572 if test "$gold_cv_unordered_map_rehash" = "yes"; then
573 AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
574 [Define if ::std::tr1::unordered_map::rehash is usable])
575 fi
576
577 # Use of tr1/unordered_map with off_t as a key is not supported on GCC
578 # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
579 AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
580 [gold_cv_hash_off_t],
581 [CXXFLAGS_hold=$CXXFLAGS
582 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
583 AC_COMPILE_IFELSE([
584 #include <sys/types.h>
585 #include <tr1/unordered_map>
586 std::tr1::hash<off_t> h;
587 ],
588 [gold_cv_hash_off_t=yes],
589 [gold_cv_hash_off_t=no])
590 CXXFLAGS=$CXXFLAGS_hold])
591 if test "$gold_cv_hash_off_t" = "yes"; then
592 AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
593 [Define if std::tr1::hash<off_t> is usable])
594 fi
595
596 # gcc 4.3.0 doesn't recognize the printf attribute on a template
597 # function. Check for that. This is gcc bug 35546. This test can
598 # probably be removed after the bug has been fixed for a while.
599 AC_CACHE_CHECK([whether we can use attributes with template functions],
600 [gold_cv_template_attribute],
601 [AC_COMPILE_IFELSE([
602 template<typename T> extern void foo(const char*, ...)
603 __attribute__ ((__format__ (__printf__, 1, 2)));
604 template<typename T> void foo(const char* format, ...) {}
605 void bar() { foo<int>("%s\n", "foo"); }
606 ], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
607 if test "$gold_cv_template_attribute" = "yes"; then
608 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
609 [Define if attributes work on C++ templates])
610 fi
611
612 dnl Check if the system has struct stat::st_mtim.
613 AC_CACHE_CHECK([for struct stat::st_mtim.],
614 [gold_cv_stat_st_mtim],
615 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
616 #include <sys/stat.h>
617 long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
618 ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
619 if test "$gold_cv_stat_st_mtim" = "yes"; then
620 AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
621 [Define if struct stat has a field st_mtim with timespec for mtime])
622 fi
623
624 AC_LANG_POP(C++)
625
626 AC_CHECK_HEADERS(locale.h)
627 AC_CHECK_FUNCS(setlocale)
628 AM_LC_MESSAGES
629
630 AM_MAINTAINER_MODE
631
632 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.042916 seconds and 5 git commands to generate.