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