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