~ubuntu-branches/ubuntu/trusty/eglibc/trusty

« back to all changes in this revision

Viewing changes to .pc/any/cvs-cxxheaders-detection2.diff/configure.in

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2013-01-10 18:39:35 UTC
  • mfrom: (1.5.2) (4.4.24 experimental)
  • Revision ID: package-import@ubuntu.com-20130110183935-afsgfxkmg7wk5eaj
Tags: 2.17-0ubuntu1
* Merge with Debian, bringing in a new upstream and many small fixes:
  - patches/any/cvs-malloc-deadlock.diff: Dropped, merged upstream.
  - patches/ubuntu/lddebug-scopes.diff: Rebase for upstream changes.
  - patches/ubuntu/local-CVE-2012-3406.diff: Rebased against upstream.
  - patches/ubuntu/no-asm-mtune-i686.diff: Fixed in recent binutils.
* This upstream merge fixes a nasty hang in pulseaudio (LP: #1085342)
* Bump MIN_KERNEL_SUPPORTED to 2.6.32 on ARM, now that we no longer
  have to support shonky 2.6.31 kernels on imx51 babbage builders.
* Drop patches/ubuntu/local-disable-nscd-host-caching.diff, as these
  issues were apparently resolved upstream a while ago (LP: #613662)
* Fix the compiled-in bug URL to point to launchpad.net, not Debian.

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
 
AC_PREREQ(2.53)dnl              dnl Minimum Autoconf version required.
3
 
AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
4
 
AC_CONFIG_SRCDIR([include/features.h])
5
 
AC_CONFIG_HEADERS([config.h])
6
 
AC_CONFIG_AUX_DIR([scripts])
7
 
 
8
 
# Glibc should not depend on any header files
9
 
AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
10
 
  [m4_divert_text([DEFAULTS],
11
 
    [ac_includes_default='/* none */'])])
12
 
 
13
 
dnl This is here so we can set $subdirs directly based on configure fragments.
14
 
AC_CONFIG_SUBDIRS()
15
 
 
16
 
AC_CANONICAL_HOST
17
 
 
18
 
AC_PROG_CC
19
 
if test $host != $build; then
20
 
  AC_CHECK_PROGS(BUILD_CC, gcc cc)
21
 
fi
22
 
AC_SUBST(cross_compiling)
23
 
AC_PROG_CPP
24
 
# We need the C++ compiler only for testing.
25
 
AC_PROG_CXX
26
 
 
27
 
if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
28
 
  AC_MSG_ERROR([you must configure in a separate build directory])
29
 
fi
30
 
 
31
 
# This will get text that should go into config.make.
32
 
config_vars=
33
 
 
34
 
# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
35
 
AC_ARG_WITH([gd],
36
 
            AC_HELP_STRING([--with-gd=DIR],
37
 
                           [find libgd include dir and library with prefix DIR]),
38
 
            [dnl
39
 
case "$with_gd" in
40
 
yes|''|no) ;;
41
 
*) libgd_include="-I$withval/include"
42
 
   libgd_ldflags="-L$withval/lib" ;;
43
 
esac
44
 
])
45
 
AC_ARG_WITH([gd-include],
46
 
            AC_HELP_STRING([--with-gd-include=DIR],
47
 
                           [find libgd include files in DIR]),
48
 
            [dnl
49
 
case "$with_gd_include" in
50
 
''|no) ;;
51
 
*) libgd_include="-I$withval" ;;
52
 
esac
53
 
])
54
 
AC_ARG_WITH([gd-lib],
55
 
            AC_HELP_STRING([--with-gd-lib=DIR],
56
 
                           [find libgd library files in DIR]),
57
 
            [dnl
58
 
case "$with_gd_lib" in
59
 
''|no) ;;
60
 
*) libgd_ldflags="-L$withval" ;;
61
 
esac
62
 
])
63
 
 
64
 
if test -n "$libgd_include"; then
65
 
  config_vars="$config_vars
66
 
CFLAGS-memusagestat.c = $libgd_include"
67
 
fi
68
 
if test -n "$libgd_ldflags"; then
69
 
  config_vars="$config_vars
70
 
libgd-LDFLAGS = $libgd_ldflags"
71
 
fi
72
 
 
73
 
dnl Arguments to specify presence of other packages/features.
74
 
AC_ARG_WITH([fp],
75
 
            AC_HELP_STRING([--with-fp],
76
 
                           [if using floating-point hardware @<:@default=yes@:>@]),
77
 
            [with_fp=$withval],
78
 
            [with_fp=yes])
79
 
AC_SUBST(with_fp)
80
 
AC_ARG_WITH([binutils],
81
 
            AC_HELP_STRING([--with-binutils=PATH],
82
 
                           [specify location of binutils (as and ld)]),
83
 
            [path_binutils=$withval],
84
 
            [path_binutils=''])
85
 
AC_ARG_WITH([selinux],
86
 
            AC_HELP_STRING([--with-selinux],
87
 
                           [if building with SELinux support]),
88
 
            [with_selinux=$withval],
89
 
            [with_selinux=auto])
90
 
 
91
 
AC_ARG_WITH([headers],
92
 
            AC_HELP_STRING([--with-headers=PATH],
93
 
                           [location of system headers to use
94
 
                            (for example /usr/src/linux/include)
95
 
                            @<:@default=compiler default@:>@]),
96
 
            [sysheaders=$withval],
97
 
            [sysheaders=''])
98
 
 
99
 
AC_SUBST(use_default_link)
100
 
AC_ARG_WITH([default-link],
101
 
            AC_HELP_STRING([--with-default-link],
102
 
                           [do not use explicit linker scripts]),
103
 
            [use_default_link=$withval],
104
 
            [use_default_link=default])
105
 
 
106
 
AC_ARG_ENABLE([sanity-checks],
107
 
              AC_HELP_STRING([--disable-sanity-checks],
108
 
                             [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
109
 
              [enable_sanity=$enableval],
110
 
              [enable_sanity=yes])
111
 
 
112
 
AC_ARG_ENABLE([shared],
113
 
              AC_HELP_STRING([--enable-shared],
114
 
                             [build shared library @<:@default=yes if GNU ld@:>@]),
115
 
              [shared=$enableval],
116
 
              [shared=yes])
117
 
AC_ARG_ENABLE([profile],
118
 
              AC_HELP_STRING([--enable-profile],
119
 
                             [build profiled library @<:@default=no@:>@]),
120
 
              [profile=$enableval],
121
 
              [profile=no])
122
 
AC_ARG_ENABLE([versioning],
123
 
              AC_HELP_STRING([--disable-versioning],
124
 
                             [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
125
 
              [enable_versioning=$enableval],
126
 
              [enable_versioning=yes])
127
 
 
128
 
AC_ARG_ENABLE([oldest-abi],
129
 
              AC_HELP_STRING([--enable-oldest-abi=ABI],
130
 
                             [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
131
 
              [oldest_abi=$enableval],
132
 
              [oldest_abi=no])
133
 
if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
134
 
  oldest_abi=default
135
 
else
136
 
  AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
137
 
fi
138
 
AC_SUBST(oldest_abi)
139
 
 
140
 
AC_ARG_ENABLE([stackguard-randomization],
141
 
              AC_HELP_STRING([--enable-stackguard-randomization],
142
 
                             [initialize __stack_chk_guard canary with a random number at program start]),
143
 
              [enable_stackguard_randomize=$enableval],
144
 
              [enable_stackguard_randomize=no])
145
 
if test "$enable_stackguard_randomize" = yes; then
146
 
  AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
147
 
fi
148
 
 
149
 
dnl Generic infrastructure for drop-in additions to libc.
150
 
AC_ARG_ENABLE([add-ons],
151
 
              AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
152
 
                             [configure and build add-ons in DIR1,DIR2,...
153
 
                              search for add-ons if no parameter given]),
154
 
                             , [enable_add_ons=yes])
155
 
 
156
 
AC_ARG_ENABLE([hidden-plt],
157
 
              AC_HELP_STRING([--disable-hidden-plt],
158
 
                             [do not hide internal function calls to avoid PLT]),
159
 
              [hidden=$enableval],
160
 
              [hidden=yes])
161
 
if test "x$hidden" = xno; then
162
 
  AC_DEFINE(NO_HIDDEN)
163
 
fi
164
 
 
165
 
AC_ARG_ENABLE([bind-now],
166
 
              AC_HELP_STRING([--enable-bind-now],
167
 
                             [disable lazy relocations in DSOs]),
168
 
              [bindnow=$enableval],
169
 
              [bindnow=no])
170
 
AC_SUBST(bindnow)
171
 
 
172
 
dnl On some platforms we cannot use dynamic loading.  We must provide
173
 
dnl static NSS modules.
174
 
AC_ARG_ENABLE([static-nss],
175
 
              AC_HELP_STRING([--enable-static-nss],
176
 
                             [build static NSS modules @<:@default=no@:>@]),
177
 
              [static_nss=$enableval],
178
 
              [static_nss=no])
179
 
dnl Enable static NSS also if we build no shared objects.
180
 
if test x"$static_nss" = xyes || test x"$shared" = xno; then
181
 
  static_nss=yes
182
 
  AC_DEFINE(DO_STATIC_NSS)
183
 
fi
184
 
 
185
 
AC_ARG_ENABLE([force-install],
186
 
              AC_HELP_STRING([--disable-force-install],
187
 
                             [don't force installation of files from this package, even if they are older than the installed files]),
188
 
              [force_install=$enableval],
189
 
              [force_install=yes])
190
 
AC_SUBST(force_install)
191
 
 
192
 
dnl On some platforms we allow dropping compatibility with all kernel
193
 
dnl versions.
194
 
AC_ARG_ENABLE([kernel],
195
 
              AC_HELP_STRING([--enable-kernel=VERSION],
196
 
                             [compile for compatibility with kernel not older than VERSION]),
197
 
              [minimum_kernel=$enableval],
198
 
              [])
199
 
dnl Prevent unreasonable values.
200
 
if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
201
 
  # Better nothing than this.
202
 
  minimum_kernel=""
203
 
else
204
 
  if test "$minimum_kernel" = current; then
205
 
    minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
206
 
  fi
207
 
fi
208
 
 
209
 
dnl For the development we sometimes want gcc to issue even more warnings.
210
 
dnl This is not the default since many of the extra warnings are not
211
 
dnl appropriate.
212
 
AC_ARG_ENABLE([all-warnings],
213
 
              AC_HELP_STRING([--enable-all-warnings],
214
 
                             [enable all useful warnings gcc can issue]),
215
 
              [all_warnings=$enableval],
216
 
              [])
217
 
AC_SUBST(all_warnings)
218
 
 
219
 
ACX_PKGVERSION([EGLIBC])
220
 
ACX_BUGURL([http://www.eglibc.org/issues/])
221
 
AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
222
 
AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
223
 
 
224
 
AC_ARG_ENABLE([multi-arch],
225
 
              AC_HELP_STRING([--enable-multi-arch],
226
 
                             [enable single DSO with optimizations for multiple architectures]),
227
 
              [multi_arch=$enableval],
228
 
              [multi_arch=default])
229
 
 
230
 
AC_ARG_ENABLE([nss-crypt],
231
 
              AC_HELP_STRING([--enable-nss-crypt],
232
 
                             [enable libcrypt to use nss]),
233
 
              [nss_crypt=$enableval],
234
 
              [nss_crypt=no])
235
 
if test x$nss_crypt = xyes; then
236
 
  nss_includes=-I$(nss-config --includedir 2>/dev/null)
237
 
  if test $? -ne 0; then
238
 
    AC_MSG_ERROR([cannot find include directory with nss-config])
239
 
  fi
240
 
  old_CFLAGS="$CFLAGS"
241
 
  CFLAGS="$CFLAGS $nss_includes"
242
 
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
243
 
#include <hasht.h>
244
 
#include <nsslowhash.h>
245
 
void f (void) { NSSLOW_Init (); }])],
246
 
             libc_cv_nss_crypt=yes,
247
 
             AC_MSG_ERROR([
248
 
cannot find NSS headers with lowlevel hash function interfaces]))
249
 
  old_LIBS="$LIBS"
250
 
  LIBS="$LIBS -lfreebl3"
251
 
  AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
252
 
#include <hasht.h>
253
 
#include <nsslowhash.h>],
254
 
                                  [NSSLOW_Init();])],
255
 
                 libc_cv_nss_crypt=yes,
256
 
                 AC_MSG_ERROR([
257
 
cannot link program using lowlevel NSS hash functions]))
258
 
  CFLAGS="$old_CFLAGS"
259
 
  LIBS="$old_LIBS"
260
 
else
261
 
  libc_cv_nss_crypt=no
262
 
fi
263
 
AC_SUBST(libc_cv_nss_crypt)
264
 
 
265
 
 
266
 
AC_ARG_ENABLE([obsolete-rpc],
267
 
              AC_HELP_STRING([--enable-obsolete-rpc],
268
 
                             [build and install the obsolete RPC code for link-time usage]),
269
 
              [link_obsolete_rpc=$enableval],
270
 
              [link_obsolete_rpc=no])
271
 
AC_SUBST(link_obsolete_rpc)
272
 
 
273
 
if test "$link_obsolete_rpc" = yes; then
274
 
  AC_DEFINE(LINK_OBSOLETE_RPC)
275
 
fi
276
 
 
277
 
AC_ARG_ENABLE([systemtap],
278
 
              [AS_HELP_STRING([--enable-systemtap],
279
 
               [enable systemtap static probe points @<:@default=no@:>@])],
280
 
              [systemtap=$enableval],
281
 
              [systemtap=no])
282
 
if test "x$systemtap" != xno; then
283
 
  AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
284
 
  old_CFLAGS="$CFLAGS"
285
 
  CFLAGS="-std=gnu99 $CFLAGS"
286
 
  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
287
 
void foo (int i, void *p)
288
 
{
289
 
  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
290
 
       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
291
 
}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
292
 
  CFLAGS="$old_CFLAGS"])
293
 
  if test $libc_cv_sdt = yes; then
294
 
    AC_DEFINE([USE_STAP_PROBE])
295
 
  elif test "x$systemtap" != xauto; then
296
 
    AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
297
 
  fi
298
 
fi
299
 
 
300
 
# The way shlib-versions is used to generate soversions.mk uses a
301
 
# fairly simplistic model for name recognition that can't distinguish
302
 
# i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
303
 
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
304
 
# tell.  This doesn't get used much beyond that, so it's fairly safe.
305
 
case "$host_os" in
306
 
linux*)
307
 
  ;;
308
 
gnu*)
309
 
  host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
310
 
  ;;
311
 
esac
312
 
 
313
 
# We keep the original values in `$config_*' and never modify them, so we
314
 
# can write them unchanged into config.make.  Everything else uses
315
 
# $machine, $vendor, and $os, and changes them whenever convenient.
316
 
config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
317
 
 
318
 
# Don't allow vendor == "unknown"
319
 
test "$config_vendor" = unknown && config_vendor=
320
 
config_os="`echo $config_os | sed 's/^unknown-//'`"
321
 
 
322
 
# Some configurations imply other options.
323
 
elf=yes
324
 
 
325
 
# The configure fragment of an add-on port can modify these to supplement
326
 
# or override the table in the case statement below.  No fragment should
327
 
# ever change the config_* variables, however.
328
 
machine=$config_machine
329
 
vendor=$config_vendor
330
 
os=$config_os
331
 
base_os=''
332
 
 
333
 
# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
334
 
# Unify this here.
335
 
if test "$machine" = rs6000; then
336
 
  machine="powerpc"
337
 
fi
338
 
 
339
 
# Force v9
340
 
if test "$machine" = sparc; then
341
 
   machine="sparcv9"
342
 
fi
343
 
 
344
 
# Braindead PowerPC box with absolutely no FPU.
345
 
case "$machine-$host_os" in
346
 
  powerpc*-*soft)
347
 
    with_fp=no
348
 
    ;;
349
 
esac
350
 
 
351
 
submachine=
352
 
AC_ARG_WITH([cpu],
353
 
            AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
354
 
            [dnl
355
 
  case "$withval" in
356
 
  yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
357
 
  no) ;;
358
 
  *) submachine="$withval" ;;
359
 
  esac
360
 
])
361
 
 
362
 
dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
363
 
LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
364
 
 
365
 
# An add-on can set this when it wants to disable the sanity check below.
366
 
libc_config_ok=no
367
 
 
368
 
dnl Having this here, though empty, makes sure that if add-ons' fragments
369
 
dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
370
 
dnl our AC_OUTPUT will actually use it.
371
 
AC_CONFIG_SUBDIRS()
372
 
 
373
 
case "$enable_add_ons" in
374
 
''|no) add_ons= ;;
375
 
yes|'*')
376
 
 add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
377
 
          sed 's@/[[^/]]*$@@' | sort | uniq`
378
 
         add_ons_automatic=yes
379
 
         ;;
380
 
*) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
381
 
       add_ons_automatic=no ;;
382
 
esac
383
 
 
384
 
configured_add_ons=
385
 
add_ons_sfx=
386
 
add_ons_pfx=
387
 
if test x"$add_ons" != x; then
388
 
  for f in $add_ons; do
389
 
    # Some sanity checks
390
 
    case "$f" in
391
 
    crypt)
392
 
      AC_MSG_ERROR([
393
 
*** It seems that you're using an old \`crypt' add-on.  crypt is now
394
 
*** part of glibc and using the old add-on will not work with this
395
 
*** release.  Start again with fresh sources and without the old
396
 
*** \`crypt' add-on.])
397
 
    ;;
398
 
    localedata)
399
 
      AC_MSG_ERROR([
400
 
*** It seems that you're using an old \`localedata' add-on.  localedata
401
 
*** is now part of glibc and using the old add-on will not work with
402
 
*** this release.  Start again with fresh sources and without the old
403
 
*** \`localedata' add-on.])
404
 
    ;;
405
 
    esac
406
 
  done
407
 
 
408
 
  # Now source each add-on's configure fragment.
409
 
  # The fragments can use $srcdir/$libc_add_on to find themselves,
410
 
  # and test $add_ons_automatic to see if they were explicitly requested.
411
 
  # A fragment can clear (or even change) $libc_add_on to affect
412
 
  # whether it goes into the list to be actually used in the build.
413
 
  use_add_ons=
414
 
  for libc_add_on in $add_ons; do
415
 
    # Test whether such a directory really exists.
416
 
    # It can be absolute, or relative to $srcdir, or relative to the build dir.
417
 
    case "$libc_add_on" in
418
 
    /*)
419
 
      libc_add_on_srcdir=$libc_add_on
420
 
      ;;
421
 
    *)
422
 
      test -d "$srcdir/$libc_add_on" || {
423
 
        if test -d "$libc_add_on"; then
424
 
          libc_add_on="`pwd`/$libc_add_on"
425
 
        else
426
 
          AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
427
 
        fi
428
 
      }
429
 
      libc_add_on_srcdir=$srcdir/$libc_add_on
430
 
      ;;
431
 
    esac
432
 
 
433
 
    libc_add_on_frag=$libc_add_on_srcdir/configure
434
 
    libc_add_on_canonical=
435
 
    libc_add_on_config_subdirs=
436
 
    if test -r "$libc_add_on_frag"; then
437
 
      AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
438
 
      libc_add_on_canonical=unknown
439
 
      libc_add_on_subdirs=
440
 
      . "$libc_add_on_frag"
441
 
      test -z "$libc_add_on" || {
442
 
        configured_add_ons="$configured_add_ons $libc_add_on"
443
 
        if test "x$libc_add_on_canonical" = xunknown; then
444
 
          AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
445
 
        fi
446
 
        for d in $libc_add_on_subdirs; do
447
 
          case "$libc_add_on" in
448
 
          /*) subdir_srcdir="$libc_add_on" ;;
449
 
          *) subdir_srcdir="\$(..)$libc_add_on" ;;
450
 
          esac
451
 
          case "$d" in
452
 
          .)
453
 
            d="${libc_add_on_canonical:-$libc_add_on}"
454
 
            ;;
455
 
          /*)
456
 
            subdir_srcdir="$d"
457
 
            ;;
458
 
          *)
459
 
            subdir_srcdir="$subdir_srcdir/$d"
460
 
            ;;
461
 
          esac
462
 
          d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
463
 
          add_on_subdirs="$add_on_subdirs $d"
464
 
          test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
465
 
$d-srcdir = $subdir_srcdir"
466
 
        done
467
 
        for d in $libc_add_on_config_subdirs; do
468
 
          case "$d" in
469
 
          /*) AC_MSG_ERROR(dnl
470
 
fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
471
 
          esac
472
 
          if test ! -d "$libc_add_on_srcdir/$d"; then
473
 
            AC_MSG_ERROR(fragment wants to configure missing directory $d)
474
 
          fi
475
 
          case "$libc_add_on" in
476
 
          /*) AC_MSG_ERROR(dnl
477
 
relative path required for add-on using \$libc_add_on_config_subdirs) ;;
478
 
          esac
479
 
          subdirs="$subdirs $libc_add_on/$d"
480
 
        done
481
 
      }
482
 
    fi
483
 
    if test -n "$libc_add_on"; then
484
 
      LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
485
 
      use_add_ons="$use_add_ons $libc_add_on"
486
 
      add_ons_pfx="$add_ons_pfx $libc_add_on/"
487
 
      test -z "$libc_add_on_canonical" ||
488
 
      add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
489
 
    fi
490
 
  done
491
 
  # Use echo to strip excess whitespace.
492
 
  add_ons="`echo $use_add_ons`"
493
 
fi
494
 
AC_SUBST(add_ons)
495
 
AC_SUBST(add_on_subdirs)
496
 
 
497
 
 
498
 
###
499
 
### I put this here to prevent those annoying emails from people who cannot
500
 
### read and try to compile glibc on unsupported platforms.  --drepper
501
 
###
502
 
### By using the undocumented --enable-hacker-mode option for configure
503
 
### one can skip this test to make the configuration not fail for unsupported
504
 
### platforms.
505
 
###
506
 
if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
507
 
  case "$machine-$host_os" in
508
 
  *-linux* | *-gnu* | *-kfreebsd*)
509
 
    ;;
510
 
  *)
511
 
    echo "*** The GNU C library is currently not available for this platform."
512
 
    echo "*** So far nobody cared to port it and if there is no volunteer it"
513
 
    echo "*** might never happen.  So, if you have interest to see glibc on"
514
 
    echo "*** this platform visit"
515
 
    echo "***   http://www.gnu.org/software/libc/porting.html"
516
 
    echo "*** and join the group of porters"
517
 
    exit 1
518
 
    ;;
519
 
  esac
520
 
fi
521
 
 
522
 
dnl We need to use [ and ] for other purposes for a while now.
523
 
changequote(,)dnl
524
 
# Expand the configuration machine name into a subdirectory by architecture
525
 
# type and particular chip.  If an add-on configure fragment already set
526
 
# base_machine, we don't change it.
527
 
test -n "$base_machine" || case "$machine" in
528
 
i[34567]86)     base_machine=i386 machine=i386/$machine ;;
529
 
powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
530
 
powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
531
 
s390)           base_machine=s390 machine=s390/s390-32 ;;
532
 
s390x)          base_machine=s390 machine=s390/s390-64 ;;
533
 
sh3*)           base_machine=sh machine=sh/sh3 ;;
534
 
sh4*)           base_machine=sh machine=sh/sh4 ;;
535
 
sparc | sparcv[67])
536
 
                base_machine=sparc machine=sparc/sparc32 ;;
537
 
sparcv8 | supersparc | hypersparc)
538
 
                base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
539
 
sparcv8plus | sparcv8plusa | sparcv9)
540
 
                base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
541
 
sparcv8plusb | sparcv9b)
542
 
                base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
543
 
sparcv9v)
544
 
                base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
545
 
sparcv9v2)
546
 
                base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
547
 
sparc64)
548
 
                base_machine=sparc machine=sparc/sparc64 ;;
549
 
sparc64b)
550
 
                base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
551
 
sparc64v)
552
 
                base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
553
 
sparc64v2)
554
 
                base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
555
 
*)              base_machine=$machine ;;
556
 
esac
557
 
changequote([,])dnl
558
 
AC_SUBST(base_machine)
559
 
 
560
 
if test "$base_machine" = "i386"; then
561
 
  AC_DEFINE(USE_REGPARMS)
562
 
fi
563
 
 
564
 
# For the multi-arch option we need support in the assembler.
565
 
AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
566
 
               libc_cv_asm_gnu_indirect_function, [dnl
567
 
cat > conftest.s <<EOF
568
 
.type foo,%gnu_indirect_function
569
 
EOF
570
 
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
571
 
then
572
 
  libc_cv_asm_gnu_indirect_function=yes
573
 
else
574
 
  libc_cv_asm_gnu_indirect_function=no
575
 
fi
576
 
rm -f conftest*])
577
 
 
578
 
AC_MSG_CHECKING(whether .text pseudo-op must be used)
579
 
AC_CACHE_VAL(libc_cv_dot_text, [dnl
580
 
cat > conftest.s <<EOF
581
 
.text
582
 
EOF
583
 
libc_cv_dot_text=
584
 
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
585
 
  libc_cv_dot_text=.text
586
 
fi
587
 
rm -f conftest*])
588
 
if test -z "$libc_cv_dot_text"; then
589
 
  AC_MSG_RESULT(no)
590
 
else
591
 
  AC_MSG_RESULT(yes)
592
 
fi
593
 
 
594
 
AC_CACHE_CHECK(for assembler global-symbol directive,
595
 
               libc_cv_asm_global_directive, [dnl
596
 
libc_cv_asm_global_directive=UNKNOWN
597
 
for ac_globl in .globl .global .EXPORT; do
598
 
  cat > conftest.s <<EOF
599
 
        ${libc_cv_dot_text}
600
 
        ${ac_globl} foo
601
 
foo:
602
 
EOF
603
 
  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
604
 
    libc_cv_asm_global_directive=${ac_globl}
605
 
  fi
606
 
  rm -f conftest*
607
 
  test $libc_cv_asm_global_directive != UNKNOWN && break
608
 
done])
609
 
if test $libc_cv_asm_global_directive = UNKNOWN; then
610
 
  AC_MSG_ERROR(cannot determine asm global directive)
611
 
else
612
 
  AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
613
 
fi
614
 
 
615
 
AC_CACHE_CHECK(for assembler .type directive prefix,
616
 
               libc_cv_asm_type_prefix, [dnl
617
 
libc_cv_asm_type_prefix=no
618
 
for ac_try_prefix in '@' '%' '#'; do
619
 
  cat > conftest.s <<EOF
620
 
        ${libc_cv_dot_text}
621
 
        ${libc_cv_asm_global_directive} foo
622
 
        .type foo, ${ac_try_prefix}object
623
 
        .size foo, 1
624
 
foo:
625
 
        .byte 1
626
 
EOF
627
 
  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
628
 
    libc_cv_asm_type_prefix=${ac_try_prefix}
629
 
  fi
630
 
  rm -f conftest*
631
 
  test "x$libc_cv_asm_type_prefix" != xno && break
632
 
done])
633
 
if test "x$libc_cv_asm_type_prefix" != xno; then
634
 
  AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
635
 
fi
636
 
 
637
 
if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
638
 
  if test x"$multi_arch" = xyes; then
639
 
    AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
640
 
  else
641
 
    multi_arch=no
642
 
  fi
643
 
fi
644
 
if test x"$multi_arch" != xno; then
645
 
  multi_arch_d=/multiarch
646
 
fi
647
 
 
648
 
# Compute the list of sysdep directories for this configuration.
649
 
# This can take a while to compute.
650
 
sysdep_dir=$srcdir/sysdeps
651
 
AC_MSG_CHECKING(sysdep dirs)
652
 
dnl We need to use [ and ] for other purposes for a while now.
653
 
changequote(,)dnl
654
 
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
655
 
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
656
 
 
657
 
test "x$base_os" != x || case "$os" in
658
 
gnu*)
659
 
  base_os=mach/hurd ;;
660
 
linux*)
661
 
  base_os=unix/sysv ;;
662
 
k*bsd*)
663
 
  base_os=unix/bsd/bsd4.4 ;;
664
 
esac
665
 
 
666
 
# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
667
 
tail=$os
668
 
ostry=$os
669
 
while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
670
 
  ostry="$ostry /$o"
671
 
  tail=$o
672
 
done
673
 
o=`echo $tail | sed 's/[0-9]*$//'`
674
 
if test $o != $tail; then
675
 
  ostry="$ostry /$o"
676
 
fi
677
 
# For linux-gnu, try linux-gnu, then linux.
678
 
o=`echo $tail | sed 's/-.*$//'`
679
 
if test $o != $tail; then
680
 
  ostry="$ostry /$o"
681
 
fi
682
 
 
683
 
# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
684
 
base=
685
 
tail=$base_os
686
 
while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
687
 
  set $b
688
 
  base="$base /$1"
689
 
  tail="$2"
690
 
done
691
 
 
692
 
# For sparc/sparc32, try sparc/sparc32 and then sparc.
693
 
mach=
694
 
tail=$machine${submachine:+/$submachine}
695
 
while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
696
 
  set $m
697
 
  # Prepend the machine's FPU directory unless --without-fp.
698
 
  if test "$with_fp" = yes; then
699
 
    mach="$mach /$1/fpu"
700
 
  else
701
 
    mach="$mach /$1/nofpu"
702
 
  fi
703
 
  mach="$mach /$1"
704
 
  tail="$2"
705
 
done
706
 
 
707
 
dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
708
 
changequote([,])dnl
709
 
 
710
 
# Find what sysdep directories exist.
711
 
sysnames_add_ons=
712
 
sysnames=
713
 
for b in $base ''; do
714
 
  for m0 in $mach ''; do
715
 
    for v in /$vendor ''; do
716
 
      test "$v" = / && continue
717
 
      for o in /$ostry ''; do
718
 
        test "$o" = / && continue
719
 
        for m in $multi_arch_d $mach ''; do
720
 
          for d in $add_ons_pfx ''; do
721
 
            for a in $add_ons_sfx ''; do
722
 
              if test -n "$m0$m0sub$b$v$o$m$msub"; then
723
 
                try_srcdir="${srcdir}/"
724
 
                case "$d" in
725
 
                /*) try_srcdir= ;;
726
 
                esac
727
 
                try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
728
 
                test -n "$enable_debug_configure" &&
729
 
                echo "$0 [DEBUG]: try $try" >&2
730
 
                if test -d "$try_srcdir$try"; then
731
 
                  sysnames="$sysnames $try"
732
 
                  { test -n "$o" || test -n "$b"; } && os_used=t
733
 
                  { test -n "$m" || test -n "$m0"; } && machine_used=t
734
 
                  case x${m0:-$m} in
735
 
                  x*/$submachine) submachine_used=t ;;
736
 
                  esac
737
 
                  if test -n "$d"; then
738
 
                    case "$sysnames_add_ons" in
739
 
                    *" $d "*) ;;
740
 
                    *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
741
 
                    esac
742
 
                  fi
743
 
                fi
744
 
              fi
745
 
            done
746
 
          done
747
 
        done
748
 
      done
749
 
    done
750
 
  done
751
 
done
752
 
 
753
 
# If the assembler supports gnu_indirect_function symbol type and the
754
 
# architecture supports multi-arch, we enable multi-arch by default.
755
 
case $sysnames_add_ons$sysnames in
756
 
*"$multi_arch_d"*)
757
 
  ;;
758
 
*)
759
 
  test x"$multi_arch" = xdefault && multi_arch=no
760
 
  ;;
761
 
esac
762
 
if test x"$multi_arch" != xno; then
763
 
  AC_DEFINE(USE_MULTIARCH)
764
 
fi
765
 
AC_SUBST(multi_arch)
766
 
 
767
 
if test -z "$os_used" && test "$os" != none; then
768
 
  AC_MSG_ERROR(Operating system $os is not supported.)
769
 
fi
770
 
if test -z "$machine_used" && test "$machine" != none; then
771
 
  AC_MSG_ERROR(The $machine is not supported.)
772
 
fi
773
 
if test -z "$submachine_used" && test -n "$submachine"; then
774
 
  AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
775
 
fi
776
 
AC_SUBST(submachine)
777
 
 
778
 
# We have now validated the configuration.
779
 
 
780
 
# Peek into option-groups.config to check if sysdeps/ieee754/[l]dbl-wrap needs
781
 
# to be included into $sysnames.
782
 
grep "OPTION_EGLIBC_LIBM_BIG = n" option-groups.config > /dev/null 2>&1
783
 
use_dbl_wrap=$?
784
 
 
785
 
# Expand the list of system names into a full list of directories
786
 
# from each element's parent name and Implies file (if present).
787
 
set $sysnames
788
 
names=
789
 
while test $# -gt 0; do
790
 
  name=$1
791
 
  shift
792
 
 
793
 
  case " $names " in *" $name "*)
794
 
    # Already in the list.
795
 
    continue
796
 
  esac
797
 
 
798
 
  # Report each name as we discover it, so there is no long pause in output.
799
 
  echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
800
 
 
801
 
  name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
802
 
 
803
 
  case $name in
804
 
    /*) xsrcdir= ;;
805
 
    *)  xsrcdir=$srcdir/ ;;
806
 
  esac
807
 
  test -n "$enable_debug_configure" &&
808
 
  echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
809
 
 
810
 
  for implies_file in Implies Implies-before Implies-after; do
811
 
    implies_type=`echo $implies_file | sed s/-/_/`
812
 
    eval ${implies_type}=
813
 
    if test -f $xsrcdir$name/$implies_file; then
814
 
      # Collect more names from the `Implies' file (removing comments).
815
 
      implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
816
 
      for x in $implied_candidate; do
817
 
        found=no
818
 
        if test -d $xsrcdir$name_base/$x; then
819
 
          # If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
820
 
          # ieee754/dbl-64.
821
 
          if test "$use_dbl_wrap" = "0"; then
822
 
            case $x in
823
 
              ieee754/dbl-64) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/dbl-wrap\"" ;;
824
 
              ieee754/ldbl-*) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/ldbl-wrap\"" ;;
825
 
            esac
826
 
          fi
827
 
          eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
828
 
          found=yes
829
 
        fi
830
 
        for d in $add_ons_pfx ''; do
831
 
          try="${d}sysdeps/$x"
832
 
          case $d in
833
 
           /*) try_srcdir= ;;
834
 
           *) try_srcdir=$srcdir/ ;;
835
 
          esac
836
 
          test -n "$enable_debug_configure" &&
837
 
           echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
838
 
          if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
839
 
          then
840
 
            # If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
841
 
            # ieee754/dbl-64.
842
 
            if test "$use_dbl_wrap" = "0"; then
843
 
              case $try in
844
 
              sysdeps/ieee754/dbl-64)
845
 
                eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/dbl-wrap\"" ;;
846
 
              sysdeps/ieee754/ldbl-*)
847
 
                eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/ldbl-wrap\"" ;;
848
 
              esac
849
 
            fi
850
 
            eval "${implies_type}=\"\$${implies_type} \$try\""
851
 
            found=yes
852
 
            case "$sysnames_add_ons" in
853
 
            *" $d "*) ;;
854
 
            *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
855
 
            esac
856
 
          fi
857
 
        done
858
 
        if test $found = no; then
859
 
          AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
860
 
        fi
861
 
      done
862
 
    fi
863
 
  done
864
 
 
865
 
  # Add NAME to the list of names.
866
 
  names="$names $name"
867
 
 
868
 
  # Find the parent of NAME, using the empty string if it has none.
869
 
changequote(,)dnl
870
 
  parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
871
 
changequote([,])dnl
872
 
 
873
 
  test -n "$enable_debug_configure" &&
874
 
    echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
875
 
Implies_before='$Implies_after' Implies_after='$Implies_after'" >&2
876
 
 
877
 
  # Add the names implied by NAME, and NAME's parent (if it has one), to
878
 
  # the list of names to be processed (the argument list).  We prepend the
879
 
  # implied names to the list and append the parent.  We want implied
880
 
  # directories to come before further directories inferred from the
881
 
  # configuration components; this ensures that for sysv4, unix/common
882
 
  # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
883
 
  # after sysv4).
884
 
  sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
885
 
  test -n "$sysnames" && set $sysnames
886
 
done
887
 
 
888
 
# Add the default directories.
889
 
default_sysnames="sysdeps/generic"
890
 
sysnames="$names $default_sysnames"
891
 
AC_SUBST(sysnames)
892
 
# The other names were emitted during the scan.
893
 
AC_MSG_RESULT($default_sysnames)
894
 
 
895
 
# Collect the list of add-ons that supply partial sysdeps trees.
896
 
sysdeps_add_ons=
897
 
for add_on in $add_ons; do
898
 
  case "$add_on" in
899
 
  /*) xsrcdir= ;;
900
 
  *) xsrcdir="$srcdir/" ;;
901
 
  esac
902
 
 
903
 
  test -d "$xsrcdir$add_on/sysdeps" || {
904
 
    case "$configured_add_ons " in
905
 
    *" $add_on "*) ;;
906
 
    *|'')
907
 
      AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
908
 
      ;;
909
 
    esac
910
 
    continue
911
 
  }
912
 
 
913
 
  sysdeps_add_ons="$sysdeps_add_ons $add_on"
914
 
  case "$sysnames_add_ons" in
915
 
  *" $add_on/ "*) ;;
916
 
  *|'')
917
 
    AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
918
 
    continue ;;
919
 
  esac
920
 
 
921
 
  found=no
922
 
  for d in $sysnames; do
923
 
    case "$d" in
924
 
    $add_on/sysdeps/*) ;;
925
 
    *) continue ;;
926
 
    esac
927
 
    (cd "$xsrcdir$d" && for f in *[[!~]]; do
928
 
       case "$f" in
929
 
       sys|bits)
930
 
         for ff in $f/*.h; do
931
 
           test -d "$ff" || { test -e "$ff" && exit 88; }
932
 
         done
933
 
         ;;
934
 
       *)
935
 
         test -d "$f" || { test -e "$f" && exit 88; }
936
 
         ;;
937
 
       esac
938
 
     done)
939
 
    if test $? -eq 88; then
940
 
      found=yes
941
 
      break
942
 
    fi
943
 
  done
944
 
  if test $found = no; then
945
 
    AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
946
 
  fi
947
 
done
948
 
AC_SUBST(sysdeps_add_ons)
949
 
 
950
 
 
951
 
### Locate tools.
952
 
 
953
 
AC_PROG_INSTALL
954
 
if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
955
 
  # The makefiles need to use a different form to find it in $srcdir.
956
 
  INSTALL='\$(..)./scripts/install-sh -c'
957
 
fi
958
 
AC_PROG_LN_S
959
 
 
960
 
LIBC_PROG_BINUTILS
961
 
AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
962
 
 
963
 
# Accept binutils 2.20 or newer.
964
 
AC_CHECK_PROG_VER(AS, $AS, --version,
965
 
                  [GNU assembler.* \([0-9]*\.[0-9.]*\)],
966
 
                  [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
967
 
AC_CHECK_PROG_VER(LD, $LD, --version,
968
 
                  [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
969
 
                  [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
970
 
 
971
 
# These programs are version sensitive.
972
 
AC_CHECK_TOOL_PREFIX
973
 
AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
974
 
  [version \([egcygnustpi-]*[0-9.]*\)], [4.[3-9].* | 4.[1-9][0-9].* | [5-9].* ],
975
 
  critic_missing="$critic_missing gcc")
976
 
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
977
 
  [GNU Make[^0-9]*\([0-9][0-9.]*\)],
978
 
  [3.79* | 3.[89]*], critic_missing="$critic_missing make")
979
 
 
980
 
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
981
 
  [GNU gettext.* \([0-9]*\.[0-9.]*\)],
982
 
  [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
983
 
  MSGFMT=: aux_missing="$aux_missing msgfmt")
984
 
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
985
 
  [GNU texinfo.* \([0-9][0-9.]*\)],
986
 
  [4.[5-9]*|4.[1-9][0-9]*|[5-9].*],
987
 
  MAKEINFO=: aux_missing="$aux_missing makeinfo")
988
 
AC_CHECK_PROG_VER(SED, sed, --version,
989
 
  [GNU sed version \([0-9]*\.[0-9.]*\)],
990
 
  [3.0[2-9]*|3.[1-9]*|[4-9]*],
991
 
  SED=: aux_missing="$aux_missing sed")
992
 
 
993
 
AC_CHECK_TOOL(READELF, readelf, false)
994
 
AC_CHECK_TOOL(NM, nm, false)
995
 
 
996
 
AC_CHECK_PROGS(AUTOCONF, autoconf, no)
997
 
case "x$AUTOCONF" in
998
 
xno|x|x:) AUTOCONF=no ;;
999
 
*)
1000
 
  AC_CACHE_CHECK(dnl
1001
 
whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
1002
 
  if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
1003
 
    libc_cv_autoconf_works=yes
1004
 
  else
1005
 
    libc_cv_autoconf_works=no
1006
 
  fi])
1007
 
  test $libc_cv_autoconf_works = yes || AUTOCONF=no
1008
 
  ;;
1009
 
esac
1010
 
if test "x$AUTOCONF" = xno; then
1011
 
  aux_missing="$aux_missing autoconf"
1012
 
fi
1013
 
 
1014
 
test -n "$critic_missing" && AC_MSG_ERROR([
1015
 
*** These critical programs are missing or too old:$critic_missing
1016
 
*** Check the INSTALL file for required versions.])
1017
 
 
1018
 
test -n "$aux_missing" && AC_MSG_WARN([
1019
 
*** These auxiliary programs are missing or incompatible versions:$aux_missing
1020
 
*** some features will be disabled.
1021
 
*** Check the INSTALL file for required versions.])
1022
 
 
1023
 
# if using special system headers, find out the compiler's sekrit
1024
 
# header directory and add that to the list.  NOTE: Only does the right
1025
 
# thing on a system that doesn't need fixincludes.  (Not presently a problem.)
1026
 
if test -n "$sysheaders"; then
1027
 
  SYSINCLUDES=-nostdinc
1028
 
  for d in include include-fixed; do
1029
 
    i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1030
 
    SYSINCLUDES="$SYSINCLUDES -isystem $i"
1031
 
  done
1032
 
  SYSINCLUDES="$SYSINCLUDES \
1033
 
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
1034
 
  if test -n "$CXX"; then
1035
 
    CXX_SYSINCLUDES=
1036
 
    cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
1037
 
    cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
1038
 
    cxxplus=`$CXX -print-prog-name=cc1plus`
1039
 
    cxxheaders=`$cxxplus -v /dev/null 2>&1 | sed -n '/ \//{p;q;}' | sed 's/ //'`
1040
 
    test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
1041
 
    CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
1042
 
-isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1043
 
  fi
1044
 
fi
1045
 
AC_SUBST(SYSINCLUDES)
1046
 
AC_SUBST(CXX_SYSINCLUDES)
1047
 
 
1048
 
# Test if LD_LIBRARY_PATH contains the notation for the current directory
1049
 
# since this would lead to problems installing/building glibc.
1050
 
# LD_LIBRARY_PATH contains the current directory if one of the following
1051
 
# is true:
1052
 
# - one of the terminals (":" and ";") is the first or last sign
1053
 
# - two terminals occur directly after each other
1054
 
# - the path contains an element with a dot in it
1055
 
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1056
 
changequote(,)dnl
1057
 
case ${LD_LIBRARY_PATH} in
1058
 
  [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1059
 
    ld_library_path_setting="contains current directory"
1060
 
    ;;
1061
 
  *)
1062
 
    ld_library_path_setting="ok"
1063
 
    ;;
1064
 
esac
1065
 
changequote([,])dnl
1066
 
AC_MSG_RESULT($ld_library_path_setting)
1067
 
if test "$ld_library_path_setting" != "ok"; then
1068
 
AC_MSG_ERROR([
1069
 
*** LD_LIBRARY_PATH shouldn't contain the current directory when
1070
 
*** building glibc. Please change the environment variable
1071
 
*** and run configure again.])
1072
 
fi
1073
 
 
1074
 
AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1075
 
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1076
 
  libc_cv_gcc_static_libgcc=
1077
 
else
1078
 
  libc_cv_gcc_static_libgcc=-static-libgcc
1079
 
fi])
1080
 
AC_SUBST(libc_cv_gcc_static_libgcc)
1081
 
 
1082
 
AC_PATH_PROG(BASH_SHELL, bash, no)
1083
 
if test "$BASH_SHELL" != no &&
1084
 
   $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1085
 
             && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1086
 
  libc_cv_have_bash2=yes
1087
 
else
1088
 
  libc_cv_have_bash2=no
1089
 
fi
1090
 
AC_SUBST(libc_cv_have_bash2)
1091
 
 
1092
 
dnl We need a ksh compatible shell for tzselect.
1093
 
if test "$BASH_SHELL" = no; then
1094
 
  AC_PATH_PROG(KSH, ksh, no)
1095
 
  if test "$KSH" = no; then
1096
 
    libc_cv_have_ksh=no
1097
 
  else
1098
 
    libc_cv_have_ksh=yes
1099
 
  fi
1100
 
else
1101
 
  KSH="$BASH_SHELL"
1102
 
  AC_SUBST(KSH)
1103
 
  libc_cv_have_ksh=yes
1104
 
fi
1105
 
AC_SUBST(libc_cv_have_ksh)
1106
 
 
1107
 
AC_PROG_AWK
1108
 
dnl We need gawk for at least gen-sorted.awk and option-groups.awk.
1109
 
if test "x$AWK" != "xgawk"; then
1110
 
  AC_MSG_ERROR([GLIBC requires GNU awk.])
1111
 
fi
1112
 
 
1113
 
AC_PATH_PROG(PERL, perl, no)
1114
 
if test "$PERL" != no &&
1115
 
   (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1116
 
  PERL=no
1117
 
fi
1118
 
AC_PATH_PROG(INSTALL_INFO, install-info, no,
1119
 
             $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1120
 
AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1121
 
 
1122
 
AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1123
 
AC_TRY_COMPILE(dnl
1124
 
[#define __need_size_t
1125
 
#define __need_wchar_t
1126
 
#include <stddef.h>
1127
 
#define __need_NULL
1128
 
#include <stddef.h>], [size_t size; wchar_t wchar;
1129
 
#ifdef offsetof
1130
 
#error stddef.h ignored __need_*
1131
 
#endif
1132
 
if (&size == NULL || &wchar == NULL) abort ();],
1133
 
               libc_cv_friendly_stddef=yes,
1134
 
               libc_cv_friendly_stddef=no)])
1135
 
if test $libc_cv_friendly_stddef = yes; then
1136
 
  config_vars="$config_vars
1137
 
override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1138
 
fi
1139
 
 
1140
 
AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1141
 
               libc_cv_need_minus_P, [dnl
1142
 
cat > conftest.S <<EOF
1143
 
#include "confdefs.h"
1144
 
/* Nothing whatsoever.  */
1145
 
EOF
1146
 
if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1147
 
  libc_cv_need_minus_P=no
1148
 
else
1149
 
  libc_cv_need_minus_P=yes
1150
 
fi
1151
 
rm -f conftest*])
1152
 
if test $libc_cv_need_minus_P = yes; then
1153
 
  config_vars="$config_vars
1154
 
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1155
 
fi
1156
 
 
1157
 
AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1158
 
cat > conftest.s <<EOF
1159
 
${libc_cv_dot_text}
1160
 
foo:
1161
 
.set glibc_conftest_frobozz,foo
1162
 
$libc_cv_asm_global_directive glibc_conftest_frobozz
1163
 
EOF
1164
 
# The alpha-dec-osf1 assembler gives only a warning for `.set'
1165
 
# (but it doesn't work), so we must do a linking check to be sure.
1166
 
cat > conftest1.c <<\EOF
1167
 
extern int glibc_conftest_frobozz;
1168
 
void _start() { glibc_conftest_frobozz = 1; }
1169
 
EOF
1170
 
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1171
 
            -nostartfiles -nostdlib \
1172
 
            -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1173
 
  libc_cv_asm_set_directive=yes
1174
 
else
1175
 
  libc_cv_asm_set_directive=no
1176
 
fi
1177
 
rm -f conftest*])
1178
 
if test $libc_cv_asm_set_directive = yes; then
1179
 
  AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1180
 
fi
1181
 
 
1182
 
AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1183
 
               libc_cv_asm_unique_object, [dnl
1184
 
cat > conftest.s <<EOF
1185
 
${libc_cv_dot_text}
1186
 
_sym:
1187
 
.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1188
 
EOF
1189
 
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1190
 
  libc_cv_asm_unique_object=yes
1191
 
else
1192
 
  libc_cv_asm_unique_object=no
1193
 
fi
1194
 
rm -f conftest*])
1195
 
if test $libc_cv_asm_unique_object = yes; then
1196
 
  AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1197
 
fi
1198
 
 
1199
 
AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1200
 
[cat > conftest.s <<EOF
1201
 
${libc_cv_dot_text}
1202
 
_sym:
1203
 
.symver _sym,sym@VERS
1204
 
EOF
1205
 
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1206
 
  libc_cv_asm_symver_directive=yes
1207
 
else
1208
 
  libc_cv_asm_symver_directive=no
1209
 
fi
1210
 
rm -f conftest*])
1211
 
AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1212
 
if test $libc_cv_asm_symver_directive = yes; then
1213
 
  cat > conftest.s <<EOF
1214
 
${libc_cv_dot_text}
1215
 
_sym:
1216
 
.symver _sym,sym@VERS
1217
 
EOF
1218
 
  cat > conftest.map <<EOF
1219
 
VERS_1 {
1220
 
        global: sym;
1221
 
};
1222
 
 
1223
 
VERS_2 {
1224
 
        global: sym;
1225
 
} VERS_1;
1226
 
EOF
1227
 
  if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1228
 
    if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1229
 
                                -o conftest.so conftest.o
1230
 
                                -nostartfiles -nostdlib
1231
 
                                -Wl,--version-script,conftest.map
1232
 
                       1>&AS_MESSAGE_LOG_FD]);
1233
 
    then
1234
 
      libc_cv_ld_version_script_option=yes
1235
 
    else
1236
 
      libc_cv_ld_version_script_option=no
1237
 
    fi
1238
 
  else
1239
 
    libc_cv_ld_version_script_option=no
1240
 
  fi
1241
 
else
1242
 
  libc_cv_ld_version_script_option=no
1243
 
fi
1244
 
rm -f conftest*])
1245
 
if test $shared != no &&
1246
 
   test $libc_cv_asm_symver_directive = yes &&
1247
 
   test $libc_cv_ld_version_script_option = yes &&
1248
 
   test $enable_versioning = yes; then
1249
 
  VERSIONING=yes
1250
 
  AC_DEFINE(DO_VERSIONING)
1251
 
else
1252
 
  VERSIONING=no
1253
 
fi
1254
 
AC_SUBST(VERSIONING)
1255
 
 
1256
 
if test $shared != no && test $VERSIONING = no; then
1257
 
  echo "\
1258
 
*** WARNING: You should not compile GNU libc without versioning. Not using
1259
 
*** versioning will introduce incompatibilities so that old binaries
1260
 
*** will not run anymore.
1261
 
*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1262
 
fi
1263
 
AC_CACHE_CHECK(for .previous assembler directive,
1264
 
               libc_cv_asm_previous_directive, [dnl
1265
 
cat > conftest.s <<EOF
1266
 
.section foo_section
1267
 
.previous
1268
 
EOF
1269
 
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1270
 
  libc_cv_asm_previous_directive=yes
1271
 
else
1272
 
  libc_cv_asm_previous_directive=no
1273
 
fi
1274
 
rm -f conftest*])
1275
 
if test $libc_cv_asm_previous_directive = yes; then
1276
 
  AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1277
 
else
1278
 
  AC_CACHE_CHECK(for .popsection assembler directive,
1279
 
                 libc_cv_asm_popsection_directive, [dnl
1280
 
  cat > conftest.s <<EOF
1281
 
.pushsection foo_section
1282
 
.popsection
1283
 
EOF
1284
 
  if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1285
 
    libc_cv_asm_popsection_directive=yes
1286
 
  else
1287
 
    libc_cv_asm_popsection_directive=no
1288
 
  fi
1289
 
  rm -f conftest*])
1290
 
  if test $libc_cv_asm_popsection_directive = yes; then
1291
 
    AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1292
 
  fi
1293
 
fi
1294
 
AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1295
 
               libc_cv_asm_protected_directive, [dnl
1296
 
cat > conftest.s <<EOF
1297
 
.protected foo
1298
 
foo:
1299
 
.hidden bar
1300
 
bar:
1301
 
EOF
1302
 
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1303
 
  libc_cv_asm_protected_directive=yes
1304
 
else
1305
 
  AC_MSG_ERROR(assembler support for symbol visibility is required)
1306
 
fi
1307
 
rm -f conftest*])
1308
 
 
1309
 
if test $libc_cv_asm_protected_directive = yes; then
1310
 
  AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1311
 
                 libc_cv_visibility_attribute,
1312
 
                 [cat > conftest.c <<EOF
1313
 
                  int foo __attribute__ ((visibility ("hidden"))) = 1;
1314
 
                  int bar __attribute__ ((visibility ("protected"))) = 1;
1315
 
EOF
1316
 
                  libc_cv_visibility_attribute=no
1317
 
                  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1318
 
                    if grep '\.hidden.*foo' conftest.s >/dev/null; then
1319
 
                      if grep '\.protected.*bar' conftest.s >/dev/null; then
1320
 
                        libc_cv_visibility_attribute=yes
1321
 
                      fi
1322
 
                    fi
1323
 
                  fi
1324
 
                  rm -f conftest.{c,s}
1325
 
                 ])
1326
 
  if test $libc_cv_visibility_attribute != yes; then
1327
 
    AC_MSG_ERROR(compiler support for visibility attribute is required)
1328
 
  fi
1329
 
fi
1330
 
 
1331
 
if test $libc_cv_visibility_attribute = yes; then
1332
 
  AC_CACHE_CHECK(for broken __attribute__((visibility())),
1333
 
                 libc_cv_broken_visibility_attribute,
1334
 
                 [cat > conftest.c <<EOF
1335
 
                  int foo (int x);
1336
 
                  int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1337
 
                  int bar (int x) { return x; }
1338
 
EOF
1339
 
                  libc_cv_broken_visibility_attribute=yes
1340
 
                  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1341
 
changequote(,)dnl
1342
 
                    if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1343
 
changequote([,])dnl
1344
 
                      libc_cv_broken_visibility_attribute=no
1345
 
                    fi
1346
 
                  fi
1347
 
                  rm -f conftest.c conftest.s
1348
 
                 ])
1349
 
  if test $libc_cv_broken_visibility_attribute = yes; then
1350
 
    AC_MSG_ERROR(working compiler support for visibility attribute is required)
1351
 
  fi
1352
 
fi
1353
 
 
1354
 
AC_CACHE_CHECK(for broken __attribute__((alias())),
1355
 
               libc_cv_broken_alias_attribute,
1356
 
               [cat > conftest.c <<EOF
1357
 
               extern int foo (int x) __asm ("xyzzy");
1358
 
               int bar (int x) { return x; }
1359
 
               extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1360
 
               extern int dfoo;
1361
 
               extern __typeof (dfoo) dfoo __asm ("abccb");
1362
 
               int dfoo = 1;
1363
 
EOF
1364
 
               libc_cv_broken_alias_attribute=yes
1365
 
               if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1366
 
                 if grep 'xyzzy' conftest.s >/dev/null &&
1367
 
                    grep 'abccb' conftest.s >/dev/null; then
1368
 
                   libc_cv_broken_alias_attribute=no
1369
 
                 fi
1370
 
               fi
1371
 
               rm -f conftest.c conftest.s
1372
 
               ])
1373
 
if test $libc_cv_broken_alias_attribute = yes; then
1374
 
  AC_MSG_ERROR(working alias attribute support required)
1375
 
fi
1376
 
 
1377
 
if test $libc_cv_visibility_attribute = yes; then
1378
 
  AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1379
 
                 libc_cv_have_sdata_section,
1380
 
                 [echo "int i;" > conftest.c
1381
 
                  libc_cv_have_sdata_section=no
1382
 
                  if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1383
 
                     | grep '\.sdata' >/dev/null; then
1384
 
                    libc_cv_have_sdata_section=yes
1385
 
                  fi
1386
 
                  rm -f conftest.c conftest.so
1387
 
                 ])
1388
 
  if test $libc_cv_have_sdata_section = yes; then
1389
 
    AC_DEFINE(HAVE_SDATA_SECTION)
1390
 
  fi
1391
 
fi
1392
 
 
1393
 
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1394
 
               libc_cv_initfini_array, [dnl
1395
 
LIBC_TRY_LINK_STATIC([
1396
 
int foo (void) { return 1; }
1397
 
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1398
 
],
1399
 
  [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1400
 
    libc_cv_initfini_array=yes
1401
 
  else
1402
 
    libc_cv_initfini_array=no
1403
 
  fi],
1404
 
  [libc_cv_initfini_array=no])
1405
 
])
1406
 
if test $libc_cv_initfini_array != yes; then
1407
 
  AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1408
 
fi
1409
 
 
1410
 
AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1411
 
               libc_cv_ctors_header, [dnl
1412
 
  libc_cv_ctors_header=yes
1413
 
  LIBC_TRY_LINK_STATIC([
1414
 
__attribute__ ((constructor)) void ctor (void) { asm (""); }
1415
 
__attribute__ ((destructor))  void dtor (void) { asm (""); }
1416
 
],
1417
 
              [dnl
1418
 
      AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1419
 
        { gsub(/\@<:@ */, "@<:@") }
1420
 
        $2 == ".ctors" || $2 == ".dtors" {
1421
 
          size = strtonum("0x" $6)
1422
 
          align = strtonum("0x" $NF)
1423
 
          seen@<:@$2@:>@ = 1
1424
 
          stub@<:@$2@:>@ = size == align * 2
1425
 
        }
1426
 
        END {
1427
 
          ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1428
 
          dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1429
 
          exit ((ctors_ok && dtors_ok) ? 0 : 1)
1430
 
        }
1431
 
      '], [libc_cv_ctors_header=no])
1432
 
    ], [dnl
1433
 
      AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1434
 
    ])
1435
 
])
1436
 
if test $libc_cv_ctors_header = no; then
1437
 
  AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1438
 
fi
1439
 
 
1440
 
AC_CACHE_CHECK(for libunwind-support in compiler,
1441
 
               libc_cv_cc_with_libunwind, [
1442
 
  cat > conftest.c <<EOF
1443
 
int main (void) { return 0; }
1444
 
EOF
1445
 
  if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1446
 
     conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1447
 
    libc_cv_cc_with_libunwind=yes
1448
 
  else
1449
 
    libc_cv_cc_with_libunwind=no
1450
 
  fi
1451
 
  rm -f conftest*])
1452
 
AC_SUBST(libc_cv_cc_with_libunwind)
1453
 
if test $libc_cv_cc_with_libunwind = yes; then
1454
 
  AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1455
 
fi
1456
 
 
1457
 
AC_CACHE_CHECK(for -z nodelete option,
1458
 
               libc_cv_z_nodelete, [dnl
1459
 
cat > conftest.c <<EOF
1460
 
int _start (void) { return 42; }
1461
 
EOF
1462
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1463
 
                   -fPIC -shared -o conftest.so conftest.c
1464
 
                   -nostartfiles -nostdlib
1465
 
                   -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1466
 
then
1467
 
  libc_cv_z_nodelete=yes
1468
 
else
1469
 
  AC_MSG_ERROR(linker with -z nodelete support required)
1470
 
fi
1471
 
rm -f conftest*])
1472
 
 
1473
 
AC_CACHE_CHECK(for -z nodlopen option,
1474
 
               libc_cv_z_nodlopen, [dnl
1475
 
cat > conftest.c <<EOF
1476
 
int _start (void) { return 42; }
1477
 
EOF
1478
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1479
 
                        -fPIC -shared -o conftest.so conftest.c
1480
 
                        -nostartfiles -nostdlib
1481
 
                        -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1482
 
then
1483
 
  libc_cv_z_nodlopen=yes
1484
 
else
1485
 
  AC_MSG_ERROR(linker with -z nodlopen support required)
1486
 
fi
1487
 
rm -f conftest*])
1488
 
 
1489
 
AC_CACHE_CHECK(for -z initfirst option,
1490
 
               libc_cv_z_initfirst, [dnl
1491
 
cat > conftest.c <<EOF
1492
 
int _start (void) { return 42; }
1493
 
EOF
1494
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1495
 
                        -fPIC -shared -o conftest.so conftest.c
1496
 
                        -nostartfiles -nostdlib
1497
 
                        -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1498
 
then
1499
 
  libc_cv_z_initfirst=yes
1500
 
else
1501
 
  AC_MSG_ERROR(linker with -z initfirst support required)
1502
 
fi
1503
 
rm -f conftest*])
1504
 
 
1505
 
# Add-on fragments can set these for other machines.
1506
 
libc_commonpagesize=${libc_commonpagesize:-no}
1507
 
libc_relro_required=${libc_relro_required:-no}
1508
 
case "$base_machine" in
1509
 
  i[[34567]]86 | x86_64 | powerpc* | s390*)
1510
 
    libc_commonpagesize=0x1000
1511
 
    libc_relro_required=yes
1512
 
    ;;
1513
 
  sparc*)
1514
 
    libc_commonpagesize=0x2000
1515
 
    libc_relro_required=yes
1516
 
    ;;
1517
 
esac
1518
 
 
1519
 
if test $libc_commonpagesize != no; then
1520
 
  AC_CACHE_CHECK(for -z relro option,
1521
 
                 libc_cv_z_relro, [dnl
1522
 
  libc_cv_z_relro=no
1523
 
  AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1524
 
int _start (void) { return 42; }
1525
 
extern void _exit (int);
1526
 
/* Since these pointers are const, they should go in rodata.
1527
 
   Since they refer to functions that have to be resolved by
1528
 
   dynamic linking, they should instead go in RELRO data.  */
1529
 
const void *const relro[] = { &_start, &_exit, 0 };
1530
 
/* GNU ld fails to produce RELRO data when it's very small and there is no
1531
 
   normal writable data following it, or if only uninitialized (.bss) data
1532
 
   follows it, or only very small writable data.  */
1533
 
int data[0x10000] = { 1, };
1534
 
]])])
1535
 
  cat > conftest.awk <<\EOF
1536
 
BEGIN {
1537
 
  result = "no"
1538
 
  commonpagesize = strtonum(commonpagesize)
1539
 
}
1540
 
{ print "LINE:", $0 > "/dev/stderr" }
1541
 
$1 == "GNU_RELRO" {
1542
 
  vaddr = strtonum($3)
1543
 
  memsz = strtonum($6)
1544
 
  end = vaddr + memsz
1545
 
  printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1546
 
    vaddr, memsz, end, commonpagesize > "/dev/stderr"
1547
 
  result = (end % commonpagesize == 0) ? "yes" : "broken"
1548
 
}
1549
 
END { print result }
1550
 
EOF
1551
 
  AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1552
 
                    -fPIC -shared -o conftest.so conftest.c
1553
 
                    -nostartfiles -nostdlib
1554
 
                    -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1555
 
  AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1556
 
  AC_TRY_COMMAND([
1557
 
      $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1558
 
           conftest.ph > conftest.cps
1559
 
    ]) &&
1560
 
  libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1561
 
  rm -f conftest*])
1562
 
  if { test "x$libc_relro_required" = xyes &&
1563
 
       test "x$libc_cv_z_relro" != xyes
1564
 
     }
1565
 
  then
1566
 
    AC_MSG_ERROR(linker with -z relro support required)
1567
 
  fi
1568
 
else
1569
 
  AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1570
 
fi
1571
 
 
1572
 
AC_CACHE_CHECK(for -Bgroup option,
1573
 
               libc_cv_Bgroup, [dnl
1574
 
cat > conftest.c <<EOF
1575
 
int _start (void) { return 42; }
1576
 
EOF
1577
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1578
 
                            -fPIC -shared -o conftest.so conftest.c
1579
 
                            -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1580
 
then
1581
 
  libc_cv_Bgroup=yes
1582
 
else
1583
 
  libc_cv_Bgroup=no
1584
 
fi
1585
 
rm -f conftest*])
1586
 
AC_SUBST(libc_cv_Bgroup)
1587
 
 
1588
 
ASFLAGS_config=
1589
 
AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1590
 
               libc_cv_as_noexecstack, [dnl
1591
 
cat > conftest.c <<EOF
1592
 
void foo (void) { }
1593
 
EOF
1594
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1595
 
                   -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1596
 
   && grep -q .note.GNU-stack conftest.s \
1597
 
   && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1598
 
                      -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1599
 
then
1600
 
  libc_cv_as_noexecstack=yes
1601
 
else
1602
 
  libc_cv_as_noexecstack=no
1603
 
fi
1604
 
rm -f conftest*])
1605
 
if test $libc_cv_as_noexecstack = yes; then
1606
 
  ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1607
 
fi
1608
 
AC_SUBST(ASFLAGS_config)
1609
 
 
1610
 
AC_CACHE_CHECK(for -z combreloc,
1611
 
               libc_cv_z_combreloc, [dnl
1612
 
cat > conftest.c <<EOF
1613
 
extern int bar (int);
1614
 
extern int mumble;
1615
 
int foo (void) { return bar (mumble); }
1616
 
EOF
1617
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1618
 
                        -fPIC -shared -o conftest.so conftest.c
1619
 
                        -nostdlib -nostartfiles
1620
 
                        -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1621
 
then
1622
 
dnl The following test is a bit weak.  We must use a tool which can test
1623
 
dnl cross-platform since the gcc used can be a cross compiler.  Without
1624
 
dnl introducing new options this is not easily doable.  Instead use a tool
1625
 
dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1626
 
dnl look for a section named .rel.dyn.
1627
 
  if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1628
 
    libc_cv_z_combreloc=yes
1629
 
  else
1630
 
    libc_cv_z_combreloc=no
1631
 
  fi
1632
 
else
1633
 
  libc_cv_z_combreloc=no
1634
 
fi
1635
 
rm -f conftest*])
1636
 
if test "$libc_cv_z_combreloc" = yes; then
1637
 
  AC_DEFINE(HAVE_Z_COMBRELOC)
1638
 
fi
1639
 
AC_SUBST(libc_cv_z_combreloc)
1640
 
 
1641
 
AC_CACHE_CHECK(for -z execstack,
1642
 
               libc_cv_z_execstack, [dnl
1643
 
cat > conftest.c <<EOF
1644
 
int _start (void) { return 42; }
1645
 
EOF
1646
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1647
 
                            -fPIC -shared -o conftest.so conftest.c
1648
 
                            -Wl,-z,execstack -nostdlib
1649
 
                            1>&AS_MESSAGE_LOG_FD])
1650
 
then
1651
 
  libc_cv_z_execstack=yes
1652
 
else
1653
 
  libc_cv_z_execstack=no
1654
 
fi
1655
 
rm -f conftest*])
1656
 
AC_SUBST(libc_cv_z_execstack)
1657
 
 
1658
 
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1659
 
LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1660
 
])
1661
 
 
1662
 
AC_SUBST(libc_cv_fpie)
1663
 
 
1664
 
AC_CACHE_CHECK(for --hash-style option,
1665
 
               libc_cv_hashstyle, [dnl
1666
 
cat > conftest.c <<EOF
1667
 
int _start (void) { return 42; }
1668
 
EOF
1669
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1670
 
                            -fPIC -shared -o conftest.so conftest.c
1671
 
                            -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1672
 
then
1673
 
  libc_cv_hashstyle=yes
1674
 
else
1675
 
  libc_cv_hashstyle=no
1676
 
fi
1677
 
rm -f conftest*])
1678
 
AC_SUBST(libc_cv_hashstyle)
1679
 
 
1680
 
# The linker's default -shared behavior is good enough if it
1681
 
# does these things that our custom linker scripts ensure that
1682
 
# all allocated NOTE sections come first.
1683
 
if test "$use_default_link" = default; then
1684
 
  AC_CACHE_CHECK([for sufficient default -shared layout],
1685
 
                  libc_cv_use_default_link, [dnl
1686
 
  libc_cv_use_default_link=no
1687
 
  cat > conftest.s <<\EOF
1688
 
          .section .note.a,"a",%note
1689
 
          .balign 4
1690
 
          .long 4,4,9
1691
 
          .string "GNU"
1692
 
          .string "foo"
1693
 
          .section .note.b,"a",%note
1694
 
          .balign 4
1695
 
          .long 4,4,9
1696
 
          .string "GNU"
1697
 
          .string "bar"
1698
 
EOF
1699
 
  if AC_TRY_COMMAND([dnl
1700
 
  ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1701
 
       ac_try=`$READELF -S conftest.so | sed -n \
1702
 
         ['${x;p;}
1703
 
          s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1704
 
          t a
1705
 
          b
1706
 
          : a
1707
 
          H']`
1708
 
  then
1709
 
    libc_seen_a=no libc_seen_b=no
1710
 
    set -- $ac_try
1711
 
    while test $# -ge 2 -a "$1" = NOTE; do
1712
 
      case "$2" in
1713
 
      .note.a) libc_seen_a=yes ;;
1714
 
      .note.b) libc_seen_b=yes ;;
1715
 
      esac
1716
 
      shift 2
1717
 
    done
1718
 
    case "$libc_seen_a$libc_seen_b" in
1719
 
    yesyes)
1720
 
      libc_cv_use_default_link=yes
1721
 
      ;;
1722
 
    *)
1723
 
      echo >&AS_MESSAGE_LOG_FD "\
1724
 
$libc_seen_a$libc_seen_b from:
1725
 
$ac_try"
1726
 
      ;;
1727
 
    esac
1728
 
  fi
1729
 
  rm -f conftest*])
1730
 
  use_default_link=$libc_cv_use_default_link
1731
 
fi
1732
 
 
1733
 
AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1734
 
if libc_cv_output_format=`
1735
 
${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1736
 
then
1737
 
  :
1738
 
else
1739
 
  libc_cv_output_format=
1740
 
fi
1741
 
test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1742
 
AC_SUBST(libc_cv_output_format)
1743
 
 
1744
 
AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1745
 
cat > conftest.c <<EOF
1746
 
int foo;
1747
 
EOF
1748
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1749
 
                            conftest.c 1>&AS_MESSAGE_LOG_FD])
1750
 
then
1751
 
  libc_cv_fno_toplevel_reorder=yes
1752
 
else
1753
 
  libc_cv_fno_toplevel_reorder=no
1754
 
fi
1755
 
rm -f conftest*])
1756
 
if test $libc_cv_fno_toplevel_reorder = yes; then
1757
 
  fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1758
 
else
1759
 
  fno_unit_at_a_time=-fno-unit-at-a-time
1760
 
fi
1761
 
AC_SUBST(fno_unit_at_a_time)
1762
 
 
1763
 
AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1764
 
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1765
 
                   [libc_cv_ssp=yes],
1766
 
                   [libc_cv_ssp=no])
1767
 
])
1768
 
AC_SUBST(libc_cv_ssp)
1769
 
 
1770
 
AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1771
 
cat > conftest.c <<EOF
1772
 
int foo;
1773
 
#ifdef __GNUC_GNU_INLINE__
1774
 
main () { return 0;}
1775
 
#else
1776
 
#error
1777
 
#endif
1778
 
EOF
1779
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1780
 
                            -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1781
 
then
1782
 
  libc_cv_gnu89_inline=yes
1783
 
else
1784
 
  libc_cv_gnu89_inline=no
1785
 
fi
1786
 
rm -f conftest*])
1787
 
if test $libc_cv_gnu89_inline = yes; then
1788
 
  gnu89_inline=-fgnu89-inline
1789
 
else
1790
 
  gnu89_inline=
1791
 
fi
1792
 
AC_SUBST(gnu89_inline)
1793
 
 
1794
 
AC_CACHE_CHECK(whether cc puts quotes around section names,
1795
 
               libc_cv_have_section_quotes,
1796
 
               [cat > conftest.c <<EOF
1797
 
                static const int foo
1798
 
                __attribute__ ((section ("bar"))) = 1;
1799
 
EOF
1800
 
                if ${CC-cc} -S conftest.c -o conftest.s; then
1801
 
                  if grep '\.section.*"bar"' conftest.s >/dev/null; then
1802
 
                    libc_cv_have_section_quotes=yes
1803
 
                  else
1804
 
                    libc_cv_have_section_quotes=no
1805
 
                  fi
1806
 
                else
1807
 
                  libc_cv_have_section_quotes=unknown
1808
 
                fi
1809
 
                rm -f conftest.{c,s}
1810
 
                ])
1811
 
if test $libc_cv_have_section_quotes = yes; then
1812
 
  AC_DEFINE(HAVE_SECTION_QUOTES)
1813
 
fi
1814
 
 
1815
 
AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1816
 
               [dnl
1817
 
cat > conftest.s <<EOF
1818
 
${libc_cv_dot_text}
1819
 
${libc_cv_asm_global_directive} foo
1820
 
foo:
1821
 
.weak foo
1822
 
.weak bar; bar = foo
1823
 
EOF
1824
 
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1825
 
  libc_cv_asm_weak_directive=yes
1826
 
else
1827
 
  libc_cv_asm_weak_directive=no
1828
 
fi
1829
 
rm -f conftest*])
1830
 
 
1831
 
if test $libc_cv_asm_weak_directive = no; then
1832
 
  AC_CACHE_CHECK(for assembler .weakext directive,
1833
 
                 libc_cv_asm_weakext_directive,
1834
 
                 [dnl
1835
 
cat > conftest.s <<EOF
1836
 
${libc_cv_dot_text}
1837
 
${libc_cv_asm_global_directive} foo
1838
 
foo:
1839
 
.weakext bar foo
1840
 
.weakext baz
1841
 
${libc_cv_asm_global_directive} baz
1842
 
baz:
1843
 
EOF
1844
 
  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1845
 
    libc_cv_asm_weakext_directive=yes
1846
 
  else
1847
 
    libc_cv_asm_weakext_directive=no
1848
 
  fi
1849
 
  rm -f conftest*])
1850
 
 
1851
 
fi # no .weak
1852
 
 
1853
 
if test $libc_cv_asm_weak_directive = yes; then
1854
 
  AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1855
 
elif test $libc_cv_asm_weakext_directive = yes; then
1856
 
  AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1857
 
fi
1858
 
 
1859
 
AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1860
 
case $machine in
1861
 
  sparc/sparc64*) cfi_offset=2047;;
1862
 
  *) cfi_offset=0;;
1863
 
esac
1864
 
cat > conftest.s <<EOF
1865
 
        .text
1866
 
        .type   func,%function
1867
 
func:
1868
 
        .cfi_startproc
1869
 
        .cfi_remember_state
1870
 
        .cfi_rel_offset 1, $cfi_offset
1871
 
        .cfi_endproc
1872
 
EOF
1873
 
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1874
 
  libc_cv_asm_cfi_directives=yes
1875
 
else
1876
 
  libc_cv_asm_cfi_directives=no
1877
 
fi
1878
 
rm -f conftest*])
1879
 
if test $libc_cv_asm_cfi_directives = yes; then
1880
 
  AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1881
 
fi
1882
 
 
1883
 
AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1884
 
cat > conftest.c <<\EOF
1885
 
_start () {}
1886
 
int __eh_pc;
1887
 
__throw () {}
1888
 
EOF
1889
 
dnl No \ in command here because it ends up inside ''.
1890
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1891
 
                            -nostdlib -nostartfiles -Wl,--no-whole-archive
1892
 
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1893
 
  libc_cv_ld_no_whole_archive=yes
1894
 
else
1895
 
  libc_cv_ld_no_whole_archive=no
1896
 
fi
1897
 
rm -f conftest*])
1898
 
if test $libc_cv_ld_no_whole_archive = no; then
1899
 
  AC_MSG_ERROR([support for --no-whole-archive is needed])
1900
 
fi
1901
 
 
1902
 
AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1903
 
cat > conftest.c <<\EOF
1904
 
_start () {}
1905
 
int __eh_pc;
1906
 
__throw () {}
1907
 
EOF
1908
 
dnl No \ in command here because it ends up inside ''.
1909
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1910
 
                            -nostdlib -nostartfiles -fexceptions
1911
 
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1912
 
  libc_cv_gcc_exceptions=yes
1913
 
else
1914
 
  libc_cv_gcc_exceptions=no
1915
 
fi
1916
 
rm -f conftest*])
1917
 
if test $libc_cv_gcc_exceptions = yes; then
1918
 
  exceptions=-fexceptions
1919
 
fi
1920
 
AC_SUBST(exceptions)dnl
1921
 
 
1922
 
if test "$host_cpu" = powerpc ; then
1923
 
# Check for a bug present in at least versions 2.8.x of GCC
1924
 
# and versions 1.0.x of EGCS.
1925
 
AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1926
 
AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1927
 
               libc_cv_c_asmcr0_bug='no',
1928
 
               libc_cv_c_asmcr0_bug='yes')])
1929
 
if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1930
 
  AC_DEFINE(BROKEN_PPC_ASM_CR0)
1931
 
fi
1932
 
fi
1933
 
 
1934
 
AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1935
 
cat > conftest.c <<\EOF
1936
 
void zero (void *x)
1937
 
{
1938
 
  __builtin_memset (x, 0, 1000);
1939
 
}
1940
 
EOF
1941
 
dnl
1942
 
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1943
 
then
1944
 
  libc_cv_gcc_builtin_memset=no
1945
 
else
1946
 
  libc_cv_gcc_builtin_memset=yes
1947
 
fi
1948
 
rm -f conftest* ])
1949
 
if test "$libc_cv_gcc_builtin_memset" = yes ; then
1950
 
  AC_DEFINE(HAVE_BUILTIN_MEMSET)
1951
 
fi
1952
 
 
1953
 
AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1954
 
cat > conftest.c <<\EOF
1955
 
extern char *strstr (const char *, const char *) __asm ("my_strstr");
1956
 
char *foo (const char *a, const char *b)
1957
 
{
1958
 
  return __builtin_strstr (a, b);
1959
 
}
1960
 
EOF
1961
 
dnl
1962
 
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1963
 
then
1964
 
  libc_cv_gcc_builtin_redirection=yes
1965
 
else
1966
 
  libc_cv_gcc_builtin_redirection=no
1967
 
fi
1968
 
rm -f conftest* ])
1969
 
if test "$libc_cv_gcc_builtin_redirection" = no; then
1970
 
  AC_MSG_ERROR([support for the symbol redirection needed])
1971
 
fi
1972
 
 
1973
 
dnl Check whether the compiler supports the __thread keyword.
1974
 
AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1975
 
[cat > conftest.c <<\EOF
1976
 
__thread int a = 42;
1977
 
EOF
1978
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1979
 
  libc_cv_gcc___thread=yes
1980
 
else
1981
 
  libc_cv_gcc___thread=no
1982
 
fi
1983
 
rm -f conftest*])
1984
 
if test "$libc_cv_gcc___thread" = no; then
1985
 
  AC_MSG_ERROR([support for the __thread keyword is required])
1986
 
fi
1987
 
 
1988
 
dnl Check whether the compiler supports the tls_model attribute.
1989
 
AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1990
 
cat > conftest.c <<\EOF
1991
 
extern __thread int a __attribute__((tls_model ("initial-exec")));
1992
 
EOF
1993
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1994
 
  libc_cv_gcc_tls_model_attr=yes
1995
 
else
1996
 
  libc_cv_gcc_tls_model_attr=no
1997
 
fi
1998
 
rm -f conftest*])
1999
 
if test "$libc_cv_gcc_tls_model_attr" = no; then
2000
 
  AC_MSG_ERROR([support for the tls_model attribute is required])
2001
 
fi
2002
 
 
2003
 
dnl Determine how to disable generation of FMA instructions.
2004
 
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
2005
 
               libc_cv_cc_nofma, [dnl
2006
 
libc_cv_cc_nofma=
2007
 
for opt in -ffp-contract=off -mno-fused-madd; do
2008
 
  LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
2009
 
done])
2010
 
 
2011
 
if test -n "$submachine"; then
2012
 
  AC_CACHE_CHECK([for compiler option for CPU variant],
2013
 
                 libc_cv_cc_submachine, [dnl
2014
 
  libc_cv_cc_submachine=no
2015
 
  for opt in "-march=$submachine" "-mcpu=$submachine"; do
2016
 
    LIBC_TRY_CC_OPTION([$opt], [
2017
 
      libc_cv_cc_submachine="$opt"
2018
 
      break], [])
2019
 
  done])
2020
 
  if test "x$libc_cv_cc_submachine" = xno; then
2021
 
    AC_MSG_ERROR([${CC-cc} does not support $submachine])
2022
 
  fi
2023
 
fi
2024
 
AC_SUBST(libc_cv_cc_submachine)
2025
 
 
2026
 
dnl Check whether we have the gd library available.
2027
 
AC_MSG_CHECKING(for libgd)
2028
 
if test "$with_gd" != "no"; then
2029
 
  old_CFLAGS="$CFLAGS"
2030
 
  CFLAGS="$CFLAGS $libgd_include"
2031
 
  old_LDFLAGS="$LDFLAGS"
2032
 
  LDFLAGS="$LDFLAGS $libgd_ldflags"
2033
 
  old_LIBS="$LIBS"
2034
 
  LIBS="$LIBS -lgd -lpng -lz -lm"
2035
 
  AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2036
 
  CFLAGS="$old_CFLAGS"
2037
 
  LDFLAGS="$old_LDFLAGS"
2038
 
  LIBS="$old_LIBS"
2039
 
else
2040
 
  LIBGD=no
2041
 
fi
2042
 
AC_MSG_RESULT($LIBGD)
2043
 
AC_SUBST(LIBGD)
2044
 
 
2045
 
# SELinux detection
2046
 
if test x$with_selinux = xno ; then
2047
 
  have_selinux=no;
2048
 
else
2049
 
  # See if we have the SELinux library
2050
 
  AC_CHECK_LIB(selinux, is_selinux_enabled,
2051
 
               have_selinux=yes, have_selinux=no)
2052
 
  # See if we have the SELinux header with the NSCD permissions in it.
2053
 
  if test x$have_selinux = xyes ; then
2054
 
    AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2055
 
    AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2056
 
                    [#ifdef NSCD__SHMEMHOST
2057
 
                     return 0;
2058
 
                     #else
2059
 
                     #error NSCD__SHMEMHOST not defined
2060
 
                     #endif],
2061
 
                    have_selinux=yes, have_selinux=no)
2062
 
    AC_MSG_RESULT($have_selinux)
2063
 
  fi
2064
 
 
2065
 
  if test x$with_selinux = xyes ; then
2066
 
    if test x$have_selinux = xno ; then
2067
 
      AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2068
 
    fi
2069
 
  fi
2070
 
fi
2071
 
# Check if we're building with SELinux support.
2072
 
if test "x$have_selinux" = xyes; then
2073
 
  AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2074
 
 
2075
 
  # See if we have the libaudit library
2076
 
  AC_CHECK_LIB(audit, audit_log_user_avc_message,
2077
 
               have_libaudit=yes, have_libaudit=no)
2078
 
  if test "x$have_libaudit" = xyes; then
2079
 
    AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2080
 
  fi
2081
 
  AC_SUBST(have_libaudit)
2082
 
 
2083
 
  # See if we have the libcap library
2084
 
  AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2085
 
  if test "x$have_libcap" = xyes; then
2086
 
    AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2087
 
  fi
2088
 
  AC_SUBST(have_libcap)
2089
 
fi
2090
 
AC_SUBST(have_selinux)
2091
 
 
2092
 
dnl check for the size of 'long double'.
2093
 
AC_CHECK_SIZEOF(long double, 0)
2094
 
sizeof_long_double=$ac_cv_sizeof_long_double
2095
 
AC_SUBST(sizeof_long_double)
2096
 
 
2097
 
CPPUNDEFS=
2098
 
dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2099
 
dnl Since we are building the implementations of the fortified functions here,
2100
 
dnl having the macro defined interacts very badly.
2101
 
AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2102
 
[AC_TRY_COMPILE([], [
2103
 
#ifdef _FORTIFY_SOURCE
2104
 
# error bogon
2105
 
#endif],
2106
 
                [libc_cv_predef_fortify_source=no],
2107
 
                [libc_cv_predef_fortify_source=yes])])
2108
 
if test $libc_cv_predef_fortify_source = yes; then
2109
 
  CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2110
 
fi
2111
 
AC_SUBST(CPPUNDEFS)
2112
 
 
2113
 
dnl Check for silly hacked compilers inserting -fstack-protector.
2114
 
dnl This breaks badly for the early startup code we compile, since
2115
 
dnl the compiled code can refer to a magic machine-dependent location
2116
 
dnl for the canary value before we have sufficient setup for that to
2117
 
dnl work.  It's also questionable to build all of libc with this flag
2118
 
dnl even when you're doing that for most applications you build, since
2119
 
dnl libc's code is so heavily-used and performance-sensitive.  If we
2120
 
dnl ever really want to make that work, it should be enabled explicitly
2121
 
dnl in the libc build, not inherited from implicit compiler settings.
2122
 
AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2123
 
               libc_cv_predef_stack_protector, [
2124
 
AC_TRY_COMPILE([extern void foobar (char *);],
2125
 
               [char large_array[2048]; foobar (large_array);], [
2126
 
libc_undefs=`$NM -u conftest.o |
2127
 
  LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2128
 
    2>&AS_MESSAGE_LOG_FD` || {
2129
 
  AC_MSG_ERROR([confusing output from $NM -u])
2130
 
}
2131
 
echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2132
 
# On some architectures, there are architecture-specific undefined
2133
 
# symbols (resolved by the linker), so filter out unknown symbols.
2134
 
# This will fail to produce the correct result if the compiler
2135
 
# defaults to -fstack-protector but this produces an undefined symbol
2136
 
# other than __stack_chk_fail.  However, compilers like that have not
2137
 
# been encountered in practice.
2138
 
libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2139
 
case "$libc_undefs" in
2140
 
foobar) libc_cv_predef_stack_protector=no ;;
2141
 
'__stack_chk_fail
2142
 
foobar') libc_cv_predef_stack_protector=yes ;;
2143
 
*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2144
 
esac],
2145
 
               [AC_MSG_ERROR([test compilation failed])])
2146
 
])
2147
 
libc_extra_cflags=
2148
 
if test $libc_cv_predef_stack_protector = yes; then
2149
 
  libc_extra_cflags=-fno-stack-protector
2150
 
fi
2151
 
AC_SUBST(libc_extra_cflags)
2152
 
 
2153
 
### End of automated tests.
2154
 
### Now run sysdeps configure fragments.
2155
 
 
2156
 
# They also can set these variables.
2157
 
use_ldconfig=no
2158
 
ldd_rewrite_script=no
2159
 
libc_cv_sysconfdir=$sysconfdir
2160
 
libc_cv_localstatedir=$localstatedir
2161
 
libc_cv_gcc_unwind_find_fde=no
2162
 
libc_cv_idn=no
2163
 
 
2164
 
# Iterate over all the sysdep directories we will use, running their
2165
 
# configure fragments.
2166
 
for dir in $sysnames; do
2167
 
  case $dir in
2168
 
    /*) dest=$dir ;;
2169
 
    *)  dest=$srcdir/$dir ;;
2170
 
  esac
2171
 
  if test -r $dest/configure; then
2172
 
    AC_MSG_RESULT(running configure fragment for $dir)
2173
 
    . $dest/configure
2174
 
  fi
2175
 
done
2176
 
 
2177
 
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2178
 
  AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2179
 
fi
2180
 
AC_SUBST(libc_cv_gcc_unwind_find_fde)
2181
 
 
2182
 
# Test for old glibc 2.0.x headers so that they can be removed properly
2183
 
# Search only in includedir.
2184
 
AC_MSG_CHECKING(for old glibc 2.0.x headers)
2185
 
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2186
 
then
2187
 
  old_glibc_headers=yes
2188
 
else
2189
 
  old_glibc_headers=no
2190
 
fi
2191
 
AC_MSG_RESULT($old_glibc_headers)
2192
 
if test ${old_glibc_headers} = yes; then
2193
 
  AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2194
 
  AC_MSG_WARN(*** be removed.)
2195
 
fi
2196
 
AC_SUBST(old_glibc_headers)
2197
 
 
2198
 
AC_SUBST(libc_cv_slibdir)
2199
 
AC_SUBST(libc_cv_localedir)
2200
 
AC_SUBST(libc_cv_sysconfdir)
2201
 
AC_SUBST(libc_cv_localstatedir)
2202
 
AC_SUBST(libc_cv_rootsbindir)
2203
 
AC_SUBST(libc_cv_forced_unwind)
2204
 
 
2205
 
dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2206
 
AC_SUBST(libc_cv_cpp_asm_debuginfo)
2207
 
AC_SUBST(libc_cv_cc_sse4)
2208
 
AC_SUBST(libc_cv_cc_avx)
2209
 
AC_SUBST(libc_cv_cc_sse2avx)
2210
 
AC_SUBST(libc_cv_cc_novzeroupper)
2211
 
AC_SUBST(libc_cv_cc_fma4)
2212
 
AC_SUBST(libc_cv_cc_nofma)
2213
 
AC_SUBST(libc_cv_as_i686)
2214
 
AC_SUBST(libc_cv_sparc_as_vis3)
2215
 
 
2216
 
AC_SUBST(use_ldconfig)
2217
 
AC_SUBST(ldd_rewrite_script)
2218
 
 
2219
 
AC_SUBST(static)
2220
 
AC_SUBST(shared)
2221
 
 
2222
 
AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2223
 
[libc_cv_pic_default=yes
2224
 
cat > conftest.c <<EOF
2225
 
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2226
 
# error PIC is default.
2227
 
#endif
2228
 
EOF
2229
 
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2230
 
  libc_cv_pic_default=no
2231
 
fi
2232
 
rm -f conftest.*])
2233
 
AC_SUBST(libc_cv_pic_default)
2234
 
 
2235
 
AC_SUBST(profile)
2236
 
AC_SUBST(static_nss)
2237
 
 
2238
 
AC_SUBST(DEFINES)
2239
 
 
2240
 
dnl See sysdeps/mach/configure.in for this variable.
2241
 
AC_SUBST(mach_interface_list)
2242
 
 
2243
 
if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2244
 
  config_makefile=
2245
 
else
2246
 
  config_makefile=Makefile
2247
 
fi
2248
 
 
2249
 
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2250
 
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2251
 
AC_SUBST(VERSION)
2252
 
AC_SUBST(RELEASE)
2253
 
 
2254
 
AC_CONFIG_FILES([config.make ${config_makefile}])
2255
 
AC_CONFIG_COMMANDS([default],[[
2256
 
case $CONFIG_FILES in *config.make*)
2257
 
echo "$config_vars" >> config.make;;
2258
 
esac
2259
 
test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2260
 
AC_OUTPUT