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