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