gold/
[deliverable/binutils-gdb.git] / gold / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl
3 dnl Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
4 dnl Free Software Foundation, Inc.
5 dnl
6 dnl This file is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 3 of the License, or
9 dnl (at your option) any later version.
10 dnl
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 dnl GNU General Public License for more details.
15 dnl
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; see the file COPYING3. If not see
18 dnl <http://www.gnu.org/licenses/>.
19 dnl
20
21 AC_PREREQ(2.59)
22
23 AC_INIT(gold, 0.1)
24 AC_CONFIG_SRCDIR(gold.cc)
25
26 AC_CANONICAL_TARGET
27
28 AM_INIT_AUTOMAKE([no-dist parallel-tests])
29
30 AM_CONFIG_HEADER(config.h:config.in)
31
32 # PR 14072
33 AH_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). */
36 #if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
37 # error config.h must be #included before system headers
38 #endif
39 #define __CONFIG_H__ 1])
40
41 AC_ARG_WITH(sysroot,
42 [ --with-sysroot[=DIR] search for usr/lib et al within DIR],
43 [sysroot=$withval], [sysroot=no])
44
45 if test "$sysroot" = "yes"; then
46 sysroot='${exec_prefix}/${target_alias}/sys-root'
47 elif test "$sysroot" = "no"; then
48 sysroot=
49 fi
50
51 sysroot_relocatable=0
52 if 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
61 fi
62
63 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
64 [System root for target files])
65 AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
66 [Whether the system root can be relocated])
67
68 dnl "install_as_default" is true if the linker to be installed as the
69 dnl default linker, ld.
70 dnl "installed_linker" is the installed gold linker name.
71
72 installed_linker=ld.gold
73 AC_ARG_ENABLE(gold,
74 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
75 [case "${enableval}" in
76 default)
77 install_as_default=yes
78 ;;
79 yes)
80 if test x${enable_ld} = xno; then
81 install_as_default=yes
82 fi
83 ;;
84 esac],
85 [install_as_default=no])
86 AC_SUBST(install_as_default)
87 AC_SUBST(installed_linker)
88
89 dnl For now threads are a configure time option.
90 AC_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])
98 if test "$threads" = "yes"; then
99 AC_DEFINE(ENABLE_THREADS, 1,
100 [Define to do multi-threaded linking])
101 fi
102 AM_CONDITIONAL(THREADS, test "$threads" = "yes")
103
104 AC_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])
112 if test "$plugins" = "yes"; then
113 AC_DEFINE(ENABLE_PLUGINS, 1,
114 [Define to enable linker plugins])
115 fi
116 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
117
118 AC_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 ;;
130 esac],
131 [# For now, enable all targets by default
132 enable_targets=all
133 ])
134
135 # Canonicalize the enabled targets.
136 if 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
146 fi
147
148 # See which specific instantiations we need.
149 targetobjs=
150 all_targets=
151 default_machine=
152 default_size=
153 default_big_endian=
154 default_osabi=ELFOSABI_NONE
155 targ_32_little=
156 targ_32_big=
157 targ_64_little=
158 targ_64_big=
159 for targ in $target $canon_targets; do
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
165 all_targets=yes
166 else
167 . ${srcdir}/configure.tgt
168
169 if test "$targ_obj" = "UNKNOWN"; then
170 AC_MSG_ERROR("unsupported target $targ")
171 else
172 targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
173 if test "$targ_extra_obj" != ""; then
174 targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
175 fi
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
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
201 default_osabi=$targ_osabi
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")
208 AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
209 DEFAULT_TARGET=${targ_obj}
210 AC_SUBST(DEFAULT_TARGET)
211 fi
212 fi
213 fi
214 done
215
216 # Remove any duplicates.
217 to=""
218 for t in $targetobjs; do
219 case " $to " in
220 *" $t "*) ;;
221 *) to="$to $t" ;;
222 esac
223 done
224 targetobjs=$to
225
226 if test -n "$targ_32_little"; then
227 AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
228 [Define to support 32-bit little-endian targets])
229 fi
230 if test -n "$targ_32_big"; then
231 AC_DEFINE(HAVE_TARGET_32_BIG, 1,
232 [Define to support 32-bit big-endian targets])
233 fi
234 if test -n "$targ_64_little"; then
235 AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
236 [Define to support 64-bit little-endian targets])
237 fi
238 if test -n "$targ_64_big"; then
239 AC_DEFINE(HAVE_TARGET_64_BIG, 1,
240 [Define to support 64-bit big-endian targets])
241 fi
242
243 if test -n "$all_targets"; then
244 TARGETOBJS='$(ALL_TARGETOBJS)'
245 else
246 TARGETOBJS="$targetobjs"
247 fi
248 AC_SUBST(TARGETOBJS)
249
250 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
251 [Default machine code])
252 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
253 [Default size (32 or 64)])
254 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
255 [Default big endian (true or false)])
256 AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
257 [Default OSABI code])
258
259 AC_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::"'])
267 AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
268 [Default library search path])
269 if 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])
271 fi
272
273 AC_CHECK_TOOL(NM, nm)
274
275 AC_PROG_CC
276 AC_PROG_CXX
277 AC_PROG_YACC
278 AC_PROG_RANLIB
279 AC_PROG_INSTALL
280 AC_PROG_LN_S
281
282 AC_GNU_SOURCE
283
284 ZW_GNU_GETTEXT_SISTER_DIR
285 AM_PO_SUBDIRS
286
287 AC_C_BIGENDIAN
288
289 AC_EXEEXT
290
291 AM_CONDITIONAL(NATIVE_LINKER,
292 test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
293 AM_CONDITIONAL(GCC, test "$GCC" = yes)
294
295 AM_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
298 dnl Test for whether static linking is supported. Some systems do not
299 dnl install static libraries. This only affects the set of tests that
300 dnl we run.
301 AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
302 [LDFLAGS_hold=$LDFLAGS
303 LDFLAGS="$LDFLAGS -static"
304 AC_LINK_IFELSE([
305 AC_LANG_PROGRAM([[void f() { }]])],
306 [gold_cv_lib_static=yes], [gold_cv_lib_static=no])
307 LDFLAGS=$LDFLAGS_hold])
308 AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
309
310 dnl Some architectures do not support taking pointers of functions
311 dnl defined in shared libraries except in -fPIC mode. We need to
312 dnl tell the unittest framework if we're compiling for one of those
313 dnl targets, so it doesn't try to run the tests that do that.
314 AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
315 case $target_cpu in
316 powerpc*) false;;
317 x86_64) false;;
318 sparc64) false;;
319 *) true;;
320 esac])
321
322 dnl Test for gcc 4.1 or later. Full support for -mcmodel=medium is
323 dnl only available in gcc 4.1.
324 AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
325 [AC_COMPILE_IFELSE([
326 #if !defined __GNUC__
327 error
328 #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
329 error
330 #endif
331 ], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
332
333 save_CFLAGS="$CFLAGS"
334 CFLAGS="$CFLAGS -mcmodel=medium"
335 AC_COMPILE_IFELSE([int i;], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
336 CFLAGS="$save_CFLAGS"
337 dnl Whether we can test -mcmodel=medium.
338 AM_CONDITIONAL(MCMODEL_MEDIUM,
339 [test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
340
341 AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
342 [gold_cv_merge_constants], [
343 save_CFLAGS="$CFLAGS"
344 CFLAGS="$CFLAGS -fmerge-constants"
345 AC_COMPILE_IFELSE([const char *s = "foo";],
346 [have_merge_constants=yes],
347 [have_merge_constants=no])
348 CFLAGS="$save_CFLAGS"])
349 AC_SUBST([MERGE_CONSTANTS_FLAG])
350 AS_IF([test "$gold_cv_merge_constants" = yes],
351 [MERGE_CONSTANTS_FLAG=-fmerge-constants],
352 [MERGE_CONSTANTS_FLAG=])
353
354 dnl Test for __thread support.
355 AC_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
359 AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
360
361 dnl On GNU/Linux TLS in static programs only works when using glibc
362 dnl 2.4 or later.
363 AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
364 [AC_COMPILE_IFELSE([
365 #include <features.h>
366 #if !defined __GLIBC__
367 error
368 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
369 error
370 #endif
371 ], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
372
373 AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
374
375 dnl Test for #pragma omp threadprivate
376 AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
377 [save_CFLAGS="$CFLAGS"
378 CFLAGS="$CFLAGS -fopenmp"
379 AC_COMPILE_IFELSE([
380 #include <omp.h>
381 int i;
382 #pragma omp threadprivate (i)
383 ], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
384 CFLAGS="$save_CFLAGS"])
385 if test "$gold_cv_c_threadprivate" = "yes"; then
386 AC_DEFINE(HAVE_OMP_SUPPORT, 1,
387 [Define if compiler supports #pragma omp threadprivate])
388 fi
389 AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
390
391 dnl Test for the -ftls-dialect=gnu2 option.
392 save_CFLAGS="$CFLAGS"
393 CFLAGS="$CFLAGS -fpic -mtls-dialect=gnu2"
394 AC_COMPILE_IFELSE([
395 __thread int i;
396 void foo (void)
397 {
398 i = 10;
399 }
400 ], [have_tls_gnu2=yes], [have_tls_gnu2=no])
401 CFLAGS="$save_CFLAGS"
402 AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
403
404 dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
405 dnl only with glibc 2.9 or later.
406 AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
407 [AC_COMPILE_IFELSE([
408 #include <features.h>
409 #if !defined __GLIBC__
410 error
411 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
412 error
413 #endif
414 ], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
415
416 AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
417
418 dnl Test for the -frandom-seed option.
419 AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
420 [save_CFLAGS="$CFLAGS"
421 CFLAGS="$CFLAGS -frandom-seed=foo"
422 AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
423 [gold_cv_c_random_seed=no])
424 CFLAGS="$save_CFLAGS"])
425 if test "$gold_cv_c_random_seed" = "yes"; then
426 # In Makefile, '$@' will be expanded to be the name of the file
427 # being built, providing a unique seed for each file.
428 RANDOM_SEED_CFLAGS=-frandom-seed=\$@
429 fi
430 AC_SUBST(RANDOM_SEED_CFLAGS)
431
432 dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
433 dnl 2.11 or later, and by binutils 2.20.1 or later.
434 AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
435 [save_LDFLAGS="$LDFLAGS"
436 LDFLAGS="$LDFLAGS -static"
437 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
438 #include <features.h>
439 #if !defined __GLIBC__
440 error
441 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
442 error
443 #endif
444 void func (void) { }
445 void invoke (void);
446 __asm__(".type invoke, %gnu_indirect_function");
447 typedef void (*funcptr) (void);
448 funcptr dispatch (void) __asm__ ("invoke");
449 funcptr dispatch (void) { return &func; }]],
450 [[invoke();]])
451 ], [
452 if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
453 gold_cv_lib_glibc_ifunc=both
454 else
455 gold_cv_lib_glibc_ifunc=dyn
456 fi], [gold_cv_lib_glibc_ifunc=no])
457 LDFLAGS="$save_LDFLAGS"])
458
459 AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
460 AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
461
462 AM_BINUTILS_WARNINGS
463
464 WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
465 AC_SUBST(WARN_CXXFLAGS)
466
467 AC_ARG_WITH(gold-ldflags,
468 [ --with-gold-ldflags=FLAGS additional link flags for gold],
469 [if test "$withval" = "no" -o "$withval" = "yes"; then
470 GOLD_LDFLAGS=
471 else
472 GOLD_LDFLAGS=$withval
473 fi],
474 [GOLD_LDFLAGS=])
475 AC_SUBST(GOLD_LDFLAGS)
476
477 AC_ARG_WITH(gold-ldadd,
478 [ --with-gold-ldadd=LIBS additional libraries for gold],
479 [if test "$withval" = "no" -o "$withval" = "yes"; then
480 GOLD_LDADD=
481 else
482 GOLD_LDADD=$withval
483 fi],
484 [GOLD_LDADD=])
485 AC_SUBST(GOLD_LDADD)
486
487 dnl Force support for large files by default. This may need to be
488 dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
489 LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
490 AC_SUBST(LFS_CFLAGS)
491
492 AC_CHECK_HEADERS(sys/mman.h)
493 AC_CHECK_FUNCS(chsize mmap)
494 AC_REPLACE_FUNCS(pread ftruncate ffsll)
495
496 AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
497 [AC_LINK_IFELSE([
498 AC_LANG_PROGRAM([[
499 #include <sys/mman.h>
500 void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
501 ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
502 if test "$gold_cv_lib_mremap_maymove" = "yes"; then
503 AC_DEFINE(HAVE_MREMAP, 1,
504 [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
505 else
506 AC_LIBOBJ(mremap)
507 fi
508
509 # Link in zlib if we can. This allows us to write compressed sections.
510 AM_ZLIB
511 AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes")
512
513 dnl We have to check these in C, not C++, because autoconf generates
514 dnl tests which have no type information, and current glibc provides
515 dnl multiple declarations of functions like basename when compiling
516 dnl with C++.
517 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
518
519 AC_LANG_PUSH(C++)
520
521 AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
522 AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
523 AC_CHECK_HEADERS(byteswap.h)
524
525 dnl When plugins enabled dynamic loader interface is required. Check headers
526 dnl which may provide this interface. In case of dlfcn.h add libdl to link.
527 AC_CHECK_HEADERS(windows.h)
528 AC_CHECK_HEADERS(dlfcn.h, [DLOPEN_LIBS="-ldl"], [DLOPEN_LIBS=""])
529 AC_SUBST(DLOPEN_LIBS)
530
531 AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
532 AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
533
534 # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
535 # at link time with some versions of GCC.
536 AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
537 [gold_cv_unordered_map_rehash],
538 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
539 #include <tr1/unordered_map>
540 void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
541 ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
542 if test "$gold_cv_unordered_map_rehash" = "yes"; then
543 AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
544 [Define if ::std::tr1::unordered_map::rehash is usable])
545 fi
546
547 # Use of tr1/unordered_map with off_t as a key is not supported on GCC
548 # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
549 AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
550 [gold_cv_hash_off_t],
551 [CXXFLAGS_hold=$CXXFLAGS
552 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
553 AC_COMPILE_IFELSE([
554 #include <sys/types.h>
555 #include <tr1/unordered_map>
556 std::tr1::hash<off_t> h;
557 ],
558 [gold_cv_hash_off_t=yes],
559 [gold_cv_hash_off_t=no])
560 CXXFLAGS=$CXXFLAGS_hold])
561 if test "$gold_cv_hash_off_t" = "yes"; then
562 AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
563 [Define if std::tr1::hash<off_t> is usable])
564 fi
565
566 # gcc 4.3.0 doesn't recognize the printf attribute on a template
567 # function. Check for that. This is gcc bug 35546. This test can
568 # probably be removed after the bug has been fixed for a while.
569 AC_CACHE_CHECK([whether we can use attributes with template functions],
570 [gold_cv_template_attribute],
571 [AC_COMPILE_IFELSE([
572 template<typename T> extern void foo(const char*, ...)
573 __attribute__ ((__format__ (__printf__, 1, 2)));
574 template<typename T> void foo(const char* format, ...) {}
575 void bar() { foo<int>("%s\n", "foo"); }
576 ], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
577 if test "$gold_cv_template_attribute" = "yes"; then
578 AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
579 [Define if attributes work on C++ templates])
580 fi
581
582 dnl Check if the system has struct stat::st_mtim.
583 AC_CACHE_CHECK([for struct stat::st_mtim.],
584 [gold_cv_stat_st_mtim],
585 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
586 #include <sys/stat.h>
587 long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
588 ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
589 if test "$gold_cv_stat_st_mtim" = "yes"; then
590 AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
591 [Define if struct stat has a field st_mtim with timespec for mtime])
592 fi
593
594 dnl Check if gcc supports the -gpubnames option.
595 save_CXXFLAGS="$CXXFLAGS"
596 CXXFLAGS="$CXXFLAGS -gpubnames"
597 AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
598 CXXFLAGS="$save_CXXFLAGS"
599 AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
600
601 AC_LANG_POP(C++)
602
603 AC_CHECK_HEADERS(locale.h)
604 AC_CHECK_FUNCS(setlocale)
605 AM_LC_MESSAGES
606
607 AM_MAINTAINER_MODE
608
609 AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)
This page took 0.043941 seconds and 5 git commands to generate.