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

« back to all changes in this revision

Viewing changes to .pc/any/cvs-cxxheaders-detection1.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
 
    for d in include "$cxxmachine/include"; do
1039
 
      i=../../../../$d/c++/$cxxversion
1040
 
      cxxheaders=`$CXX -print-file-name="$i"` &&
1041
 
      test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
1042
 
      CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
1043
 
-isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1044
 
    done
1045
 
  fi
1046
 
fi
1047
 
AC_SUBST(SYSINCLUDES)
1048
 
AC_SUBST(CXX_SYSINCLUDES)
1049
 
 
1050
 
# Test if LD_LIBRARY_PATH contains the notation for the current directory
1051
 
# since this would lead to problems installing/building glibc.
1052
 
# LD_LIBRARY_PATH contains the current directory if one of the following
1053
 
# is true:
1054
 
# - one of the terminals (":" and ";") is the first or last sign
1055
 
# - two terminals occur directly after each other
1056
 
# - the path contains an element with a dot in it
1057
 
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1058
 
changequote(,)dnl
1059
 
case ${LD_LIBRARY_PATH} in
1060
 
  [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1061
 
    ld_library_path_setting="contains current directory"
1062
 
    ;;
1063
 
  *)
1064
 
    ld_library_path_setting="ok"
1065
 
    ;;
1066
 
esac
1067
 
changequote([,])dnl
1068
 
AC_MSG_RESULT($ld_library_path_setting)
1069
 
if test "$ld_library_path_setting" != "ok"; then
1070
 
AC_MSG_ERROR([
1071
 
*** LD_LIBRARY_PATH shouldn't contain the current directory when
1072
 
*** building glibc. Please change the environment variable
1073
 
*** and run configure again.])
1074
 
fi
1075
 
 
1076
 
AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1077
 
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1078
 
  libc_cv_gcc_static_libgcc=
1079
 
else
1080
 
  libc_cv_gcc_static_libgcc=-static-libgcc
1081
 
fi])
1082
 
AC_SUBST(libc_cv_gcc_static_libgcc)
1083
 
 
1084
 
AC_PATH_PROG(BASH_SHELL, bash, no)
1085
 
if test "$BASH_SHELL" != no &&
1086
 
   $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1087
 
             && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1088
 
  libc_cv_have_bash2=yes
1089
 
else
1090
 
  libc_cv_have_bash2=no
1091
 
fi
1092
 
AC_SUBST(libc_cv_have_bash2)
1093
 
 
1094
 
dnl We need a ksh compatible shell for tzselect.
1095
 
if test "$BASH_SHELL" = no; then
1096
 
  AC_PATH_PROG(KSH, ksh, no)
1097
 
  if test "$KSH" = no; then
1098
 
    libc_cv_have_ksh=no
1099
 
  else
1100
 
    libc_cv_have_ksh=yes
1101
 
  fi
1102
 
else
1103
 
  KSH="$BASH_SHELL"
1104
 
  AC_SUBST(KSH)
1105
 
  libc_cv_have_ksh=yes
1106
 
fi
1107
 
AC_SUBST(libc_cv_have_ksh)
1108
 
 
1109
 
AC_PROG_AWK
1110
 
dnl We need gawk for at least gen-sorted.awk and option-groups.awk.
1111
 
if test "x$AWK" != "xgawk"; then
1112
 
  AC_MSG_ERROR([GLIBC requires GNU awk.])
1113
 
fi
1114
 
 
1115
 
AC_PATH_PROG(PERL, perl, no)
1116
 
if test "$PERL" != no &&
1117
 
   (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1118
 
  PERL=no
1119
 
fi
1120
 
AC_PATH_PROG(INSTALL_INFO, install-info, no,
1121
 
             $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1122
 
AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1123
 
 
1124
 
AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1125
 
AC_TRY_COMPILE(dnl
1126
 
[#define __need_size_t
1127
 
#define __need_wchar_t
1128
 
#include <stddef.h>
1129
 
#define __need_NULL
1130
 
#include <stddef.h>], [size_t size; wchar_t wchar;
1131
 
#ifdef offsetof
1132
 
#error stddef.h ignored __need_*
1133
 
#endif
1134
 
if (&size == NULL || &wchar == NULL) abort ();],
1135
 
               libc_cv_friendly_stddef=yes,
1136
 
               libc_cv_friendly_stddef=no)])
1137
 
if test $libc_cv_friendly_stddef = yes; then
1138
 
  config_vars="$config_vars
1139
 
override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1140
 
fi
1141
 
 
1142
 
AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1143
 
               libc_cv_need_minus_P, [dnl
1144
 
cat > conftest.S <<EOF
1145
 
#include "confdefs.h"
1146
 
/* Nothing whatsoever.  */
1147
 
EOF
1148
 
if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1149
 
  libc_cv_need_minus_P=no
1150
 
else
1151
 
  libc_cv_need_minus_P=yes
1152
 
fi
1153
 
rm -f conftest*])
1154
 
if test $libc_cv_need_minus_P = yes; then
1155
 
  config_vars="$config_vars
1156
 
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1157
 
fi
1158
 
 
1159
 
AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1160
 
cat > conftest.s <<EOF
1161
 
${libc_cv_dot_text}
1162
 
foo:
1163
 
.set glibc_conftest_frobozz,foo
1164
 
$libc_cv_asm_global_directive glibc_conftest_frobozz
1165
 
EOF
1166
 
# The alpha-dec-osf1 assembler gives only a warning for `.set'
1167
 
# (but it doesn't work), so we must do a linking check to be sure.
1168
 
cat > conftest1.c <<\EOF
1169
 
extern int glibc_conftest_frobozz;
1170
 
void _start() { glibc_conftest_frobozz = 1; }
1171
 
EOF
1172
 
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1173
 
            -nostartfiles -nostdlib \
1174
 
            -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1175
 
  libc_cv_asm_set_directive=yes
1176
 
else
1177
 
  libc_cv_asm_set_directive=no
1178
 
fi
1179
 
rm -f conftest*])
1180
 
if test $libc_cv_asm_set_directive = yes; then
1181
 
  AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1182
 
fi
1183
 
 
1184
 
AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1185
 
               libc_cv_asm_unique_object, [dnl
1186
 
cat > conftest.s <<EOF
1187
 
${libc_cv_dot_text}
1188
 
_sym:
1189
 
.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1190
 
EOF
1191
 
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1192
 
  libc_cv_asm_unique_object=yes
1193
 
else
1194
 
  libc_cv_asm_unique_object=no
1195
 
fi
1196
 
rm -f conftest*])
1197
 
if test $libc_cv_asm_unique_object = yes; then
1198
 
  AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1199
 
fi
1200
 
 
1201
 
AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1202
 
[cat > conftest.s <<EOF
1203
 
${libc_cv_dot_text}
1204
 
_sym:
1205
 
.symver _sym,sym@VERS
1206
 
EOF
1207
 
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1208
 
  libc_cv_asm_symver_directive=yes
1209
 
else
1210
 
  libc_cv_asm_symver_directive=no
1211
 
fi
1212
 
rm -f conftest*])
1213
 
AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1214
 
if test $libc_cv_asm_symver_directive = yes; then
1215
 
  cat > conftest.s <<EOF
1216
 
${libc_cv_dot_text}
1217
 
_sym:
1218
 
.symver _sym,sym@VERS
1219
 
EOF
1220
 
  cat > conftest.map <<EOF
1221
 
VERS_1 {
1222
 
        global: sym;
1223
 
};
1224
 
 
1225
 
VERS_2 {
1226
 
        global: sym;
1227
 
} VERS_1;
1228
 
EOF
1229
 
  if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1230
 
    if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1231
 
                                -o conftest.so conftest.o
1232
 
                                -nostartfiles -nostdlib
1233
 
                                -Wl,--version-script,conftest.map
1234
 
                       1>&AS_MESSAGE_LOG_FD]);
1235
 
    then
1236
 
      libc_cv_ld_version_script_option=yes
1237
 
    else
1238
 
      libc_cv_ld_version_script_option=no
1239
 
    fi
1240
 
  else
1241
 
    libc_cv_ld_version_script_option=no
1242
 
  fi
1243
 
else
1244
 
  libc_cv_ld_version_script_option=no
1245
 
fi
1246
 
rm -f conftest*])
1247
 
if test $shared != no &&
1248
 
   test $libc_cv_asm_symver_directive = yes &&
1249
 
   test $libc_cv_ld_version_script_option = yes &&
1250
 
   test $enable_versioning = yes; then
1251
 
  VERSIONING=yes
1252
 
  AC_DEFINE(DO_VERSIONING)
1253
 
else
1254
 
  VERSIONING=no
1255
 
fi
1256
 
AC_SUBST(VERSIONING)
1257
 
 
1258
 
if test $shared != no && test $VERSIONING = no; then
1259
 
  echo "\
1260
 
*** WARNING: You should not compile GNU libc without versioning. Not using
1261
 
*** versioning will introduce incompatibilities so that old binaries
1262
 
*** will not run anymore.
1263
 
*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1264
 
fi
1265
 
AC_CACHE_CHECK(for .previous assembler directive,
1266
 
               libc_cv_asm_previous_directive, [dnl
1267
 
cat > conftest.s <<EOF
1268
 
.section foo_section
1269
 
.previous
1270
 
EOF
1271
 
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1272
 
  libc_cv_asm_previous_directive=yes
1273
 
else
1274
 
  libc_cv_asm_previous_directive=no
1275
 
fi
1276
 
rm -f conftest*])
1277
 
if test $libc_cv_asm_previous_directive = yes; then
1278
 
  AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1279
 
else
1280
 
  AC_CACHE_CHECK(for .popsection assembler directive,
1281
 
                 libc_cv_asm_popsection_directive, [dnl
1282
 
  cat > conftest.s <<EOF
1283
 
.pushsection foo_section
1284
 
.popsection
1285
 
EOF
1286
 
  if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1287
 
    libc_cv_asm_popsection_directive=yes
1288
 
  else
1289
 
    libc_cv_asm_popsection_directive=no
1290
 
  fi
1291
 
  rm -f conftest*])
1292
 
  if test $libc_cv_asm_popsection_directive = yes; then
1293
 
    AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1294
 
  fi
1295
 
fi
1296
 
AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1297
 
               libc_cv_asm_protected_directive, [dnl
1298
 
cat > conftest.s <<EOF
1299
 
.protected foo
1300
 
foo:
1301
 
.hidden bar
1302
 
bar:
1303
 
EOF
1304
 
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1305
 
  libc_cv_asm_protected_directive=yes
1306
 
else
1307
 
  AC_MSG_ERROR(assembler support for symbol visibility is required)
1308
 
fi
1309
 
rm -f conftest*])
1310
 
 
1311
 
if test $libc_cv_asm_protected_directive = yes; then
1312
 
  AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1313
 
                 libc_cv_visibility_attribute,
1314
 
                 [cat > conftest.c <<EOF
1315
 
                  int foo __attribute__ ((visibility ("hidden"))) = 1;
1316
 
                  int bar __attribute__ ((visibility ("protected"))) = 1;
1317
 
EOF
1318
 
                  libc_cv_visibility_attribute=no
1319
 
                  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1320
 
                    if grep '\.hidden.*foo' conftest.s >/dev/null; then
1321
 
                      if grep '\.protected.*bar' conftest.s >/dev/null; then
1322
 
                        libc_cv_visibility_attribute=yes
1323
 
                      fi
1324
 
                    fi
1325
 
                  fi
1326
 
                  rm -f conftest.{c,s}
1327
 
                 ])
1328
 
  if test $libc_cv_visibility_attribute != yes; then
1329
 
    AC_MSG_ERROR(compiler support for visibility attribute is required)
1330
 
  fi
1331
 
fi
1332
 
 
1333
 
if test $libc_cv_visibility_attribute = yes; then
1334
 
  AC_CACHE_CHECK(for broken __attribute__((visibility())),
1335
 
                 libc_cv_broken_visibility_attribute,
1336
 
                 [cat > conftest.c <<EOF
1337
 
                  int foo (int x);
1338
 
                  int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1339
 
                  int bar (int x) { return x; }
1340
 
EOF
1341
 
                  libc_cv_broken_visibility_attribute=yes
1342
 
                  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1343
 
changequote(,)dnl
1344
 
                    if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1345
 
changequote([,])dnl
1346
 
                      libc_cv_broken_visibility_attribute=no
1347
 
                    fi
1348
 
                  fi
1349
 
                  rm -f conftest.c conftest.s
1350
 
                 ])
1351
 
  if test $libc_cv_broken_visibility_attribute = yes; then
1352
 
    AC_MSG_ERROR(working compiler support for visibility attribute is required)
1353
 
  fi
1354
 
fi
1355
 
 
1356
 
AC_CACHE_CHECK(for broken __attribute__((alias())),
1357
 
               libc_cv_broken_alias_attribute,
1358
 
               [cat > conftest.c <<EOF
1359
 
               extern int foo (int x) __asm ("xyzzy");
1360
 
               int bar (int x) { return x; }
1361
 
               extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1362
 
               extern int dfoo;
1363
 
               extern __typeof (dfoo) dfoo __asm ("abccb");
1364
 
               int dfoo = 1;
1365
 
EOF
1366
 
               libc_cv_broken_alias_attribute=yes
1367
 
               if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1368
 
                 if grep 'xyzzy' conftest.s >/dev/null &&
1369
 
                    grep 'abccb' conftest.s >/dev/null; then
1370
 
                   libc_cv_broken_alias_attribute=no
1371
 
                 fi
1372
 
               fi
1373
 
               rm -f conftest.c conftest.s
1374
 
               ])
1375
 
if test $libc_cv_broken_alias_attribute = yes; then
1376
 
  AC_MSG_ERROR(working alias attribute support required)
1377
 
fi
1378
 
 
1379
 
if test $libc_cv_visibility_attribute = yes; then
1380
 
  AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1381
 
                 libc_cv_have_sdata_section,
1382
 
                 [echo "int i;" > conftest.c
1383
 
                  libc_cv_have_sdata_section=no
1384
 
                  if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1385
 
                     | grep '\.sdata' >/dev/null; then
1386
 
                    libc_cv_have_sdata_section=yes
1387
 
                  fi
1388
 
                  rm -f conftest.c conftest.so
1389
 
                 ])
1390
 
  if test $libc_cv_have_sdata_section = yes; then
1391
 
    AC_DEFINE(HAVE_SDATA_SECTION)
1392
 
  fi
1393
 
fi
1394
 
 
1395
 
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1396
 
               libc_cv_initfini_array, [dnl
1397
 
LIBC_TRY_LINK_STATIC([
1398
 
int foo (void) { return 1; }
1399
 
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1400
 
],
1401
 
  [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1402
 
    libc_cv_initfini_array=yes
1403
 
  else
1404
 
    libc_cv_initfini_array=no
1405
 
  fi],
1406
 
  [libc_cv_initfini_array=no])
1407
 
])
1408
 
if test $libc_cv_initfini_array != yes; then
1409
 
  AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1410
 
fi
1411
 
 
1412
 
AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1413
 
               libc_cv_ctors_header, [dnl
1414
 
  libc_cv_ctors_header=yes
1415
 
  LIBC_TRY_LINK_STATIC([
1416
 
__attribute__ ((constructor)) void ctor (void) { asm (""); }
1417
 
__attribute__ ((destructor))  void dtor (void) { asm (""); }
1418
 
],
1419
 
              [dnl
1420
 
      AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1421
 
        { gsub(/\@<:@ */, "@<:@") }
1422
 
        $2 == ".ctors" || $2 == ".dtors" {
1423
 
          size = strtonum("0x" $6)
1424
 
          align = strtonum("0x" $NF)
1425
 
          seen@<:@$2@:>@ = 1
1426
 
          stub@<:@$2@:>@ = size == align * 2
1427
 
        }
1428
 
        END {
1429
 
          ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1430
 
          dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1431
 
          exit ((ctors_ok && dtors_ok) ? 0 : 1)
1432
 
        }
1433
 
      '], [libc_cv_ctors_header=no])
1434
 
    ], [dnl
1435
 
      AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1436
 
    ])
1437
 
])
1438
 
if test $libc_cv_ctors_header = no; then
1439
 
  AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1440
 
fi
1441
 
 
1442
 
AC_CACHE_CHECK(for libunwind-support in compiler,
1443
 
               libc_cv_cc_with_libunwind, [
1444
 
  cat > conftest.c <<EOF
1445
 
int main (void) { return 0; }
1446
 
EOF
1447
 
  if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1448
 
     conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1449
 
    libc_cv_cc_with_libunwind=yes
1450
 
  else
1451
 
    libc_cv_cc_with_libunwind=no
1452
 
  fi
1453
 
  rm -f conftest*])
1454
 
AC_SUBST(libc_cv_cc_with_libunwind)
1455
 
if test $libc_cv_cc_with_libunwind = yes; then
1456
 
  AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1457
 
fi
1458
 
 
1459
 
AC_CACHE_CHECK(for -z nodelete option,
1460
 
               libc_cv_z_nodelete, [dnl
1461
 
cat > conftest.c <<EOF
1462
 
int _start (void) { return 42; }
1463
 
EOF
1464
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1465
 
                   -fPIC -shared -o conftest.so conftest.c
1466
 
                   -nostartfiles -nostdlib
1467
 
                   -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1468
 
then
1469
 
  libc_cv_z_nodelete=yes
1470
 
else
1471
 
  AC_MSG_ERROR(linker with -z nodelete support required)
1472
 
fi
1473
 
rm -f conftest*])
1474
 
 
1475
 
AC_CACHE_CHECK(for -z nodlopen option,
1476
 
               libc_cv_z_nodlopen, [dnl
1477
 
cat > conftest.c <<EOF
1478
 
int _start (void) { return 42; }
1479
 
EOF
1480
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1481
 
                        -fPIC -shared -o conftest.so conftest.c
1482
 
                        -nostartfiles -nostdlib
1483
 
                        -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1484
 
then
1485
 
  libc_cv_z_nodlopen=yes
1486
 
else
1487
 
  AC_MSG_ERROR(linker with -z nodlopen support required)
1488
 
fi
1489
 
rm -f conftest*])
1490
 
 
1491
 
AC_CACHE_CHECK(for -z initfirst option,
1492
 
               libc_cv_z_initfirst, [dnl
1493
 
cat > conftest.c <<EOF
1494
 
int _start (void) { return 42; }
1495
 
EOF
1496
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1497
 
                        -fPIC -shared -o conftest.so conftest.c
1498
 
                        -nostartfiles -nostdlib
1499
 
                        -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1500
 
then
1501
 
  libc_cv_z_initfirst=yes
1502
 
else
1503
 
  AC_MSG_ERROR(linker with -z initfirst support required)
1504
 
fi
1505
 
rm -f conftest*])
1506
 
 
1507
 
# Add-on fragments can set these for other machines.
1508
 
libc_commonpagesize=${libc_commonpagesize:-no}
1509
 
libc_relro_required=${libc_relro_required:-no}
1510
 
case "$base_machine" in
1511
 
  i[[34567]]86 | x86_64 | powerpc* | s390*)
1512
 
    libc_commonpagesize=0x1000
1513
 
    libc_relro_required=yes
1514
 
    ;;
1515
 
  sparc*)
1516
 
    libc_commonpagesize=0x2000
1517
 
    libc_relro_required=yes
1518
 
    ;;
1519
 
esac
1520
 
 
1521
 
if test $libc_commonpagesize != no; then
1522
 
  AC_CACHE_CHECK(for -z relro option,
1523
 
                 libc_cv_z_relro, [dnl
1524
 
  libc_cv_z_relro=no
1525
 
  AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1526
 
int _start (void) { return 42; }
1527
 
extern void _exit (int);
1528
 
/* Since these pointers are const, they should go in rodata.
1529
 
   Since they refer to functions that have to be resolved by
1530
 
   dynamic linking, they should instead go in RELRO data.  */
1531
 
const void *const relro[] = { &_start, &_exit, 0 };
1532
 
/* GNU ld fails to produce RELRO data when it's very small and there is no
1533
 
   normal writable data following it, or if only uninitialized (.bss) data
1534
 
   follows it, or only very small writable data.  */
1535
 
int data[0x10000] = { 1, };
1536
 
]])])
1537
 
  cat > conftest.awk <<\EOF
1538
 
BEGIN {
1539
 
  result = "no"
1540
 
  commonpagesize = strtonum(commonpagesize)
1541
 
}
1542
 
{ print "LINE:", $0 > "/dev/stderr" }
1543
 
$1 == "GNU_RELRO" {
1544
 
  vaddr = strtonum($3)
1545
 
  memsz = strtonum($6)
1546
 
  end = vaddr + memsz
1547
 
  printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1548
 
    vaddr, memsz, end, commonpagesize > "/dev/stderr"
1549
 
  result = (end % commonpagesize == 0) ? "yes" : "broken"
1550
 
}
1551
 
END { print result }
1552
 
EOF
1553
 
  AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1554
 
                    -fPIC -shared -o conftest.so conftest.c
1555
 
                    -nostartfiles -nostdlib
1556
 
                    -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1557
 
  AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1558
 
  AC_TRY_COMMAND([
1559
 
      $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1560
 
           conftest.ph > conftest.cps
1561
 
    ]) &&
1562
 
  libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1563
 
  rm -f conftest*])
1564
 
  if { test "x$libc_relro_required" = xyes &&
1565
 
       test "x$libc_cv_z_relro" != xyes
1566
 
     }
1567
 
  then
1568
 
    AC_MSG_ERROR(linker with -z relro support required)
1569
 
  fi
1570
 
else
1571
 
  AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1572
 
fi
1573
 
 
1574
 
AC_CACHE_CHECK(for -Bgroup option,
1575
 
               libc_cv_Bgroup, [dnl
1576
 
cat > conftest.c <<EOF
1577
 
int _start (void) { return 42; }
1578
 
EOF
1579
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1580
 
                            -fPIC -shared -o conftest.so conftest.c
1581
 
                            -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1582
 
then
1583
 
  libc_cv_Bgroup=yes
1584
 
else
1585
 
  libc_cv_Bgroup=no
1586
 
fi
1587
 
rm -f conftest*])
1588
 
AC_SUBST(libc_cv_Bgroup)
1589
 
 
1590
 
ASFLAGS_config=
1591
 
AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1592
 
               libc_cv_as_noexecstack, [dnl
1593
 
cat > conftest.c <<EOF
1594
 
void foo (void) { }
1595
 
EOF
1596
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1597
 
                   -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1598
 
   && grep -q .note.GNU-stack conftest.s \
1599
 
   && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1600
 
                      -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1601
 
then
1602
 
  libc_cv_as_noexecstack=yes
1603
 
else
1604
 
  libc_cv_as_noexecstack=no
1605
 
fi
1606
 
rm -f conftest*])
1607
 
if test $libc_cv_as_noexecstack = yes; then
1608
 
  ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1609
 
fi
1610
 
AC_SUBST(ASFLAGS_config)
1611
 
 
1612
 
AC_CACHE_CHECK(for -z combreloc,
1613
 
               libc_cv_z_combreloc, [dnl
1614
 
cat > conftest.c <<EOF
1615
 
extern int bar (int);
1616
 
extern int mumble;
1617
 
int foo (void) { return bar (mumble); }
1618
 
EOF
1619
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1620
 
                        -fPIC -shared -o conftest.so conftest.c
1621
 
                        -nostdlib -nostartfiles
1622
 
                        -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1623
 
then
1624
 
dnl The following test is a bit weak.  We must use a tool which can test
1625
 
dnl cross-platform since the gcc used can be a cross compiler.  Without
1626
 
dnl introducing new options this is not easily doable.  Instead use a tool
1627
 
dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1628
 
dnl look for a section named .rel.dyn.
1629
 
  if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1630
 
    libc_cv_z_combreloc=yes
1631
 
  else
1632
 
    libc_cv_z_combreloc=no
1633
 
  fi
1634
 
else
1635
 
  libc_cv_z_combreloc=no
1636
 
fi
1637
 
rm -f conftest*])
1638
 
if test "$libc_cv_z_combreloc" = yes; then
1639
 
  AC_DEFINE(HAVE_Z_COMBRELOC)
1640
 
fi
1641
 
AC_SUBST(libc_cv_z_combreloc)
1642
 
 
1643
 
AC_CACHE_CHECK(for -z execstack,
1644
 
               libc_cv_z_execstack, [dnl
1645
 
cat > conftest.c <<EOF
1646
 
int _start (void) { return 42; }
1647
 
EOF
1648
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1649
 
                            -fPIC -shared -o conftest.so conftest.c
1650
 
                            -Wl,-z,execstack -nostdlib
1651
 
                            1>&AS_MESSAGE_LOG_FD])
1652
 
then
1653
 
  libc_cv_z_execstack=yes
1654
 
else
1655
 
  libc_cv_z_execstack=no
1656
 
fi
1657
 
rm -f conftest*])
1658
 
AC_SUBST(libc_cv_z_execstack)
1659
 
 
1660
 
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1661
 
LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1662
 
])
1663
 
 
1664
 
AC_SUBST(libc_cv_fpie)
1665
 
 
1666
 
AC_CACHE_CHECK(for --hash-style option,
1667
 
               libc_cv_hashstyle, [dnl
1668
 
cat > conftest.c <<EOF
1669
 
int _start (void) { return 42; }
1670
 
EOF
1671
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1672
 
                            -fPIC -shared -o conftest.so conftest.c
1673
 
                            -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1674
 
then
1675
 
  libc_cv_hashstyle=yes
1676
 
else
1677
 
  libc_cv_hashstyle=no
1678
 
fi
1679
 
rm -f conftest*])
1680
 
AC_SUBST(libc_cv_hashstyle)
1681
 
 
1682
 
# The linker's default -shared behavior is good enough if it
1683
 
# does these things that our custom linker scripts ensure that
1684
 
# all allocated NOTE sections come first.
1685
 
if test "$use_default_link" = default; then
1686
 
  AC_CACHE_CHECK([for sufficient default -shared layout],
1687
 
                  libc_cv_use_default_link, [dnl
1688
 
  libc_cv_use_default_link=no
1689
 
  cat > conftest.s <<\EOF
1690
 
          .section .note.a,"a",%note
1691
 
          .balign 4
1692
 
          .long 4,4,9
1693
 
          .string "GNU"
1694
 
          .string "foo"
1695
 
          .section .note.b,"a",%note
1696
 
          .balign 4
1697
 
          .long 4,4,9
1698
 
          .string "GNU"
1699
 
          .string "bar"
1700
 
EOF
1701
 
  if AC_TRY_COMMAND([dnl
1702
 
  ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1703
 
       ac_try=`$READELF -S conftest.so | sed -n \
1704
 
         ['${x;p;}
1705
 
          s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1706
 
          t a
1707
 
          b
1708
 
          : a
1709
 
          H']`
1710
 
  then
1711
 
    libc_seen_a=no libc_seen_b=no
1712
 
    set -- $ac_try
1713
 
    while test $# -ge 2 -a "$1" = NOTE; do
1714
 
      case "$2" in
1715
 
      .note.a) libc_seen_a=yes ;;
1716
 
      .note.b) libc_seen_b=yes ;;
1717
 
      esac
1718
 
      shift 2
1719
 
    done
1720
 
    case "$libc_seen_a$libc_seen_b" in
1721
 
    yesyes)
1722
 
      libc_cv_use_default_link=yes
1723
 
      ;;
1724
 
    *)
1725
 
      echo >&AS_MESSAGE_LOG_FD "\
1726
 
$libc_seen_a$libc_seen_b from:
1727
 
$ac_try"
1728
 
      ;;
1729
 
    esac
1730
 
  fi
1731
 
  rm -f conftest*])
1732
 
  use_default_link=$libc_cv_use_default_link
1733
 
fi
1734
 
 
1735
 
AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1736
 
if libc_cv_output_format=`
1737
 
${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1738
 
then
1739
 
  :
1740
 
else
1741
 
  libc_cv_output_format=
1742
 
fi
1743
 
test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1744
 
AC_SUBST(libc_cv_output_format)
1745
 
 
1746
 
AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1747
 
cat > conftest.c <<EOF
1748
 
int foo;
1749
 
EOF
1750
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1751
 
                            conftest.c 1>&AS_MESSAGE_LOG_FD])
1752
 
then
1753
 
  libc_cv_fno_toplevel_reorder=yes
1754
 
else
1755
 
  libc_cv_fno_toplevel_reorder=no
1756
 
fi
1757
 
rm -f conftest*])
1758
 
if test $libc_cv_fno_toplevel_reorder = yes; then
1759
 
  fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1760
 
else
1761
 
  fno_unit_at_a_time=-fno-unit-at-a-time
1762
 
fi
1763
 
AC_SUBST(fno_unit_at_a_time)
1764
 
 
1765
 
AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1766
 
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1767
 
                   [libc_cv_ssp=yes],
1768
 
                   [libc_cv_ssp=no])
1769
 
])
1770
 
AC_SUBST(libc_cv_ssp)
1771
 
 
1772
 
AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1773
 
cat > conftest.c <<EOF
1774
 
int foo;
1775
 
#ifdef __GNUC_GNU_INLINE__
1776
 
main () { return 0;}
1777
 
#else
1778
 
#error
1779
 
#endif
1780
 
EOF
1781
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1782
 
                            -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1783
 
then
1784
 
  libc_cv_gnu89_inline=yes
1785
 
else
1786
 
  libc_cv_gnu89_inline=no
1787
 
fi
1788
 
rm -f conftest*])
1789
 
if test $libc_cv_gnu89_inline = yes; then
1790
 
  gnu89_inline=-fgnu89-inline
1791
 
else
1792
 
  gnu89_inline=
1793
 
fi
1794
 
AC_SUBST(gnu89_inline)
1795
 
 
1796
 
AC_CACHE_CHECK(whether cc puts quotes around section names,
1797
 
               libc_cv_have_section_quotes,
1798
 
               [cat > conftest.c <<EOF
1799
 
                static const int foo
1800
 
                __attribute__ ((section ("bar"))) = 1;
1801
 
EOF
1802
 
                if ${CC-cc} -S conftest.c -o conftest.s; then
1803
 
                  if grep '\.section.*"bar"' conftest.s >/dev/null; then
1804
 
                    libc_cv_have_section_quotes=yes
1805
 
                  else
1806
 
                    libc_cv_have_section_quotes=no
1807
 
                  fi
1808
 
                else
1809
 
                  libc_cv_have_section_quotes=unknown
1810
 
                fi
1811
 
                rm -f conftest.{c,s}
1812
 
                ])
1813
 
if test $libc_cv_have_section_quotes = yes; then
1814
 
  AC_DEFINE(HAVE_SECTION_QUOTES)
1815
 
fi
1816
 
 
1817
 
AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1818
 
               [dnl
1819
 
cat > conftest.s <<EOF
1820
 
${libc_cv_dot_text}
1821
 
${libc_cv_asm_global_directive} foo
1822
 
foo:
1823
 
.weak foo
1824
 
.weak bar; bar = foo
1825
 
EOF
1826
 
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1827
 
  libc_cv_asm_weak_directive=yes
1828
 
else
1829
 
  libc_cv_asm_weak_directive=no
1830
 
fi
1831
 
rm -f conftest*])
1832
 
 
1833
 
if test $libc_cv_asm_weak_directive = no; then
1834
 
  AC_CACHE_CHECK(for assembler .weakext directive,
1835
 
                 libc_cv_asm_weakext_directive,
1836
 
                 [dnl
1837
 
cat > conftest.s <<EOF
1838
 
${libc_cv_dot_text}
1839
 
${libc_cv_asm_global_directive} foo
1840
 
foo:
1841
 
.weakext bar foo
1842
 
.weakext baz
1843
 
${libc_cv_asm_global_directive} baz
1844
 
baz:
1845
 
EOF
1846
 
  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1847
 
    libc_cv_asm_weakext_directive=yes
1848
 
  else
1849
 
    libc_cv_asm_weakext_directive=no
1850
 
  fi
1851
 
  rm -f conftest*])
1852
 
 
1853
 
fi # no .weak
1854
 
 
1855
 
if test $libc_cv_asm_weak_directive = yes; then
1856
 
  AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1857
 
elif test $libc_cv_asm_weakext_directive = yes; then
1858
 
  AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1859
 
fi
1860
 
 
1861
 
AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1862
 
case $machine in
1863
 
  sparc/sparc64*) cfi_offset=2047;;
1864
 
  *) cfi_offset=0;;
1865
 
esac
1866
 
cat > conftest.s <<EOF
1867
 
        .text
1868
 
        .type   func,%function
1869
 
func:
1870
 
        .cfi_startproc
1871
 
        .cfi_remember_state
1872
 
        .cfi_rel_offset 1, $cfi_offset
1873
 
        .cfi_endproc
1874
 
EOF
1875
 
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1876
 
  libc_cv_asm_cfi_directives=yes
1877
 
else
1878
 
  libc_cv_asm_cfi_directives=no
1879
 
fi
1880
 
rm -f conftest*])
1881
 
if test $libc_cv_asm_cfi_directives = yes; then
1882
 
  AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1883
 
fi
1884
 
 
1885
 
AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1886
 
cat > conftest.c <<\EOF
1887
 
_start () {}
1888
 
int __eh_pc;
1889
 
__throw () {}
1890
 
EOF
1891
 
dnl No \ in command here because it ends up inside ''.
1892
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1893
 
                            -nostdlib -nostartfiles -Wl,--no-whole-archive
1894
 
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1895
 
  libc_cv_ld_no_whole_archive=yes
1896
 
else
1897
 
  libc_cv_ld_no_whole_archive=no
1898
 
fi
1899
 
rm -f conftest*])
1900
 
if test $libc_cv_ld_no_whole_archive = no; then
1901
 
  AC_MSG_ERROR([support for --no-whole-archive is needed])
1902
 
fi
1903
 
 
1904
 
AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1905
 
cat > conftest.c <<\EOF
1906
 
_start () {}
1907
 
int __eh_pc;
1908
 
__throw () {}
1909
 
EOF
1910
 
dnl No \ in command here because it ends up inside ''.
1911
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1912
 
                            -nostdlib -nostartfiles -fexceptions
1913
 
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1914
 
  libc_cv_gcc_exceptions=yes
1915
 
else
1916
 
  libc_cv_gcc_exceptions=no
1917
 
fi
1918
 
rm -f conftest*])
1919
 
if test $libc_cv_gcc_exceptions = yes; then
1920
 
  exceptions=-fexceptions
1921
 
fi
1922
 
AC_SUBST(exceptions)dnl
1923
 
 
1924
 
if test "$host_cpu" = powerpc ; then
1925
 
# Check for a bug present in at least versions 2.8.x of GCC
1926
 
# and versions 1.0.x of EGCS.
1927
 
AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1928
 
AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1929
 
               libc_cv_c_asmcr0_bug='no',
1930
 
               libc_cv_c_asmcr0_bug='yes')])
1931
 
if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1932
 
  AC_DEFINE(BROKEN_PPC_ASM_CR0)
1933
 
fi
1934
 
fi
1935
 
 
1936
 
AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1937
 
cat > conftest.c <<\EOF
1938
 
void zero (void *x)
1939
 
{
1940
 
  __builtin_memset (x, 0, 1000);
1941
 
}
1942
 
EOF
1943
 
dnl
1944
 
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1945
 
then
1946
 
  libc_cv_gcc_builtin_memset=no
1947
 
else
1948
 
  libc_cv_gcc_builtin_memset=yes
1949
 
fi
1950
 
rm -f conftest* ])
1951
 
if test "$libc_cv_gcc_builtin_memset" = yes ; then
1952
 
  AC_DEFINE(HAVE_BUILTIN_MEMSET)
1953
 
fi
1954
 
 
1955
 
AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1956
 
cat > conftest.c <<\EOF
1957
 
extern char *strstr (const char *, const char *) __asm ("my_strstr");
1958
 
char *foo (const char *a, const char *b)
1959
 
{
1960
 
  return __builtin_strstr (a, b);
1961
 
}
1962
 
EOF
1963
 
dnl
1964
 
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1965
 
then
1966
 
  libc_cv_gcc_builtin_redirection=yes
1967
 
else
1968
 
  libc_cv_gcc_builtin_redirection=no
1969
 
fi
1970
 
rm -f conftest* ])
1971
 
if test "$libc_cv_gcc_builtin_redirection" = no; then
1972
 
  AC_MSG_ERROR([support for the symbol redirection needed])
1973
 
fi
1974
 
 
1975
 
dnl Check whether the compiler supports the __thread keyword.
1976
 
AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1977
 
[cat > conftest.c <<\EOF
1978
 
__thread int a = 42;
1979
 
EOF
1980
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1981
 
  libc_cv_gcc___thread=yes
1982
 
else
1983
 
  libc_cv_gcc___thread=no
1984
 
fi
1985
 
rm -f conftest*])
1986
 
if test "$libc_cv_gcc___thread" = no; then
1987
 
  AC_MSG_ERROR([support for the __thread keyword is required])
1988
 
fi
1989
 
 
1990
 
dnl Check whether the compiler supports the tls_model attribute.
1991
 
AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1992
 
cat > conftest.c <<\EOF
1993
 
extern __thread int a __attribute__((tls_model ("initial-exec")));
1994
 
EOF
1995
 
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1996
 
  libc_cv_gcc_tls_model_attr=yes
1997
 
else
1998
 
  libc_cv_gcc_tls_model_attr=no
1999
 
fi
2000
 
rm -f conftest*])
2001
 
if test "$libc_cv_gcc_tls_model_attr" = no; then
2002
 
  AC_MSG_ERROR([support for the tls_model attribute is required])
2003
 
fi
2004
 
 
2005
 
dnl Determine how to disable generation of FMA instructions.
2006
 
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
2007
 
               libc_cv_cc_nofma, [dnl
2008
 
libc_cv_cc_nofma=
2009
 
for opt in -ffp-contract=off -mno-fused-madd; do
2010
 
  LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
2011
 
done])
2012
 
 
2013
 
if test -n "$submachine"; then
2014
 
  AC_CACHE_CHECK([for compiler option for CPU variant],
2015
 
                 libc_cv_cc_submachine, [dnl
2016
 
  libc_cv_cc_submachine=no
2017
 
  for opt in "-march=$submachine" "-mcpu=$submachine"; do
2018
 
    LIBC_TRY_CC_OPTION([$opt], [
2019
 
      libc_cv_cc_submachine="$opt"
2020
 
      break], [])
2021
 
  done])
2022
 
  if test "x$libc_cv_cc_submachine" = xno; then
2023
 
    AC_MSG_ERROR([${CC-cc} does not support $submachine])
2024
 
  fi
2025
 
fi
2026
 
AC_SUBST(libc_cv_cc_submachine)
2027
 
 
2028
 
dnl Check whether we have the gd library available.
2029
 
AC_MSG_CHECKING(for libgd)
2030
 
if test "$with_gd" != "no"; then
2031
 
  old_CFLAGS="$CFLAGS"
2032
 
  CFLAGS="$CFLAGS $libgd_include"
2033
 
  old_LDFLAGS="$LDFLAGS"
2034
 
  LDFLAGS="$LDFLAGS $libgd_ldflags"
2035
 
  old_LIBS="$LIBS"
2036
 
  LIBS="$LIBS -lgd -lpng -lz -lm"
2037
 
  AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2038
 
  CFLAGS="$old_CFLAGS"
2039
 
  LDFLAGS="$old_LDFLAGS"
2040
 
  LIBS="$old_LIBS"
2041
 
else
2042
 
  LIBGD=no
2043
 
fi
2044
 
AC_MSG_RESULT($LIBGD)
2045
 
AC_SUBST(LIBGD)
2046
 
 
2047
 
# SELinux detection
2048
 
if test x$with_selinux = xno ; then
2049
 
  have_selinux=no;
2050
 
else
2051
 
  # See if we have the SELinux library
2052
 
  AC_CHECK_LIB(selinux, is_selinux_enabled,
2053
 
               have_selinux=yes, have_selinux=no)
2054
 
  # See if we have the SELinux header with the NSCD permissions in it.
2055
 
  if test x$have_selinux = xyes ; then
2056
 
    AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2057
 
    AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2058
 
                    [#ifdef NSCD__SHMEMHOST
2059
 
                     return 0;
2060
 
                     #else
2061
 
                     #error NSCD__SHMEMHOST not defined
2062
 
                     #endif],
2063
 
                    have_selinux=yes, have_selinux=no)
2064
 
    AC_MSG_RESULT($have_selinux)
2065
 
  fi
2066
 
 
2067
 
  if test x$with_selinux = xyes ; then
2068
 
    if test x$have_selinux = xno ; then
2069
 
      AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2070
 
    fi
2071
 
  fi
2072
 
fi
2073
 
# Check if we're building with SELinux support.
2074
 
if test "x$have_selinux" = xyes; then
2075
 
  AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2076
 
 
2077
 
  # See if we have the libaudit library
2078
 
  AC_CHECK_LIB(audit, audit_log_user_avc_message,
2079
 
               have_libaudit=yes, have_libaudit=no)
2080
 
  if test "x$have_libaudit" = xyes; then
2081
 
    AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2082
 
  fi
2083
 
  AC_SUBST(have_libaudit)
2084
 
 
2085
 
  # See if we have the libcap library
2086
 
  AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2087
 
  if test "x$have_libcap" = xyes; then
2088
 
    AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2089
 
  fi
2090
 
  AC_SUBST(have_libcap)
2091
 
fi
2092
 
AC_SUBST(have_selinux)
2093
 
 
2094
 
dnl check for the size of 'long double'.
2095
 
AC_CHECK_SIZEOF(long double, 0)
2096
 
sizeof_long_double=$ac_cv_sizeof_long_double
2097
 
AC_SUBST(sizeof_long_double)
2098
 
 
2099
 
CPPUNDEFS=
2100
 
dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2101
 
dnl Since we are building the implementations of the fortified functions here,
2102
 
dnl having the macro defined interacts very badly.
2103
 
AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2104
 
[AC_TRY_COMPILE([], [
2105
 
#ifdef _FORTIFY_SOURCE
2106
 
# error bogon
2107
 
#endif],
2108
 
                [libc_cv_predef_fortify_source=no],
2109
 
                [libc_cv_predef_fortify_source=yes])])
2110
 
if test $libc_cv_predef_fortify_source = yes; then
2111
 
  CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2112
 
fi
2113
 
AC_SUBST(CPPUNDEFS)
2114
 
 
2115
 
dnl Check for silly hacked compilers inserting -fstack-protector.
2116
 
dnl This breaks badly for the early startup code we compile, since
2117
 
dnl the compiled code can refer to a magic machine-dependent location
2118
 
dnl for the canary value before we have sufficient setup for that to
2119
 
dnl work.  It's also questionable to build all of libc with this flag
2120
 
dnl even when you're doing that for most applications you build, since
2121
 
dnl libc's code is so heavily-used and performance-sensitive.  If we
2122
 
dnl ever really want to make that work, it should be enabled explicitly
2123
 
dnl in the libc build, not inherited from implicit compiler settings.
2124
 
AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2125
 
               libc_cv_predef_stack_protector, [
2126
 
AC_TRY_COMPILE([extern void foobar (char *);],
2127
 
               [char large_array[2048]; foobar (large_array);], [
2128
 
libc_undefs=`$NM -u conftest.o |
2129
 
  LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2130
 
    2>&AS_MESSAGE_LOG_FD` || {
2131
 
  AC_MSG_ERROR([confusing output from $NM -u])
2132
 
}
2133
 
echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2134
 
# On some architectures, there are architecture-specific undefined
2135
 
# symbols (resolved by the linker), so filter out unknown symbols.
2136
 
# This will fail to produce the correct result if the compiler
2137
 
# defaults to -fstack-protector but this produces an undefined symbol
2138
 
# other than __stack_chk_fail.  However, compilers like that have not
2139
 
# been encountered in practice.
2140
 
libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2141
 
case "$libc_undefs" in
2142
 
foobar) libc_cv_predef_stack_protector=no ;;
2143
 
'__stack_chk_fail
2144
 
foobar') libc_cv_predef_stack_protector=yes ;;
2145
 
*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2146
 
esac],
2147
 
               [AC_MSG_ERROR([test compilation failed])])
2148
 
])
2149
 
libc_extra_cflags=
2150
 
if test $libc_cv_predef_stack_protector = yes; then
2151
 
  libc_extra_cflags=-fno-stack-protector
2152
 
fi
2153
 
AC_SUBST(libc_extra_cflags)
2154
 
 
2155
 
### End of automated tests.
2156
 
### Now run sysdeps configure fragments.
2157
 
 
2158
 
# They also can set these variables.
2159
 
use_ldconfig=no
2160
 
ldd_rewrite_script=no
2161
 
libc_cv_sysconfdir=$sysconfdir
2162
 
libc_cv_localstatedir=$localstatedir
2163
 
libc_cv_gcc_unwind_find_fde=no
2164
 
libc_cv_idn=no
2165
 
 
2166
 
# Iterate over all the sysdep directories we will use, running their
2167
 
# configure fragments.
2168
 
for dir in $sysnames; do
2169
 
  case $dir in
2170
 
    /*) dest=$dir ;;
2171
 
    *)  dest=$srcdir/$dir ;;
2172
 
  esac
2173
 
  if test -r $dest/configure; then
2174
 
    AC_MSG_RESULT(running configure fragment for $dir)
2175
 
    . $dest/configure
2176
 
  fi
2177
 
done
2178
 
 
2179
 
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2180
 
  AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2181
 
fi
2182
 
AC_SUBST(libc_cv_gcc_unwind_find_fde)
2183
 
 
2184
 
# Test for old glibc 2.0.x headers so that they can be removed properly
2185
 
# Search only in includedir.
2186
 
AC_MSG_CHECKING(for old glibc 2.0.x headers)
2187
 
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2188
 
then
2189
 
  old_glibc_headers=yes
2190
 
else
2191
 
  old_glibc_headers=no
2192
 
fi
2193
 
AC_MSG_RESULT($old_glibc_headers)
2194
 
if test ${old_glibc_headers} = yes; then
2195
 
  AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2196
 
  AC_MSG_WARN(*** be removed.)
2197
 
fi
2198
 
AC_SUBST(old_glibc_headers)
2199
 
 
2200
 
AC_SUBST(libc_cv_slibdir)
2201
 
AC_SUBST(libc_cv_localedir)
2202
 
AC_SUBST(libc_cv_sysconfdir)
2203
 
AC_SUBST(libc_cv_localstatedir)
2204
 
AC_SUBST(libc_cv_rootsbindir)
2205
 
AC_SUBST(libc_cv_forced_unwind)
2206
 
 
2207
 
dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2208
 
AC_SUBST(libc_cv_cpp_asm_debuginfo)
2209
 
AC_SUBST(libc_cv_cc_sse4)
2210
 
AC_SUBST(libc_cv_cc_avx)
2211
 
AC_SUBST(libc_cv_cc_sse2avx)
2212
 
AC_SUBST(libc_cv_cc_novzeroupper)
2213
 
AC_SUBST(libc_cv_cc_fma4)
2214
 
AC_SUBST(libc_cv_cc_nofma)
2215
 
AC_SUBST(libc_cv_as_i686)
2216
 
AC_SUBST(libc_cv_sparc_as_vis3)
2217
 
 
2218
 
AC_SUBST(use_ldconfig)
2219
 
AC_SUBST(ldd_rewrite_script)
2220
 
 
2221
 
AC_SUBST(static)
2222
 
AC_SUBST(shared)
2223
 
 
2224
 
AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2225
 
[libc_cv_pic_default=yes
2226
 
cat > conftest.c <<EOF
2227
 
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2228
 
# error PIC is default.
2229
 
#endif
2230
 
EOF
2231
 
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2232
 
  libc_cv_pic_default=no
2233
 
fi
2234
 
rm -f conftest.*])
2235
 
AC_SUBST(libc_cv_pic_default)
2236
 
 
2237
 
AC_SUBST(profile)
2238
 
AC_SUBST(static_nss)
2239
 
 
2240
 
AC_SUBST(DEFINES)
2241
 
 
2242
 
dnl See sysdeps/mach/configure.in for this variable.
2243
 
AC_SUBST(mach_interface_list)
2244
 
 
2245
 
if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2246
 
  config_makefile=
2247
 
else
2248
 
  config_makefile=Makefile
2249
 
fi
2250
 
 
2251
 
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2252
 
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2253
 
AC_SUBST(VERSION)
2254
 
AC_SUBST(RELEASE)
2255
 
 
2256
 
AC_CONFIG_FILES([config.make ${config_makefile}])
2257
 
AC_CONFIG_COMMANDS([default],[[
2258
 
case $CONFIG_FILES in *config.make*)
2259
 
echo "$config_vars" >> config.make;;
2260
 
esac
2261
 
test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2262
 
AC_OUTPUT