]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gold/configure.ac
daily update
[thirdparty/binutils-gdb.git] / gold / configure.ac
CommitLineData
bae7f79e 1dnl Process this file with autoconf to produce a configure script.
5bf135a7 2dnl
0bf402d5
ILT
3dnl Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
4dnl Free Software Foundation, Inc.
5bf135a7
NC
5dnl
6dnl This file is free software; you can redistribute it and/or modify
7dnl it under the terms of the GNU General Public License as published by
8dnl the Free Software Foundation; either version 3 of the License, or
9dnl (at your option) any later version.
2b64b551 10dnl
5bf135a7
NC
11dnl This program is distributed in the hope that it will be useful,
12dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14dnl GNU General Public License for more details.
2b64b551 15dnl
5bf135a7
NC
16dnl You should have received a copy of the GNU General Public License
17dnl along with this program; see the file COPYING3. If not see
18dnl <http://www.gnu.org/licenses/>.
19dnl
bae7f79e
ILT
20
21AC_PREREQ(2.59)
8486ee48
ILT
22
23AC_INIT(gold, 0.1)
24AC_CONFIG_SRCDIR(gold.cc)
bae7f79e
ILT
25
26AC_CANONICAL_TARGET
27
6ea55b82 28AM_INIT_AUTOMAKE([no-dist parallel-tests])
bae7f79e
ILT
29
30AM_CONFIG_HEADER(config.h:config.in)
31
df7b86aa
NC
32# PR 14072
33AH_VERBATIM([00_CONFIG_H_CHECK],
34[/* Check that config.h is #included before system headers
35 (this works only for glibc, but that should be enough). */
0a6f1bf2 36#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
df7b86aa
NC
37# error config.h must be #included before system headers
38#endif
39#define __CONFIG_H__ 1])
40
ad2d6943
ILT
41AC_ARG_WITH(sysroot,
42[ --with-sysroot[=DIR] search for usr/lib et al within DIR],
43[sysroot=$withval], [sysroot=no])
44
45if test "$sysroot" = "yes"; then
46 sysroot='${exec_prefix}/${target_alias}/sys-root'
47elif test "$sysroot" = "no"; then
48 sysroot=
49fi
50
51sysroot_relocatable=0
52if test -n "$sysroot"; then
53 case "sysroot" in
54 "${prefix}" | "${prefix}/"* | \
55 "${exec_prefix}" | "${exec_prefix}/"* | \
56 '${prefix}' | '${prefix}/'*| \
57 '${exec_prefix}' | '${exec_prefix}/'*)
58 sysroot_relocatable=1
59 ;;
60 esac
61fi
62
63AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
64 [System root for target files])
65AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
66 [Whether the system root can be relocated])
67
4fda8867
NC
68dnl "install_as_default" is true if the linker to be installed as the
69dnl default linker, ld.
70dnl "installed_linker" is the installed gold linker name.
c7791212 71
f2a6224b 72installed_linker=ld.gold
c7791212
NC
73AC_ARG_ENABLE(gold,
74[[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
75[case "${enableval}" in
f2a6224b
L
76 default)
77 install_as_default=yes
78 ;;
79 yes)
80 if test x${enable_ld} = xno; then
c7791212
NC
81 install_as_default=yes
82 fi
4fda8867
NC
83 ;;
84 esac],
f2a6224b 85[install_as_default=no])
4fda8867
NC
86AC_SUBST(install_as_default)
87AC_SUBST(installed_linker)
88
fe9a4c12
ILT
89dnl For now threads are a configure time option.
90AC_ARG_ENABLE([threads],
91[ --enable-threads multi-threaded linking],
92[case "${enableval}" in
93 yes | "") threads=yes ;;
94 no) threads=no ;;
95 *) threads=yes ;;
96 esac],
97[threads=no])
98if test "$threads" = "yes"; then
99 AC_DEFINE(ENABLE_THREADS, 1,
100 [Define to do multi-threaded linking])
101fi
102AM_CONDITIONAL(THREADS, test "$threads" = "yes")
89fc3421
CC
103
104AC_ARG_ENABLE([plugins],
105[ --enable-plugins linker plugins],
106[case "${enableval}" in
107 yes | "") plugins=yes ;;
108 no) plugins=no ;;
109 *) plugins=yes ;;
110 esac],
111[plugins=no])
112if test "$plugins" = "yes"; then
113 AC_DEFINE(ENABLE_PLUGINS, 1,
114 [Define to enable linker plugins])
115fi
116AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
fe9a4c12 117
193a53d9
ILT
118AC_ARG_ENABLE([targets],
119[ --enable-targets alternative target configurations],
120[case "${enableval}" in
121 yes | "")
122 AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
123 ;;
124 no)
125 enable_targets=
126 ;;
127 *)
128 enable_targets=$enableval
129 ;;
130esac],
131[# For now, enable all targets by default
132 enable_targets=all
133])
134
135# Canonicalize the enabled targets.
136if test -n "$enable_targets"; then
137 for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
138 result=`$ac_config_sub $targ 2>/dev/null`
139 if test -n "$result"; then
140 canon_targets="$canon_targets $result"
141 else
142 # Permit unrecognized target names, like "all".
143 canon_targets="$canon_targets $targ"
144 fi
145 done
146fi
147
148# See which specific instantiations we need.
6df6da4a
ILT
149targetobjs=
150all_targets=
fbfba508
ILT
151default_machine=
152default_size=
153default_big_endian=
36959681 154default_osabi=ELFOSABI_NONE
fbfba508
ILT
155targ_32_little=
156targ_32_big=
157targ_64_little=
158targ_64_big=
193a53d9 159for targ in $target $canon_targets; do
193a53d9
ILT
160 if test "$targ" = "all"; then
161 targ_32_little=yes
162 targ_32_big=yes
163 targ_64_little=yes
164 targ_64_big=yes
6df6da4a 165 all_targets=yes
193a53d9 166 else
fbfba508
ILT
167 . ${srcdir}/configure.tgt
168
169 if test "$targ_obj" = "UNKNOWN"; then
6df6da4a 170 AC_MSG_ERROR("unsupported target $targ")
fbfba508
ILT
171 else
172 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
60b2b4e7
ILT
173 if test "$targ_extra_obj" != ""; then
174 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
175 fi
f5314dd5
DM
176 if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
177 if test "$targ_big_endian" = "true" \
178 -o "$targ_extra_big_endian" = "true"; then
179 targ_32_big=yes
180 fi
181 if test "$targ_big_endian" = "false" \
182 -o "$targ_extra_big_endian" = "false"; then
183 targ_32_little=yes
184 fi
185 fi
186 if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
187 if test "$targ_big_endian" = "true" \
188 -o "$targ_extra_big_endian" = "true"; then
189 targ_64_big=yes
190 fi
191 if test "$targ_big_endian" = "false" \
192 -o "$targ_extra_big_endian" = "false"; then
193 targ_64_little=yes
194 fi
fbfba508
ILT
195 fi
196
197 if test "$target" = "$targ"; then
198 default_machine=$targ_machine
199 default_size=$targ_size
200 default_big_endian=$targ_big_endian
36959681 201 default_osabi=$targ_osabi
364c7fa5
ILT
202
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")
5c0b3823 208 AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
9df9de2c
CC
209 DEFAULT_TARGET=${targ_obj}
210 AC_SUBST(DEFAULT_TARGET)
fbfba508
ILT
211 fi
212 fi
193a53d9
ILT
213 fi
214done
215
6cfaf60b 216# Remove any duplicates.
9109c078
ILT
217to=""
218for t in $targetobjs; do
219 case " $to " in
220 *" $t "*) ;;
221 *) to="$to $t" ;;
222 esac
223done
224targetobjs=$to
6cfaf60b 225
193a53d9
ILT
226if test -n "$targ_32_little"; then
227 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
228 [Define to support 32-bit little-endian targets])
229fi
230if test -n "$targ_32_big"; then
231 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
232 [Define to support 32-bit big-endian targets])
233fi
234if test -n "$targ_64_little"; then
235 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
236 [Define to support 64-bit little-endian targets])
237fi
238if test -n "$targ_64_big"; then
239 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
240 [Define to support 64-bit big-endian targets])
241fi
242
6df6da4a
ILT
243if test -n "$all_targets"; then
244 TARGETOBJS='$(ALL_TARGETOBJS)'
245else
246 TARGETOBJS="$targetobjs"
247fi
248AC_SUBST(TARGETOBJS)
249
fbfba508
ILT
250AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
251 [Default machine code])
252AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
253 [Default size (32 or 64)])
254AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
255 [Default big endian (true or false)])
36959681
ILT
256AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
257 [Default OSABI code])
fbfba508 258
3f3cddf1
ILT
259AC_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::"'])
267AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
268 [Default library search path])
269if 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])
271fi
272
ebb300b2
CC
273AC_CHECK_TOOL(NM, nm)
274
bae7f79e
ILT
275AC_PROG_CC
276AC_PROG_CXX
dbe717ef 277AC_PROG_YACC
5a6f7e2d 278AC_PROG_RANLIB
bae7f79e 279AC_PROG_INSTALL
537b5f51 280AC_PROG_LN_S
fa99aa09
ILT
281
282AC_GNU_SOURCE
283
bae7f79e
ILT
284ZW_GNU_GETTEXT_SISTER_DIR
285AM_PO_SUBDIRS
286
92e059d8
ILT
287AC_C_BIGENDIAN
288
bae7f79e
ILT
289AC_EXEEXT
290
537b5f51
ILT
291AM_CONDITIONAL(NATIVE_LINKER,
292 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
293AM_CONDITIONAL(GCC, test "$GCC" = yes)
294
eb373049
ILT
295AM_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
328c7c2f
ILT
298dnl Test for whether static linking is supported. Some systems do not
299dnl install static libraries. This only affects the set of tests that
300dnl we run.
301AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
dd7af074 302[LDFLAGS_hold=$LDFLAGS
328c7c2f 303LDFLAGS="$LDFLAGS -static"
dd7af074 304AC_LINK_IFELSE([
328c7c2f 305AC_LANG_PROGRAM([[void f() { }]])],
dd7af074
ILT
306[gold_cv_lib_static=yes], [gold_cv_lib_static=no])
307LDFLAGS=$LDFLAGS_hold])
328c7c2f
ILT
308AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
309
63402fe4
ILT
310dnl Some architectures do not support taking pointers of functions
311dnl defined in shared libraries except in -fPIC mode. We need to
312dnl tell the unittest framework if we're compiling for one of those
313dnl targets, so it doesn't try to run the tests that do that.
314AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
315 case $target_cpu in
864a1b56 316 powerpc*) false;;
63402fe4 317 x86_64) false;;
11936fb1 318 sparc64) false;;
63402fe4
ILT
319 *) true;;
320 esac])
321
084e2665
ILT
322dnl Test for gcc 4.1 or later. Full support for -mcmodel=medium is
323dnl only available in gcc 4.1.
324AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
325[AC_COMPILE_IFELSE([
326#if !defined __GNUC__
327error
328#elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
329error
330#endif
331], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
332
24482ca0
L
333save_CFLAGS="$CFLAGS"
334CFLAGS="$CFLAGS -mcmodel=medium"
335AC_COMPILE_IFELSE([int i;], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
336CFLAGS="$save_CFLAGS"
8a5e3e08 337dnl Whether we can test -mcmodel=medium.
084e2665 338AM_CONDITIONAL(MCMODEL_MEDIUM,
24482ca0 339[test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
8a5e3e08 340
2b64b551
RM
341AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
342 [gold_cv_merge_constants], [
343save_CFLAGS="$CFLAGS"
344CFLAGS="$CFLAGS -fmerge-constants"
345AC_COMPILE_IFELSE([const char *s = "foo";],
2500c017
CC
346 [gold_cv_merge_constants=yes],
347 [gold_cv_merge_constants=no])
2b64b551
RM
348CFLAGS="$save_CFLAGS"])
349AC_SUBST([MERGE_CONSTANTS_FLAG])
350AS_IF([test "$gold_cv_merge_constants" = yes],
351 [MERGE_CONSTANTS_FLAG=-fmerge-constants],
352 [MERGE_CONSTANTS_FLAG=])
353
6eee141f 354dnl Test for __thread support.
097ec620
ILT
355AC_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
359AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
360
361dnl On GNU/Linux TLS in static programs only works when using glibc
362dnl 2.4 or later.
363AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
364[AC_COMPILE_IFELSE([
365#include <features.h>
366#if !defined __GLIBC__
367error
368#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
369error
370#endif
371], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
372
373AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
6eee141f 374
155a0dd7
ILT
375dnl Test for #pragma omp threadprivate
376AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
377[save_CFLAGS="$CFLAGS"
378CFLAGS="$CFLAGS -fopenmp"
379AC_COMPILE_IFELSE([
380#include <omp.h>
381int i;
382#pragma omp threadprivate (i)
383], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
384CFLAGS="$save_CFLAGS"])
385if test "$gold_cv_c_threadprivate" = "yes"; then
386 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
387 [Define if compiler supports #pragma omp threadprivate])
388fi
389AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
390
c2b45e22 391dnl Test for the -ftls-dialect=gnu2 option.
13323c49
RM
392dnl Use -Werror in case of compilers that make unknown -m options warnings.
393dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
394dnl gets set later by default Autoconf magic to include -Werror. (We are
395dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2
396dnl but does not grok -Werror.)
c2b45e22 397save_CFLAGS="$CFLAGS"
13323c49 398CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2"
63887f3d
L
399AC_COMPILE_IFELSE([
400__thread int i;
401void foo (void)
402{
403 i = 10;
404}
405], [have_tls_gnu2=yes], [have_tls_gnu2=no])
c2b45e22
CC
406CFLAGS="$save_CFLAGS"
407AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
408
409dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
b0074644
ILT
410dnl only with glibc 2.9 or later.
411AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
c2b45e22
CC
412[AC_COMPILE_IFELSE([
413#include <features.h>
414#if !defined __GLIBC__
415error
b0074644 416#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
c2b45e22
CC
417error
418#endif
b0074644 419], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
c2b45e22 420
b0074644 421AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
c2b45e22 422
1d1f116d
CD
423dnl Test for the -frandom-seed option.
424AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
425[save_CFLAGS="$CFLAGS"
426CFLAGS="$CFLAGS -frandom-seed=foo"
427AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
428[gold_cv_c_random_seed=no])
429CFLAGS="$save_CFLAGS"])
430if 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=\$@
434fi
435AC_SUBST(RANDOM_SEED_CFLAGS)
436
7223e9ca 437dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
d0773f31 438dnl 2.11 or later, and by binutils 2.20.1 or later.
ebb300b2
CC
439AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
440[save_LDFLAGS="$LDFLAGS"
441LDFLAGS="$LDFLAGS -static"
442AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7223e9ca
ILT
443#include <features.h>
444#if !defined __GLIBC__
445error
446#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
447error
448#endif
ebb300b2
CC
449void func (void) { }
450void invoke (void);
451__asm__(".type invoke, %gnu_indirect_function");
452typedef void (*funcptr) (void);
453funcptr dispatch (void) __asm__ ("invoke");
454funcptr dispatch (void) { return &func; }]],
455[[invoke();]])
456], [
457if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
458 gold_cv_lib_glibc_ifunc=both
459else
460 gold_cv_lib_glibc_ifunc=dyn
461fi], [gold_cv_lib_glibc_ifunc=no])
462LDFLAGS="$save_LDFLAGS"])
7223e9ca 463
ebb300b2
CC
464AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
465AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
7223e9ca 466
bae7f79e
ILT
467AM_BINUTILS_WARNINGS
468
2ea97941 469WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
bae7f79e
ILT
470AC_SUBST(WARN_CXXFLAGS)
471
dc87f620
ILT
472AC_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=])
480AC_SUBST(GOLD_LDFLAGS)
481
482AC_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=])
490AC_SUBST(GOLD_LDADD)
491
bae7f79e
ILT
492dnl Force support for large files by default. This may need to be
493dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
494e05f4
ILT
494LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
495AC_SUBST(LFS_CFLAGS)
bae7f79e 496
88597d34
ILT
497AC_CHECK_HEADERS(sys/mman.h)
498AC_CHECK_FUNCS(chsize mmap)
499AC_REPLACE_FUNCS(pread ftruncate ffsll)
500
501AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
502[AC_LINK_IFELSE([
503AC_LANG_PROGRAM([[
504#include <sys/mman.h>
505void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
506]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
507if 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])
510else
511 AC_LIBOBJ(mremap)
512fi
82dcae9d 513
9a0910c3 514# Link in zlib if we can. This allows us to write compressed sections.
ae2eea65
ILT
515AM_ZLIB
516AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes")
9a0910c3 517
0639a6f6
ILT
518dnl We have to check these in C, not C++, because autoconf generates
519dnl tests which have no type information, and current glibc provides
520dnl multiple declarations of functions like basename when compiling
521dnl with C++.
522AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
523
54dc6425 524AC_LANG_PUSH(C++)
d288e464 525
54dc6425
ILT
526AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
527AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
15d5fa16 528AC_CHECK_HEADERS(byteswap.h)
0bf402d5
ILT
529
530dnl When plugins enabled dynamic loader interface is required. Check headers
6632e8cc 531dnl which may provide this interface. Add the necessary library to link.
0bf402d5 532AC_CHECK_HEADERS(windows.h)
6632e8cc
CC
533AC_CHECK_HEADERS(dlfcn.h)
534AC_SEARCH_LIBS(dlopen, [dl dld])
535case "$ac_cv_search_dlopen" in
536 no*) DLOPEN_LIBS="";;
537 *) DLOPEN_LIBS="$ac_cv_search_dlopen";;
538esac
0bf402d5
ILT
539AC_SUBST(DLOPEN_LIBS)
540
7c0640fa 541AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
3d857b98 542AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
d288e464 543
40fde488
CD
544# Use of ::std::tr1::unordered_map::rehash causes undefined symbols
545# at link time with some versions of GCC.
546AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
547[gold_cv_unordered_map_rehash],
548[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
549#include <tr1/unordered_map>
550void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
551]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
552if test "$gold_cv_unordered_map_rehash" = "yes"; then
553 AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
554 [Define if ::std::tr1::unordered_map::rehash is usable])
555fi
556
81c82a68
ILT
557# Use of tr1/unordered_map with off_t as a key is not supported on GCC
558# 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
559AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
560[gold_cv_hash_off_t],
561[CXXFLAGS_hold=$CXXFLAGS
562CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
563AC_COMPILE_IFELSE([
564#include <sys/types.h>
565#include <tr1/unordered_map>
566std::tr1::hash<off_t> h;
567],
568[gold_cv_hash_off_t=yes],
569[gold_cv_hash_off_t=no])
26e4ef59 570CXXFLAGS=$CXXFLAGS_hold])
81c82a68
ILT
571if test "$gold_cv_hash_off_t" = "yes"; then
572 AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
573 [Define if std::tr1::hash<off_t> is usable])
574fi
575
04bf7072
ILT
576# gcc 4.3.0 doesn't recognize the printf attribute on a template
577# function. Check for that. This is gcc bug 35546. This test can
578# probably be removed after the bug has been fixed for a while.
579AC_CACHE_CHECK([whether we can use attributes with template functions],
580[gold_cv_template_attribute],
581[AC_COMPILE_IFELSE([
582template<typename T> extern void foo(const char*, ...)
583 __attribute__ ((__format__ (__printf__, 1, 2)));
584template<typename T> void foo(const char* format, ...) {}
585void bar() { foo<int>("%s\n", "foo"); }
586], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
587if test "$gold_cv_template_attribute" = "yes"; then
588 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
589 [Define if attributes work on C++ templates])
590fi
591
5d329b7d
ILT
592dnl Check if the system has struct stat::st_mtim.
593AC_CACHE_CHECK([for struct stat::st_mtim.],
594[gold_cv_stat_st_mtim],
595[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
596#include <sys/stat.h>
597long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
598]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
599if test "$gold_cv_stat_st_mtim" = "yes"; then
600 AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
601 [Define if struct stat has a field st_mtim with timespec for mtime])
602fi
603
f1415016 604dnl Check if gcc supports the -gpubnames option.
13323c49
RM
605dnl Use -Werror in case of compilers that make unknown -g options warnings.
606dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
607dnl gets set later by default Autoconf magic to include -Werror. (We are
608dnl assuming here that there is no compiler that groks -gpubnames
609dnl but does not grok -Werror.)
f1415016 610save_CXXFLAGS="$CXXFLAGS"
13323c49 611CXXFLAGS="$CXXFLAGS -Werror -gpubnames"
f1415016
CC
612AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
613CXXFLAGS="$save_CXXFLAGS"
614AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
615
54dc6425
ILT
616AC_LANG_POP(C++)
617
58797674 618AC_CHECK_HEADERS(locale.h)
44350750
NC
619AC_CHECK_FUNCS(setlocale)
620AM_LC_MESSAGES
621
bae7f79e
ILT
622AM_MAINTAINER_MODE
623
5a6f7e2d 624AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)