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