OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gold/] [configure.ac] - Blame information for rev 160

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 khays
dnl Process this file with autoconf to produce a configure script.
2
 
3
AC_PREREQ(2.59)
4
 
5
AC_INIT(gold, 0.1)
6
AC_CONFIG_SRCDIR(gold.cc)
7
 
8
AC_CANONICAL_TARGET
9
 
10
AM_INIT_AUTOMAKE([no-dist parallel-tests])
11
 
12
AM_CONFIG_HEADER(config.h:config.in)
13
 
14
AC_ARG_WITH(sysroot,
15
[  --with-sysroot[=DIR]    search for usr/lib et al within DIR],
16
[sysroot=$withval], [sysroot=no])
17
 
18
if test "$sysroot" = "yes"; then
19
  sysroot='${exec_prefix}/${target_alias}/sys-root'
20
elif test "$sysroot" = "no"; then
21
  sysroot=
22
fi
23
 
24
sysroot_relocatable=0
25
if test -n "$sysroot"; then
26
  case "sysroot" in
27
    "${prefix}" | "${prefix}/"* | \
28
    "${exec_prefix}" | "${exec_prefix}/"* | \
29
    '${prefix}' | '${prefix}/'*| \
30
    '${exec_prefix}' | '${exec_prefix}/'*)
31
      sysroot_relocatable=1
32
      ;;
33
  esac
34
fi
35
 
36
AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
37
  [System root for target files])
38
AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
39
  [Whether the system root can be relocated])
40
 
41
dnl "install_as_default" is true if the linker to be installed as the
42
dnl default linker, ld.
43
dnl "installed_linker" is the installed gold linker name.
44
 
45
default_ld=
46
AC_ARG_ENABLE(ld,
47
[[  --enable-ld[=ARG]     build ld [ARG={default,yes,no}]]],
48
[case "${enableval}" in
49
  default)
50
    default_ld=ld.bfd
51
    ;;
52
esac])
53
 
54
AC_ARG_ENABLE(gold,
55
[[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
56
[case "${enableval}" in
57
 yes|default)
58
   if test x${default_ld} = x; then
59
     install_as_default=yes
60
   fi
61
   installed_linker=ld.gold
62
   ;;
63
 no)
64
   ;;
65
 *)
66
   AC_MSG_ERROR([invalid --enable-gold argument])
67
   ;;
68
 esac],
69
[install_as_default=no
70
 installed_linker=ld.gold])
71
AC_SUBST(install_as_default)
72
AC_SUBST(installed_linker)
73
 
74
dnl For now threads are a configure time option.
75
AC_ARG_ENABLE([threads],
76
[  --enable-threads        multi-threaded linking],
77
[case "${enableval}" in
78
  yes | "") threads=yes ;;
79
  no) threads=no ;;
80
  *) threads=yes ;;
81
 esac],
82
[threads=no])
83
if test "$threads" = "yes"; then
84
  AC_DEFINE(ENABLE_THREADS, 1,
85
            [Define to do multi-threaded linking])
86
fi
87
AM_CONDITIONAL(THREADS, test "$threads" = "yes")
88
 
89
AC_ARG_ENABLE([plugins],
90
[  --enable-plugins        linker plugins],
91
[case "${enableval}" in
92
  yes | "") plugins=yes ;;
93
  no) plugins=no ;;
94
  *) plugins=yes ;;
95
 esac],
96
[plugins=no])
97
if test "$plugins" = "yes"; then
98
  AC_DEFINE(ENABLE_PLUGINS, 1,
99
            [Define to enable linker plugins])
100
fi
101
AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
102
 
103
AC_ARG_ENABLE([targets],
104
[  --enable-targets        alternative target configurations],
105
[case "${enableval}" in
106
  yes | "")
107
    AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
108
    ;;
109
  no)
110
    enable_targets=
111
    ;;
112
  *)
113
    enable_targets=$enableval
114
    ;;
115
esac],
116
[# For now, enable all targets by default
117
 enable_targets=all
118
])
119
 
120
# Canonicalize the enabled targets.
121
if test -n "$enable_targets"; then
122
  for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
123
    result=`$ac_config_sub $targ 2>/dev/null`
124
    if test -n "$result"; then
125
      canon_targets="$canon_targets $result"
126
    else
127
      # Permit unrecognized target names, like "all".
128
      canon_targets="$canon_targets $targ"
129
    fi
130
  done
131
fi
132
 
133
# See which specific instantiations we need.
134
targetobjs=
135
all_targets=
136
default_machine=
137
default_size=
138
default_big_endian=
139
default_osabi=ELFOSABI_NONE
140
targ_32_little=
141
targ_32_big=
142
targ_64_little=
143
targ_64_big=
144
for targ in $target $canon_targets; do
145
  if test "$targ" = "all"; then
146
    targ_32_little=yes
147
    targ_32_big=yes
148
    targ_64_little=yes
149
    targ_64_big=yes
150
    all_targets=yes
151
  else
152
    . ${srcdir}/configure.tgt
153
 
154
    if test "$targ_obj" = "UNKNOWN"; then
155
      AC_MSG_ERROR("unsupported target $targ")
156
    else
157
      targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
158
      if test "$targ_extra_obj" != ""; then
159
        targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
160
      fi
161
      if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
162
          if test "$targ_big_endian" = "true" \
163
              -o "$targ_extra_big_endian" = "true"; then
164
              targ_32_big=yes
165
          fi
166
          if test "$targ_big_endian" = "false" \
167
              -o "$targ_extra_big_endian" = "false"; then
168
              targ_32_little=yes
169
          fi
170
      fi
171
      if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
172
          if test "$targ_big_endian" = "true" \
173
              -o "$targ_extra_big_endian" = "true"; then
174
              targ_64_big=yes
175
          fi
176
          if test "$targ_big_endian" = "false" \
177
              -o "$targ_extra_big_endian" = "false"; then
178
              targ_64_little=yes
179
          fi
180
      fi
181
 
182
      if test "$target" = "$targ"; then
183
        default_machine=$targ_machine
184
        default_size=$targ_size
185
        default_big_endian=$targ_big_endian
186
        default_osabi=$targ_osabi
187
 
188
        AM_CONDITIONAL(DEFAULT_TARGET_ARM, test "$targ_obj" = "arm")
189
        AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
190
        AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
191
        AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
192
        AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$targ_obj" = "x86_64")
193
      fi
194
    fi
195
  fi
196
done
197
 
198
# Remove any duplicates.
199
to=""
200
for t in $targetobjs; do
201
  case " $to " in
202
  *" $t "*) ;;
203
  *) to="$to $t" ;;
204
  esac
205
done
206
targetobjs=$to
207
 
208
if test -n "$targ_32_little"; then
209
  AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
210
              [Define to support 32-bit little-endian targets])
211
fi
212
if test -n "$targ_32_big"; then
213
  AC_DEFINE(HAVE_TARGET_32_BIG, 1,
214
              [Define to support 32-bit big-endian targets])
215
fi
216
if test -n "$targ_64_little"; then
217
  AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
218
              [Define to support 64-bit little-endian targets])
219
fi
220
if test -n "$targ_64_big"; then
221
  AC_DEFINE(HAVE_TARGET_64_BIG, 1,
222
              [Define to support 64-bit big-endian targets])
223
fi
224
 
225
if test -n "$all_targets"; then
226
  TARGETOBJS='$(ALL_TARGETOBJS)'
227
else
228
  TARGETOBJS="$targetobjs"
229
fi
230
AC_SUBST(TARGETOBJS)
231
 
232
AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
233
                   [Default machine code])
234
AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
235
                   [Default size (32 or 64)])
236
AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
237
                   [Default big endian (true or false)])
238
AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
239
                   [Default OSABI code])
240
 
241
AC_PROG_CC
242
AC_PROG_CXX
243
AC_PROG_YACC
244
AC_PROG_RANLIB
245
AC_PROG_INSTALL
246
AC_PROG_LN_S
247
 
248
AC_GNU_SOURCE
249
 
250
ZW_GNU_GETTEXT_SISTER_DIR
251
AM_PO_SUBDIRS
252
 
253
AC_C_BIGENDIAN
254
 
255
AC_EXEEXT
256
 
257
AM_CONDITIONAL(NATIVE_LINKER,
258
  test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
259
AM_CONDITIONAL(GCC, test "$GCC" = yes)
260
 
261
AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
262
  test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
263
 
264 159 khays
dnl Test for whether static linking is supported.  Some systems do not
265
dnl install static libraries.  This only affects the set of tests that
266
dnl we run.
267
AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
268
[LDFLAGS_hold=$LDFLAGS
269
LDFLAGS="$LDFLAGS -static"
270
AC_LINK_IFELSE([
271
AC_LANG_PROGRAM([[void f() { }]])],
272
[gold_cv_lib_static=yes], [gold_cv_lib_static=no])
273
LDFLAGS=$LDFLAGS_hold])
274
AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
275
 
276 27 khays
dnl Some architectures do not support taking pointers of functions
277
dnl defined in shared libraries except in -fPIC mode.  We need to
278
dnl tell the unittest framework if we're compiling for one of those
279
dnl targets, so it doesn't try to run the tests that do that.
280
AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
281
  case $target_cpu in
282
    i?86) true;;
283
    x86_64) false;;
284
    sparc64) false;;
285
    *) true;;
286
  esac])
287
 
288
dnl Test for gcc 4.1 or later.  Full support for -mcmodel=medium is
289
dnl only available in gcc 4.1.
290
AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
291
[AC_COMPILE_IFELSE([
292
#if !defined __GNUC__
293
error
294
#elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
295
error
296
#endif
297
], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
298
 
299
dnl Whether we can test -mcmodel=medium.
300
AM_CONDITIONAL(MCMODEL_MEDIUM,
301
[test "$target_cpu" = "x86_64" -a "$gold_cv_prog_gcc41" = "yes"])
302
 
303
dnl Test for __thread support.
304
AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
305
[AC_COMPILE_IFELSE([__thread int i = 1;],
306
[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
307
 
308
AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
309
 
310
dnl On GNU/Linux TLS in static programs only works when using glibc
311
dnl 2.4 or later.
312
AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
313
[AC_COMPILE_IFELSE([
314
#include 
315
#if !defined __GLIBC__
316
error
317
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
318
error
319
#endif
320
], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
321
 
322
AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
323
 
324
dnl Test for #pragma omp threadprivate
325
AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
326
[save_CFLAGS="$CFLAGS"
327
CFLAGS="$CFLAGS -fopenmp"
328
AC_COMPILE_IFELSE([
329
#include 
330
int i;
331
#pragma omp threadprivate (i)
332
], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
333
CFLAGS="$save_CFLAGS"])
334
if test "$gold_cv_c_threadprivate" = "yes"; then
335
  AC_DEFINE(HAVE_OMP_SUPPORT, 1,
336
            [Define if compiler supports #pragma omp threadprivate])
337
fi
338
AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
339
 
340
dnl Test for the -ftls-dialect=gnu2 option.
341
save_CFLAGS="$CFLAGS"
342
CFLAGS="$CFLAGS -mtls-dialect=gnu2"
343
AC_COMPILE_IFELSE([int i;], [have_tls_gnu2=yes], [have_tls_gnu2=no])
344
CFLAGS="$save_CFLAGS"
345
AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
346
 
347
dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
348
dnl only with glibc 2.9 or later.
349
AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
350
[AC_COMPILE_IFELSE([
351
#include 
352
#if !defined __GLIBC__
353
error
354
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
355
error
356
#endif
357
], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
358
 
359
AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
360
 
361
dnl Test for the -frandom-seed option.
362
AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
363
[save_CFLAGS="$CFLAGS"
364
CFLAGS="$CFLAGS -frandom-seed=foo"
365
AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
366
[gold_cv_c_random_seed=no])
367
CFLAGS="$save_CFLAGS"])
368
if test "$gold_cv_c_random_seed" = "yes"; then
369
  # In Makefile, '$@' will be expanded to be the name of the file
370
  # being built, providing a unique seed for each file.
371
  RANDOM_SEED_CFLAGS=-frandom-seed=\$@
372
fi
373
AC_SUBST(RANDOM_SEED_CFLAGS)
374
 
375
dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
376
dnl 2.11 or later, and by binutils 2.20.1 or later.
377
AC_CACHE_CHECK([for glibc >= 2.11], [gold_cv_lib_glibc2_11],
378
[AC_COMPILE_IFELSE([
379
#include 
380
#if !defined __GLIBC__
381
error
382
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
383
error
384
#endif
385
__asm__(".type foo, %gnu_indirect_function");
386
], [gold_cv_lib_glibc2_11=yes], [gold_cv_lib_glibc2_11=no])])
387
 
388
AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc2_11" = "yes")
389
 
390
AM_BINUTILS_WARNINGS
391
 
392
WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
393
AC_SUBST(WARN_CXXFLAGS)
394
 
395
dnl Force support for large files by default.  This may need to be
396
dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
397
LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
398
AC_SUBST(LFS_CFLAGS)
399
 
400
AC_CHECK_HEADERS(sys/mman.h)
401
AC_CHECK_FUNCS(chsize mmap)
402
AC_REPLACE_FUNCS(pread ftruncate ffsll)
403
 
404
AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
405
[AC_LINK_IFELSE([
406
AC_LANG_PROGRAM([[
407
#include 
408
void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
409
]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
410
if test "$gold_cv_lib_mremap_maymove" = "yes"; then
411
  AC_DEFINE(HAVE_MREMAP, 1,
412
    [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
413
else
414
  AC_LIBOBJ(mremap)
415
fi
416
 
417
# Link in zlib if we can.  This allows us to write compressed sections.
418
AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
419
AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
420
 
421
dnl We have to check these in C, not C++, because autoconf generates
422
dnl tests which have no type information, and current glibc provides
423
dnl multiple declarations of functions like basename when compiling
424
dnl with C++.
425
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
426
 
427
AC_LANG_PUSH(C++)
428
 
429
AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
430
AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
431
AC_CHECK_HEADERS(byteswap.h)
432
AC_CHECK_FUNCS(mallinfo posix_fallocate readv sysconf times)
433
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
434
 
435
# Use of ::std::tr1::unordered_map::rehash causes undefined symbols
436
# at link time with some versions of GCC.
437
AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
438
[gold_cv_unordered_map_rehash],
439
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
440
#include 
441
void bar() { ::std::tr1::unordered_map x; x.rehash(10); }
442
]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
443
if test "$gold_cv_unordered_map_rehash" = "yes"; then
444
  AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
445
            [Define if ::std::tr1::unordered_map::rehash is usable])
446
fi
447
 
448
# gcc 4.3.0 doesn't recognize the printf attribute on a template
449
# function.  Check for that.  This is gcc bug 35546.  This test can
450
# probably be removed after the bug has been fixed for a while.
451
AC_CACHE_CHECK([whether we can use attributes with template functions],
452
[gold_cv_template_attribute],
453
[AC_COMPILE_IFELSE([
454
template extern void foo(const char*, ...)
455
  __attribute__ ((__format__ (__printf__, 1, 2)));
456
template void foo(const char* format, ...) {}
457
void bar() { foo("%s\n", "foo"); }
458
], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
459
if test "$gold_cv_template_attribute" = "yes"; then
460
  AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
461
            [Define if attributes work on C++ templates])
462
fi
463
 
464
dnl Check if the system has struct stat::st_mtim.
465
AC_CACHE_CHECK([for struct stat::st_mtim.],
466
[gold_cv_stat_st_mtim],
467
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
468
#include 
469
long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
470
]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
471
if test "$gold_cv_stat_st_mtim" = "yes"; then
472
  AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
473
            [Define if struct stat has a field st_mtim with timespec for mtime])
474
fi
475
 
476
AC_LANG_POP(C++)
477
 
478
AM_MAINTAINER_MODE
479
 
480
AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.