]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.in
2002-10-01 Roland McGrath <roland@frob.com>
[thirdparty/glibc.git] / configure.in
CommitLineData
f4017d20 1dnl Process this file with autoconf to produce a configure script.
ff3d7ed3 2AC_REVISION([$CVSid$])
2f512715 3AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
5107cf1d 4AC_INIT(include/features.h)
28f540f4 5AC_CONFIG_HEADER(config.h)
5bc2f642 6AC_CONFIG_AUX_DIR(scripts)
28f540f4
RM
7
8# This will get text that should go into config.make.
9config_vars=
10
11# Check for a --with-gmp argument and set gmp-srcdir in config.make.
12AC_ARG_WITH(gmp, dnl
13 --with-gmp=DIRECTORY find GMP source code in DIRECTORY (not needed),
14 [dnl
15case "$with_gmp" in
16yes) AC_MSG_ERROR(--with-gmp requires an argument; use --with-gmp=DIRECTORY) ;;
17''|no) ;;
18*) config_vars="$config_vars
19gmp-srcdir = $withval" ;;
20esac
21])
c8f3e6db
UD
22# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
23AC_ARG_WITH(gd, dnl
24 --with-gd=DIR find libgd include dir and library with prefix DIR,
25 [dnl
26case "$with_gd" in
f5f7239f
UD
27yes|''|no) ;;
28*) libgd_include="-I$withval/include"
c8f3e6db
UD
29 libgd_ldflags="-L$withval/lib" ;;
30esac
31])
f5f7239f
UD
32AC_ARG_WITH(gd-include, dnl
33 --with-gd-include=DIR find libgd include files in DIR,
34 [dnl
35case "$with_gd_include" in
36''|no) ;;
37*) libgd_include="-I$withval" ;;
38esac
39])
40AC_ARG_WITH(gd-lib, dnl
41 --with-gd-lib=DIR find libgd library files in DIR,
42 [dnl
43case "$with_gd_lib" in
44''|no) ;;
45*) libgd_ldflags="-L$withval" ;;
46esac
47])
48
49if test -n "$libgd_include"; then
50 config_vars="$config_vars
cf90163d 51CFLAGS-memusagestat.c = $libgd_include"
f5f7239f
UD
52fi
53if test -n "$libgd_ldflags"; then
54 config_vars="$config_vars
55libgd-LDFLAGS = $libgd_ldflags"
56fi
28f540f4 57
ff3d7ed3 58dnl Arguments to specify presence of other packages/features.
335aa320 59AC_ARG_WITH(fp, dnl
a18f587d 60[ --with-fp if using floating-point hardware [default=yes]],
335aa320 61 with_fp=$withval, with_fp=yes)
675322a5 62AC_SUBST(with_fp)
650425ce 63AC_ARG_WITH(binutils, dnl
a5a0310d 64 --with-binutils=PATH specify location of binutils (as and ld),
650425ce 65 path_binutils=$withval, path_binutils='')
28f540f4
RM
66AC_ARG_WITH(elf, dnl
67 --with-elf if using the ELF object format,
335aa320 68 elf=$withval, elf=no)
5af3245a
UD
69AC_ARG_WITH(xcoff, dnl
70 --with-xcoff if using the XCOFF object format,
71 xcoff=$withval, xcoff=no)
4d06461a 72AC_ARG_WITH(cvs, dnl
4442d7e8 73[ --without-cvs if CVS should not be used],
4d06461a 74 with_cvs=$withval, with_cvs=yes)
6b3f2b3d
UD
75if test "$with_cvs" = yes; then
76 if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
77 then
78 with_cvs=no
79 fi
4442d7e8 80fi
4d06461a 81AC_SUBST(with_cvs)
28f540f4 82
dbe7a0f5
UD
83AC_ARG_WITH(headers, dnl
84[ --with-headers=PATH location of system headers to use
85 [e.g. /usr/src/linux/include]
86 [default=compiler default]],
87 sysheaders=$withval, sysheaders='')
88
a18f587d
UD
89AC_ARG_ENABLE(sanity-checks, dnl
90[ --disable-sanity-checks really do not use threads (should not be used
91 except in special situations) [default=yes]],
92 enable_sanity=$enableval, enable_sanity=yes)
93
650425ce
UD
94dnl Arguments to enable or disable building the static, shared, profiled,
95dnl and -fomit-frame-pointer libraries.
b38bb8ca
UD
96dnl I've disabled this for now since we cannot build glibc without static
97dnl libraries built in the moment.
98dnl AC_ARG_ENABLE(static, dnl
99dnl [ --enable-static build static library [default=yes]],
100dnl static=$enableval, static=yes)
5c2a0669 101static=yes
ff3d7ed3
RM
102AC_ARG_ENABLE(shared, dnl
103[ --enable-shared build shared library [default=yes if GNU ld & ELF]],
6b3a2224 104 shared=$enableval, shared=default)
ff3d7ed3
RM
105AC_ARG_ENABLE(profile, dnl
106[ --enable-profile build profiled library [default=yes]],
6b3a2224 107 profile=$enableval, profile=yes)
ff3d7ed3 108AC_ARG_ENABLE(omitfp, dnl
6b3a2224
RM
109[ --enable-omitfp build undebuggable optimized library [default=no]],
110 omitfp=$enableval, omitfp=no)
5a97622d
UD
111AC_ARG_ENABLE(bounded, dnl
112[ --enable-bounded build with runtime bounds checking [default=no]],
113 bounded=$enableval, bounded=no)
650425ce
UD
114AC_ARG_ENABLE(versioning, dnl
115[ --disable-versioning do not include versioning information in the
116 library objects [default=yes if supported]],
117 enable_versioning=$enableval, enable_versioning=yes)
6b3a2224 118
62ab42d6
UD
119AC_ARG_ENABLE(oldest-abi, dnl
120[ --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2]
121 [default=glibc default]],
122 oldest_abi=$enableval, oldest_abi=no)
123if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
124 oldest_abi=default
125else
126 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
127fi
128AC_SUBST(oldest_abi)
129
6b3a2224
RM
130dnl Generic infrastructure for drop-in additions to libc.
131AC_ARG_ENABLE(add-ons, dnl
73237de3
UD
132[ --enable-add-ons[=DIR1,DIR2]...
133 configure and build add-ons in DIR1,DIR2,...
134 search for add-ons if no parameter given],
61952351 135 [case "$enableval" in
9c4c0024
UD
136 yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
137 test "$add_ons" = "*" && add_ons= ;;
61952351
UD
138 *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
139 esac],
140 [add_ons=])
141
8d4b5a8a 142dnl Let the user avoid using TLS. Don't know why but...
9cce206e 143dnl XXX For now we disable support by default.
8d4b5a8a 144AC_ARG_WITH(tls, dnl
9cce206e
UD
145[ --with-tls enable support for TLS],
146 usetls=$withval, usetls=no)
8d4b5a8a 147
749a9a4f
RM
148AC_ARG_ENABLE(hidden-plt, dnl
149[ --disable-hidden-plt do not hide internal function calls to avoid PLT],
150 hidden=$enableval, hidden=yes)
151if test "x$hidden" = xno; then
152 AC_DEFINE(NO_HIDDEN)
153fi
154
6b3a2224 155AC_CONFIG_SUBDIRS($add_ons)
57ba7bb4 156add_ons_pfx=
da74e902 157if test x"$add_ons" != x; then
57ba7bb4 158 for f in $add_ons; do
aa44a9de
AJ
159 # Some sanity checks
160 if test "$f" = "crypt"; then
161 AC_MSG_ERROR([
162*** It seems that you're using an old \`crypt' add-on. crypt is now
163*** part of glibc and using the old add-on will not work with this
164*** release. Start again with fresh sources and without the old
165*** \`crypt' add-on.])
166 fi
167 if test "$f" = "localedata"; then
168 AC_MSG_ERROR([
169*** It seems that you're using an old \`localedata' add-on. localedata
170*** is now part of glibc and using the old add-on will not work with
171*** this release. Start again with fresh sources and without the old
172*** \`localedata' add-on.])
173 fi
af6f3906
UD
174 # Test whether such a subdir really exists.
175 if test -d $srcdir/$f; then
176 add_ons_pfx="$add_ons_pfx $f/"
177 else
178 AC_MSG_ERROR(add-on directory \"$f\" does not exist)
179 fi
57ba7bb4
UD
180 done
181fi
ff3d7ed3 182
5107cf1d
UD
183dnl On some platforms we cannot use dynamic loading. We must provide
184dnl static NSS modules.
185AC_ARG_ENABLE(static-nss, dnl
186[ --enable-static-nss build static NSS modules [default=no]],
187 static_nss=$enableval, static_nss=no)
834cef7c
UD
188dnl Enable static NSS also if we build no shared objects.
189if test x"$static_nss" = xyes || test x"$shared" = xno; then
3172f58f 190 static_nss=yes
5107cf1d
UD
191 AC_DEFINE(DO_STATIC_NSS)
192fi
193
73237de3 194AC_ARG_ENABLE(force-install,
310b3460 195[ --disable-force-install don't force installation of files from this package,
73237de3
UD
196 even if they are older than the installed files],
197 force_install=$enableval, force_install=yes)
198AC_SUBST(force_install)
199
958f238f
UD
200dnl On some platforms we allow dropping compatibility with all kernel
201dnl versions.
202AC_ARG_ENABLE(kernel,
b5b53bdb 203[ --enable-kernel=VERSION compile for compatibility with kernel not older
958f238f
UD
204 than VERSION],
205 minimum_kernel=$enableval)
86cfe82d
UD
206dnl Prevent unreasonable values.
207if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
208 # Better nothing than this.
209 minimum_kernel=""
269e369f
UD
210else
211 if test "$minimum_kernel" = current; then
212 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
213 fi
86cfe82d 214fi
958f238f 215
6cc7d725
UD
216dnl For the development we sometimes want gcc to issue even more warnings.
217dnl This is not the default since many of the extra warnings are not
218dnl appropriate.
219AC_ARG_ENABLE(all-warnings,
220[ --enable-all-warnings enable all useful warnings gcc can issue],
221 all_warnings=$enableval)
222AC_SUBST(all_warnings)
223
28f540f4 224AC_CANONICAL_HOST
8a523922
UD
225
226# The way shlib-versions is used to generate soversions.mk uses a
227# fairly simplistic model for name recognition that can't distinguish
228# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
229# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
230# tell. This doesn't get used much beyond that, so it's fairly safe.
231case "$host_os" in
232linux*)
233 ;;
234gnu*)
235 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
236 ;;
237esac
238
28f540f4
RM
239# We keep the original values in `$config_*' and never modify them, so we
240# can write them unchanged into config.make. Everything else uses
241# $machine, $vendor, and $os, and changes them whenever convenient.
242config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
243
2f64b655
UD
244# Don't allow vendor == "unknown"
245test "$config_vendor" = unknown && config_vendor=
246config_os="`echo $config_os | sed 's/^unknown-//'`"
247
a2fe9c76
RM
248# Some configurations imply other options.
249case "$host_os" in
250gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
251 # These systems always use GNU tools.
c8cf0b14 252 gnu_ld=yes gnu_as=yes ;;
a2fe9c76
RM
253esac
254case "$host_os" in
7799b7b3
UD
255# i586-linuxaout is mangled into i586-pc-linux-gnuaout
256linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
3776d592 257 ;;
ffa8d2a0 258gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
3776d592
RM
259 # These systems (almost) always use the ELF format.
260 elf=yes
84724245 261 ;;
5af3245a
UD
262aix*)
263 # These systems are always xcoff
264 xcoff=yes
a711b01d 265 elf=no
5af3245a 266 ;;
a2fe9c76
RM
267esac
268
28f540f4
RM
269machine=$config_machine
270vendor=$config_vendor
271os=$config_os
272
a808d541
UD
273# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
274# Unify this here.
275if test "$machine" = rs6000; then
276 machine="powerpc"
277fi
278
bdc8eb03
UD
279###
280### I put this here to prevent those annoying emails from people who cannot
281### read and try to compile glibc on unsupported platforms. --drepper
282###
283### By using the undocumented --enable-hacker-mode option for configure
284### one can skip this test to make the configuration not fail for unsupported
285### platforms.
286###
287if test -z "$enable_hacker_mode"; then
288 case "$machine-$host_os" in
75d86c1f 289 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
bdc8eb03
UD
290 ;;
291 *)
292 echo "*** The GNU C library is currently not available for this platform."
293 echo "*** So far nobody cared to port it and if there is no volunteer it"
294 echo "*** might never happen. So, if you have interest to see glibc on"
295 echo "*** this platform visit"
296 echo "*** http://www.gnu.org/software/libc/porting.html"
297 echo "*** and join the group of porters"
298 exit 1
299 ;;
300 esac
301fi
302
28f540f4
RM
303dnl We need to use [ and ] for other purposes for a while now.
304changequote(,)dnl
305# Expand the configuration machine name into a subdirectory by architecture
306# type and particular chip.
307case "$machine" in
f0523145
RM
308a29k | am29000) base_machine=a29k machine=a29k ;;
309alpha*) base_machine=alpha machine=alpha/$machine ;;
0c8b61e6 310arm*) base_machine=arm machine=arm/arm32/$machine ;;
60c96635
UD
311c3[012]) base_machine=cx0 machine=cx0/c30 ;;
312c4[04]) base_machine=cx0 machine=cx0/c40 ;;
b15cb495
UD
313hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
314hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
a8922de8 315i[3456]86) base_machine=i386 machine=i386/$machine ;;
d64e704c 316ia64) base_machine=ia64 machine=ia64 ;;
f0523145
RM
317m680?0) base_machine=m68k machine=m68k/$machine ;;
318m68k) base_machine=m68k machine=m68k/m68020 ;;
319m88???) base_machine=m88k machine=m88k/$machine ;;
320m88k) base_machine=m88k machine=m88k/m88100 ;;
f0523145 321mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
2b904739 322mips*) base_machine=mips machine=mips/$machine ;;
92b27c74
UD
323powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
324powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
136d4332
UD
325s390) base_machine=s390 machine=s390/s390-32 ;;
326s390x) base_machine=s390 machine=s390/s390-64 ;;
88615235
UD
327sh3*) base_machine=sh machine=sh/sh3 ;;
328sh4*) base_machine=sh machine=sh/sh4 ;;
ca34d7a7
UD
329sparc | sparcv[67])
330 base_machine=sparc machine=sparc/sparc32 ;;
331sparcv8 | supersparc | hypersparc)
332 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
ae6b8730
RH
333sparcv8plus | sparcv8plusa | sparcv9)
334 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
bb769ab6
UD
335sparcv8plusb | sparcv9b)
336 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
ca34d7a7
UD
337sparc64 | ultrasparc)
338 base_machine=sparc machine=sparc/sparc64 ;;
bb769ab6
UD
339sparc64b | ultrasparc3)
340 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
0c8b61e6 341thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
3a2832a0 342*) base_machine=$machine ;;
28f540f4 343esac
f0523145
RM
344changequote([,])dnl
345AC_SUBST(base_machine)
28f540f4 346
dfd2257a
UD
347if test "$base_machine" = "i386"; then
348 AC_DEFINE(USE_REGPARMS)
349fi
350
f0523145 351# Compute the list of sysdep directories for this configuration.
f332db02 352# This can take a while to compute.
f0523145 353sysdep_dir=$srcdir/sysdeps
f332db02 354AC_MSG_CHECKING(sysdep dirs)
f0523145
RM
355dnl We need to use [ and ] for other purposes for a while now.
356changequote(,)dnl
28f540f4
RM
357# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
358os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
359
360case "$os" in
361gnu*)
362 base_os=mach/hurd ;;
883bc19b 363netbsd* | 386bsd* | freebsd* | bsdi*)
28f540f4 364 base_os=unix/bsd/bsd4.4 ;;
222c4e71 365osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
28f540f4 366 base_os=unix/bsd ;;
d586354e 367sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
28f540f4 368 base_os=unix/sysv ;;
f802accb
UD
369irix6*)
370 base_os=unix/sysv/irix6/$os ;;
d586354e 371solaris[2-9]*)
28f540f4 372 base_os=unix/sysv/sysv4 ;;
908c3d5b
UD
373hpux*)
374 base_os=unix/sysv/hpux/$os ;;
75d86c1f
UD
375aix4.3*)
376 base_os=unix/sysv/aix/aix4.3 ;;
28f540f4
RM
377none)
378 base_os=standalone ;;
379*)
380 base_os='' ;;
381esac
382
383# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
384tail=$os
385ostry=$os
386while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
387 ostry="$ostry /$o"
388 tail=$o
75914335 389done
28f540f4
RM
390o=`echo $tail | sed 's/[0-9]*$//'`
391if test $o != $tail; then
392 ostry="$ostry /$o"
393fi
ec4b0518
UD
394# For linux-gnu, try linux-gnu, then linux.
395o=`echo $tail | sed 's/-.*$//'`
396if test $o != $tail; then
397 ostry="$ostry /$o"
398fi
28f540f4
RM
399
400# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
401base=
402tail=$base_os
403while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
404 set $b
405 base="$base /$1"
406 tail="$2"
407done
408
ae6b8730 409# For sparc/sparc32, try sparc/sparc32 and then sparc.
28f540f4
RM
410mach=
411tail=$machine
412while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
413 set $m
10ceac89
RM
414 # Prepend the machine's FPU directory unless --without-fp.
415 if test "$with_fp" = yes; then
416 mach="$mach /$1/fpu"
82d00cab 417 fi
28f540f4
RM
418 mach="$mach /$1"
419 tail="$2"
420done
421
422dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
423changequote([,])dnl
424
425# Find what sysdep directories exist.
426sysnames=
57ba7bb4
UD
427IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
428for d in $add_ons_pfx ''; do
429 for b in $base ''; do
430 for m0 in $mach ''; do
431 for v in /$vendor ''; do
ae828bc6 432 test "$v" = / && continue
57ba7bb4 433 for o in /$ostry ''; do
ae828bc6 434 test "$o" = / && continue
57ba7bb4
UD
435 for m in $mach ''; do
436 if test "$m0$b$v$o$m"; then
437 try="${d}sysdeps$m0$b$v$o$m"
438 test -n "$enable_debug_configure" &&
439 echo "$0 [DEBUG]: try $try" >&2
9c4c0024 440 if test -d $srcdir/$try; then
57ba7bb4
UD
441 sysnames="$sysnames $try"
442 { test -n "$o" || test -n "$b"; } && os_used=t
443 { test -n "$m" || test -n "$m0"; } && machine_used=t
444 fi
445 fi
446 done
28f540f4
RM
447 done
448 done
449 done
450 done
451done
57ba7bb4 452IFS="$ac_save_ifs"
28f540f4
RM
453
454if test -z "$os_used" && test "$os" != none; then
455 AC_MSG_ERROR(Operating system $os is not supported.)
456fi
457if test -z "$machine_used" && test "$machine" != none; then
458 AC_MSG_ERROR(The $machine is not supported.)
459fi
460
461# We have now validated the configuration.
462
335aa320 463
10ceac89
RM
464# If using ELF, look for an `elf' subdirectory of each machine directory.
465# We prepend these rather than inserting them whereever the machine appears
466# because things specified by the machine's ELF ABI should override
467# OS-specific things, and should always be the same for any OS on the
468# machine (otherwise what's the point of an ABI?).
469if test "$elf" = yes; then
470 elf_dirs=
57ba7bb4 471 for d in $add_ons_pfx ''; do
57ba7bb4 472 for m in $mach; do
9c4c0024 473 if test -d $srcdir/${d}sysdeps$m/elf; then
c2bb8cab 474 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
57ba7bb4
UD
475 fi
476 done
28f540f4 477 done
57ba7bb4 478 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
28f540f4
RM
479fi
480
335aa320 481
28f540f4
RM
482# Expand the list of system names into a full list of directories
483# from each element's parent name and Implies file (if present).
484set $sysnames
e50ec9f9 485names=
28f540f4
RM
486while test $# -gt 0; do
487 name=$1
488 shift
489
e50ec9f9 490 case " $names " in *" $name "*)
f332db02
RM
491 # Already in the list.
492 continue
e50ec9f9 493 esac
f332db02
RM
494
495 # Report each name as we discover it, so there is no long pause in output.
496 echo $ac_n "$name $ac_c" >&AC_FD_MSG
497
57ba7bb4
UD
498 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
499
500 case $name in
501 /*) xsrcdir= ;;
502 *) xsrcdir=$srcdir/ ;;
503 esac
504 test -n "$enable_debug_configure" &&
505 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
506
507 if test -f $xsrcdir$name/Implies; then
28f540f4 508 # Collect more names from the `Implies' file (removing comments).
57ba7bb4
UD
509 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
510 implied=
511 for x in $implied_candidate; do
636ccfc8 512 found=no
57ba7bb4
UD
513 if test -d $xsrcdir$name_base/$x; then
514 implied="$implied $name_base/$x";
636ccfc8
UD
515 found=yes
516 fi
517 for d in $add_ons_pfx ''; do
518 try="${d}sysdeps/$x"
519 case $d in
520 /*) try_srcdir= ;;
521 *) try_srcdir=$srcdir/ ;;
522 esac
523 test -n "$enable_debug_configure" &&
524 echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
525 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
526 then
527 implied="$implied $try"
528 found=yes
529 fi
530 done
531 if test $found = no; then
57ba7bb4
UD
532 AC_MSG_WARN($name/Implies specifies nonexistent $x)
533 fi
28f540f4
RM
534 done
535 else
536 implied=
537 fi
538
539 # Add NAME to the list of names.
540 names="$names $name"
541
542 # Find the parent of NAME, using the empty string if it has none.
543changequote(,)dnl
57ba7bb4 544 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
28f540f4
RM
545changequote([,])dnl
546
547 # Add the names implied by NAME, and NAME's parent (if it has one), to
548 # the list of names to be processed (the argument list). We prepend the
549 # implied names to the list and append the parent. We want implied
550 # directories to come before further directories inferred from the
551 # configuration components; this ensures that for sysv4, unix/common
552 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
553 # after sysv4).
554 sysnames="`echo $implied $* $parent`"
555 test -n "$sysnames" && set $sysnames
556done
557
558# Add the default directories.
ecdc196c 559default_sysnames=sysdeps/generic
2de7874e 560if test "$elf" = yes; then
ecdc196c 561 default_sysnames="sysdeps/generic/elf $default_sysnames"
2de7874e 562fi
ecdc196c 563sysnames="$names $default_sysnames"
f332db02
RM
564AC_SUBST(sysnames)
565# The other names were emitted during the scan.
ecdc196c 566AC_MSG_RESULT($default_sysnames)
28f540f4 567
f332db02
RM
568
569### Locate tools.
28f540f4 570
28f540f4 571AC_PROG_INSTALL
2b80a372 572if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
28f540f4 573 # The makefiles need to use a different form to find it in $srcdir.
2b80a372 574 INSTALL='\$(..)./scripts/install-sh -c'
28f540f4 575fi
0e3426bb 576AC_PROG_LN_S
ae828bc6 577
a4301d41
UD
578# We need the physical current working directory. We cannot use the
579# "pwd -P" shell builtin since that's not portable. Instead we try to
580# find a pwd binary. Note that assigning to the PWD environment
581# variable might have some interesting side effects, so we don't do
582# that.
583AC_PATH_PROG(PWD_P, pwd, no)
584if test "$PWD_P" = no; then
585 AC_MSG_ERROR(*** A pwd binary could not be found.)
586fi
587
63bda0c1 588# These programs are version sensitive.
4bca4c17
UD
589AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
590AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
90d1d40b
RM
591 [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
592 critic_missing="$critic_missing gcc")
22e65f8f 593AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
8fc1e2ca 594 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
6b4e880f 595 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
63bda0c1 596
03616749
AJ
597
598if test -n "$critic_missing"; then
599AC_MSG_ERROR([
aefdff34 600*** These critical programs are missing or too old:$critic_missing
03616749
AJ
601*** Check the INSTALL file for required versions.])
602fi
603
604
22e65f8f 605AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
bdd421cc 606 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
aefdff34
RM
607 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
608 MSGFMT=: aux_missing="$aux_missing msgfmt")
63bda0c1 609AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
8b7fb588 610 [GNU texinfo.* \([0-9][0-9.]*\)],
aefdff34
RM
611 [4.*],
612 MAKEINFO=: aux_missing="$aux_missing makeinfo")
d6a97a28 613AC_CHECK_PROG_VER(SED, sed, --version,
aec103d3 614 [GNU sed version \([0-9]*\.[0-9.]*\)],
aefdff34
RM
615 [3.0[2-9]*|3.[1-9]*|[4-9]*],
616 SED=: aux_missing="$aux_missing sed")
63bda0c1 617
ea9f119b
AJ
618AC_PROG_CC_LOCAL
619AC_CANONICAL_BUILD
620if test $host != $build; then
621 AC_CHECK_PROGS(BUILD_CC, gcc cc)
622fi
623AC_SUBST(cross_compiling)
624AC_PROG_CPP
625LIBC_PROG_BINUTILS
ac8f8c53 626AC_CHECK_TOOL(MIG, mig, MISSING)
ea9f119b
AJ
627
628# Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
45ef592d
UD
629# XXX Commented out because it filters out too many good versions.
630# XXX --drepper
631# AC_CHECK_PROG_VER(AS, $AS, --version,
632# [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
633# [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
ea9f119b 634
4bca4c17 635test -n "$aux_missing" && AC_MSG_WARN([
aefdff34 636*** These auxiliary programs are missing or too old:$aux_missing
63bda0c1
UD
637*** some features will be disabled.
638*** Check the INSTALL file for required versions.])
28f540f4 639
d01d6319
UD
640# glibcbug.in wants to know the compiler version.
641CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
642AC_SUBST(CCVERSION)
643
dbe7a0f5
UD
644# if using special system headers, find out the compiler's sekrit
645# header directory and add that to the list. NOTE: Only does the right
646# thing on a system that doesn't need fixincludes. (Not presently a problem.)
647if test -n "$sysheaders"; then
648 ccheaders=`$CC -print-file-name=include`
649 SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
650fi
651AC_SUBST(SYSINCLUDES)
652
97a47867
UD
653# check if ranlib is necessary
654AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
655cat > conftest.c <<EOF
656int a;
657char b;
658void c(void) {}
659EOF
660$CC $CFLAGS -c conftest.c
72d4c33d 661$AR cr conftest.a conftest.o
97a47867
UD
662cp conftest.a conftest2.a
663$RANLIB conftest.a
664if cmp -s conftest.a conftest2.a; then
665 libc_cv_ranlib_necessary=no
f38931a9 666else
97a47867
UD
667 libc_cv_ranlib_necessary=yes
668fi
669rm -rf conftest*])
670if test "$libc_cv_ranlib_necessary" = no; then
671 RANLIB=:
f38931a9 672fi
f38931a9 673
3911660e
UD
674# Test if LD_LIBRARY_PATH contains the notation for the current directory
675# since this would lead to problems installing/building glibc.
676# LD_LIBRARY_PATH contains the current directory if one of the following
677# is true:
678# - one of the terminals (":" and ";") is the first or last sign
679# - two terminals occur directly after each other
680# - the path contains an element with a dot in it
681AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
682changequote(,)dnl
683case ${LD_LIBRARY_PATH} in
684 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 685 ld_library_path_setting="contains current directory"
3911660e
UD
686 ;;
687 *)
688 ld_library_path_setting="ok"
689 ;;
690esac
691changequote([,])dnl
692AC_MSG_RESULT($ld_library_path_setting)
693if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
694AC_MSG_ERROR([
695*** LD_LIBRARY_PATH shouldn't contain the current directory when
696*** building glibc. Please change the environment variable
697*** and run configure again.])
3911660e 698fi
8e31cf7e 699
74bd2300
UD
700AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
701if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
702 libc_cv_gcc_static_libgcc=
703else
704 libc_cv_gcc_static_libgcc=-static-libgcc
705fi])
706AC_SUBST(libc_cv_gcc_static_libgcc)
707
84384f5b 708AC_PATH_PROG(BASH, bash, no)
a18f587d 709if test "$BASH" != no &&
f43ce637 710 $BASH -c 'test "$BASH_VERSINFO" \
6973fc01 711 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
84384f5b
UD
712 libc_cv_have_bash2=yes
713else
714 libc_cv_have_bash2=no
715fi
716AC_SUBST(libc_cv_have_bash2)
717
5290baf0
UD
718dnl We need a ksh compatible shell for tzselect.
719if test "$BASH" = no; then
720 AC_PATH_PROG(KSH, ksh, no)
721 if test "$KSH" = no; then
722 libc_cv_have_ksh=no
723 else
724 libc_cv_have_ksh=yes
725 fi
726else
727 KSH="$BASH"
728 AC_SUBST(KSH)
729 libc_cv_have_ksh=yes
730fi
731AC_SUBST(libc_cv_have_ksh)
732
5aa8ff62 733AC_PROG_AWK
c0016081 734AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
735if test "$PERL" != no &&
736 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
737 PERL=no
ecb06196 738fi
2f512715
AS
739AC_PATH_PROG(INSTALL_INFO, install-info, no,
740 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
c0016081
UD
741if test "$INSTALL_INFO" != "no"; then
742AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
743 [mkdir conftest.d
744 # There is a hard ^_ on the next line. I am open to better ideas.
745 (echo '\1f'
746 echo 'File: dir Node: Top This is the top of the INFO tree'
747 echo '* Menu:') >conftest.d/dir
748 (echo 'INFO-DIR-SECTION i-d-s works'
749 echo 'START-INFO-DIR-ENTRY'
750 echo '* Prog: (prog). Program.'
751 echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
752 if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
d8cceb4f 753 then
c0016081
UD
754 if grep -s 'i-d-s works' conftest.d/dir >/dev/null
755 then libc_cv_old_debian_install_info=no
756 else libc_cv_old_debian_install_info=yes
757 fi
758 else libc_cv_old_debian_install_info=no testfailed=t
759 fi
760 rm -fr conftest.d])
761if test -n "$testfailed"
762then AC_MSG_WARN([install-info errored out, check config.log])
763fi
764OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
765fi
766AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
a2b08ee5 767
2de00372
UD
768AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
769
b8dc6a10 770AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
28f540f4
RM
771echo '#include <stddef.h>
772FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
773if eval "$ac_cpp conftest.c 2>/dev/null" \
774| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
775 libc_cv_signed_size_t=no
776else
777 libc_cv_signed_size_t=yes
778fi
779rm -f conftest*])
28f540f4
RM
780if test $libc_cv_signed_size_t = yes; then
781 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
782 cat >> confdefs.h <<\EOF
783#undef __SIZE_TYPE__
784#define __SIZE_TYPE__ unsigned
785EOF
786fi
787
b8dc6a10 788AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
789AC_TRY_COMPILE(dnl
790[#define __need_size_t
791#define __need_wchar_t
792#include <stddef.h>
793#define __need_NULL
794#include <stddef.h>], [size_t size; wchar_t wchar;
795#ifdef offsetof
796#error stddef.h ignored __need_*
797#endif
798if (&size == NULL || &wchar == NULL) abort ();],
799 libc_cv_friendly_stddef=yes,
800 libc_cv_friendly_stddef=no)])
28f540f4
RM
801if test $libc_cv_friendly_stddef = yes; then
802 config_vars="$config_vars
803override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
804fi
805
b8dc6a10
RM
806AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
807 libc_cv_need_minus_P, [dnl
28f540f4
RM
808cat > conftest.S <<EOF
809#include "confdefs.h"
810/* Nothing whatsoever. */
811EOF
812if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
813 libc_cv_need_minus_P=no
814else
815 libc_cv_need_minus_P=yes
816fi
817rm -f conftest*])
28f540f4
RM
818if test $libc_cv_need_minus_P = yes; then
819 config_vars="$config_vars
820asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
821fi
822
2293395f
UD
823AC_MSG_CHECKING(whether .text pseudo-op must be used)
824AC_CACHE_VAL(libc_cv_dot_text, [dnl
825cat > conftest.s <<EOF
826.text
827EOF
828libc_cv_dot_text=
829if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
830 libc_cv_dot_text=.text
831fi
832rm -f conftest*])
833if test -z "$libc_cv_dot_text"; then
834 AC_MSG_RESULT(no)
835else
836 AC_MSG_RESULT(yes)
837fi
838
b8dc6a10
RM
839AC_CACHE_CHECK(for assembler global-symbol directive,
840 libc_cv_asm_global_directive, [dnl
9a70fcab 841libc_cv_asm_global_directive=UNKNOWN
908c3d5b 842for ac_globl in .globl .global .EXPORT; do
9a70fcab 843 cat > conftest.s <<EOF
2293395f 844 ${libc_cv_dot_text}
908c3d5b 845 ${ac_globl} foo
ae1025be 846foo:
9a70fcab
UD
847EOF
848 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
849 libc_cv_asm_global_directive=${ac_globl}
850 fi
851 rm -f conftest*
852 test $libc_cv_asm_global_directive != UNKNOWN && break
853done])
9a70fcab
UD
854if test $libc_cv_asm_global_directive = UNKNOWN; then
855 AC_MSG_ERROR(cannot determine asm global directive)
856else
857 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
858fi
859
b8dc6a10 860AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 861cat > conftest.s <<EOF
2293395f 862${libc_cv_dot_text}
ae1025be 863foo:
df2a0c93 864.set glibc_conftest_frobozz,foo
9a70fcab 865$libc_cv_asm_global_directive glibc_conftest_frobozz
e215c478 866EOF
df2a0c93
RM
867# The alpha-dec-osf1 assembler gives only a warning for `.set'
868# (but it doesn't work), so we must do a linking check to be sure.
869cat > conftest1.c <<\EOF
870extern int glibc_conftest_frobozz;
871main () { printf ("%d\n", glibc_conftest_frobozz); }
872EOF
873if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
cb2f05ed 874 -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
e215c478
RM
875 libc_cv_asm_set_directive=yes
876else
877 libc_cv_asm_set_directive=no
878fi
65b3cbcb 879rm -f conftest*])
e215c478
RM
880if test $libc_cv_asm_set_directive = yes; then
881 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
882fi
883
b88ac073
RM
884AC_CACHE_CHECK(for assembler .type directive prefix,
885 libc_cv_asm_type_prefix, [dnl
886libc_cv_asm_type_prefix=no
887for ac_try_prefix in '@' '%' '#'; do
888 cat > conftest.s <<EOF
889 ${libc_cv_dot_text}
890 ${libc_cv_asm_global_directive} foo
891 .type foo, ${ac_try_prefix}object
892 .size foo, 1
893foo:
894 .byte 1
895EOF
896 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
897 libc_cv_asm_type_prefix=${ac_try_prefix}
898 fi
899 rm -f conftest*
900 test "x$libc_cv_asm_type_prefix" != xno && break
901done])
902if test "x$libc_cv_asm_type_prefix" != xno; then
903 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
904fi
905
2aa15430 906# The Aix ld uses global .symbol_names instead of symbol_names.
92b27c74
UD
907# Unfortunately also used in the PPC64 ELF ABI.
908case "${os}${machine}" in
909aix4.3* | linux*powerpc/powerpc64*)
2aa15430
UD
910 AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
911esac
912
377a515b
UD
913AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
914[cat > conftest.s <<EOF
2293395f 915${libc_cv_dot_text}
4cca6b86 916_sym:
377a515b
UD
917.symver _sym,sym@VERS
918EOF
919if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
920 libc_cv_asm_symver_directive=yes
921else
922 libc_cv_asm_symver_directive=no
923fi
924rm -f conftest*])
925AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
926if test $libc_cv_asm_symver_directive = yes; then
927 cat > conftest.s <<EOF
2293395f 928${libc_cv_dot_text}
4cca6b86 929_sym:
377a515b
UD
930.symver _sym,sym@VERS
931EOF
932 cat > conftest.map <<EOF
f43ce637 933VERS_1 {
377a515b
UD
934 global: sym;
935};
f43ce637
UD
936
937VERS_2 {
938 global: sym;
939} VERS_1;
377a515b
UD
940EOF
941 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
5ae3e846
UD
942 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
943 -nostartfiles -nostdlib
ae1025be
UD
944 -Wl,--version-script,conftest.map
945 1>&AC_FD_CC]);
377a515b
UD
946 then
947 libc_cv_ld_version_script_option=yes
948 else
949 libc_cv_ld_version_script_option=no
950 fi
951 else
952 libc_cv_ld_version_script_option=no
953 fi
954else
955 libc_cv_ld_version_script_option=no
956fi
957rm -f conftest*])
7499a22a
RM
958if test $shared != no &&
959 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
960 test $libc_cv_ld_version_script_option = yes &&
961 test $enable_versioning = yes; then
377a515b
UD
962 VERSIONING=yes
963 AC_DEFINE(DO_VERSIONING)
964else
965 VERSIONING=no
966fi
967AC_SUBST(VERSIONING)
968
102a3e8f 969if test $elf = yes && test $shared != no && test $VERSIONING = no; then
f43ce637 970 echo "\
f4017d20 971*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
972*** versioning will introduce incompatibilities so that old binaries
973*** will not run anymore.
50304ef0 974*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 975fi
fd26970f
UD
976if test $elf = yes; then
977 AC_CACHE_CHECK(for .previous assembler directive,
978 libc_cv_asm_previous_directive, [dnl
979 cat > conftest.s <<EOF
980.section foo_section
981.previous
982EOF
983 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
984 libc_cv_asm_previous_directive=yes
985 else
986 libc_cv_asm_previous_directive=no
987 fi
988 rm -f conftest*])
989 if test $libc_cv_asm_previous_directive = yes; then
990 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
991 else
992 AC_CACHE_CHECK(for .popsection assembler directive,
993 libc_cv_asm_popsection_directive, [dnl
994 cat > conftest.s <<EOF
995.pushsection foo_section
996.popsection
997EOF
998 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
999 libc_cv_asm_popsection_directive=yes
1000 else
1001 libc_cv_asm_popsection_directive=no
1002 fi
1003 rm -f conftest*])
1004 if test $libc_cv_asm_popsection_directive = yes; then
1005 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1006 fi
1007 fi
2d499f55
UD
1008 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1009 libc_cv_asm_protected_directive, [dnl
1010 cat > conftest.s <<EOF
1011.protected foo
1012foo:
1013.hidden bar
1014bar:
1015EOF
1016 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1017 libc_cv_asm_protected_directive=yes
1018 else
1019 libc_cv_asm_protected_directive=no
1020 fi
1021 rm -f conftest*])
1022 AC_SUBST(libc_cv_asm_protected_directive)
5688da55 1023 AC_DEFINE(HAVE_PROTECTED)
9bd64602 1024 AC_DEFINE(HAVE_HIDDEN)
0fb7851f 1025
0d01dace
UD
1026 if test $libc_cv_asm_protected_directive = yes; then
1027 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1028 libc_cv_visibility_attribute,
1029 [cat > conftest.c <<EOF
1030 int foo __attribute__ ((visibility ("hidden"))) = 1;
1031 int bar __attribute__ ((visibility ("protected"))) = 1;
1032EOF
1033 libc_cv_visibility_attribute=no
1034 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
1035 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1036 if grep '\.protected.*bar' conftest.s >/dev/null; then
1037 libc_cv_visibility_attribute=yes
1038 fi
1039 fi
1040 fi
1041 rm -f conftest.[cs]
1042 ])
1043 if test $libc_cv_visibility_attribute = yes; then
1044 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1045 fi
1046 fi
1047
37ba7d66
UD
1048 if test $libc_cv_visibility_attribute = yes; then
1049 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1050 libc_cv_broken_visibility_attribute,
1051 [cat > conftest.c <<EOF
1052 int foo (int x);
1053 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1054 int bar (int x) { return x; }
1055EOF
1056 libc_cv_broken_visibility_attribute=yes
1057 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
1058changequote(,)dnl
1059 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1060changequote([,])dnl
1061 libc_cv_broken_visibility_attribute=no
1062 fi
1063 fi
1064 rm -f conftest.c conftest.s
1065 ])
1066 if test $libc_cv_broken_visibility_attribute = yes; then
1067 AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1068 fi
1069 fi
1070
1071 AC_CACHE_CHECK(for broken __attribute__((alias())),
1072 libc_cv_broken_alias_attribute,
1073 [cat > conftest.c <<EOF
1074 extern int foo (int x) __asm ("xyzzy");
1075 int bar (int x) { return x; }
48b8e846
UD
1076 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1077 extern int dfoo;
1078 extern __typeof (dfoo) dfoo __asm ("abccb");
1079 int dfoo = 1;
37ba7d66
UD
1080EOF
1081 libc_cv_broken_alias_attribute=yes
1082 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
48b8e846
UD
1083 if grep 'xyzzy' conftest.s >/dev/null &&
1084 grep 'abccb' conftest.s >/dev/null; then
37ba7d66
UD
1085 libc_cv_broken_alias_attribute=no
1086 fi
1087 fi
1088 rm -f conftest.c conftest.s
1089 ])
1090 if test $libc_cv_broken_alias_attribute = yes; then
1091 AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1092 fi
1093
0d01dace
UD
1094 if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1095 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1096 libc_cv_have_sdata_section,
1097 [echo "int i;" > conftest.c
1098 libc_cv_have_sdata_section=no
1099 if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1100 | grep '\.sdata' >/dev/null; then
1101 libc_cv_have_sdata_section=yes
1102 fi
1103 rm -f conftest.c conftest.so
1104 ])
1105 if test $libc_cv_have_sdata_section = yes; then
1106 AC_DEFINE(HAVE_SDATA_SECTION)
1107 fi
1108 fi
1109
5241882c
UD
1110 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1111 libc_cv_initfinit_array, [dnl
1112 cat > conftest.c <<EOF
1113int _start (void) { return 0; }
1114int __start (void) { return 0; }
1115int foo (void) { return 1; }
2c617417 1116int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
5241882c
UD
1117EOF
1118 if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
1119 -static -nostartfiles -nostdlib 1>&AC_FD_CC])
1120 then
1121 if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1122 libc_cv_initfinit_array=yes
1123 else
1124 libc_cv_initfinit_array=no
1125 fi
1126 else
1127 libc_cv_initfinit_array=no
1128 fi
1129 rm -f conftest*])
1130 AC_SUBST(libc_cv_initfinit_array)
1131 if test $libc_cv_initfinit_array = yes; then
1132 AC_DEFINE(HAVE_INITFINI_ARRAY)
1133 fi
1134
0fb7851f
UD
1135 AC_CACHE_CHECK(for -z nodelete option,
1136 libc_cv_z_nodelete, [dnl
1137 cat > conftest.c <<EOF
1138int _start (void) { return 42; }
1139EOF
35cd3c97
AJ
1140 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1141 -nostartfiles -nostdlib
1142 -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
0fb7851f
UD
1143 then
1144 libc_cv_z_nodelete=yes
1145 else
1146 libc_cv_z_nodelete=no
1147 fi
1148 rm -f conftest*])
1149 AC_SUBST(libc_cv_z_nodelete)
2f54c82d
UD
1150
1151 AC_CACHE_CHECK(for -z nodlopen option,
1152 libc_cv_z_nodlopen, [dnl
1153 cat > conftest.c <<EOF
1154int _start (void) { return 42; }
1155EOF
35cd3c97
AJ
1156 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1157 -nostartfiles -nostdlib
1158 -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
2f54c82d
UD
1159 then
1160 libc_cv_z_nodlopen=yes
1161 else
1162 libc_cv_z_nodlopen=no
1163 fi
1164 rm -f conftest*])
1165 AC_SUBST(libc_cv_z_nodlopen)
5d916713
UD
1166
1167 AC_CACHE_CHECK(for -z initfirst option,
1168 libc_cv_z_initfirst, [dnl
1169 cat > conftest.c <<EOF
1170int _start (void) { return 42; }
1171EOF
35cd3c97
AJ
1172 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1173 -nostartfiles -nostdlib
1174 -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
5d916713
UD
1175 then
1176 libc_cv_z_initfirst=yes
1177 else
1178 libc_cv_z_initfirst=no
1179 fi
1180 rm -f conftest*])
1181 AC_SUBST(libc_cv_z_initfirst)
639c3248
UD
1182
1183 AC_CACHE_CHECK(for -Bgroup option,
1184 libc_cv_Bgroup, [dnl
1185 cat > conftest.c <<EOF
1186int _start (void) { return 42; }
1187EOF
1188 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AC_FD_CC])
1189 then
1190 libc_cv_Bgroup=yes
1191 else
1192 libc_cv_Bgroup=no
1193 fi
1194 rm -f conftest*])
1195 AC_SUBST(libc_cv_Bgroup)
a711b01d
UD
1196
1197 AC_CACHE_CHECK(for -z combreloc,
1198 libc_cv_z_combreloc, [dnl
1199 cat > conftest.c <<EOF
d555194c
UD
1200extern int bar (int);
1201extern int mumble;
1202int foo (void) { return bar (mumble); }
a711b01d 1203EOF
35cd3c97
AJ
1204 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1205 -nostdlib -nostartfiles
1206 -Wl,-z,combreloc 1>&AC_FD_CC])
a711b01d
UD
1207 then
1208dnl The following test is a bit weak. We must use a tool which can test
1209dnl cross-platform since the gcc used can be a cross compiler. Without
1210dnl introducing new options this is not easily doable. Instead use a tool
1211dnl which always is cross-platform: readelf. To detect whether -z combreloc
1212dnl look for a section named .rel.dyn.
fdde8349
UD
1213 if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1214 libc_cv_z_combreloc=yes
1215 else
1216 libc_cv_z_combreloc=no
a711b01d 1217 fi
fdde8349
UD
1218 else
1219 libc_cv_z_combreloc=no
a711b01d
UD
1220 fi
1221 rm -f conftest*])
fdde8349
UD
1222 if test "$libc_cv_z_combreloc" = yes; then
1223 AC_DEFINE(HAVE_Z_COMBRELOC)
1224 fi
fd26970f 1225fi
f13df7c7 1226AC_SUBST(libc_cv_z_combreloc)
fd26970f 1227
b8dc6a10
RM
1228if test $elf != yes; then
1229 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1230 [AC_TRY_COMPILE(, [asm (".section .init");
84724245 1231 asm (".section .fini");
2293395f 1232 asm ("${libc_cv_dot_text}");],
b8dc6a10
RM
1233 libc_cv_have_initfini=yes,
1234 libc_cv_have_initfini=no)])
1235 AC_SUBST(libc_cv_have_initfini)dnl
1236 if test $libc_cv_have_initfini = yes; then
1237 AC_DEFINE(HAVE_INITFINI)
1238 fi
1239fi
e215c478 1240
e26dd47f
UD
1241if test $elf = yes -a $gnu_ld = yes; then
1242 AC_CACHE_CHECK(whether cc puts quotes around section names,
1243 libc_cv_have_section_quotes,
1244 [cat > conftest.c <<EOF
1245 static const int foo
1246 __attribute__ ((section ("bar"))) = 1;
1247EOF
1248 if ${CC-cc} -S conftest.c -o conftest.s; then
1249 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1250 libc_cv_have_section_quotes=yes
1251 else
1252 libc_cv_have_section_quotes=no
1253 fi
1254 else
1255 libc_cv_have_section_quotes=unknown
1256 fi
1257 rm -f conftest.[cs]
1258 ])
1259 if test $libc_cv_have_section_quotes = yes; then
1260 AC_DEFINE(HAVE_SECTION_QUOTES)
1261 fi
1262fi
1263
9a0a462c
UD
1264dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1265AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1266[cat > conftest.$ac_ext <<EOF
1267dnl This sometimes fails to find confdefs.h, for some reason.
1268dnl [#]line __oline__ "[$]0"
1269[#]line __oline__ "configure"
1270#include "confdefs.h"
1271void underscore_test(void) {
1272return; }
1273EOF
1274if AC_TRY_EVAL(ac_compile); then
1275 if grep _underscore_test conftest* >/dev/null; then
1276 ifelse([$1], , :, [rm -f conftest*
1277 $1])
1278 else
1279 ifelse([$2], , , [rm -f conftest*
1280 $2])
1281 fi
1282else
1283 echo "configure: failed program was:" >&AC_FD_CC
1284 cat conftest.$ac_ext >&AC_FD_CC
1285 ifelse([$2], , , [rm -f conftest*
1286 $2])
1287fi
1288rm -f conftest*])
1289
c224a18a
RM
1290if test $elf = yes; then
1291 libc_cv_asm_underscores=no
1292else
9a0a462c
UD
1293 if test $ac_cv_prog_cc_works = yes; then
1294 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1295 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1296 libc_cv_asm_underscores=yes,
1297 libc_cv_asm_underscores=no)])
1298 else
1299 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1300 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1301 libc_cv_asm_underscores=no)])
1302 fi
c224a18a
RM
1303fi
1304if test $libc_cv_asm_underscores = no; then
1305 AC_DEFINE(NO_UNDERSCORES)
1306fi
1307
1308if test $elf = yes; then
1309 libc_cv_weak_symbols=yes
9a97d1f7
UD
1310fi
1311
1312AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1313 [dnl
c224a18a 1314cat > conftest.s <<EOF
2293395f 1315${libc_cv_dot_text}
c224a18a 1316${libc_cv_asm_global_directive} foo
ae1025be 1317foo:
c224a18a
RM
1318.weak foo
1319.weak bar; bar = foo
1320EOF
9a97d1f7
UD
1321if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1322 libc_cv_asm_weak_directive=yes
1323else
1324 libc_cv_asm_weak_directive=no
1325fi
1326rm -f conftest*])
c224a18a 1327
c8cf0b14 1328if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1329 AC_CACHE_CHECK(for assembler .weakext directive,
1330 libc_cv_asm_weakext_directive,
1331 [dnl
1332cat > conftest.s <<EOF
2293395f 1333${libc_cv_dot_text}
c224a18a 1334${libc_cv_asm_global_directive} foo
ae1025be 1335foo:
f802accb
UD
1336.weakext bar foo
1337.weakext baz
1338${libc_cv_asm_global_directive} baz
9a97d1f7 1339baz:
c224a18a
RM
1340EOF
1341 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1342 libc_cv_asm_weakext_directive=yes
1343 else
1344 libc_cv_asm_weakext_directive=no
1345 fi
1346 rm -f conftest*])
1347
9a97d1f7 1348fi # no .weak
c224a18a 1349
ffcf9634 1350if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1351 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1352elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1353 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1354fi
1355
b15cb495 1356dnl The standard hppa assembler uses `;' to start comments and `!'
eacde9d0
UD
1357dnl as a line separator. CRIS uses `;' to start comments and `@' for
1358dnl line separator.
b15cb495 1359case "${host_cpu}-${host_os}" in
eacde9d0
UD
1360 cris*)
1361 libc_cv_asm_line_sep='@'
1362 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1363 ;;
b15cb495
UD
1364 hppa*linux*)
1365 AC_CACHE_CHECK(for assembler line separator,
1366 libc_cv_asm_line_sep, [dnl
1367 cat > conftest.s <<EOF
1368 nop ; is_old_puffin
1369EOF
1370 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1371 libc_cv_asm_line_sep='!'
1372 else
1373 if test -z "$enable_hacker_mode"; then
1374 echo "*** You need a newer assembler to compile glibc"
1375 rm -f conftest*
1376 exit 1
1377 fi
1378 libc_cv_asm_line_sep=';'
1379 fi
1380 rm -f conftest*])
1381 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1382 ;;
1383esac
1384
a641835a
RM
1385AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1386cat > conftest.c <<\EOF
5f0e6fc7 1387_start () {}
dcf0671d
UD
1388int __eh_pc;
1389__throw () {}
a641835a 1390EOF
dcea62dd
RM
1391dnl No \ in command here because it ends up inside ''.
1392if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1393 -nostdlib -nostartfiles -Wl,--no-whole-archive
ae1025be 1394 -o conftest conftest.c 1>&AC_FD_CC]); then
a641835a
RM
1395 libc_cv_ld_no_whole_archive=yes
1396else
1397 libc_cv_ld_no_whole_archive=no
1398fi
1399rm -f conftest*])
b17277cf
UD
1400if test $libc_cv_ld_no_whole_archive = yes; then
1401 no_whole_archive=-Wl,--no-whole-archive
1402fi
1403AC_SUBST(no_whole_archive)dnl
a641835a 1404
dff14448 1405AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1406cat > conftest.c <<\EOF
1407_start () {}
1408int __eh_pc;
1409__throw () {}
1410EOF
1411dnl No \ in command here because it ends up inside ''.
1412if AC_TRY_COMMAND([${CC-cc} $CFLAGS
dff14448 1413 -nostdlib -nostartfiles -fexceptions
ae1025be 1414 -o conftest conftest.c 1>&AC_FD_CC]); then
dff14448 1415 libc_cv_gcc_exceptions=yes
b236e99d 1416else
dff14448 1417 libc_cv_gcc_exceptions=no
b236e99d
UD
1418fi
1419rm -f conftest*])
dff14448
UD
1420if test $libc_cv_gcc_exceptions = yes; then
1421 exceptions=-fexceptions
b17277cf 1422fi
dff14448 1423AC_SUBST(exceptions)dnl
b236e99d 1424
d71b808a
UD
1425if test "$base_machine" = alpha ; then
1426AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1427cat > conftest.c <<\EOF
1428foo () { }
1429EOF
1430dnl
9756dfe1 1431if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
d71b808a
UD
1432then
1433 libc_cv_gcc_alpha_ng_prefix=yes
1434else
1435 libc_cv_gcc_alpha_ng_prefix=no
1436fi
1437rm -f conftest* ])
1438if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1439 AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1440else
1441 AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1442fi
1443fi
1444
66000494
UD
1445if test "$host_cpu" = powerpc ; then
1446# Check for a bug present in at least versions 2.8.x of GCC
1447# and versions 1.0.x of EGCS.
1448AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1449AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1450 libc_cv_c_asmcr0_bug='no',
1451 libc_cv_c_asmcr0_bug='yes')])
1452if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1453 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1454fi
1455fi
1456
650425ce
UD
1457AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1458[cat > conftest.c <<EOF
1459#line __oline__ "configure"
2b904739 1460static char *__EH_FRAME_BEGIN__;
650425ce
UD
1461_start ()
1462{
9756dfe1 1463#ifdef CHECK__register_frame
650425ce
UD
1464 __register_frame (__EH_FRAME_BEGIN__);
1465 __deregister_frame (__EH_FRAME_BEGIN__);
9756dfe1
UD
1466#endif
1467#ifdef CHECK__register_frame_info
1468 __register_frame_info (__EH_FRAME_BEGIN__);
1469 __deregister_frame_info (__EH_FRAME_BEGIN__);
1470#endif
650425ce
UD
1471}
1472int __eh_pc;
1473__throw () {}
1474/* FIXME: this is fragile. */
1475malloc () {}
1476strcmp () {}
1477strlen () {}
1478memcpy () {}
1479memset () {}
1480free () {}
1481abort () {}
dfd2257a 1482__bzero () {}
df17727a 1483dl_iterate_phdr () {}
650425ce
UD
1484EOF
1485dnl No \ in command here because it ends up inside ''.
9756dfe1 1486if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
650425ce
UD
1487 -nostdlib -nostartfiles
1488 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
9756dfe1 1489 libc_cv_gcc_dwarf2_unwind_info=static
650425ce
UD
1490else
1491 libc_cv_gcc_dwarf2_unwind_info=no
1492fi
2b904739
AJ
1493if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1494 -nostdlib -nostartfiles
1495 -o conftest conftest.c -lgcc -lgcc_eh >&AC_FD_CC]); then
1496 if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \
1497 -o conftest conftest.c -lgcc -lgcc_eh -v 2>&1 >/dev/null \
1498 | grep -q -- --eh-frame-hdr; then
1499 libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1500 else
1501 libc_cv_gcc_dwarf2_unwind_info=static
1502 fi
1503else
1504 libc_cv_gcc_dwarf2_unwind_info=no
1505fi
9756dfe1
UD
1506if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1507 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1508 -nostdlib -nostartfiles
1509 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1510 libc_cv_gcc_dwarf2_unwind_info=yes
1511 else
1512 libc_cv_gcc_dwarf2_unwind_info=no
1513 fi
1514fi
650425ce 1515rm -f conftest*])
9756dfe1
UD
1516case $libc_cv_gcc_dwarf2_unwind_info in
1517yes)
650425ce 1518 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
9756dfe1
UD
1519 ;;
1520static)
1521 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1522 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1523 ;;
1524esac
650425ce 1525
a8eab8b1
UD
1526dnl Check whether compiler understands __builtin_expect.
1527AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1528[cat > conftest.c <<EOF
1529#line __oline__ "configure"
1530int foo (int a)
1531{
1532 a = __builtin_expect (a, 10);
1533 return a == 10 ? 0 : 1;
1534}
1535EOF
1536dnl No \ in command here because it ends up inside ''.
1537if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1538 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1539 libc_cv_gcc_builtin_expect=yes
1540else
1541 libc_cv_gcc_builtin_expect=no
1542fi
1543rm -f conftest*])
1544if test "$libc_cv_gcc_builtin_expect" = yes; then
1545 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1546fi
1547
d555194c
UD
1548AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1549cat > conftest.c <<\EOF
1550void zero (void *x)
1551{
a52d1562 1552 __builtin_memset (x, 0, 1000);
d555194c
UD
1553}
1554EOF
1555dnl
1556if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1557then
1558 libc_cv_gcc_builtin_memset=no
1559else
1560 libc_cv_gcc_builtin_memset=yes
1561fi
1562rm -f conftest* ])
1563if test "$libc_cv_gcc_builtin_memset" = yes ; then
1564 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1565fi
1566
3d558f4e
UD
1567dnl Check whether the compiler supports subtraction of local labels.
1568AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1569[cat > conftest.c <<EOF
1570changequote(,)dnl
1571#line __oline__ "configure"
1572int foo (int a)
1573{
1574 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1575 void *p = &&l1 + ar[a];
1576 goto *p;
1577 l1:
1578 return 1;
1579 l2:
1580 return 2;
1581}
1582changequote([,])dnl
1583EOF
1584dnl No \ in command here because it ends up inside ''.
1585if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1586 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1587 libc_cv_gcc_subtract_local_labels=yes
1588else
1589 libc_cv_gcc_subtract_local_labels=no
1590fi
1591rm -f conftest*])
1592if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1593 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1594fi
1595
739d440d
UD
1596dnl Check whether the compiler supports the __thread keyword.
1597AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
72d4c33d 1598[cat > conftest.c <<\EOF
739d440d
UD
1599__thread int a = 42;
1600EOF
1601if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AC_FD_CC]); then
1602 libc_cv_gcc___thread=yes
1603else
1604 libc_cv_gcc___thread=no
1605fi
1606rm -f conftest*])
1607if test "$libc_cv_gcc___thread" = yes; then
1608 AC_DEFINE(HAVE___THREAD)
1609fi
1610
1611
c8f3e6db
UD
1612dnl Check whether we have the gd library available.
1613AC_MSG_CHECKING(for libgd)
6dab8688
UD
1614if test "$with_gd" != "no"; then
1615 old_CFLAGS="$CFLAGS"
1616 CFLAGS="$CFLAGS $libgd_include"
1617 old_LDFLAGS="$LDFLAGS"
1618 LDFLAGS="$LDFLAGS $libgd_ldflags"
1619 old_LIBS="$LIBS"
1620 LIBS="$LIBS -lgd -lpng -lz -lm"
1621 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1622 CFLAGS="$old_CFLAGS"
1623 LDFLAGS="$old_LDFLAGS"
1624 LIBS="$old_LIBS"
1625else
1626 LIBGD=no
1627fi
c8f3e6db
UD
1628AC_MSG_RESULT($LIBGD)
1629AC_SUBST(LIBGD)
3d558f4e 1630
8ed1e7d5
GK
1631dnl check for the size of 'long double'.
1632AC_CHECK_SIZEOF(long double, 0)
1633sizeof_long_double=$ac_cv_sizeof_long_double
1634AC_SUBST(sizeof_long_double)
1635
c224a18a
RM
1636### End of automated tests.
1637### Now run sysdeps configure fragments.
1638
28f540f4
RM
1639# sysdeps configure fragments may set these with files to be linked below.
1640libc_link_dests=
1641libc_link_sources=
1642
cb343854 1643# They also can set these variables.
591e1ffb 1644use_ldconfig=no
cb343854 1645ldd_rewrite_script=no
77259608 1646libc_cv_sysconfdir=$sysconfdir
74bd2300 1647libc_cv_gcc_unwind_find_fde=no
cb343854 1648
28f540f4
RM
1649# Iterate over all the sysdep directories we will use, running their
1650# configure fragments, and looking for a uname implementation.
1651uname=
1652for dir in $sysnames; do
57ba7bb4
UD
1653 case $dir in
1654 /*) dest=$dir ;;
1655 *) dest=$srcdir/$dir ;;
1656 esac
1657 if test -r $dest/configure; then
1658 AC_MSG_RESULT(running configure fragment for $dest)
1659 . $dest/configure
28f540f4 1660 fi
4ca84cff 1661[
28f540f4 1662 if test -z "$uname"; then
e7f1f046
UD
1663 if test -r $dest/uname.c ||
1664 test -r $dest/uname.S ||
1665 { test -r $dest/syscalls.list &&
1666 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
b86199fb 1667 uname=$dir
4ca84cff 1668 fi
28f540f4 1669 fi
4ca84cff 1670]dnl
28f540f4
RM
1671done
1672
74bd2300
UD
1673if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1674 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1675fi
1676AC_SUBST(libc_cv_gcc_unwind_find_fde)
1677
28f540f4
RM
1678AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1679
1680# If we will use the generic uname implementation, we must figure out what
1681# it will say by examining the system, and write the results in config-name.h.
e7f1f046 1682if test "$uname" = "sysdeps/generic"; then
28f540f4
RM
1683
1684changequote(,)dnl
1685 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1686changequote([,])dnl
1687 if test $uname_sysname != $config_os; then
1688 config_release=`echo $config_os | sed s/$uname_sysname//`
1689 fi
1690dnl
1691AC_DEFUN(LIBC_KERNEL_ID, [dnl
1692 if test -r /vmunix; then
1693 kernel_id=`strings /vmunix | grep UNIX`
1694 elif test -r /dynix; then
1695 kernel_id=`strings /dynix | grep DYNIX`
1696 else
1697 kernel_id=
1698 fi
1699])dnl
1700
b8dc6a10 1701 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
28f540f4
RM
1702AC_REQUIRE([LIBC_KERNEL_ID])dnl
1703changequote(,)dnl
1704 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1705changequote([,])dnl
1706 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1707 != x$config_release; then
1708 # The configuration release is a substring of the kernel release.
1709 libc_cv_uname_release=$kernel_release
1710 elif test x$config_release != x; then
1711 libc_cv_uname_release=$config_release
1712 elif test x$kernel_release != x; then
1713 libc_cv_uname_release=$kernel_release
1714 else
1715 libc_cv_uname_release=unknown
1716 fi])
28f540f4
RM
1717 uname_release="$libc_cv_uname_release"
1718
b8dc6a10 1719 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
28f540f4
RM
1720AC_REQUIRE([LIBC_KERNEL_ID])dnl
1721changequote(,)dnl
1722 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1723changequote([,])dnl
1724 if test -n "$kernel_version"; then
1725 libc_cv_uname_version="$kernel_version"
1726 else
1727 libc_cv_uname_version=unknown
1728 fi])
28f540f4
RM
1729 uname_version="$libc_cv_uname_version"
1730
1731AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1732 config_uname=config-name.h:config-name.in
1733else
1734 # For non-generic uname, we don't need to create config-name.h at all.
1735 config_uname=
1736fi
1737
a8c01776
RM
1738dnl This is tested by existing code and it's simpler to avoid changing it.
1739AC_DEFINE(USE_IN_LIBIO)
96aa2d94 1740
a53bad16
UD
1741# Test for old glibc 2.0.x headers so that they can be removed properly
1742# Search only in includedir.
1743AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 1744if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
1745then
1746 old_glibc_headers=yes
1747else
1748 old_glibc_headers=no
1749fi
1750AC_MSG_RESULT($old_glibc_headers)
1751if test ${old_glibc_headers} = yes; then
1752 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1753 AC_MSG_WARN(*** be removed.)
1754fi
b195f6bc 1755AC_SUBST(old_glibc_headers)
26b4d766 1756
84384f5b 1757AC_SUBST(libc_cv_slibdir)
a1d84548 1758AC_SUBST(libc_cv_localedir)
77259608 1759AC_SUBST(libc_cv_sysconfdir)
1ef32c3d
UD
1760AC_SUBST(libc_cv_rootsbindir)
1761
591e1ffb 1762AC_SUBST(use_ldconfig)
cb343854 1763AC_SUBST(ldd_rewrite_script)
84384f5b 1764
5af3245a 1765AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
28f540f4
RM
1766if test $gnu_ld = yes; then
1767 AC_DEFINE(HAVE_GNU_LD)
1768fi
1769if test $gnu_as = yes; then
1770 AC_DEFINE(HAVE_GNU_AS)
1771fi
1772if test $elf = yes; then
1773 AC_DEFINE(HAVE_ELF)
1774fi
5af3245a
UD
1775if test $xcoff = yes; then
1776 AC_DEFINE(HAVE_XCOFF)
1777fi
28f540f4 1778
650425ce 1779AC_SUBST(static)
ff3d7ed3
RM
1780AC_SUBST(shared)
1781if test $shared = default; then
1782 if test $gnu_ld = yes; then
1783 shared=$elf
f65fd747
UD
1784 else
1785 # For now we do not assume shared libs are available. In future more
1786 # tests might become available.
1787 shared=no
ff3d7ed3
RM
1788 fi
1789fi
cc3fa755
UD
1790
1791AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1792[pic_default=yes
1793cat > conftest.c <<EOF
9756dfe1 1794#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1795# error PIC is default.
1796#endif
1797EOF
1798if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1799 pic_default=no
1800fi
1801rm -f conftest.*])
1802AC_SUBST(pic_default)
1803
ff3d7ed3
RM
1804AC_SUBST(profile)
1805AC_SUBST(omitfp)
5a97622d 1806AC_SUBST(bounded)
5107cf1d 1807AC_SUBST(static_nss)
5ae3e846 1808AC_SUBST(nopic_initfini)
ff3d7ed3 1809
edf5b2d7
UD
1810AC_SUBST(DEFINES)
1811
7cabd57c
UD
1812case "$add_ons" in
1813 *door*) linux_doors=yes ;;
1814 *) linux_doors=no ;;
1815esac
1816AC_SUBST(linux_doors)
1817
61c83c3f
RM
1818dnl See sysdeps/mach/configure.in for this variable.
1819AC_SUBST(mach_interface_list)
1820
28f540f4
RM
1821if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1822 config_makefile=
1823else
1824 config_makefile=Makefile
1825fi
1826
ee74a442
UD
1827VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1828RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1829AC_SUBST(VERSION)
ee74a442 1830AC_SUBST(RELEASE)
df4ef2ab 1831
737547be
UD
1832AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1833case $CONFIG_FILES in *config.make*)
1834echo "$config_vars" >> config.make;;
1835esac
1836test -d bits || mkdir bits], [config_vars='$config_vars'])