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