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