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 98

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
dnl Some architectures do not support taking pointers of functions
265
dnl defined in shared libraries except in -fPIC mode.  We need to
266
dnl tell the unittest framework if we're compiling for one of those
267
dnl targets, so it doesn't try to run the tests that do that.
268
AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
269
  case $target_cpu in
270
    i?86) true;;
271
    x86_64) false;;
272
    sparc64) false;;
273
    *) true;;
274
  esac])
275
 
276
dnl Test for gcc 4.1 or later.  Full support for -mcmodel=medium is
277
dnl only available in gcc 4.1.
278
AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
279
[AC_COMPILE_IFELSE([
280
#if !defined __GNUC__
281
error
282
#elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
283
error
284
#endif
285
], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
286
 
287
dnl Whether we can test -mcmodel=medium.
288
AM_CONDITIONAL(MCMODEL_MEDIUM,
289
[test "$target_cpu" = "x86_64" -a "$gold_cv_prog_gcc41" = "yes"])
290
 
291
dnl Test for __thread support.
292
AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
293
[AC_COMPILE_IFELSE([__thread int i = 1;],
294
[gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
295
 
296
AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
297
 
298
dnl On GNU/Linux TLS in static programs only works when using glibc
299
dnl 2.4 or later.
300
AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
301
[AC_COMPILE_IFELSE([
302
#include 
303
#if !defined __GLIBC__
304
error
305
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
306
error
307
#endif
308
], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
309
 
310
AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
311
 
312
dnl Test for #pragma omp threadprivate
313
AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
314
[save_CFLAGS="$CFLAGS"
315
CFLAGS="$CFLAGS -fopenmp"
316
AC_COMPILE_IFELSE([
317
#include 
318
int i;
319
#pragma omp threadprivate (i)
320
], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
321
CFLAGS="$save_CFLAGS"])
322
if test "$gold_cv_c_threadprivate" = "yes"; then
323
  AC_DEFINE(HAVE_OMP_SUPPORT, 1,
324
            [Define if compiler supports #pragma omp threadprivate])
325
fi
326
AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
327
 
328
dnl Test for the -ftls-dialect=gnu2 option.
329
save_CFLAGS="$CFLAGS"
330
CFLAGS="$CFLAGS -mtls-dialect=gnu2"
331
AC_COMPILE_IFELSE([int i;], [have_tls_gnu2=yes], [have_tls_gnu2=no])
332
CFLAGS="$save_CFLAGS"
333
AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
334
 
335
dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
336
dnl only with glibc 2.9 or later.
337
AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
338
[AC_COMPILE_IFELSE([
339
#include 
340
#if !defined __GLIBC__
341
error
342
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
343
error
344
#endif
345
], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
346
 
347
AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
348
 
349
dnl Check whether the compiler supports constructor priorities in
350
dnl attributes, which were added in gcc 4.3.
351
AC_CACHE_CHECK([for constructor priorities], [gold_cv_c_conprio],
352
[AC_COMPILE_IFELSE([void f() __attribute__ ((constructor (1)));],
353
[gold_cv_c_conprio=yes], [gold_cv_c_conprio=no])])
354
 
355
AM_CONDITIONAL(CONSTRUCTOR_PRIORITY, test "$gold_cv_c_conprio" = "yes")
356
 
357
dnl Test for the -frandom-seed option.
358
AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
359
[save_CFLAGS="$CFLAGS"
360
CFLAGS="$CFLAGS -frandom-seed=foo"
361
AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes],
362
[gold_cv_c_random_seed=no])
363
CFLAGS="$save_CFLAGS"])
364
if test "$gold_cv_c_random_seed" = "yes"; then
365
  # In Makefile, '$@' will be expanded to be the name of the file
366
  # being built, providing a unique seed for each file.
367
  RANDOM_SEED_CFLAGS=-frandom-seed=\$@
368
fi
369
AC_SUBST(RANDOM_SEED_CFLAGS)
370
 
371
dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
372
dnl 2.11 or later, and by binutils 2.20.1 or later.
373
AC_CACHE_CHECK([for glibc >= 2.11], [gold_cv_lib_glibc2_11],
374
[AC_COMPILE_IFELSE([
375
#include 
376
#if !defined __GLIBC__
377
error
378
#elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
379
error
380
#endif
381
__asm__(".type foo, %gnu_indirect_function");
382
], [gold_cv_lib_glibc2_11=yes], [gold_cv_lib_glibc2_11=no])])
383
 
384
AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc2_11" = "yes")
385
 
386
AM_BINUTILS_WARNINGS
387
 
388
WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
389
AC_SUBST(WARN_CXXFLAGS)
390
 
391
dnl Force support for large files by default.  This may need to be
392
dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
393
LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
394
AC_SUBST(LFS_CFLAGS)
395
 
396
AC_CHECK_HEADERS(sys/mman.h)
397
AC_CHECK_FUNCS(chsize mmap)
398
AC_REPLACE_FUNCS(pread ftruncate ffsll)
399
 
400
AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
401
[AC_LINK_IFELSE([
402
AC_LANG_PROGRAM([[
403
#include 
404
void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
405
]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
406
if test "$gold_cv_lib_mremap_maymove" = "yes"; then
407
  AC_DEFINE(HAVE_MREMAP, 1,
408
    [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
409
else
410
  AC_LIBOBJ(mremap)
411
fi
412
 
413
# Link in zlib if we can.  This allows us to write compressed sections.
414
AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)])
415
AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_search_zlibVersion" != "no")
416
 
417
dnl We have to check these in C, not C++, because autoconf generates
418
dnl tests which have no type information, and current glibc provides
419
dnl multiple declarations of functions like basename when compiling
420
dnl with C++.
421
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
422
 
423
AC_LANG_PUSH(C++)
424
 
425
AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
426
AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
427
AC_CHECK_HEADERS(byteswap.h)
428
AC_CHECK_FUNCS(mallinfo posix_fallocate readv sysconf times)
429
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
430
 
431
# Use of ::std::tr1::unordered_map::rehash causes undefined symbols
432
# at link time with some versions of GCC.
433
AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
434
[gold_cv_unordered_map_rehash],
435
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
436
#include 
437
void bar() { ::std::tr1::unordered_map x; x.rehash(10); }
438
]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
439
if test "$gold_cv_unordered_map_rehash" = "yes"; then
440
  AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
441
            [Define if ::std::tr1::unordered_map::rehash is usable])
442
fi
443
 
444
# gcc 4.3.0 doesn't recognize the printf attribute on a template
445
# function.  Check for that.  This is gcc bug 35546.  This test can
446
# probably be removed after the bug has been fixed for a while.
447
AC_CACHE_CHECK([whether we can use attributes with template functions],
448
[gold_cv_template_attribute],
449
[AC_COMPILE_IFELSE([
450
template extern void foo(const char*, ...)
451
  __attribute__ ((__format__ (__printf__, 1, 2)));
452
template void foo(const char* format, ...) {}
453
void bar() { foo("%s\n", "foo"); }
454
], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
455
if test "$gold_cv_template_attribute" = "yes"; then
456
  AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
457
            [Define if attributes work on C++ templates])
458
fi
459
 
460
dnl Check if the system has struct stat::st_mtim.
461
AC_CACHE_CHECK([for struct stat::st_mtim.],
462
[gold_cv_stat_st_mtim],
463
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
464
#include 
465
long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
466
]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
467
if test "$gold_cv_stat_st_mtim" = "yes"; then
468
  AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
469
            [Define if struct stat has a field st_mtim with timespec for mtime])
470
fi
471
 
472
AC_LANG_POP(C++)
473
 
474
AM_MAINTAINER_MODE
475
 
476
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.