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