]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.in
Update.
[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
AO
389mips64*) base_machine=mips64
390 case "$CC $CPPFLAGS $CFLAGS " in
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
679LIBC_PROG_BINUTILS
680AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
681
682# Accept binutils 2.13 or newer.
683AC_CHECK_PROG_VER(AS, $AS, --version,
684 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
73588175 685 [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
4baa087a
RM
686AC_CHECK_PROG_VER(LD, $LD, --version,
687 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
73588175 688 [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
4baa087a 689
a4301d41
UD
690# We need the physical current working directory. We cannot use the
691# "pwd -P" shell builtin since that's not portable. Instead we try to
692# find a pwd binary. Note that assigning to the PWD environment
693# variable might have some interesting side effects, so we don't do
694# that.
695AC_PATH_PROG(PWD_P, pwd, no)
696if test "$PWD_P" = no; then
697 AC_MSG_ERROR(*** A pwd binary could not be found.)
698fi
699
63bda0c1 700# These programs are version sensitive.
3a12e572 701AC_CHECK_TOOL_PREFIX
4bca4c17 702AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
90d1d40b
RM
703 [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
704 critic_missing="$critic_missing gcc")
22e65f8f 705AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
8fc1e2ca 706 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
6b4e880f 707 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
63bda0c1 708
22e65f8f 709AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
bdd421cc 710 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
aefdff34
RM
711 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
712 MSGFMT=: aux_missing="$aux_missing msgfmt")
63bda0c1 713AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
8b7fb588 714 [GNU texinfo.* \([0-9][0-9.]*\)],
aefdff34
RM
715 [4.*],
716 MAKEINFO=: aux_missing="$aux_missing makeinfo")
d6a97a28 717AC_CHECK_PROG_VER(SED, sed, --version,
aec103d3 718 [GNU sed version \([0-9]*\.[0-9.]*\)],
aefdff34
RM
719 [3.0[2-9]*|3.[1-9]*|[4-9]*],
720 SED=: aux_missing="$aux_missing sed")
63bda0c1 721
14519931
RM
722if test "x$with_cvs" != xyes; then
723 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
724 case "x$AUTOCONF" in
725 xno|x|x:) AUTOCONF=no ;;
726 *)
727 AC_CACHE_CHECK(dnl
1400de2e 728whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
14519931
RM
729 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
730 libc_cv_autoconf_works=yes
731 else
732 libc_cv_autoconf_works=no
733 fi])
734 test $libc_cv_autoconf_works = yes || AUTOCONF=no
735 ;;
736 esac
737 test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
738fi
1400de2e 739
32a448ed
RM
740test -n "$critic_missing" && AC_MSG_ERROR([
741*** These critical programs are missing or too old:$critic_missing
742*** Check the INSTALL file for required versions.])
743
4bca4c17 744test -n "$aux_missing" && AC_MSG_WARN([
9c6fffc0 745*** These auxiliary programs are missing or incompatible versions:$aux_missing
63bda0c1
UD
746*** some features will be disabled.
747*** Check the INSTALL file for required versions.])
28f540f4 748
d01d6319
UD
749# glibcbug.in wants to know the compiler version.
750CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
751AC_SUBST(CCVERSION)
752
dbe7a0f5
UD
753# if using special system headers, find out the compiler's sekrit
754# header directory and add that to the list. NOTE: Only does the right
755# thing on a system that doesn't need fixincludes. (Not presently a problem.)
756if test -n "$sysheaders"; then
757 ccheaders=`$CC -print-file-name=include`
758 SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
759fi
760AC_SUBST(SYSINCLUDES)
761
97a47867
UD
762# check if ranlib is necessary
763AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
764cat > conftest.c <<EOF
765int a;
766char b;
767void c(void) {}
768EOF
769$CC $CFLAGS -c conftest.c
72d4c33d 770$AR cr conftest.a conftest.o
97a47867
UD
771cp conftest.a conftest2.a
772$RANLIB conftest.a
773if cmp -s conftest.a conftest2.a; then
774 libc_cv_ranlib_necessary=no
f38931a9 775else
97a47867
UD
776 libc_cv_ranlib_necessary=yes
777fi
778rm -rf conftest*])
779if test "$libc_cv_ranlib_necessary" = no; then
780 RANLIB=:
f38931a9 781fi
f38931a9 782
3911660e
UD
783# Test if LD_LIBRARY_PATH contains the notation for the current directory
784# since this would lead to problems installing/building glibc.
785# LD_LIBRARY_PATH contains the current directory if one of the following
786# is true:
787# - one of the terminals (":" and ";") is the first or last sign
788# - two terminals occur directly after each other
789# - the path contains an element with a dot in it
790AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
791changequote(,)dnl
792case ${LD_LIBRARY_PATH} in
793 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 794 ld_library_path_setting="contains current directory"
3911660e
UD
795 ;;
796 *)
797 ld_library_path_setting="ok"
798 ;;
799esac
800changequote([,])dnl
801AC_MSG_RESULT($ld_library_path_setting)
802if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
803AC_MSG_ERROR([
804*** LD_LIBRARY_PATH shouldn't contain the current directory when
805*** building glibc. Please change the environment variable
806*** and run configure again.])
3911660e 807fi
8e31cf7e 808
74bd2300
UD
809AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
810if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
811 libc_cv_gcc_static_libgcc=
812else
813 libc_cv_gcc_static_libgcc=-static-libgcc
814fi])
815AC_SUBST(libc_cv_gcc_static_libgcc)
816
84384f5b 817AC_PATH_PROG(BASH, bash, no)
a18f587d 818if test "$BASH" != no &&
f43ce637 819 $BASH -c 'test "$BASH_VERSINFO" \
6973fc01 820 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
84384f5b
UD
821 libc_cv_have_bash2=yes
822else
823 libc_cv_have_bash2=no
824fi
825AC_SUBST(libc_cv_have_bash2)
826
5290baf0
UD
827dnl We need a ksh compatible shell for tzselect.
828if test "$BASH" = no; then
829 AC_PATH_PROG(KSH, ksh, no)
830 if test "$KSH" = no; then
831 libc_cv_have_ksh=no
832 else
833 libc_cv_have_ksh=yes
834 fi
835else
836 KSH="$BASH"
837 AC_SUBST(KSH)
838 libc_cv_have_ksh=yes
839fi
840AC_SUBST(libc_cv_have_ksh)
841
5aa8ff62 842AC_PROG_AWK
c0016081 843AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
844if test "$PERL" != no &&
845 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
846 PERL=no
ecb06196 847fi
2f512715
AS
848AC_PATH_PROG(INSTALL_INFO, install-info, no,
849 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
c0016081
UD
850if test "$INSTALL_INFO" != "no"; then
851AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
852 [mkdir conftest.d
853 # There is a hard ^_ on the next line. I am open to better ideas.
854 (echo '\1f'
855 echo 'File: dir Node: Top This is the top of the INFO tree'
856 echo '* Menu:') >conftest.d/dir
857 (echo 'INFO-DIR-SECTION i-d-s works'
858 echo 'START-INFO-DIR-ENTRY'
859 echo '* Prog: (prog). Program.'
860 echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
c2f55635 861 if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AS_MESSAGE_LOG_FD 2>&1
d8cceb4f 862 then
c0016081
UD
863 if grep -s 'i-d-s works' conftest.d/dir >/dev/null
864 then libc_cv_old_debian_install_info=no
865 else libc_cv_old_debian_install_info=yes
866 fi
867 else libc_cv_old_debian_install_info=no testfailed=t
868 fi
869 rm -fr conftest.d])
870if test -n "$testfailed"
871then AC_MSG_WARN([install-info errored out, check config.log])
872fi
873OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
874fi
875AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
a2b08ee5 876
2de00372
UD
877AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
878
b8dc6a10 879AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
28f540f4
RM
880echo '#include <stddef.h>
881FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
882if eval "$ac_cpp conftest.c 2>/dev/null" \
883| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
884 libc_cv_signed_size_t=no
885else
886 libc_cv_signed_size_t=yes
887fi
888rm -f conftest*])
28f540f4
RM
889if test $libc_cv_signed_size_t = yes; then
890 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
891 cat >> confdefs.h <<\EOF
892#undef __SIZE_TYPE__
893#define __SIZE_TYPE__ unsigned
894EOF
895fi
896
b8dc6a10 897AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
898AC_TRY_COMPILE(dnl
899[#define __need_size_t
900#define __need_wchar_t
901#include <stddef.h>
902#define __need_NULL
903#include <stddef.h>], [size_t size; wchar_t wchar;
904#ifdef offsetof
905#error stddef.h ignored __need_*
906#endif
907if (&size == NULL || &wchar == NULL) abort ();],
908 libc_cv_friendly_stddef=yes,
909 libc_cv_friendly_stddef=no)])
28f540f4
RM
910if test $libc_cv_friendly_stddef = yes; then
911 config_vars="$config_vars
912override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
913fi
914
b8dc6a10
RM
915AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
916 libc_cv_need_minus_P, [dnl
28f540f4
RM
917cat > conftest.S <<EOF
918#include "confdefs.h"
919/* Nothing whatsoever. */
920EOF
61cea1c3 921if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
28f540f4
RM
922 libc_cv_need_minus_P=no
923else
924 libc_cv_need_minus_P=yes
925fi
926rm -f conftest*])
28f540f4
RM
927if test $libc_cv_need_minus_P = yes; then
928 config_vars="$config_vars
929asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
930fi
931
2293395f
UD
932AC_MSG_CHECKING(whether .text pseudo-op must be used)
933AC_CACHE_VAL(libc_cv_dot_text, [dnl
934cat > conftest.s <<EOF
935.text
936EOF
937libc_cv_dot_text=
61cea1c3 938if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
2293395f
UD
939 libc_cv_dot_text=.text
940fi
941rm -f conftest*])
942if test -z "$libc_cv_dot_text"; then
943 AC_MSG_RESULT(no)
944else
945 AC_MSG_RESULT(yes)
946fi
947
b8dc6a10
RM
948AC_CACHE_CHECK(for assembler global-symbol directive,
949 libc_cv_asm_global_directive, [dnl
9a70fcab 950libc_cv_asm_global_directive=UNKNOWN
908c3d5b 951for ac_globl in .globl .global .EXPORT; do
9a70fcab 952 cat > conftest.s <<EOF
2293395f 953 ${libc_cv_dot_text}
908c3d5b 954 ${ac_globl} foo
ae1025be 955foo:
9a70fcab 956EOF
61cea1c3 957 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a70fcab
UD
958 libc_cv_asm_global_directive=${ac_globl}
959 fi
960 rm -f conftest*
961 test $libc_cv_asm_global_directive != UNKNOWN && break
962done])
9a70fcab
UD
963if test $libc_cv_asm_global_directive = UNKNOWN; then
964 AC_MSG_ERROR(cannot determine asm global directive)
965else
966 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
967fi
968
b8dc6a10 969AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 970cat > conftest.s <<EOF
2293395f 971${libc_cv_dot_text}
ae1025be 972foo:
df2a0c93 973.set glibc_conftest_frobozz,foo
9a70fcab 974$libc_cv_asm_global_directive glibc_conftest_frobozz
e215c478 975EOF
df2a0c93
RM
976# The alpha-dec-osf1 assembler gives only a warning for `.set'
977# (but it doesn't work), so we must do a linking check to be sure.
978cat > conftest1.c <<\EOF
979extern int glibc_conftest_frobozz;
640f0119 980void _start() { glibc_conftest_frobozz = 1; }
df2a0c93
RM
981EOF
982if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
640f0119 983 -nostartfiles -nostdlib \
0b4ee387 984 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
e215c478
RM
985 libc_cv_asm_set_directive=yes
986else
987 libc_cv_asm_set_directive=no
988fi
65b3cbcb 989rm -f conftest*])
e215c478
RM
990if test $libc_cv_asm_set_directive = yes; then
991 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
992fi
993
b88ac073
RM
994AC_CACHE_CHECK(for assembler .type directive prefix,
995 libc_cv_asm_type_prefix, [dnl
996libc_cv_asm_type_prefix=no
997for ac_try_prefix in '@' '%' '#'; do
998 cat > conftest.s <<EOF
999 ${libc_cv_dot_text}
1000 ${libc_cv_asm_global_directive} foo
1001 .type foo, ${ac_try_prefix}object
1002 .size foo, 1
1003foo:
1004 .byte 1
1005EOF
61cea1c3 1006 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
b88ac073
RM
1007 libc_cv_asm_type_prefix=${ac_try_prefix}
1008 fi
1009 rm -f conftest*
1010 test "x$libc_cv_asm_type_prefix" != xno && break
1011done])
1012if test "x$libc_cv_asm_type_prefix" != xno; then
1013 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
1014fi
1015
2aa15430 1016# The Aix ld uses global .symbol_names instead of symbol_names.
92b27c74
UD
1017# Unfortunately also used in the PPC64 ELF ABI.
1018case "${os}${machine}" in
1019aix4.3* | linux*powerpc/powerpc64*)
2aa15430
UD
1020 AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
1021esac
1022
377a515b
UD
1023AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1024[cat > conftest.s <<EOF
2293395f 1025${libc_cv_dot_text}
4cca6b86 1026_sym:
377a515b
UD
1027.symver _sym,sym@VERS
1028EOF
0b4ee387 1029if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
377a515b
UD
1030 libc_cv_asm_symver_directive=yes
1031else
1032 libc_cv_asm_symver_directive=no
1033fi
1034rm -f conftest*])
1035AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1036if test $libc_cv_asm_symver_directive = yes; then
1037 cat > conftest.s <<EOF
2293395f 1038${libc_cv_dot_text}
4cca6b86 1039_sym:
377a515b
UD
1040.symver _sym,sym@VERS
1041EOF
1042 cat > conftest.map <<EOF
f43ce637 1043VERS_1 {
377a515b
UD
1044 global: sym;
1045};
f43ce637
UD
1046
1047VERS_2 {
1048 global: sym;
1049} VERS_1;
377a515b 1050EOF
0b4ee387 1051 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
5ae3e846
UD
1052 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
1053 -nostartfiles -nostdlib
ae1025be 1054 -Wl,--version-script,conftest.map
c2f55635 1055 1>&AS_MESSAGE_LOG_FD]);
377a515b
UD
1056 then
1057 libc_cv_ld_version_script_option=yes
1058 else
1059 libc_cv_ld_version_script_option=no
1060 fi
1061 else
1062 libc_cv_ld_version_script_option=no
1063 fi
1064else
1065 libc_cv_ld_version_script_option=no
1066fi
1067rm -f conftest*])
7499a22a
RM
1068if test $shared != no &&
1069 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
1070 test $libc_cv_ld_version_script_option = yes &&
1071 test $enable_versioning = yes; then
377a515b
UD
1072 VERSIONING=yes
1073 AC_DEFINE(DO_VERSIONING)
1074else
1075 VERSIONING=no
1076fi
1077AC_SUBST(VERSIONING)
1078
102a3e8f 1079if test $elf = yes && test $shared != no && test $VERSIONING = no; then
f43ce637 1080 echo "\
f4017d20 1081*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
1082*** versioning will introduce incompatibilities so that old binaries
1083*** will not run anymore.
50304ef0 1084*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 1085fi
fd26970f
UD
1086if test $elf = yes; then
1087 AC_CACHE_CHECK(for .previous assembler directive,
1088 libc_cv_asm_previous_directive, [dnl
1089 cat > conftest.s <<EOF
1090.section foo_section
1091.previous
1092EOF
c2f55635 1093 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
fd26970f
UD
1094 libc_cv_asm_previous_directive=yes
1095 else
1096 libc_cv_asm_previous_directive=no
1097 fi
1098 rm -f conftest*])
1099 if test $libc_cv_asm_previous_directive = yes; then
1100 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1101 else
1102 AC_CACHE_CHECK(for .popsection assembler directive,
1103 libc_cv_asm_popsection_directive, [dnl
1104 cat > conftest.s <<EOF
1105.pushsection foo_section
1106.popsection
1107EOF
c2f55635 1108 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
fd26970f
UD
1109 libc_cv_asm_popsection_directive=yes
1110 else
1111 libc_cv_asm_popsection_directive=no
1112 fi
1113 rm -f conftest*])
1114 if test $libc_cv_asm_popsection_directive = yes; then
1115 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1116 fi
1117 fi
2d499f55
UD
1118 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1119 libc_cv_asm_protected_directive, [dnl
1120 cat > conftest.s <<EOF
1121.protected foo
1122foo:
1123.hidden bar
1124bar:
1125EOF
c2f55635 1126 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
2d499f55
UD
1127 libc_cv_asm_protected_directive=yes
1128 else
1129 libc_cv_asm_protected_directive=no
1130 fi
1131 rm -f conftest*])
1132 AC_SUBST(libc_cv_asm_protected_directive)
5688da55 1133 AC_DEFINE(HAVE_PROTECTED)
9bd64602 1134 AC_DEFINE(HAVE_HIDDEN)
0fb7851f 1135
0d01dace
UD
1136 if test $libc_cv_asm_protected_directive = yes; then
1137 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1138 libc_cv_visibility_attribute,
1139 [cat > conftest.c <<EOF
1140 int foo __attribute__ ((visibility ("hidden"))) = 1;
1141 int bar __attribute__ ((visibility ("protected"))) = 1;
1142EOF
1143 libc_cv_visibility_attribute=no
61cea1c3 1144 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
0d01dace
UD
1145 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1146 if grep '\.protected.*bar' conftest.s >/dev/null; then
1147 libc_cv_visibility_attribute=yes
1148 fi
1149 fi
1150 fi
1151 rm -f conftest.[cs]
1152 ])
1153 if test $libc_cv_visibility_attribute = yes; then
1154 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1155 fi
1156 fi
1157
37ba7d66
UD
1158 if test $libc_cv_visibility_attribute = yes; then
1159 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1160 libc_cv_broken_visibility_attribute,
1161 [cat > conftest.c <<EOF
1162 int foo (int x);
1163 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1164 int bar (int x) { return x; }
1165EOF
1166 libc_cv_broken_visibility_attribute=yes
61cea1c3 1167 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
37ba7d66
UD
1168changequote(,)dnl
1169 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1170changequote([,])dnl
1171 libc_cv_broken_visibility_attribute=no
1172 fi
1173 fi
1174 rm -f conftest.c conftest.s
1175 ])
1176 if test $libc_cv_broken_visibility_attribute = yes; then
1177 AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1178 fi
1179 fi
1180
1181 AC_CACHE_CHECK(for broken __attribute__((alias())),
1182 libc_cv_broken_alias_attribute,
1183 [cat > conftest.c <<EOF
1184 extern int foo (int x) __asm ("xyzzy");
1185 int bar (int x) { return x; }
48b8e846
UD
1186 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1187 extern int dfoo;
1188 extern __typeof (dfoo) dfoo __asm ("abccb");
1189 int dfoo = 1;
37ba7d66
UD
1190EOF
1191 libc_cv_broken_alias_attribute=yes
61cea1c3 1192 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
48b8e846
UD
1193 if grep 'xyzzy' conftest.s >/dev/null &&
1194 grep 'abccb' conftest.s >/dev/null; then
37ba7d66
UD
1195 libc_cv_broken_alias_attribute=no
1196 fi
1197 fi
1198 rm -f conftest.c conftest.s
1199 ])
1200 if test $libc_cv_broken_alias_attribute = yes; then
1201 AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1202 fi
1203
0d01dace
UD
1204 if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1205 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1206 libc_cv_have_sdata_section,
1207 [echo "int i;" > conftest.c
1208 libc_cv_have_sdata_section=no
1209 if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1210 | grep '\.sdata' >/dev/null; then
1211 libc_cv_have_sdata_section=yes
1212 fi
1213 rm -f conftest.c conftest.so
1214 ])
1215 if test $libc_cv_have_sdata_section = yes; then
1216 AC_DEFINE(HAVE_SDATA_SECTION)
1217 fi
1218 fi
1219
5241882c
UD
1220 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1221 libc_cv_initfinit_array, [dnl
1222 cat > conftest.c <<EOF
1223int _start (void) { return 0; }
1224int __start (void) { return 0; }
1225int foo (void) { return 1; }
2c617417 1226int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
5241882c
UD
1227EOF
1228 if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
c2f55635 1229 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
5241882c
UD
1230 then
1231 if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1232 libc_cv_initfinit_array=yes
1233 else
1234 libc_cv_initfinit_array=no
1235 fi
1236 else
1237 libc_cv_initfinit_array=no
1238 fi
1239 rm -f conftest*])
1240 AC_SUBST(libc_cv_initfinit_array)
1241 if test $libc_cv_initfinit_array = yes; then
1242 AC_DEFINE(HAVE_INITFINI_ARRAY)
1243 fi
1244
0fb7851f
UD
1245 AC_CACHE_CHECK(for -z nodelete option,
1246 libc_cv_z_nodelete, [dnl
1247 cat > conftest.c <<EOF
1248int _start (void) { return 42; }
1249EOF
35cd3c97
AJ
1250 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1251 -nostartfiles -nostdlib
c2f55635 1252 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
0fb7851f
UD
1253 then
1254 libc_cv_z_nodelete=yes
1255 else
1256 libc_cv_z_nodelete=no
1257 fi
1258 rm -f conftest*])
1259 AC_SUBST(libc_cv_z_nodelete)
2f54c82d
UD
1260
1261 AC_CACHE_CHECK(for -z nodlopen option,
1262 libc_cv_z_nodlopen, [dnl
1263 cat > conftest.c <<EOF
1264int _start (void) { return 42; }
1265EOF
35cd3c97
AJ
1266 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1267 -nostartfiles -nostdlib
c2f55635 1268 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
2f54c82d
UD
1269 then
1270 libc_cv_z_nodlopen=yes
1271 else
1272 libc_cv_z_nodlopen=no
1273 fi
1274 rm -f conftest*])
1275 AC_SUBST(libc_cv_z_nodlopen)
5d916713
UD
1276
1277 AC_CACHE_CHECK(for -z initfirst option,
1278 libc_cv_z_initfirst, [dnl
1279 cat > conftest.c <<EOF
1280int _start (void) { return 42; }
1281EOF
35cd3c97
AJ
1282 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1283 -nostartfiles -nostdlib
c2f55635 1284 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
5d916713
UD
1285 then
1286 libc_cv_z_initfirst=yes
1287 else
1288 libc_cv_z_initfirst=no
1289 fi
1290 rm -f conftest*])
1291 AC_SUBST(libc_cv_z_initfirst)
639c3248
UD
1292
1293 AC_CACHE_CHECK(for -Bgroup option,
1294 libc_cv_Bgroup, [dnl
1295 cat > conftest.c <<EOF
1296int _start (void) { return 42; }
1297EOF
c2f55635 1298 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
639c3248
UD
1299 then
1300 libc_cv_Bgroup=yes
1301 else
1302 libc_cv_Bgroup=no
1303 fi
1304 rm -f conftest*])
1305 AC_SUBST(libc_cv_Bgroup)
a711b01d
UD
1306
1307 AC_CACHE_CHECK(for -z combreloc,
1308 libc_cv_z_combreloc, [dnl
1309 cat > conftest.c <<EOF
d555194c
UD
1310extern int bar (int);
1311extern int mumble;
1312int foo (void) { return bar (mumble); }
a711b01d 1313EOF
35cd3c97
AJ
1314 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1315 -nostdlib -nostartfiles
c2f55635 1316 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a711b01d
UD
1317 then
1318dnl The following test is a bit weak. We must use a tool which can test
1319dnl cross-platform since the gcc used can be a cross compiler. Without
1320dnl introducing new options this is not easily doable. Instead use a tool
1321dnl which always is cross-platform: readelf. To detect whether -z combreloc
1322dnl look for a section named .rel.dyn.
fdde8349
UD
1323 if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1324 libc_cv_z_combreloc=yes
1325 else
1326 libc_cv_z_combreloc=no
a711b01d 1327 fi
fdde8349
UD
1328 else
1329 libc_cv_z_combreloc=no
a711b01d
UD
1330 fi
1331 rm -f conftest*])
fdde8349
UD
1332 if test "$libc_cv_z_combreloc" = yes; then
1333 AC_DEFINE(HAVE_Z_COMBRELOC)
1334 fi
fd26970f 1335fi
f13df7c7 1336AC_SUBST(libc_cv_z_combreloc)
fd26970f 1337
b8dc6a10
RM
1338if test $elf != yes; then
1339 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1340 [AC_TRY_COMPILE(, [asm (".section .init");
84724245 1341 asm (".section .fini");
2293395f 1342 asm ("${libc_cv_dot_text}");],
b8dc6a10
RM
1343 libc_cv_have_initfini=yes,
1344 libc_cv_have_initfini=no)])
1345 AC_SUBST(libc_cv_have_initfini)dnl
1346 if test $libc_cv_have_initfini = yes; then
1347 AC_DEFINE(HAVE_INITFINI)
1348 fi
1349fi
e215c478 1350
e26dd47f
UD
1351if test $elf = yes -a $gnu_ld = yes; then
1352 AC_CACHE_CHECK(whether cc puts quotes around section names,
1353 libc_cv_have_section_quotes,
1354 [cat > conftest.c <<EOF
1355 static const int foo
1356 __attribute__ ((section ("bar"))) = 1;
1357EOF
1358 if ${CC-cc} -S conftest.c -o conftest.s; then
1359 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1360 libc_cv_have_section_quotes=yes
1361 else
1362 libc_cv_have_section_quotes=no
1363 fi
1364 else
1365 libc_cv_have_section_quotes=unknown
1366 fi
1367 rm -f conftest.[cs]
1368 ])
1369 if test $libc_cv_have_section_quotes = yes; then
1370 AC_DEFINE(HAVE_SECTION_QUOTES)
1371 fi
1372fi
1373
9a0a462c
UD
1374dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1375AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1376[cat > conftest.$ac_ext <<EOF
1377dnl This sometimes fails to find confdefs.h, for some reason.
1378dnl [#]line __oline__ "[$]0"
1379[#]line __oline__ "configure"
1380#include "confdefs.h"
1381void underscore_test(void) {
1382return; }
1383EOF
1384if AC_TRY_EVAL(ac_compile); then
1385 if grep _underscore_test conftest* >/dev/null; then
1386 ifelse([$1], , :, [rm -f conftest*
1387 $1])
1388 else
1389 ifelse([$2], , , [rm -f conftest*
1390 $2])
1391 fi
1392else
c2f55635
RM
1393 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1394 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
9a0a462c
UD
1395 ifelse([$2], , , [rm -f conftest*
1396 $2])
1397fi
1398rm -f conftest*])
1399
c224a18a
RM
1400if test $elf = yes; then
1401 libc_cv_asm_underscores=no
1402else
9a0a462c
UD
1403 if test $ac_cv_prog_cc_works = yes; then
1404 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1405 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1406 libc_cv_asm_underscores=yes,
1407 libc_cv_asm_underscores=no)])
1408 else
1409 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1410 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1411 libc_cv_asm_underscores=no)])
1412 fi
c224a18a
RM
1413fi
1414if test $libc_cv_asm_underscores = no; then
1415 AC_DEFINE(NO_UNDERSCORES)
1416fi
1417
1418if test $elf = yes; then
1419 libc_cv_weak_symbols=yes
9a97d1f7
UD
1420fi
1421
1422AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1423 [dnl
c224a18a 1424cat > conftest.s <<EOF
2293395f 1425${libc_cv_dot_text}
c224a18a 1426${libc_cv_asm_global_directive} foo
ae1025be 1427foo:
c224a18a
RM
1428.weak foo
1429.weak bar; bar = foo
1430EOF
61cea1c3 1431if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a97d1f7
UD
1432 libc_cv_asm_weak_directive=yes
1433else
1434 libc_cv_asm_weak_directive=no
1435fi
1436rm -f conftest*])
c224a18a 1437
c8cf0b14 1438if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1439 AC_CACHE_CHECK(for assembler .weakext directive,
1440 libc_cv_asm_weakext_directive,
1441 [dnl
1442cat > conftest.s <<EOF
2293395f 1443${libc_cv_dot_text}
c224a18a 1444${libc_cv_asm_global_directive} foo
ae1025be 1445foo:
f802accb
UD
1446.weakext bar foo
1447.weakext baz
1448${libc_cv_asm_global_directive} baz
9a97d1f7 1449baz:
c224a18a 1450EOF
61cea1c3 1451 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
c224a18a
RM
1452 libc_cv_asm_weakext_directive=yes
1453 else
1454 libc_cv_asm_weakext_directive=no
1455 fi
1456 rm -f conftest*])
1457
9a97d1f7 1458fi # no .weak
c224a18a 1459
ffcf9634 1460if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1461 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1462elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1463 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1464fi
1465
b15cb495 1466dnl The standard hppa assembler uses `;' to start comments and `!'
eacde9d0
UD
1467dnl as a line separator. CRIS uses `;' to start comments and `@' for
1468dnl line separator.
b15cb495 1469case "${host_cpu}-${host_os}" in
eacde9d0
UD
1470 cris*)
1471 libc_cv_asm_line_sep='@'
1472 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1473 ;;
b15cb495
UD
1474 hppa*linux*)
1475 AC_CACHE_CHECK(for assembler line separator,
1476 libc_cv_asm_line_sep, [dnl
1477 cat > conftest.s <<EOF
1478 nop ; is_old_puffin
1479EOF
c2f55635 1480 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
b15cb495
UD
1481 libc_cv_asm_line_sep='!'
1482 else
1483 if test -z "$enable_hacker_mode"; then
1484 echo "*** You need a newer assembler to compile glibc"
1485 rm -f conftest*
1486 exit 1
1487 fi
1488 libc_cv_asm_line_sep=';'
1489 fi
1490 rm -f conftest*])
1491 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1492 ;;
1493esac
1494
073e82bf
RM
1495AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1496 libc_cv_cpp_asm_debuginfo, [dnl
1497cat > conftest.S <<EOF
1498#include "confdefs.h"
1499
1500/* comment on
1501 two lines */
1502 ${libc_cv_dot_text}
1503 ${libc_cv_asm_global_directive} foo
1504foo:
1505 /* Unfortunately this test only works for a real instruction,
1506 not for any of the machine-independent pseudo-ops.
1507 So we just have to assume everybody has a "nop". */
1508 nop
1509 /* comment */
1510 nop
1511 /* comment */
1512 nop
1513EOF
1514if AC_TRY_COMMAND([${CC-cc} $CFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
1515 ac_pattern='conftest\.S'
1516 AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1517 grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
1518 libc_cv_cpp_asm_debuginfo=yes
1519else
1520 libc_cv_cpp_asm_debuginfo=no
1521fi
1522rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1523if test $libc_cv_cpp_asm_debuginfo = yes; then
1524 AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1525fi
1526
a641835a
RM
1527AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1528cat > conftest.c <<\EOF
5f0e6fc7 1529_start () {}
dcf0671d
UD
1530int __eh_pc;
1531__throw () {}
a641835a 1532EOF
dcea62dd
RM
1533dnl No \ in command here because it ends up inside ''.
1534if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1535 -nostdlib -nostartfiles -Wl,--no-whole-archive
c2f55635 1536 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
a641835a
RM
1537 libc_cv_ld_no_whole_archive=yes
1538else
1539 libc_cv_ld_no_whole_archive=no
1540fi
1541rm -f conftest*])
b17277cf
UD
1542if test $libc_cv_ld_no_whole_archive = yes; then
1543 no_whole_archive=-Wl,--no-whole-archive
1544fi
1545AC_SUBST(no_whole_archive)dnl
a641835a 1546
dff14448 1547AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1548cat > conftest.c <<\EOF
1549_start () {}
1550int __eh_pc;
1551__throw () {}
1552EOF
1553dnl No \ in command here because it ends up inside ''.
1554if AC_TRY_COMMAND([${CC-cc} $CFLAGS
dff14448 1555 -nostdlib -nostartfiles -fexceptions
c2f55635 1556 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
dff14448 1557 libc_cv_gcc_exceptions=yes
b236e99d 1558else
dff14448 1559 libc_cv_gcc_exceptions=no
b236e99d
UD
1560fi
1561rm -f conftest*])
dff14448
UD
1562if test $libc_cv_gcc_exceptions = yes; then
1563 exceptions=-fexceptions
b17277cf 1564fi
dff14448 1565AC_SUBST(exceptions)dnl
b236e99d 1566
66000494
UD
1567if test "$host_cpu" = powerpc ; then
1568# Check for a bug present in at least versions 2.8.x of GCC
1569# and versions 1.0.x of EGCS.
1570AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1571AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1572 libc_cv_c_asmcr0_bug='no',
1573 libc_cv_c_asmcr0_bug='yes')])
1574if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1575 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1576fi
1577fi
1578
650425ce
UD
1579AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1580[cat > conftest.c <<EOF
1581#line __oline__ "configure"
2b904739 1582static char *__EH_FRAME_BEGIN__;
650425ce
UD
1583_start ()
1584{
9756dfe1 1585#ifdef CHECK__register_frame
650425ce
UD
1586 __register_frame (__EH_FRAME_BEGIN__);
1587 __deregister_frame (__EH_FRAME_BEGIN__);
9756dfe1
UD
1588#endif
1589#ifdef CHECK__register_frame_info
1590 __register_frame_info (__EH_FRAME_BEGIN__);
1591 __deregister_frame_info (__EH_FRAME_BEGIN__);
1592#endif
650425ce
UD
1593}
1594int __eh_pc;
1595__throw () {}
1596/* FIXME: this is fragile. */
1597malloc () {}
1598strcmp () {}
1599strlen () {}
1600memcpy () {}
1601memset () {}
1602free () {}
1603abort () {}
dfd2257a 1604__bzero () {}
df17727a 1605dl_iterate_phdr () {}
650425ce 1606EOF
cd925327 1607libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
42607429
RM
1608 -nostdlib -nostartfiles -o conftest conftest.c \
1609 -lgcc"
1610# Some platforms' specs put -lgcc first. The second one doesn't hurt.
1611if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1612 AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1613then
cd925327 1614 if $libc_unwind_check -v 2>&1 >/dev/null \
2b904739
AJ
1615 | grep -q -- --eh-frame-hdr; then
1616 libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1617 else
1618 libc_cv_gcc_dwarf2_unwind_info=static
1619 fi
1620else
1621 libc_cv_gcc_dwarf2_unwind_info=no
1622fi
9756dfe1
UD
1623if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1624 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1625 -nostdlib -nostartfiles
c2f55635 1626 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
9756dfe1
UD
1627 libc_cv_gcc_dwarf2_unwind_info=yes
1628 else
1629 libc_cv_gcc_dwarf2_unwind_info=no
1630 fi
1631fi
650425ce 1632rm -f conftest*])
9756dfe1
UD
1633case $libc_cv_gcc_dwarf2_unwind_info in
1634yes)
650425ce 1635 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
9756dfe1
UD
1636 ;;
1637static)
1638 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1639 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1640 ;;
1641esac
650425ce 1642
a8eab8b1
UD
1643dnl Check whether compiler understands __builtin_expect.
1644AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1645[cat > conftest.c <<EOF
1646#line __oline__ "configure"
1647int foo (int a)
1648{
1649 a = __builtin_expect (a, 10);
1650 return a == 10 ? 0 : 1;
1651}
1652EOF
1653dnl No \ in command here because it ends up inside ''.
1654if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
c2f55635 1655 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
a8eab8b1
UD
1656 libc_cv_gcc_builtin_expect=yes
1657else
1658 libc_cv_gcc_builtin_expect=no
1659fi
1660rm -f conftest*])
1661if test "$libc_cv_gcc_builtin_expect" = yes; then
1662 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1663fi
1664
d555194c
UD
1665AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1666cat > conftest.c <<\EOF
1667void zero (void *x)
1668{
a52d1562 1669 __builtin_memset (x, 0, 1000);
d555194c
UD
1670}
1671EOF
1672dnl
1673if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1674then
1675 libc_cv_gcc_builtin_memset=no
1676else
1677 libc_cv_gcc_builtin_memset=yes
1678fi
1679rm -f conftest* ])
1680if test "$libc_cv_gcc_builtin_memset" = yes ; then
1681 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1682fi
1683
3d558f4e
UD
1684dnl Check whether the compiler supports subtraction of local labels.
1685AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1686[cat > conftest.c <<EOF
1687changequote(,)dnl
1688#line __oline__ "configure"
1689int foo (int a)
1690{
1691 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1692 void *p = &&l1 + ar[a];
1693 goto *p;
1694 l1:
1695 return 1;
1696 l2:
1697 return 2;
1698}
1699changequote([,])dnl
1700EOF
1701dnl No \ in command here because it ends up inside ''.
1702if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
c2f55635 1703 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
3d558f4e
UD
1704 libc_cv_gcc_subtract_local_labels=yes
1705else
1706 libc_cv_gcc_subtract_local_labels=no
1707fi
1708rm -f conftest*])
1709if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1710 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1711fi
1712
739d440d 1713dnl Check whether the compiler supports the __thread keyword.
5b8f26b4
RM
1714if test "x$use__thread" != xno; then
1715 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1716 [cat > conftest.c <<\EOF
fbb18522
RM
1717__thread int a = 42;
1718EOF
c2f55635 1719 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
5b8f26b4
RM
1720 libc_cv_gcc___thread=yes
1721 else
1722 libc_cv_gcc___thread=no
1723 fi
1724 rm -f conftest*])
1725 if test "$libc_cv_gcc___thread" = yes; then
1726 AC_DEFINE(HAVE___THREAD)
1727 fi
739d440d
UD
1728else
1729 libc_cv_gcc___thread=no
1730fi
739d440d 1731
9b21e6bc
RM
1732if test "$libc_cv_gcc___thread" = yes; then
1733 dnl Check whether the compiler supports the tls_model attribute.
1734 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1735 cat > conftest.c <<\EOF
1736extern __thread int a __attribute__((tls_model ("initial-exec")));
1737EOF
c2f55635 1738 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
9b21e6bc
RM
1739 libc_cv_gcc_tls_model_attr=yes
1740 else
1741 libc_cv_gcc_tls_model_attr=no
1742 fi
1743 rm -f conftest*])
1744 if test "$libc_cv_gcc_tls_model_attr" = yes; then
1745 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1746 fi
1747fi
739d440d 1748
c8f3e6db
UD
1749dnl Check whether we have the gd library available.
1750AC_MSG_CHECKING(for libgd)
6dab8688
UD
1751if test "$with_gd" != "no"; then
1752 old_CFLAGS="$CFLAGS"
1753 CFLAGS="$CFLAGS $libgd_include"
1754 old_LDFLAGS="$LDFLAGS"
1755 LDFLAGS="$LDFLAGS $libgd_ldflags"
1756 old_LIBS="$LIBS"
1757 LIBS="$LIBS -lgd -lpng -lz -lm"
1758 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1759 CFLAGS="$old_CFLAGS"
1760 LDFLAGS="$old_LDFLAGS"
1761 LIBS="$old_LIBS"
1762else
1763 LIBGD=no
1764fi
c8f3e6db
UD
1765AC_MSG_RESULT($LIBGD)
1766AC_SUBST(LIBGD)
3d558f4e 1767
8ed1e7d5
GK
1768dnl check for the size of 'long double'.
1769AC_CHECK_SIZEOF(long double, 0)
1770sizeof_long_double=$ac_cv_sizeof_long_double
1771AC_SUBST(sizeof_long_double)
1772
c224a18a
RM
1773### End of automated tests.
1774### Now run sysdeps configure fragments.
1775
cb343854 1776# They also can set these variables.
591e1ffb 1777use_ldconfig=no
cb343854 1778ldd_rewrite_script=no
77259608 1779libc_cv_sysconfdir=$sysconfdir
74bd2300 1780libc_cv_gcc_unwind_find_fde=no
cb343854 1781
28f540f4
RM
1782# Iterate over all the sysdep directories we will use, running their
1783# configure fragments, and looking for a uname implementation.
1784uname=
1785for dir in $sysnames; do
57ba7bb4
UD
1786 case $dir in
1787 /*) dest=$dir ;;
1788 *) dest=$srcdir/$dir ;;
1789 esac
1790 if test -r $dest/configure; then
d1149385 1791 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 1792 . $dest/configure
28f540f4 1793 fi
4ca84cff 1794[
28f540f4 1795 if test -z "$uname"; then
e7f1f046
UD
1796 if test -r $dest/uname.c ||
1797 test -r $dest/uname.S ||
1798 { test -r $dest/syscalls.list &&
1799 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
b86199fb 1800 uname=$dir
4ca84cff 1801 fi
28f540f4 1802 fi
4ca84cff 1803]dnl
28f540f4
RM
1804done
1805
74bd2300
UD
1806if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1807 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1808fi
1809AC_SUBST(libc_cv_gcc_unwind_find_fde)
1810
28f540f4
RM
1811# If we will use the generic uname implementation, we must figure out what
1812# it will say by examining the system, and write the results in config-name.h.
e7f1f046 1813if test "$uname" = "sysdeps/generic"; then
28f540f4
RM
1814
1815changequote(,)dnl
1816 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1817changequote([,])dnl
1818 if test $uname_sysname != $config_os; then
1819 config_release=`echo $config_os | sed s/$uname_sysname//`
1820 fi
1821dnl
1822AC_DEFUN(LIBC_KERNEL_ID, [dnl
1823 if test -r /vmunix; then
1824 kernel_id=`strings /vmunix | grep UNIX`
1825 elif test -r /dynix; then
1826 kernel_id=`strings /dynix | grep DYNIX`
1827 else
1828 kernel_id=
1829 fi
1830])dnl
1831
b8dc6a10 1832 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
3a12e572 1833LIBC_KERNEL_ID
28f540f4
RM
1834changequote(,)dnl
1835 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1836changequote([,])dnl
1837 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1838 != x$config_release; then
1839 # The configuration release is a substring of the kernel release.
1840 libc_cv_uname_release=$kernel_release
1841 elif test x$config_release != x; then
1842 libc_cv_uname_release=$config_release
1843 elif test x$kernel_release != x; then
1844 libc_cv_uname_release=$kernel_release
1845 else
1846 libc_cv_uname_release=unknown
1847 fi])
28f540f4
RM
1848 uname_release="$libc_cv_uname_release"
1849
b8dc6a10 1850 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
3a12e572 1851LIBC_KERNEL_ID
28f540f4
RM
1852changequote(,)dnl
1853 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1854changequote([,])dnl
1855 if test -n "$kernel_version"; then
1856 libc_cv_uname_version="$kernel_version"
1857 else
1858 libc_cv_uname_version=unknown
1859 fi])
28f540f4
RM
1860 uname_version="$libc_cv_uname_version"
1861
1862AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1863 config_uname=config-name.h:config-name.in
1864else
1865 # For non-generic uname, we don't need to create config-name.h at all.
1866 config_uname=
1867fi
1868
a8c01776
RM
1869dnl This is tested by existing code and it's simpler to avoid changing it.
1870AC_DEFINE(USE_IN_LIBIO)
96aa2d94 1871
a53bad16
UD
1872# Test for old glibc 2.0.x headers so that they can be removed properly
1873# Search only in includedir.
1874AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 1875if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
1876then
1877 old_glibc_headers=yes
1878else
1879 old_glibc_headers=no
1880fi
1881AC_MSG_RESULT($old_glibc_headers)
1882if test ${old_glibc_headers} = yes; then
1883 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1884 AC_MSG_WARN(*** be removed.)
1885fi
b195f6bc 1886AC_SUBST(old_glibc_headers)
26b4d766 1887
84384f5b 1888AC_SUBST(libc_cv_slibdir)
a1d84548 1889AC_SUBST(libc_cv_localedir)
77259608 1890AC_SUBST(libc_cv_sysconfdir)
1ef32c3d
UD
1891AC_SUBST(libc_cv_rootsbindir)
1892
591e1ffb 1893AC_SUBST(use_ldconfig)
cb343854 1894AC_SUBST(ldd_rewrite_script)
84384f5b 1895
5af3245a 1896AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
28f540f4
RM
1897if test $gnu_ld = yes; then
1898 AC_DEFINE(HAVE_GNU_LD)
1899fi
1900if test $gnu_as = yes; then
1901 AC_DEFINE(HAVE_GNU_AS)
1902fi
1903if test $elf = yes; then
1904 AC_DEFINE(HAVE_ELF)
1905fi
5af3245a
UD
1906if test $xcoff = yes; then
1907 AC_DEFINE(HAVE_XCOFF)
1908fi
28f540f4 1909
650425ce 1910AC_SUBST(static)
ff3d7ed3
RM
1911AC_SUBST(shared)
1912if test $shared = default; then
1913 if test $gnu_ld = yes; then
1914 shared=$elf
f65fd747
UD
1915 else
1916 # For now we do not assume shared libs are available. In future more
1917 # tests might become available.
1918 shared=no
ff3d7ed3
RM
1919 fi
1920fi
cc3fa755
UD
1921
1922AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1923[pic_default=yes
1924cat > conftest.c <<EOF
9756dfe1 1925#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1926# error PIC is default.
1927#endif
1928EOF
0b4ee387 1929if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
cc3fa755
UD
1930 pic_default=no
1931fi
1932rm -f conftest.*])
1933AC_SUBST(pic_default)
1934
ff3d7ed3
RM
1935AC_SUBST(profile)
1936AC_SUBST(omitfp)
5a97622d 1937AC_SUBST(bounded)
5107cf1d 1938AC_SUBST(static_nss)
5ae3e846 1939AC_SUBST(nopic_initfini)
ff3d7ed3 1940
edf5b2d7
UD
1941AC_SUBST(DEFINES)
1942
7cabd57c
UD
1943case "$add_ons" in
1944 *door*) linux_doors=yes ;;
1945 *) linux_doors=no ;;
1946esac
1947AC_SUBST(linux_doors)
1948
61c83c3f
RM
1949dnl See sysdeps/mach/configure.in for this variable.
1950AC_SUBST(mach_interface_list)
1951
28f540f4
RM
1952if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1953 config_makefile=
1954else
1955 config_makefile=Makefile
1956fi
1957
ee74a442
UD
1958VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1959RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1960AC_SUBST(VERSION)
ee74a442 1961AC_SUBST(RELEASE)
df4ef2ab 1962
c118d634
RM
1963AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
1964AC_CONFIG_COMMANDS([default],[[
737547be
UD
1965case $CONFIG_FILES in *config.make*)
1966echo "$config_vars" >> config.make;;
1967esac
c118d634
RM
1968test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1969AC_OUTPUT