]> sourceware.org Git - glibc.git/blame - configure.in
Update.
[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
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
3217788f 769$CC $CFLAGS $CPPFLAGS -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
3217788f 921if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -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=
3217788f 938if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -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
3217788f 957 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -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
3217788f 1006 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -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
3217788f 1029if ${CC-cc} -c $ASFLAGS 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
3217788f
RM
1051 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1052 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1053 -o conftest.so conftest.o
1054 -nostartfiles -nostdlib
1055 -Wl,--version-script,conftest.map
c2f55635 1056 1>&AS_MESSAGE_LOG_FD]);
377a515b
UD
1057 then
1058 libc_cv_ld_version_script_option=yes
1059 else
1060 libc_cv_ld_version_script_option=no
1061 fi
1062 else
1063 libc_cv_ld_version_script_option=no
1064 fi
1065else
1066 libc_cv_ld_version_script_option=no
1067fi
1068rm -f conftest*])
7499a22a
RM
1069if test $shared != no &&
1070 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
1071 test $libc_cv_ld_version_script_option = yes &&
1072 test $enable_versioning = yes; then
377a515b
UD
1073 VERSIONING=yes
1074 AC_DEFINE(DO_VERSIONING)
1075else
1076 VERSIONING=no
1077fi
1078AC_SUBST(VERSIONING)
1079
102a3e8f 1080if test $elf = yes && test $shared != no && test $VERSIONING = no; then
f43ce637 1081 echo "\
f4017d20 1082*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
1083*** versioning will introduce incompatibilities so that old binaries
1084*** will not run anymore.
50304ef0 1085*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 1086fi
fd26970f
UD
1087if test $elf = yes; then
1088 AC_CACHE_CHECK(for .previous assembler directive,
1089 libc_cv_asm_previous_directive, [dnl
1090 cat > conftest.s <<EOF
1091.section foo_section
1092.previous
1093EOF
3217788f 1094 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
fd26970f
UD
1095 libc_cv_asm_previous_directive=yes
1096 else
1097 libc_cv_asm_previous_directive=no
1098 fi
1099 rm -f conftest*])
1100 if test $libc_cv_asm_previous_directive = yes; then
1101 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1102 else
1103 AC_CACHE_CHECK(for .popsection assembler directive,
1104 libc_cv_asm_popsection_directive, [dnl
1105 cat > conftest.s <<EOF
1106.pushsection foo_section
1107.popsection
1108EOF
3217788f 1109 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
fd26970f
UD
1110 libc_cv_asm_popsection_directive=yes
1111 else
1112 libc_cv_asm_popsection_directive=no
1113 fi
1114 rm -f conftest*])
1115 if test $libc_cv_asm_popsection_directive = yes; then
1116 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1117 fi
1118 fi
2d499f55
UD
1119 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1120 libc_cv_asm_protected_directive, [dnl
1121 cat > conftest.s <<EOF
1122.protected foo
1123foo:
1124.hidden bar
1125bar:
1126EOF
3217788f 1127 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
2d499f55
UD
1128 libc_cv_asm_protected_directive=yes
1129 else
1130 libc_cv_asm_protected_directive=no
1131 fi
1132 rm -f conftest*])
1133 AC_SUBST(libc_cv_asm_protected_directive)
5688da55 1134 AC_DEFINE(HAVE_PROTECTED)
9bd64602 1135 AC_DEFINE(HAVE_HIDDEN)
0fb7851f 1136
0d01dace
UD
1137 if test $libc_cv_asm_protected_directive = yes; then
1138 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1139 libc_cv_visibility_attribute,
1140 [cat > conftest.c <<EOF
1141 int foo __attribute__ ((visibility ("hidden"))) = 1;
1142 int bar __attribute__ ((visibility ("protected"))) = 1;
1143EOF
1144 libc_cv_visibility_attribute=no
61cea1c3 1145 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
0d01dace
UD
1146 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1147 if grep '\.protected.*bar' conftest.s >/dev/null; then
1148 libc_cv_visibility_attribute=yes
1149 fi
1150 fi
1151 fi
1152 rm -f conftest.[cs]
1153 ])
1154 if test $libc_cv_visibility_attribute = yes; then
1155 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1156 fi
1157 fi
1158
37ba7d66
UD
1159 if test $libc_cv_visibility_attribute = yes; then
1160 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1161 libc_cv_broken_visibility_attribute,
1162 [cat > conftest.c <<EOF
1163 int foo (int x);
1164 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1165 int bar (int x) { return x; }
1166EOF
1167 libc_cv_broken_visibility_attribute=yes
61cea1c3 1168 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
37ba7d66
UD
1169changequote(,)dnl
1170 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1171changequote([,])dnl
1172 libc_cv_broken_visibility_attribute=no
1173 fi
1174 fi
1175 rm -f conftest.c conftest.s
1176 ])
1177 if test $libc_cv_broken_visibility_attribute = yes; then
1178 AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1179 fi
1180 fi
1181
1182 AC_CACHE_CHECK(for broken __attribute__((alias())),
1183 libc_cv_broken_alias_attribute,
1184 [cat > conftest.c <<EOF
1185 extern int foo (int x) __asm ("xyzzy");
1186 int bar (int x) { return x; }
48b8e846
UD
1187 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1188 extern int dfoo;
1189 extern __typeof (dfoo) dfoo __asm ("abccb");
1190 int dfoo = 1;
37ba7d66
UD
1191EOF
1192 libc_cv_broken_alias_attribute=yes
61cea1c3 1193 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
48b8e846
UD
1194 if grep 'xyzzy' conftest.s >/dev/null &&
1195 grep 'abccb' conftest.s >/dev/null; then
37ba7d66
UD
1196 libc_cv_broken_alias_attribute=no
1197 fi
1198 fi
1199 rm -f conftest.c conftest.s
1200 ])
1201 if test $libc_cv_broken_alias_attribute = yes; then
1202 AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1203 fi
1204
0d01dace
UD
1205 if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1206 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1207 libc_cv_have_sdata_section,
1208 [echo "int i;" > conftest.c
1209 libc_cv_have_sdata_section=no
3217788f 1210 if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
0d01dace
UD
1211 | grep '\.sdata' >/dev/null; then
1212 libc_cv_have_sdata_section=yes
1213 fi
1214 rm -f conftest.c conftest.so
1215 ])
1216 if test $libc_cv_have_sdata_section = yes; then
1217 AC_DEFINE(HAVE_SDATA_SECTION)
1218 fi
1219 fi
1220
5241882c
UD
1221 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1222 libc_cv_initfinit_array, [dnl
1223 cat > conftest.c <<EOF
1224int _start (void) { return 0; }
1225int __start (void) { return 0; }
1226int foo (void) { return 1; }
2c617417 1227int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
5241882c 1228EOF
3217788f 1229 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
c2f55635 1230 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
5241882c
UD
1231 then
1232 if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1233 libc_cv_initfinit_array=yes
1234 else
1235 libc_cv_initfinit_array=no
1236 fi
1237 else
1238 libc_cv_initfinit_array=no
1239 fi
1240 rm -f conftest*])
1241 AC_SUBST(libc_cv_initfinit_array)
1242 if test $libc_cv_initfinit_array = yes; then
1243 AC_DEFINE(HAVE_INITFINI_ARRAY)
1244 fi
1245
0fb7851f
UD
1246 AC_CACHE_CHECK(for -z nodelete option,
1247 libc_cv_z_nodelete, [dnl
1248 cat > conftest.c <<EOF
1249int _start (void) { return 42; }
1250EOF
3217788f
RM
1251 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1252 -shared -o conftest.so conftest.c
35cd3c97 1253 -nostartfiles -nostdlib
c2f55635 1254 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
0fb7851f
UD
1255 then
1256 libc_cv_z_nodelete=yes
1257 else
1258 libc_cv_z_nodelete=no
1259 fi
1260 rm -f conftest*])
1261 AC_SUBST(libc_cv_z_nodelete)
2f54c82d
UD
1262
1263 AC_CACHE_CHECK(for -z nodlopen option,
1264 libc_cv_z_nodlopen, [dnl
1265 cat > conftest.c <<EOF
1266int _start (void) { return 42; }
1267EOF
3217788f
RM
1268 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1269 -shared -o conftest.so conftest.c
35cd3c97 1270 -nostartfiles -nostdlib
c2f55635 1271 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
2f54c82d
UD
1272 then
1273 libc_cv_z_nodlopen=yes
1274 else
1275 libc_cv_z_nodlopen=no
1276 fi
1277 rm -f conftest*])
1278 AC_SUBST(libc_cv_z_nodlopen)
5d916713
UD
1279
1280 AC_CACHE_CHECK(for -z initfirst option,
1281 libc_cv_z_initfirst, [dnl
1282 cat > conftest.c <<EOF
1283int _start (void) { return 42; }
1284EOF
3217788f
RM
1285 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1286 -shared -o conftest.so conftest.c
35cd3c97 1287 -nostartfiles -nostdlib
c2f55635 1288 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
5d916713
UD
1289 then
1290 libc_cv_z_initfirst=yes
1291 else
1292 libc_cv_z_initfirst=no
1293 fi
1294 rm -f conftest*])
1295 AC_SUBST(libc_cv_z_initfirst)
639c3248
UD
1296
1297 AC_CACHE_CHECK(for -Bgroup option,
1298 libc_cv_Bgroup, [dnl
1299 cat > conftest.c <<EOF
1300int _start (void) { return 42; }
1301EOF
3217788f
RM
1302 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1303 -shared -o conftest.so conftest.c
1304 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
639c3248
UD
1305 then
1306 libc_cv_Bgroup=yes
1307 else
1308 libc_cv_Bgroup=no
1309 fi
1310 rm -f conftest*])
1311 AC_SUBST(libc_cv_Bgroup)
a711b01d
UD
1312
1313 AC_CACHE_CHECK(for -z combreloc,
1314 libc_cv_z_combreloc, [dnl
1315 cat > conftest.c <<EOF
d555194c
UD
1316extern int bar (int);
1317extern int mumble;
1318int foo (void) { return bar (mumble); }
a711b01d 1319EOF
3217788f
RM
1320 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1321 -shared -o conftest.so conftest.c
35cd3c97 1322 -nostdlib -nostartfiles
c2f55635 1323 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a711b01d
UD
1324 then
1325dnl The following test is a bit weak. We must use a tool which can test
1326dnl cross-platform since the gcc used can be a cross compiler. Without
1327dnl introducing new options this is not easily doable. Instead use a tool
1328dnl which always is cross-platform: readelf. To detect whether -z combreloc
1329dnl look for a section named .rel.dyn.
fdde8349
UD
1330 if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1331 libc_cv_z_combreloc=yes
1332 else
1333 libc_cv_z_combreloc=no
a711b01d 1334 fi
fdde8349
UD
1335 else
1336 libc_cv_z_combreloc=no
a711b01d
UD
1337 fi
1338 rm -f conftest*])
fdde8349
UD
1339 if test "$libc_cv_z_combreloc" = yes; then
1340 AC_DEFINE(HAVE_Z_COMBRELOC)
1341 fi
fd26970f 1342fi
f13df7c7 1343AC_SUBST(libc_cv_z_combreloc)
fd26970f 1344
b8dc6a10
RM
1345if test $elf != yes; then
1346 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1347 [AC_TRY_COMPILE(, [asm (".section .init");
84724245 1348 asm (".section .fini");
2293395f 1349 asm ("${libc_cv_dot_text}");],
b8dc6a10
RM
1350 libc_cv_have_initfini=yes,
1351 libc_cv_have_initfini=no)])
1352 AC_SUBST(libc_cv_have_initfini)dnl
1353 if test $libc_cv_have_initfini = yes; then
1354 AC_DEFINE(HAVE_INITFINI)
1355 fi
1356fi
e215c478 1357
e26dd47f
UD
1358if test $elf = yes -a $gnu_ld = yes; then
1359 AC_CACHE_CHECK(whether cc puts quotes around section names,
1360 libc_cv_have_section_quotes,
1361 [cat > conftest.c <<EOF
1362 static const int foo
1363 __attribute__ ((section ("bar"))) = 1;
1364EOF
1365 if ${CC-cc} -S conftest.c -o conftest.s; then
1366 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1367 libc_cv_have_section_quotes=yes
1368 else
1369 libc_cv_have_section_quotes=no
1370 fi
1371 else
1372 libc_cv_have_section_quotes=unknown
1373 fi
1374 rm -f conftest.[cs]
1375 ])
1376 if test $libc_cv_have_section_quotes = yes; then
1377 AC_DEFINE(HAVE_SECTION_QUOTES)
1378 fi
1379fi
1380
9a0a462c
UD
1381dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1382AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1383[cat > conftest.$ac_ext <<EOF
1384dnl This sometimes fails to find confdefs.h, for some reason.
1385dnl [#]line __oline__ "[$]0"
1386[#]line __oline__ "configure"
1387#include "confdefs.h"
1388void underscore_test(void) {
1389return; }
1390EOF
1391if AC_TRY_EVAL(ac_compile); then
1392 if grep _underscore_test conftest* >/dev/null; then
1393 ifelse([$1], , :, [rm -f conftest*
1394 $1])
1395 else
1396 ifelse([$2], , , [rm -f conftest*
1397 $2])
1398 fi
1399else
c2f55635
RM
1400 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1401 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
9a0a462c
UD
1402 ifelse([$2], , , [rm -f conftest*
1403 $2])
1404fi
1405rm -f conftest*])
1406
c224a18a
RM
1407if test $elf = yes; then
1408 libc_cv_asm_underscores=no
1409else
9a0a462c
UD
1410 if test $ac_cv_prog_cc_works = yes; then
1411 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1412 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1413 libc_cv_asm_underscores=yes,
1414 libc_cv_asm_underscores=no)])
1415 else
1416 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1417 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1418 libc_cv_asm_underscores=no)])
1419 fi
c224a18a
RM
1420fi
1421if test $libc_cv_asm_underscores = no; then
1422 AC_DEFINE(NO_UNDERSCORES)
1423fi
1424
1425if test $elf = yes; then
1426 libc_cv_weak_symbols=yes
9a97d1f7
UD
1427fi
1428
1429AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1430 [dnl
c224a18a 1431cat > conftest.s <<EOF
2293395f 1432${libc_cv_dot_text}
c224a18a 1433${libc_cv_asm_global_directive} foo
ae1025be 1434foo:
c224a18a
RM
1435.weak foo
1436.weak bar; bar = foo
1437EOF
3217788f 1438if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a97d1f7
UD
1439 libc_cv_asm_weak_directive=yes
1440else
1441 libc_cv_asm_weak_directive=no
1442fi
1443rm -f conftest*])
c224a18a 1444
c8cf0b14 1445if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1446 AC_CACHE_CHECK(for assembler .weakext directive,
1447 libc_cv_asm_weakext_directive,
1448 [dnl
1449cat > conftest.s <<EOF
2293395f 1450${libc_cv_dot_text}
c224a18a 1451${libc_cv_asm_global_directive} foo
ae1025be 1452foo:
f802accb
UD
1453.weakext bar foo
1454.weakext baz
1455${libc_cv_asm_global_directive} baz
9a97d1f7 1456baz:
c224a18a 1457EOF
3217788f 1458 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
c224a18a
RM
1459 libc_cv_asm_weakext_directive=yes
1460 else
1461 libc_cv_asm_weakext_directive=no
1462 fi
1463 rm -f conftest*])
1464
9a97d1f7 1465fi # no .weak
c224a18a 1466
ffcf9634 1467if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1468 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1469elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1470 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1471fi
1472
b15cb495 1473dnl The standard hppa assembler uses `;' to start comments and `!'
eacde9d0
UD
1474dnl as a line separator. CRIS uses `;' to start comments and `@' for
1475dnl line separator.
b15cb495 1476case "${host_cpu}-${host_os}" in
eacde9d0
UD
1477 cris*)
1478 libc_cv_asm_line_sep='@'
1479 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1480 ;;
b15cb495
UD
1481 hppa*linux*)
1482 AC_CACHE_CHECK(for assembler line separator,
1483 libc_cv_asm_line_sep, [dnl
1484 cat > conftest.s <<EOF
1485 nop ; is_old_puffin
1486EOF
3217788f 1487 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
b15cb495
UD
1488 libc_cv_asm_line_sep='!'
1489 else
1490 if test -z "$enable_hacker_mode"; then
1491 echo "*** You need a newer assembler to compile glibc"
1492 rm -f conftest*
1493 exit 1
1494 fi
1495 libc_cv_asm_line_sep=';'
1496 fi
1497 rm -f conftest*])
1498 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1499 ;;
1500esac
1501
073e82bf
RM
1502AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1503 libc_cv_cpp_asm_debuginfo, [dnl
1504cat > conftest.S <<EOF
1505#include "confdefs.h"
1506
1507/* comment on
1508 two lines */
1509 ${libc_cv_dot_text}
1510 ${libc_cv_asm_global_directive} foo
1511foo:
1512 /* Unfortunately this test only works for a real instruction,
1513 not for any of the machine-independent pseudo-ops.
1514 So we just have to assume everybody has a "nop". */
1515 nop
1516 /* comment */
1517 nop
1518 /* comment */
1519 nop
1520EOF
3217788f 1521if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
073e82bf
RM
1522 ac_pattern='conftest\.S'
1523 AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1524 grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
1525 libc_cv_cpp_asm_debuginfo=yes
1526else
1527 libc_cv_cpp_asm_debuginfo=no
1528fi
1529rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1530if test $libc_cv_cpp_asm_debuginfo = yes; then
1531 AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1532fi
1533
a641835a
RM
1534AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1535cat > conftest.c <<\EOF
5f0e6fc7 1536_start () {}
dcf0671d
UD
1537int __eh_pc;
1538__throw () {}
a641835a 1539EOF
dcea62dd 1540dnl No \ in command here because it ends up inside ''.
3217788f 1541if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dcea62dd 1542 -nostdlib -nostartfiles -Wl,--no-whole-archive
c2f55635 1543 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
a641835a
RM
1544 libc_cv_ld_no_whole_archive=yes
1545else
1546 libc_cv_ld_no_whole_archive=no
1547fi
1548rm -f conftest*])
b17277cf
UD
1549if test $libc_cv_ld_no_whole_archive = yes; then
1550 no_whole_archive=-Wl,--no-whole-archive
1551fi
1552AC_SUBST(no_whole_archive)dnl
a641835a 1553
dff14448 1554AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1555cat > conftest.c <<\EOF
1556_start () {}
1557int __eh_pc;
1558__throw () {}
1559EOF
1560dnl No \ in command here because it ends up inside ''.
3217788f 1561if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dff14448 1562 -nostdlib -nostartfiles -fexceptions
c2f55635 1563 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
dff14448 1564 libc_cv_gcc_exceptions=yes
b236e99d 1565else
dff14448 1566 libc_cv_gcc_exceptions=no
b236e99d
UD
1567fi
1568rm -f conftest*])
dff14448
UD
1569if test $libc_cv_gcc_exceptions = yes; then
1570 exceptions=-fexceptions
b17277cf 1571fi
dff14448 1572AC_SUBST(exceptions)dnl
b236e99d 1573
66000494
UD
1574if test "$host_cpu" = powerpc ; then
1575# Check for a bug present in at least versions 2.8.x of GCC
1576# and versions 1.0.x of EGCS.
1577AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1578AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1579 libc_cv_c_asmcr0_bug='no',
1580 libc_cv_c_asmcr0_bug='yes')])
1581if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1582 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1583fi
1584fi
1585
650425ce
UD
1586AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1587[cat > conftest.c <<EOF
1588#line __oline__ "configure"
2b904739 1589static char *__EH_FRAME_BEGIN__;
650425ce
UD
1590_start ()
1591{
9756dfe1 1592#ifdef CHECK__register_frame
650425ce
UD
1593 __register_frame (__EH_FRAME_BEGIN__);
1594 __deregister_frame (__EH_FRAME_BEGIN__);
9756dfe1
UD
1595#endif
1596#ifdef CHECK__register_frame_info
1597 __register_frame_info (__EH_FRAME_BEGIN__);
1598 __deregister_frame_info (__EH_FRAME_BEGIN__);
1599#endif
650425ce
UD
1600}
1601int __eh_pc;
1602__throw () {}
1603/* FIXME: this is fragile. */
1604malloc () {}
1605strcmp () {}
1606strlen () {}
1607memcpy () {}
1608memset () {}
1609free () {}
1610abort () {}
dfd2257a 1611__bzero () {}
df17727a 1612dl_iterate_phdr () {}
650425ce 1613EOF
3217788f
RM
1614libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1615 $LDFLAGS \
42607429
RM
1616 -nostdlib -nostartfiles -o conftest conftest.c \
1617 -lgcc"
1618# Some platforms' specs put -lgcc first. The second one doesn't hurt.
1619if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1620 AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1621then
cd925327 1622 if $libc_unwind_check -v 2>&1 >/dev/null \
2b904739
AJ
1623 | grep -q -- --eh-frame-hdr; then
1624 libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1625 else
1626 libc_cv_gcc_dwarf2_unwind_info=static
1627 fi
1628else
1629 libc_cv_gcc_dwarf2_unwind_info=no
1630fi
9756dfe1 1631if test $libc_cv_gcc_dwarf2_unwind_info = no; then
3217788f
RM
1632 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1633 $LDFLAGS -nostdlib -nostartfiles
c2f55635 1634 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
9756dfe1
UD
1635 libc_cv_gcc_dwarf2_unwind_info=yes
1636 else
1637 libc_cv_gcc_dwarf2_unwind_info=no
1638 fi
1639fi
650425ce 1640rm -f conftest*])
9756dfe1
UD
1641case $libc_cv_gcc_dwarf2_unwind_info in
1642yes)
650425ce 1643 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
9756dfe1
UD
1644 ;;
1645static)
1646 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1647 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1648 ;;
1649esac
650425ce 1650
a8eab8b1
UD
1651dnl Check whether compiler understands __builtin_expect.
1652AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1653[cat > conftest.c <<EOF
1654#line __oline__ "configure"
1655int foo (int a)
1656{
1657 a = __builtin_expect (a, 10);
1658 return a == 10 ? 0 : 1;
1659}
1660EOF
1661dnl No \ in command here because it ends up inside ''.
3217788f 1662if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
c2f55635 1663 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
a8eab8b1
UD
1664 libc_cv_gcc_builtin_expect=yes
1665else
1666 libc_cv_gcc_builtin_expect=no
1667fi
1668rm -f conftest*])
1669if test "$libc_cv_gcc_builtin_expect" = yes; then
1670 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1671fi
1672
d555194c
UD
1673AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1674cat > conftest.c <<\EOF
1675void zero (void *x)
1676{
a52d1562 1677 __builtin_memset (x, 0, 1000);
d555194c
UD
1678}
1679EOF
1680dnl
1681if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1682then
1683 libc_cv_gcc_builtin_memset=no
1684else
1685 libc_cv_gcc_builtin_memset=yes
1686fi
1687rm -f conftest* ])
1688if test "$libc_cv_gcc_builtin_memset" = yes ; then
1689 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1690fi
1691
3d558f4e
UD
1692dnl Check whether the compiler supports subtraction of local labels.
1693AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1694[cat > conftest.c <<EOF
1695changequote(,)dnl
1696#line __oline__ "configure"
1697int foo (int a)
1698{
1699 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1700 void *p = &&l1 + ar[a];
1701 goto *p;
1702 l1:
1703 return 1;
1704 l2:
1705 return 2;
1706}
1707changequote([,])dnl
1708EOF
1709dnl No \ in command here because it ends up inside ''.
3217788f 1710if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
c2f55635 1711 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
3d558f4e
UD
1712 libc_cv_gcc_subtract_local_labels=yes
1713else
1714 libc_cv_gcc_subtract_local_labels=no
1715fi
1716rm -f conftest*])
1717if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1718 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1719fi
1720
739d440d 1721dnl Check whether the compiler supports the __thread keyword.
5b8f26b4
RM
1722if test "x$use__thread" != xno; then
1723 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1724 [cat > conftest.c <<\EOF
fbb18522
RM
1725__thread int a = 42;
1726EOF
3217788f 1727 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
5b8f26b4
RM
1728 libc_cv_gcc___thread=yes
1729 else
1730 libc_cv_gcc___thread=no
1731 fi
1732 rm -f conftest*])
1733 if test "$libc_cv_gcc___thread" = yes; then
1734 AC_DEFINE(HAVE___THREAD)
1735 fi
739d440d
UD
1736else
1737 libc_cv_gcc___thread=no
1738fi
739d440d 1739
9b21e6bc
RM
1740if test "$libc_cv_gcc___thread" = yes; then
1741 dnl Check whether the compiler supports the tls_model attribute.
1742 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1743 cat > conftest.c <<\EOF
1744extern __thread int a __attribute__((tls_model ("initial-exec")));
1745EOF
3217788f 1746 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
9b21e6bc
RM
1747 libc_cv_gcc_tls_model_attr=yes
1748 else
1749 libc_cv_gcc_tls_model_attr=no
1750 fi
1751 rm -f conftest*])
1752 if test "$libc_cv_gcc_tls_model_attr" = yes; then
1753 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1754 fi
1755fi
739d440d 1756
c8f3e6db
UD
1757dnl Check whether we have the gd library available.
1758AC_MSG_CHECKING(for libgd)
6dab8688
UD
1759if test "$with_gd" != "no"; then
1760 old_CFLAGS="$CFLAGS"
1761 CFLAGS="$CFLAGS $libgd_include"
1762 old_LDFLAGS="$LDFLAGS"
1763 LDFLAGS="$LDFLAGS $libgd_ldflags"
1764 old_LIBS="$LIBS"
1765 LIBS="$LIBS -lgd -lpng -lz -lm"
1766 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1767 CFLAGS="$old_CFLAGS"
1768 LDFLAGS="$old_LDFLAGS"
1769 LIBS="$old_LIBS"
1770else
1771 LIBGD=no
1772fi
c8f3e6db
UD
1773AC_MSG_RESULT($LIBGD)
1774AC_SUBST(LIBGD)
3d558f4e 1775
8ed1e7d5
GK
1776dnl check for the size of 'long double'.
1777AC_CHECK_SIZEOF(long double, 0)
1778sizeof_long_double=$ac_cv_sizeof_long_double
1779AC_SUBST(sizeof_long_double)
1780
c224a18a
RM
1781### End of automated tests.
1782### Now run sysdeps configure fragments.
1783
cb343854 1784# They also can set these variables.
591e1ffb 1785use_ldconfig=no
cb343854 1786ldd_rewrite_script=no
77259608 1787libc_cv_sysconfdir=$sysconfdir
74bd2300 1788libc_cv_gcc_unwind_find_fde=no
cb343854 1789
28f540f4
RM
1790# Iterate over all the sysdep directories we will use, running their
1791# configure fragments, and looking for a uname implementation.
1792uname=
1793for dir in $sysnames; do
57ba7bb4
UD
1794 case $dir in
1795 /*) dest=$dir ;;
1796 *) dest=$srcdir/$dir ;;
1797 esac
1798 if test -r $dest/configure; then
d1149385 1799 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 1800 . $dest/configure
28f540f4 1801 fi
4ca84cff 1802[
28f540f4 1803 if test -z "$uname"; then
e7f1f046
UD
1804 if test -r $dest/uname.c ||
1805 test -r $dest/uname.S ||
1806 { test -r $dest/syscalls.list &&
1807 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
b86199fb 1808 uname=$dir
4ca84cff 1809 fi
28f540f4 1810 fi
4ca84cff 1811]dnl
28f540f4
RM
1812done
1813
74bd2300
UD
1814if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1815 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1816fi
1817AC_SUBST(libc_cv_gcc_unwind_find_fde)
1818
28f540f4
RM
1819# If we will use the generic uname implementation, we must figure out what
1820# it will say by examining the system, and write the results in config-name.h.
e7f1f046 1821if test "$uname" = "sysdeps/generic"; then
28f540f4
RM
1822
1823changequote(,)dnl
1824 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1825changequote([,])dnl
1826 if test $uname_sysname != $config_os; then
1827 config_release=`echo $config_os | sed s/$uname_sysname//`
1828 fi
1829dnl
1830AC_DEFUN(LIBC_KERNEL_ID, [dnl
1831 if test -r /vmunix; then
1832 kernel_id=`strings /vmunix | grep UNIX`
1833 elif test -r /dynix; then
1834 kernel_id=`strings /dynix | grep DYNIX`
1835 else
1836 kernel_id=
1837 fi
1838])dnl
1839
b8dc6a10 1840 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
3a12e572 1841LIBC_KERNEL_ID
28f540f4
RM
1842changequote(,)dnl
1843 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1844changequote([,])dnl
1845 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1846 != x$config_release; then
1847 # The configuration release is a substring of the kernel release.
1848 libc_cv_uname_release=$kernel_release
1849 elif test x$config_release != x; then
1850 libc_cv_uname_release=$config_release
1851 elif test x$kernel_release != x; then
1852 libc_cv_uname_release=$kernel_release
1853 else
1854 libc_cv_uname_release=unknown
1855 fi])
28f540f4
RM
1856 uname_release="$libc_cv_uname_release"
1857
b8dc6a10 1858 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
3a12e572 1859LIBC_KERNEL_ID
28f540f4
RM
1860changequote(,)dnl
1861 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1862changequote([,])dnl
1863 if test -n "$kernel_version"; then
1864 libc_cv_uname_version="$kernel_version"
1865 else
1866 libc_cv_uname_version=unknown
1867 fi])
28f540f4
RM
1868 uname_version="$libc_cv_uname_version"
1869
1870AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1871 config_uname=config-name.h:config-name.in
1872else
1873 # For non-generic uname, we don't need to create config-name.h at all.
1874 config_uname=
1875fi
1876
a8c01776
RM
1877dnl This is tested by existing code and it's simpler to avoid changing it.
1878AC_DEFINE(USE_IN_LIBIO)
96aa2d94 1879
a53bad16
UD
1880# Test for old glibc 2.0.x headers so that they can be removed properly
1881# Search only in includedir.
1882AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 1883if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
1884then
1885 old_glibc_headers=yes
1886else
1887 old_glibc_headers=no
1888fi
1889AC_MSG_RESULT($old_glibc_headers)
1890if test ${old_glibc_headers} = yes; then
1891 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1892 AC_MSG_WARN(*** be removed.)
1893fi
b195f6bc 1894AC_SUBST(old_glibc_headers)
26b4d766 1895
84384f5b 1896AC_SUBST(libc_cv_slibdir)
a1d84548 1897AC_SUBST(libc_cv_localedir)
77259608 1898AC_SUBST(libc_cv_sysconfdir)
1ef32c3d
UD
1899AC_SUBST(libc_cv_rootsbindir)
1900
591e1ffb 1901AC_SUBST(use_ldconfig)
cb343854 1902AC_SUBST(ldd_rewrite_script)
84384f5b 1903
5af3245a 1904AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
28f540f4
RM
1905if test $gnu_ld = yes; then
1906 AC_DEFINE(HAVE_GNU_LD)
1907fi
1908if test $gnu_as = yes; then
1909 AC_DEFINE(HAVE_GNU_AS)
1910fi
1911if test $elf = yes; then
1912 AC_DEFINE(HAVE_ELF)
1913fi
5af3245a
UD
1914if test $xcoff = yes; then
1915 AC_DEFINE(HAVE_XCOFF)
1916fi
28f540f4 1917
650425ce 1918AC_SUBST(static)
ff3d7ed3
RM
1919AC_SUBST(shared)
1920if test $shared = default; then
1921 if test $gnu_ld = yes; then
1922 shared=$elf
f65fd747
UD
1923 else
1924 # For now we do not assume shared libs are available. In future more
1925 # tests might become available.
1926 shared=no
ff3d7ed3
RM
1927 fi
1928fi
cc3fa755
UD
1929
1930AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1931[pic_default=yes
1932cat > conftest.c <<EOF
9756dfe1 1933#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1934# error PIC is default.
1935#endif
1936EOF
0b4ee387 1937if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
cc3fa755
UD
1938 pic_default=no
1939fi
1940rm -f conftest.*])
1941AC_SUBST(pic_default)
1942
ff3d7ed3
RM
1943AC_SUBST(profile)
1944AC_SUBST(omitfp)
5a97622d 1945AC_SUBST(bounded)
5107cf1d 1946AC_SUBST(static_nss)
5ae3e846 1947AC_SUBST(nopic_initfini)
ff3d7ed3 1948
edf5b2d7
UD
1949AC_SUBST(DEFINES)
1950
7cabd57c
UD
1951case "$add_ons" in
1952 *door*) linux_doors=yes ;;
1953 *) linux_doors=no ;;
1954esac
1955AC_SUBST(linux_doors)
1956
61c83c3f
RM
1957dnl See sysdeps/mach/configure.in for this variable.
1958AC_SUBST(mach_interface_list)
1959
28f540f4
RM
1960if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1961 config_makefile=
1962else
1963 config_makefile=Makefile
1964fi
1965
ee74a442
UD
1966VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1967RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1968AC_SUBST(VERSION)
ee74a442 1969AC_SUBST(RELEASE)
df4ef2ab 1970
c118d634
RM
1971AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
1972AC_CONFIG_COMMANDS([default],[[
737547be
UD
1973case $CONFIG_FILES in *config.make*)
1974echo "$config_vars" >> config.make;;
1975esac
c118d634
RM
1976test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1977AC_OUTPUT
This page took 0.456803 seconds and 5 git commands to generate.