~ubuntu-branches/ubuntu/utopic/binutils-arm64-cross/utopic

« back to all changes in this revision

Viewing changes to binutils-2.23.52.20130611/gold/configure.ac

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-06-20 17:38:09 UTC
  • Revision ID: package-import@ubuntu.com-20130620173809-app8lzgvymy5fg6c
Tags: 0.7
Build-depend on binutils-source (>= 2.23.52.20130620-1~).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
dnl Test for __thread support.
 
342
AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
 
343
[AC_COMPILE_IFELSE([__thread int i = 1;],
 
344
[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
 
345
 
 
346
AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
 
347
 
 
348
dnl On GNU/Linux TLS in static programs only works when using glibc
 
349
dnl 2.4 or later.
 
350
AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
 
351
[AC_COMPILE_IFELSE([
 
352
#include <features.h>
 
353
#if !defined __GLIBC__
 
354
error
 
355
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
 
356
error
 
357
#endif
 
358
], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
 
359
 
 
360
AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
 
361
 
 
362
dnl Test for #pragma omp threadprivate
 
363
AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
 
364
[save_CFLAGS="$CFLAGS"
 
365
CFLAGS="$CFLAGS -fopenmp"
 
366
AC_COMPILE_IFELSE([
 
367
#include <omp.h>
 
368
int i;
 
369
#pragma omp threadprivate (i)
 
370
], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
 
371
CFLAGS="$save_CFLAGS"])
 
372
if test "$gold_cv_c_threadprivate" = "yes"; then
 
373
  AC_DEFINE(HAVE_OMP_SUPPORT, 1,
 
374
            [Define if compiler supports #pragma omp threadprivate])
 
375
fi
 
376
AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
 
377
 
 
378
dnl Test for the -ftls-dialect=gnu2 option.
 
379
save_CFLAGS="$CFLAGS"
 
380
CFLAGS="$CFLAGS -fpic -mtls-dialect=gnu2"
 
381
AC_COMPILE_IFELSE([
 
382
__thread int i;
 
383
void foo (void)
 
384
{
 
385
  i = 10;
 
386
}
 
387
], [have_tls_gnu2=yes], [have_tls_gnu2=no])
 
388
CFLAGS="$save_CFLAGS"
 
389
AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
 
390
 
 
391
dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
 
392
dnl only with glibc 2.9 or later.
 
393
AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
 
394
[AC_COMPILE_IFELSE([
 
395
#include <features.h>
 
396
#if !defined __GLIBC__
 
397
error
 
398
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
 
399
error
 
400
#endif
 
401
], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
 
402
 
 
403
AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
 
404
 
 
405
dnl Test for the -frandom-seed option.
 
406
AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
 
407
[save_CFLAGS="$CFLAGS"
 
408
CFLAGS="$CFLAGS -frandom-seed=foo"
 
409
AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
 
410
[gold_cv_c_random_seed=no])
 
411
CFLAGS="$save_CFLAGS"])
 
412
if test "$gold_cv_c_random_seed" = "yes"; then
 
413
  # In Makefile, '$@' will be expanded to be the name of the file
 
414
  # being built, providing a unique seed for each file.
 
415
  RANDOM_SEED_CFLAGS=-frandom-seed=\$@
 
416
fi
 
417
AC_SUBST(RANDOM_SEED_CFLAGS)
 
418
 
 
419
dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
 
420
dnl 2.11 or later, and by binutils 2.20.1 or later.
 
421
AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
 
422
[save_LDFLAGS="$LDFLAGS"
 
423
LDFLAGS="$LDFLAGS -static"
 
424
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
425
#include <features.h>
 
426
#if !defined __GLIBC__
 
427
error
 
428
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
 
429
error
 
430
#endif
 
431
void func (void) { }
 
432
void invoke (void);
 
433
__asm__(".type invoke, %gnu_indirect_function");
 
434
typedef void (*funcptr) (void);
 
435
funcptr dispatch (void) __asm__ ("invoke");
 
436
funcptr dispatch (void) { return &func; }]],
 
437
[[invoke();]])
 
438
], [
 
439
if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
 
440
  gold_cv_lib_glibc_ifunc=both
 
441
else
 
442
  gold_cv_lib_glibc_ifunc=dyn
 
443
fi], [gold_cv_lib_glibc_ifunc=no])
 
444
LDFLAGS="$save_LDFLAGS"])
 
445
 
 
446
AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
 
447
AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
 
448
 
 
449
AM_BINUTILS_WARNINGS
 
450
 
 
451
WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
 
452
AC_SUBST(WARN_CXXFLAGS)
 
453
 
 
454
AC_ARG_WITH(gold-ldflags,
 
455
[  --with-gold-ldflags=FLAGS  additional link flags for gold],
 
456
[if test "$withval" = "no" -o "$withval" = "yes"; then
 
457
   GOLD_LDFLAGS=
 
458
 else
 
459
   GOLD_LDFLAGS=$withval
 
460
 fi],
 
461
[GOLD_LDFLAGS=])
 
462
AC_SUBST(GOLD_LDFLAGS)
 
463
 
 
464
AC_ARG_WITH(gold-ldadd,
 
465
[  --with-gold-ldadd=LIBS     additional libraries for gold],
 
466
[if test "$withval" = "no" -o "$withval" = "yes"; then
 
467
   GOLD_LDADD=
 
468
 else
 
469
   GOLD_LDADD=$withval
 
470
 fi],
 
471
[GOLD_LDADD=])
 
472
AC_SUBST(GOLD_LDADD)
 
473
 
 
474
dnl Force support for large files by default.  This may need to be
 
475
dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
 
476
LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
 
477
AC_SUBST(LFS_CFLAGS)
 
478
 
 
479
AC_CHECK_HEADERS(sys/mman.h)
 
480
AC_CHECK_FUNCS(chsize mmap)
 
481
AC_REPLACE_FUNCS(pread ftruncate ffsll)
 
482
 
 
483
AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
 
484
[AC_LINK_IFELSE([
 
485
AC_LANG_PROGRAM([[
 
486
#include <sys/mman.h>
 
487
void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
 
488
]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
 
489
if test "$gold_cv_lib_mremap_maymove" = "yes"; then
 
490
  AC_DEFINE(HAVE_MREMAP, 1,
 
491
    [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
 
492
else
 
493
  AC_LIBOBJ(mremap)
 
494
fi
 
495
 
 
496
# Link in zlib if we can.  This allows us to write compressed sections.
 
497
AM_ZLIB
 
498
AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_header_zlib_h" = "yes")
 
499
 
 
500
dnl We have to check these in C, not C++, because autoconf generates
 
501
dnl tests which have no type information, and current glibc provides
 
502
dnl multiple declarations of functions like basename when compiling
 
503
dnl with C++.
 
504
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
 
505
 
 
506
AC_LANG_PUSH(C++)
 
507
 
 
508
AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
 
509
AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
 
510
AC_CHECK_HEADERS(byteswap.h)
 
511
 
 
512
dnl When plugins enabled dynamic loader interface is required. Check headers
 
513
dnl which may provide this interface. In case of dlfcn.h add libdl to link.
 
514
AC_CHECK_HEADERS(windows.h)
 
515
AC_CHECK_HEADERS(dlfcn.h, [DLOPEN_LIBS="-ldl"], [DLOPEN_LIBS=""])
 
516
AC_SUBST(DLOPEN_LIBS)
 
517
 
 
518
AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
 
519
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
 
520
 
 
521
# Use of ::std::tr1::unordered_map::rehash causes undefined symbols
 
522
# at link time with some versions of GCC.
 
523
AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
 
524
[gold_cv_unordered_map_rehash],
 
525
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
526
#include <tr1/unordered_map>
 
527
void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
 
528
]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
 
529
if test "$gold_cv_unordered_map_rehash" = "yes"; then
 
530
  AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
 
531
            [Define if ::std::tr1::unordered_map::rehash is usable])
 
532
fi
 
533
 
 
534
# Use of tr1/unordered_map with off_t as a key is not supported on GCC
 
535
# 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
 
536
AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
 
537
[gold_cv_hash_off_t],
 
538
[CXXFLAGS_hold=$CXXFLAGS
 
539
CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
 
540
AC_COMPILE_IFELSE([
 
541
#include <sys/types.h>
 
542
#include <tr1/unordered_map>
 
543
std::tr1::hash<off_t> h;
 
544
],
 
545
[gold_cv_hash_off_t=yes],
 
546
[gold_cv_hash_off_t=no])
 
547
CXXFLAGS=$CXXFLAGS_hold])
 
548
if test "$gold_cv_hash_off_t" = "yes"; then
 
549
   AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
 
550
             [Define if std::tr1::hash<off_t> is usable])
 
551
fi
 
552
 
 
553
# gcc 4.3.0 doesn't recognize the printf attribute on a template
 
554
# function.  Check for that.  This is gcc bug 35546.  This test can
 
555
# probably be removed after the bug has been fixed for a while.
 
556
AC_CACHE_CHECK([whether we can use attributes with template functions],
 
557
[gold_cv_template_attribute],
 
558
[AC_COMPILE_IFELSE([
 
559
template<typename T> extern void foo(const char*, ...)
 
560
  __attribute__ ((__format__ (__printf__, 1, 2)));
 
561
template<typename T> void foo(const char* format, ...) {}
 
562
void bar() { foo<int>("%s\n", "foo"); }
 
563
], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
 
564
if test "$gold_cv_template_attribute" = "yes"; then
 
565
  AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
 
566
            [Define if attributes work on C++ templates])
 
567
fi
 
568
 
 
569
dnl Check if the system has struct stat::st_mtim.
 
570
AC_CACHE_CHECK([for struct stat::st_mtim.],
 
571
[gold_cv_stat_st_mtim],
 
572
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
573
#include <sys/stat.h>
 
574
long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
 
575
]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
 
576
if test "$gold_cv_stat_st_mtim" = "yes"; then
 
577
  AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
 
578
            [Define if struct stat has a field st_mtim with timespec for mtime])
 
579
fi
 
580
 
 
581
dnl Check if gcc supports the -gpubnames option.
 
582
save_CXXFLAGS="$CXXFLAGS"
 
583
CXXFLAGS="$CXXFLAGS -gpubnames"
 
584
AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
 
585
CXXFLAGS="$save_CXXFLAGS"
 
586
AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
 
587
 
 
588
AC_LANG_POP(C++)
 
589
 
 
590
AC_CHECK_HEADERS(locale.h)
 
591
AC_CHECK_FUNCS(setlocale)
 
592
AM_LC_MESSAGES
 
593
 
 
594
if test x$DEB_TARGET_MULTIARCH != x; then
 
595
  multiarch=$DEB_TARGET_MULTIARCH
 
596
  if test -n "$multiarch"; then
 
597
    MULTIARCH_DIRNAME='-DMULTIARCH_DIRNAME=\"'$multiarch'\"'
 
598
  fi
 
599
fi
 
600
AC_SUBST(MULTIARCH_DIRNAME)
 
601
 
 
602
AM_MAINTAINER_MODE
 
603
 
 
604
AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)