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