]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.in
Update.
[thirdparty/glibc.git] / configure.in
CommitLineData
f4017d20 1dnl Process this file with autoconf to produce a configure script.
ff3d7ed3 2AC_REVISION([$CVSid$])
2f512715 3AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
5107cf1d 4AC_INIT(include/features.h)
28f540f4 5AC_CONFIG_HEADER(config.h)
5bc2f642 6AC_CONFIG_AUX_DIR(scripts)
28f540f4
RM
7
8# This will get text that should go into config.make.
9config_vars=
10
11# Check for a --with-gmp argument and set gmp-srcdir in config.make.
12AC_ARG_WITH(gmp, dnl
13 --with-gmp=DIRECTORY find GMP source code in DIRECTORY (not needed),
14 [dnl
15case "$with_gmp" in
16yes) AC_MSG_ERROR(--with-gmp requires an argument; use --with-gmp=DIRECTORY) ;;
17''|no) ;;
18*) config_vars="$config_vars
19gmp-srcdir = $withval" ;;
20esac
21])
c8f3e6db
UD
22# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
23AC_ARG_WITH(gd, dnl
24 --with-gd=DIR find libgd include dir and library with prefix DIR,
25 [dnl
26case "$with_gd" in
f5f7239f
UD
27yes|''|no) ;;
28*) libgd_include="-I$withval/include"
c8f3e6db
UD
29 libgd_ldflags="-L$withval/lib" ;;
30esac
31])
f5f7239f
UD
32AC_ARG_WITH(gd-include, dnl
33 --with-gd-include=DIR find libgd include files in DIR,
34 [dnl
35case "$with_gd_include" in
36''|no) ;;
37*) libgd_include="-I$withval" ;;
38esac
39])
40AC_ARG_WITH(gd-lib, dnl
41 --with-gd-lib=DIR find libgd library files in DIR,
42 [dnl
43case "$with_gd_lib" in
44''|no) ;;
45*) libgd_ldflags="-L$withval" ;;
46esac
47])
48
49if test -n "$libgd_include"; then
50 config_vars="$config_vars
cf90163d 51CFLAGS-memusagestat.c = $libgd_include"
f5f7239f
UD
52fi
53if test -n "$libgd_ldflags"; then
54 config_vars="$config_vars
55libgd-LDFLAGS = $libgd_ldflags"
56fi
28f540f4 57
ff3d7ed3 58dnl Arguments to specify presence of other packages/features.
335aa320 59AC_ARG_WITH(fp, dnl
a18f587d 60[ --with-fp if using floating-point hardware [default=yes]],
335aa320 61 with_fp=$withval, with_fp=yes)
650425ce 62AC_ARG_WITH(binutils, dnl
a5a0310d 63 --with-binutils=PATH specify location of binutils (as and ld),
650425ce 64 path_binutils=$withval, path_binutils='')
28f540f4
RM
65AC_ARG_WITH(elf, dnl
66 --with-elf if using the ELF object format,
335aa320 67 elf=$withval, elf=no)
4d06461a 68AC_ARG_WITH(cvs, dnl
4442d7e8 69[ --without-cvs if CVS should not be used],
4d06461a 70 with_cvs=$withval, with_cvs=yes)
6b3f2b3d
UD
71if test "$with_cvs" = yes; then
72 if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
73 then
74 with_cvs=no
75 fi
4442d7e8 76fi
4d06461a 77AC_SUBST(with_cvs)
28f540f4 78
dbe7a0f5
UD
79AC_ARG_WITH(headers, dnl
80[ --with-headers=PATH location of system headers to use
81 [e.g. /usr/src/linux/include]
82 [default=compiler default]],
83 sysheaders=$withval, sysheaders='')
84
deab9dea
RM
85AC_ARG_ENABLE(libio, dnl
86[ --enable-libio build in GNU libio instead of GNU stdio],
f4482045
RM
87 [if test $enableval = yes; then
88 stdio=libio
89 else
90 stdio=stdio
91 fi],
92 stdio=default)
deab9dea 93
a18f587d
UD
94AC_ARG_ENABLE(sanity-checks, dnl
95[ --disable-sanity-checks really do not use threads (should not be used
96 except in special situations) [default=yes]],
97 enable_sanity=$enableval, enable_sanity=yes)
98
650425ce
UD
99dnl Arguments to enable or disable building the static, shared, profiled,
100dnl and -fomit-frame-pointer libraries.
b38bb8ca
UD
101dnl I've disabled this for now since we cannot build glibc without static
102dnl libraries built in the moment.
103dnl AC_ARG_ENABLE(static, dnl
104dnl [ --enable-static build static library [default=yes]],
105dnl static=$enableval, static=yes)
5c2a0669 106static=yes
ff3d7ed3
RM
107AC_ARG_ENABLE(shared, dnl
108[ --enable-shared build shared library [default=yes if GNU ld & ELF]],
6b3a2224 109 shared=$enableval, shared=default)
ff3d7ed3
RM
110AC_ARG_ENABLE(profile, dnl
111[ --enable-profile build profiled library [default=yes]],
6b3a2224 112 profile=$enableval, profile=yes)
ff3d7ed3 113AC_ARG_ENABLE(omitfp, dnl
6b3a2224
RM
114[ --enable-omitfp build undebuggable optimized library [default=no]],
115 omitfp=$enableval, omitfp=no)
5a97622d
UD
116AC_ARG_ENABLE(bounded, dnl
117[ --enable-bounded build with runtime bounds checking [default=no]],
118 bounded=$enableval, bounded=no)
650425ce
UD
119AC_ARG_ENABLE(versioning, dnl
120[ --disable-versioning do not include versioning information in the
121 library objects [default=yes if supported]],
122 enable_versioning=$enableval, enable_versioning=yes)
6b3a2224 123
62ab42d6
UD
124AC_ARG_ENABLE(oldest-abi, dnl
125[ --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2]
126 [default=glibc default]],
127 oldest_abi=$enableval, oldest_abi=no)
128if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
129 oldest_abi=default
130else
131 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
132fi
133AC_SUBST(oldest_abi)
134
6b3a2224
RM
135dnl Generic infrastructure for drop-in additions to libc.
136AC_ARG_ENABLE(add-ons, dnl
73237de3
UD
137[ --enable-add-ons[=DIR1,DIR2]...
138 configure and build add-ons in DIR1,DIR2,...
139 search for add-ons if no parameter given],
61952351 140 [case "$enableval" in
9c4c0024
UD
141 yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
142 test "$add_ons" = "*" && add_ons= ;;
61952351
UD
143 *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
144 esac],
145 [add_ons=])
146
6b3a2224 147AC_CONFIG_SUBDIRS($add_ons)
57ba7bb4 148add_ons_pfx=
da74e902 149if test x"$add_ons" != x; then
57ba7bb4 150 for f in $add_ons; do
aa44a9de
AJ
151 # Some sanity checks
152 if test "$f" = "crypt"; then
153 AC_MSG_ERROR([
154*** It seems that you're using an old \`crypt' add-on. crypt is now
155*** part of glibc and using the old add-on will not work with this
156*** release. Start again with fresh sources and without the old
157*** \`crypt' add-on.])
158 fi
159 if test "$f" = "localedata"; then
160 AC_MSG_ERROR([
161*** It seems that you're using an old \`localedata' add-on. localedata
162*** is now part of glibc and using the old add-on will not work with
163*** this release. Start again with fresh sources and without the old
164*** \`localedata' add-on.])
165 fi
af6f3906
UD
166 # Test whether such a subdir really exists.
167 if test -d $srcdir/$f; then
168 add_ons_pfx="$add_ons_pfx $f/"
169 else
170 AC_MSG_ERROR(add-on directory \"$f\" does not exist)
171 fi
57ba7bb4
UD
172 done
173fi
ff3d7ed3 174
5107cf1d
UD
175dnl On some platforms we cannot use dynamic loading. We must provide
176dnl static NSS modules.
177AC_ARG_ENABLE(static-nss, dnl
178[ --enable-static-nss build static NSS modules [default=no]],
179 static_nss=$enableval, static_nss=no)
180if test x"$static_nss" = xyes; then
181 AC_DEFINE(DO_STATIC_NSS)
182fi
183
73237de3 184AC_ARG_ENABLE(force-install,
310b3460 185[ --disable-force-install don't force installation of files from this package,
73237de3
UD
186 even if they are older than the installed files],
187 force_install=$enableval, force_install=yes)
188AC_SUBST(force_install)
189
958f238f
UD
190dnl On some platforms we allow dropping compatibility with all kernel
191dnl versions.
192AC_ARG_ENABLE(kernel,
b5b53bdb 193[ --enable-kernel=VERSION compile for compatibility with kernel not older
958f238f
UD
194 than VERSION],
195 minimum_kernel=$enableval)
86cfe82d
UD
196dnl Prevent unreasonable values.
197if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
198 # Better nothing than this.
199 minimum_kernel=""
269e369f
UD
200else
201 if test "$minimum_kernel" = current; then
202 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
203 fi
86cfe82d 204fi
958f238f 205
6cc7d725
UD
206dnl For the development we sometimes want gcc to issue even more warnings.
207dnl This is not the default since many of the extra warnings are not
208dnl appropriate.
209AC_ARG_ENABLE(all-warnings,
210[ --enable-all-warnings enable all useful warnings gcc can issue],
211 all_warnings=$enableval)
212AC_SUBST(all_warnings)
213
28f540f4 214AC_CANONICAL_HOST
8a523922
UD
215
216# The way shlib-versions is used to generate soversions.mk uses a
217# fairly simplistic model for name recognition that can't distinguish
218# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
219# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
220# tell. This doesn't get used much beyond that, so it's fairly safe.
221case "$host_os" in
222linux*)
223 ;;
224gnu*)
225 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
226 ;;
227esac
228
28f540f4
RM
229# We keep the original values in `$config_*' and never modify them, so we
230# can write them unchanged into config.make. Everything else uses
231# $machine, $vendor, and $os, and changes them whenever convenient.
232config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
233
2f64b655
UD
234# Don't allow vendor == "unknown"
235test "$config_vendor" = unknown && config_vendor=
236config_os="`echo $config_os | sed 's/^unknown-//'`"
237
a2fe9c76
RM
238# Some configurations imply other options.
239case "$host_os" in
240gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
241 # These systems always use GNU tools.
c8cf0b14 242 gnu_ld=yes gnu_as=yes ;;
a2fe9c76
RM
243esac
244case "$host_os" in
7799b7b3
UD
245# i586-linuxaout is mangled into i586-pc-linux-gnuaout
246linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
3776d592 247 ;;
ba909880 248gnu* | linux* | sysv4* | solaris2* | irix6*)
3776d592
RM
249 # These systems (almost) always use the ELF format.
250 elf=yes
84724245 251 ;;
a2fe9c76
RM
252esac
253
28f540f4
RM
254machine=$config_machine
255vendor=$config_vendor
256os=$config_os
257
a808d541
UD
258# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
259# Unify this here.
260if test "$machine" = rs6000; then
261 machine="powerpc"
262fi
263
bdc8eb03
UD
264###
265### I put this here to prevent those annoying emails from people who cannot
266### read and try to compile glibc on unsupported platforms. --drepper
267###
268### By using the undocumented --enable-hacker-mode option for configure
269### one can skip this test to make the configuration not fail for unsupported
270### platforms.
271###
272if test -z "$enable_hacker_mode"; then
273 case "$machine-$host_os" in
75d86c1f 274 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
bdc8eb03
UD
275 ;;
276 *)
277 echo "*** The GNU C library is currently not available for this platform."
278 echo "*** So far nobody cared to port it and if there is no volunteer it"
279 echo "*** might never happen. So, if you have interest to see glibc on"
280 echo "*** this platform visit"
281 echo "*** http://www.gnu.org/software/libc/porting.html"
282 echo "*** and join the group of porters"
283 exit 1
284 ;;
285 esac
286fi
287
28f540f4
RM
288dnl We need to use [ and ] for other purposes for a while now.
289changequote(,)dnl
290# Expand the configuration machine name into a subdirectory by architecture
291# type and particular chip.
292case "$machine" in
f0523145
RM
293a29k | am29000) base_machine=a29k machine=a29k ;;
294alpha*) base_machine=alpha machine=alpha/$machine ;;
7799b7b3 295arm*) base_machine=arm machine=arm/$machine ;;
60c96635
UD
296c3[012]) base_machine=cx0 machine=cx0/c30 ;;
297c4[04]) base_machine=cx0 machine=cx0/c40 ;;
b15cb495
UD
298hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
299hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
a8922de8 300i[3456]86) base_machine=i386 machine=i386/$machine ;;
d64e704c 301ia64) base_machine=ia64 machine=ia64 ;;
f0523145
RM
302m680?0) base_machine=m68k machine=m68k/$machine ;;
303m68k) base_machine=m68k machine=m68k/m68020 ;;
304m88???) base_machine=m88k machine=m88k/$machine ;;
305m88k) base_machine=m88k machine=m88k/m88100 ;;
f0523145 306mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
9a97d1f7
UD
307mips*) base_machine=mips
308 case "`uname -m`" in
309 IP22) machine=mips/mips3 ;;
45b3d8ad 310 *) machine=mips/$machine ;;
9a97d1f7 311 esac ;;
88615235
UD
312sh3*) base_machine=sh machine=sh/sh3 ;;
313sh4*) base_machine=sh machine=sh/sh4 ;;
ca34d7a7
UD
314sparc | sparcv[67])
315 base_machine=sparc machine=sparc/sparc32 ;;
316sparcv8 | supersparc | hypersparc)
317 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
ae6b8730
RH
318sparcv8plus | sparcv8plusa | sparcv9)
319 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
ca34d7a7
UD
320sparc64 | ultrasparc)
321 base_machine=sparc machine=sparc/sparc64 ;;
28f540f4 322esac
f0523145
RM
323changequote([,])dnl
324AC_SUBST(base_machine)
28f540f4 325
dfd2257a
UD
326if test "$base_machine" = "i386"; then
327 AC_DEFINE(USE_REGPARMS)
328fi
329
f0523145 330# Compute the list of sysdep directories for this configuration.
f332db02 331# This can take a while to compute.
f0523145 332sysdep_dir=$srcdir/sysdeps
f332db02 333AC_MSG_CHECKING(sysdep dirs)
f0523145
RM
334dnl We need to use [ and ] for other purposes for a while now.
335changequote(,)dnl
28f540f4
RM
336# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
337os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
338
339case "$os" in
340gnu*)
341 base_os=mach/hurd ;;
883bc19b 342netbsd* | 386bsd* | freebsd* | bsdi*)
28f540f4 343 base_os=unix/bsd/bsd4.4 ;;
222c4e71 344osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
28f540f4 345 base_os=unix/bsd ;;
d586354e 346sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
28f540f4 347 base_os=unix/sysv ;;
f802accb
UD
348irix6*)
349 base_os=unix/sysv/irix6/$os ;;
d586354e 350solaris[2-9]*)
28f540f4 351 base_os=unix/sysv/sysv4 ;;
908c3d5b
UD
352hpux*)
353 base_os=unix/sysv/hpux/$os ;;
75d86c1f
UD
354aix4.3*)
355 base_os=unix/sysv/aix/aix4.3 ;;
28f540f4
RM
356none)
357 base_os=standalone ;;
358*)
359 base_os='' ;;
360esac
361
362# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
363tail=$os
364ostry=$os
365while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
366 ostry="$ostry /$o"
367 tail=$o
75914335 368done
28f540f4
RM
369o=`echo $tail | sed 's/[0-9]*$//'`
370if test $o != $tail; then
371 ostry="$ostry /$o"
372fi
ec4b0518
UD
373# For linux-gnu, try linux-gnu, then linux.
374o=`echo $tail | sed 's/-.*$//'`
375if test $o != $tail; then
376 ostry="$ostry /$o"
377fi
28f540f4
RM
378
379# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
380base=
381tail=$base_os
382while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
383 set $b
384 base="$base /$1"
385 tail="$2"
386done
387
ae6b8730 388# For sparc/sparc32, try sparc/sparc32 and then sparc.
28f540f4
RM
389mach=
390tail=$machine
391while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
392 set $m
10ceac89
RM
393 # Prepend the machine's FPU directory unless --without-fp.
394 if test "$with_fp" = yes; then
395 mach="$mach /$1/fpu"
82d00cab 396 fi
28f540f4
RM
397 mach="$mach /$1"
398 tail="$2"
399done
400
401dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
402changequote([,])dnl
403
404# Find what sysdep directories exist.
405sysnames=
57ba7bb4
UD
406IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
407for d in $add_ons_pfx ''; do
408 for b in $base ''; do
409 for m0 in $mach ''; do
410 for v in /$vendor ''; do
ae828bc6 411 test "$v" = / && continue
57ba7bb4 412 for o in /$ostry ''; do
ae828bc6 413 test "$o" = / && continue
57ba7bb4
UD
414 for m in $mach ''; do
415 if test "$m0$b$v$o$m"; then
416 try="${d}sysdeps$m0$b$v$o$m"
417 test -n "$enable_debug_configure" &&
418 echo "$0 [DEBUG]: try $try" >&2
9c4c0024 419 if test -d $srcdir/$try; then
57ba7bb4
UD
420 sysnames="$sysnames $try"
421 { test -n "$o" || test -n "$b"; } && os_used=t
422 { test -n "$m" || test -n "$m0"; } && machine_used=t
423 fi
424 fi
425 done
28f540f4
RM
426 done
427 done
428 done
429 done
430done
57ba7bb4 431IFS="$ac_save_ifs"
28f540f4
RM
432
433if test -z "$os_used" && test "$os" != none; then
434 AC_MSG_ERROR(Operating system $os is not supported.)
435fi
436if test -z "$machine_used" && test "$machine" != none; then
437 AC_MSG_ERROR(The $machine is not supported.)
438fi
439
440# We have now validated the configuration.
441
335aa320 442
10ceac89
RM
443# If using ELF, look for an `elf' subdirectory of each machine directory.
444# We prepend these rather than inserting them whereever the machine appears
445# because things specified by the machine's ELF ABI should override
446# OS-specific things, and should always be the same for any OS on the
447# machine (otherwise what's the point of an ABI?).
448if test "$elf" = yes; then
449 elf_dirs=
57ba7bb4 450 for d in $add_ons_pfx ''; do
57ba7bb4 451 for m in $mach; do
9c4c0024 452 if test -d $srcdir/${d}sysdeps$m/elf; then
c2bb8cab 453 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
57ba7bb4
UD
454 fi
455 done
28f540f4 456 done
57ba7bb4 457 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
28f540f4
RM
458fi
459
335aa320 460
28f540f4
RM
461# Expand the list of system names into a full list of directories
462# from each element's parent name and Implies file (if present).
463set $sysnames
e50ec9f9 464names=
28f540f4
RM
465while test $# -gt 0; do
466 name=$1
467 shift
468
e50ec9f9 469 case " $names " in *" $name "*)
f332db02
RM
470 # Already in the list.
471 continue
e50ec9f9 472 esac
f332db02
RM
473
474 # Report each name as we discover it, so there is no long pause in output.
475 echo $ac_n "$name $ac_c" >&AC_FD_MSG
476
57ba7bb4
UD
477 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
478
479 case $name in
480 /*) xsrcdir= ;;
481 *) xsrcdir=$srcdir/ ;;
482 esac
483 test -n "$enable_debug_configure" &&
484 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
485
486 if test -f $xsrcdir$name/Implies; then
28f540f4 487 # Collect more names from the `Implies' file (removing comments).
57ba7bb4
UD
488 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
489 implied=
490 for x in $implied_candidate; do
491 if test -d $xsrcdir$name_base/$x; then
492 implied="$implied $name_base/$x";
493 else
494 AC_MSG_WARN($name/Implies specifies nonexistent $x)
495 fi
28f540f4
RM
496 done
497 else
498 implied=
499 fi
500
501 # Add NAME to the list of names.
502 names="$names $name"
503
504 # Find the parent of NAME, using the empty string if it has none.
505changequote(,)dnl
57ba7bb4 506 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
28f540f4
RM
507changequote([,])dnl
508
509 # Add the names implied by NAME, and NAME's parent (if it has one), to
510 # the list of names to be processed (the argument list). We prepend the
511 # implied names to the list and append the parent. We want implied
512 # directories to come before further directories inferred from the
513 # configuration components; this ensures that for sysv4, unix/common
514 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
515 # after sysv4).
516 sysnames="`echo $implied $* $parent`"
517 test -n "$sysnames" && set $sysnames
518done
519
520# Add the default directories.
ecdc196c 521default_sysnames=sysdeps/generic
2de7874e 522if test "$elf" = yes; then
ecdc196c 523 default_sysnames="sysdeps/generic/elf $default_sysnames"
2de7874e 524fi
ecdc196c 525sysnames="$names $default_sysnames"
f332db02
RM
526AC_SUBST(sysnames)
527# The other names were emitted during the scan.
ecdc196c 528AC_MSG_RESULT($default_sysnames)
28f540f4 529
f332db02
RM
530
531### Locate tools.
28f540f4 532
28f540f4 533AC_PROG_INSTALL
2b80a372 534if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
28f540f4 535 # The makefiles need to use a different form to find it in $srcdir.
2b80a372 536 INSTALL='\$(..)./scripts/install-sh -c'
28f540f4 537fi
0e3426bb 538AC_PROG_LN_S
ae828bc6 539
a4301d41
UD
540# We need the physical current working directory. We cannot use the
541# "pwd -P" shell builtin since that's not portable. Instead we try to
542# find a pwd binary. Note that assigning to the PWD environment
543# variable might have some interesting side effects, so we don't do
544# that.
545AC_PATH_PROG(PWD_P, pwd, no)
546if test "$PWD_P" = no; then
547 AC_MSG_ERROR(*** A pwd binary could not be found.)
548fi
549
63bda0c1 550# These programs are version sensitive.
4bca4c17
UD
551AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
552AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
d64e704c 553 [version \([egcygnustpi-]*[0-9.]*\)],
111bb972 554 [*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*],
4bca4c17 555 critic_missing=t)
22e65f8f 556AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
8fc1e2ca 557 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
2bbc70d5 558 [3.79* | 3.[89]*], critic_missing=t)
63bda0c1 559
22e65f8f 560AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
bdd421cc
UD
561 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
562 [0.[1-9][0-9].* | [1-9].*], MSGFMT=: aux_missing=t)
63bda0c1 563AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
8b7fb588 564 [GNU texinfo.* \([0-9][0-9.]*\)],
c159de62 565 [3.1[1-9] | 3.[2-9][0-9] | 4.* | 1.6[89] | 1.7[0-9]], MAKEINFO=: aux_missing=t)
aec103d3
UD
566AC_CHECK_PROG_VER(SED, gsed sed, --version,
567 [GNU sed version \([0-9]*\.[0-9.]*\)],
ce19d417 568 [3.0[2-9]*|3.[1-9]*|[4-9]*], SED=: aux_missing=t)
63bda0c1 569
ea9f119b
AJ
570AC_PROG_CC_LOCAL
571AC_CANONICAL_BUILD
572if test $host != $build; then
573 AC_CHECK_PROGS(BUILD_CC, gcc cc)
574fi
575AC_SUBST(cross_compiling)
576AC_PROG_CPP
577LIBC_PROG_BINUTILS
578AC_CHECK_TOOL(MIG, mig)
579
580# Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
45ef592d
UD
581# XXX Commented out because it filters out too many good versions.
582# XXX --drepper
583# AC_CHECK_PROG_VER(AS, $AS, --version,
584# [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
585# [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
ea9f119b 586
4bca4c17
UD
587if test -n "$critic_missing"; then
588AC_MSG_ERROR([
63bda0c1
UD
589*** Some critical program is missing or too old.
590*** Check the INSTALL file for required versions.])
4bca4c17 591fi
63bda0c1 592
4bca4c17 593test -n "$aux_missing" && AC_MSG_WARN([
63bda0c1
UD
594*** An auxiliary program is missing or too old;
595*** some features will be disabled.
596*** Check the INSTALL file for required versions.])
28f540f4 597
d01d6319
UD
598# glibcbug.in wants to know the compiler version.
599CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
600AC_SUBST(CCVERSION)
601
dbe7a0f5
UD
602# if using special system headers, find out the compiler's sekrit
603# header directory and add that to the list. NOTE: Only does the right
604# thing on a system that doesn't need fixincludes. (Not presently a problem.)
605if test -n "$sysheaders"; then
606 ccheaders=`$CC -print-file-name=include`
607 SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
608fi
609AC_SUBST(SYSINCLUDES)
610
97a47867
UD
611# check if ranlib is necessary
612AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
613cat > conftest.c <<EOF
614int a;
615char b;
616void c(void) {}
617EOF
618$CC $CFLAGS -c conftest.c
619$AR cr conftest.a conftest.c
620cp conftest.a conftest2.a
621$RANLIB conftest.a
622if cmp -s conftest.a conftest2.a; then
623 libc_cv_ranlib_necessary=no
f38931a9 624else
97a47867
UD
625 libc_cv_ranlib_necessary=yes
626fi
627rm -rf conftest*])
628if test "$libc_cv_ranlib_necessary" = no; then
629 RANLIB=:
f38931a9 630fi
f38931a9 631
3911660e
UD
632# Test if LD_LIBRARY_PATH contains the notation for the current directory
633# since this would lead to problems installing/building glibc.
634# LD_LIBRARY_PATH contains the current directory if one of the following
635# is true:
636# - one of the terminals (":" and ";") is the first or last sign
637# - two terminals occur directly after each other
638# - the path contains an element with a dot in it
639AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
640changequote(,)dnl
641case ${LD_LIBRARY_PATH} in
642 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 643 ld_library_path_setting="contains current directory"
3911660e
UD
644 ;;
645 *)
646 ld_library_path_setting="ok"
647 ;;
648esac
649changequote([,])dnl
650AC_MSG_RESULT($ld_library_path_setting)
651if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
652AC_MSG_ERROR([
653*** LD_LIBRARY_PATH shouldn't contain the current directory when
654*** building glibc. Please change the environment variable
655*** and run configure again.])
3911660e 656fi
8e31cf7e 657
84384f5b 658AC_PATH_PROG(BASH, bash, no)
a18f587d 659if test "$BASH" != no &&
f43ce637 660 $BASH -c 'test "$BASH_VERSINFO" \
6973fc01 661 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
84384f5b
UD
662 libc_cv_have_bash2=yes
663else
664 libc_cv_have_bash2=no
665fi
666AC_SUBST(libc_cv_have_bash2)
667
5290baf0
UD
668dnl We need a ksh compatible shell for tzselect.
669if test "$BASH" = no; then
670 AC_PATH_PROG(KSH, ksh, no)
671 if test "$KSH" = no; then
672 libc_cv_have_ksh=no
673 else
674 libc_cv_have_ksh=yes
675 fi
676else
677 KSH="$BASH"
678 AC_SUBST(KSH)
679 libc_cv_have_ksh=yes
680fi
681AC_SUBST(libc_cv_have_ksh)
682
5aa8ff62 683AC_PROG_AWK
c0016081 684AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
685if test "$PERL" != no &&
686 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
687 PERL=no
ecb06196 688fi
2f512715
AS
689AC_PATH_PROG(INSTALL_INFO, install-info, no,
690 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
c0016081
UD
691if test "$INSTALL_INFO" != "no"; then
692AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
693 [mkdir conftest.d
694 # There is a hard ^_ on the next line. I am open to better ideas.
695 (echo '\1f'
696 echo 'File: dir Node: Top This is the top of the INFO tree'
697 echo '* Menu:') >conftest.d/dir
698 (echo 'INFO-DIR-SECTION i-d-s works'
699 echo 'START-INFO-DIR-ENTRY'
700 echo '* Prog: (prog). Program.'
701 echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
702 if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
d8cceb4f 703 then
c0016081
UD
704 if grep -s 'i-d-s works' conftest.d/dir >/dev/null
705 then libc_cv_old_debian_install_info=no
706 else libc_cv_old_debian_install_info=yes
707 fi
708 else libc_cv_old_debian_install_info=no testfailed=t
709 fi
710 rm -fr conftest.d])
711if test -n "$testfailed"
712then AC_MSG_WARN([install-info errored out, check config.log])
713fi
714OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
715fi
716AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
a2b08ee5 717
b8dc6a10 718AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
28f540f4
RM
719echo '#include <stddef.h>
720FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
721if eval "$ac_cpp conftest.c 2>/dev/null" \
722| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
723 libc_cv_signed_size_t=no
724else
725 libc_cv_signed_size_t=yes
726fi
727rm -f conftest*])
28f540f4
RM
728if test $libc_cv_signed_size_t = yes; then
729 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
730 cat >> confdefs.h <<\EOF
731#undef __SIZE_TYPE__
732#define __SIZE_TYPE__ unsigned
733EOF
734fi
735
b8dc6a10 736AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
737AC_TRY_COMPILE(dnl
738[#define __need_size_t
739#define __need_wchar_t
740#include <stddef.h>
741#define __need_NULL
742#include <stddef.h>], [size_t size; wchar_t wchar;
743#ifdef offsetof
744#error stddef.h ignored __need_*
745#endif
746if (&size == NULL || &wchar == NULL) abort ();],
747 libc_cv_friendly_stddef=yes,
748 libc_cv_friendly_stddef=no)])
28f540f4
RM
749if test $libc_cv_friendly_stddef = yes; then
750 config_vars="$config_vars
751override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
752fi
753
b8dc6a10
RM
754AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
755 libc_cv_need_minus_P, [dnl
28f540f4
RM
756cat > conftest.S <<EOF
757#include "confdefs.h"
758/* Nothing whatsoever. */
759EOF
760if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
761 libc_cv_need_minus_P=no
762else
763 libc_cv_need_minus_P=yes
764fi
765rm -f conftest*])
28f540f4
RM
766if test $libc_cv_need_minus_P = yes; then
767 config_vars="$config_vars
768asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
769fi
770
2293395f
UD
771AC_MSG_CHECKING(whether .text pseudo-op must be used)
772AC_CACHE_VAL(libc_cv_dot_text, [dnl
773cat > conftest.s <<EOF
774.text
775EOF
776libc_cv_dot_text=
777if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
778 libc_cv_dot_text=.text
779fi
780rm -f conftest*])
781if test -z "$libc_cv_dot_text"; then
782 AC_MSG_RESULT(no)
783else
784 AC_MSG_RESULT(yes)
785fi
786
b8dc6a10
RM
787AC_CACHE_CHECK(for assembler global-symbol directive,
788 libc_cv_asm_global_directive, [dnl
9a70fcab 789libc_cv_asm_global_directive=UNKNOWN
908c3d5b 790for ac_globl in .globl .global .EXPORT; do
9a70fcab 791 cat > conftest.s <<EOF
2293395f 792 ${libc_cv_dot_text}
908c3d5b 793 ${ac_globl} foo
ae1025be 794foo:
9a70fcab
UD
795EOF
796 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
797 libc_cv_asm_global_directive=${ac_globl}
798 fi
799 rm -f conftest*
800 test $libc_cv_asm_global_directive != UNKNOWN && break
801done])
9a70fcab
UD
802if test $libc_cv_asm_global_directive = UNKNOWN; then
803 AC_MSG_ERROR(cannot determine asm global directive)
804else
805 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
806fi
807
b8dc6a10 808AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 809cat > conftest.s <<EOF
2293395f 810${libc_cv_dot_text}
ae1025be 811foo:
df2a0c93 812.set glibc_conftest_frobozz,foo
9a70fcab 813$libc_cv_asm_global_directive glibc_conftest_frobozz
e215c478 814EOF
df2a0c93
RM
815# The alpha-dec-osf1 assembler gives only a warning for `.set'
816# (but it doesn't work), so we must do a linking check to be sure.
817cat > conftest1.c <<\EOF
818extern int glibc_conftest_frobozz;
819main () { printf ("%d\n", glibc_conftest_frobozz); }
820EOF
821if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
cb2f05ed 822 -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
e215c478
RM
823 libc_cv_asm_set_directive=yes
824else
825 libc_cv_asm_set_directive=no
826fi
65b3cbcb 827rm -f conftest*])
e215c478
RM
828if test $libc_cv_asm_set_directive = yes; then
829 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
830fi
831
2aa15430
UD
832# The Aix ld uses global .symbol_names instead of symbol_names.
833case "$os" in
834aix4.3*)
835 AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
836esac
837
377a515b
UD
838AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
839[cat > conftest.s <<EOF
2293395f 840${libc_cv_dot_text}
4cca6b86 841_sym:
377a515b
UD
842.symver _sym,sym@VERS
843EOF
844if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
845 libc_cv_asm_symver_directive=yes
846else
847 libc_cv_asm_symver_directive=no
848fi
849rm -f conftest*])
850AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
851if test $libc_cv_asm_symver_directive = yes; then
852 cat > conftest.s <<EOF
2293395f 853${libc_cv_dot_text}
4cca6b86 854_sym:
377a515b
UD
855.symver _sym,sym@VERS
856EOF
857 cat > conftest.map <<EOF
f43ce637 858VERS_1 {
377a515b
UD
859 global: sym;
860};
f43ce637
UD
861
862VERS_2 {
863 global: sym;
864} VERS_1;
377a515b
UD
865EOF
866 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
5ae3e846
UD
867 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
868 -nostartfiles -nostdlib
ae1025be
UD
869 -Wl,--version-script,conftest.map
870 1>&AC_FD_CC]);
377a515b
UD
871 then
872 libc_cv_ld_version_script_option=yes
873 else
874 libc_cv_ld_version_script_option=no
875 fi
876 else
877 libc_cv_ld_version_script_option=no
878 fi
879else
880 libc_cv_ld_version_script_option=no
881fi
882rm -f conftest*])
7499a22a
RM
883if test $shared != no &&
884 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
885 test $libc_cv_ld_version_script_option = yes &&
886 test $enable_versioning = yes; then
377a515b
UD
887 VERSIONING=yes
888 AC_DEFINE(DO_VERSIONING)
889else
890 VERSIONING=no
891fi
892AC_SUBST(VERSIONING)
893
7499a22a 894if test $shared != no && test $VERSIONING = no; then
f43ce637 895 echo "\
f4017d20 896*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
897*** versioning will introduce incompatibilities so that old binaries
898*** will not run anymore.
50304ef0 899*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 900fi
fd26970f
UD
901if test $elf = yes; then
902 AC_CACHE_CHECK(for .previous assembler directive,
903 libc_cv_asm_previous_directive, [dnl
904 cat > conftest.s <<EOF
905.section foo_section
906.previous
907EOF
908 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
909 libc_cv_asm_previous_directive=yes
910 else
911 libc_cv_asm_previous_directive=no
912 fi
913 rm -f conftest*])
914 if test $libc_cv_asm_previous_directive = yes; then
915 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
916 else
917 AC_CACHE_CHECK(for .popsection assembler directive,
918 libc_cv_asm_popsection_directive, [dnl
919 cat > conftest.s <<EOF
920.pushsection foo_section
921.popsection
922EOF
923 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
924 libc_cv_asm_popsection_directive=yes
925 else
926 libc_cv_asm_popsection_directive=no
927 fi
928 rm -f conftest*])
929 if test $libc_cv_asm_popsection_directive = yes; then
930 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
931 fi
932 fi
2d499f55
UD
933 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
934 libc_cv_asm_protected_directive, [dnl
935 cat > conftest.s <<EOF
936.protected foo
937foo:
938.hidden bar
939bar:
940EOF
941 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
942 libc_cv_asm_protected_directive=yes
943 else
944 libc_cv_asm_protected_directive=no
945 fi
946 rm -f conftest*])
947 AC_SUBST(libc_cv_asm_protected_directive)
0fb7851f
UD
948
949 AC_CACHE_CHECK(for -z nodelete option,
950 libc_cv_z_nodelete, [dnl
951 cat > conftest.c <<EOF
952int _start (void) { return 42; }
953EOF
954 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
955 then
956 libc_cv_z_nodelete=yes
957 else
958 libc_cv_z_nodelete=no
959 fi
960 rm -f conftest*])
961 AC_SUBST(libc_cv_z_nodelete)
2f54c82d
UD
962
963 AC_CACHE_CHECK(for -z nodlopen option,
964 libc_cv_z_nodlopen, [dnl
965 cat > conftest.c <<EOF
966int _start (void) { return 42; }
967EOF
968 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
969 then
970 libc_cv_z_nodlopen=yes
971 else
972 libc_cv_z_nodlopen=no
973 fi
974 rm -f conftest*])
975 AC_SUBST(libc_cv_z_nodlopen)
fd26970f
UD
976fi
977
b8dc6a10
RM
978if test $elf != yes; then
979 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
980 [AC_TRY_COMPILE(, [asm (".section .init");
84724245 981 asm (".section .fini");
2293395f 982 asm ("${libc_cv_dot_text}");],
b8dc6a10
RM
983 libc_cv_have_initfini=yes,
984 libc_cv_have_initfini=no)])
985 AC_SUBST(libc_cv_have_initfini)dnl
986 if test $libc_cv_have_initfini = yes; then
987 AC_DEFINE(HAVE_INITFINI)
988 fi
989fi
e215c478 990
e26dd47f
UD
991if test $elf = yes -a $gnu_ld = yes; then
992 AC_CACHE_CHECK(whether cc puts quotes around section names,
993 libc_cv_have_section_quotes,
994 [cat > conftest.c <<EOF
995 static const int foo
996 __attribute__ ((section ("bar"))) = 1;
997EOF
998 if ${CC-cc} -S conftest.c -o conftest.s; then
999 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1000 libc_cv_have_section_quotes=yes
1001 else
1002 libc_cv_have_section_quotes=no
1003 fi
1004 else
1005 libc_cv_have_section_quotes=unknown
1006 fi
1007 rm -f conftest.[cs]
1008 ])
1009 if test $libc_cv_have_section_quotes = yes; then
1010 AC_DEFINE(HAVE_SECTION_QUOTES)
1011 fi
1012fi
1013
9a0a462c
UD
1014dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1015AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1016[cat > conftest.$ac_ext <<EOF
1017dnl This sometimes fails to find confdefs.h, for some reason.
1018dnl [#]line __oline__ "[$]0"
1019[#]line __oline__ "configure"
1020#include "confdefs.h"
1021void underscore_test(void) {
1022return; }
1023EOF
1024if AC_TRY_EVAL(ac_compile); then
1025 if grep _underscore_test conftest* >/dev/null; then
1026 ifelse([$1], , :, [rm -f conftest*
1027 $1])
1028 else
1029 ifelse([$2], , , [rm -f conftest*
1030 $2])
1031 fi
1032else
1033 echo "configure: failed program was:" >&AC_FD_CC
1034 cat conftest.$ac_ext >&AC_FD_CC
1035 ifelse([$2], , , [rm -f conftest*
1036 $2])
1037fi
1038rm -f conftest*])
1039
c224a18a
RM
1040if test $elf = yes; then
1041 libc_cv_asm_underscores=no
1042else
9a0a462c
UD
1043 if test $ac_cv_prog_cc_works = yes; then
1044 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1045 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1046 libc_cv_asm_underscores=yes,
1047 libc_cv_asm_underscores=no)])
1048 else
1049 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1050 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1051 libc_cv_asm_underscores=no)])
1052 fi
c224a18a
RM
1053fi
1054if test $libc_cv_asm_underscores = no; then
1055 AC_DEFINE(NO_UNDERSCORES)
1056fi
1057
1058if test $elf = yes; then
1059 libc_cv_weak_symbols=yes
9a97d1f7
UD
1060fi
1061
1062AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1063 [dnl
c224a18a 1064cat > conftest.s <<EOF
2293395f 1065${libc_cv_dot_text}
c224a18a 1066${libc_cv_asm_global_directive} foo
ae1025be 1067foo:
c224a18a
RM
1068.weak foo
1069.weak bar; bar = foo
1070EOF
9a97d1f7
UD
1071if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1072 libc_cv_asm_weak_directive=yes
1073else
1074 libc_cv_asm_weak_directive=no
1075fi
1076rm -f conftest*])
c224a18a 1077
c8cf0b14 1078if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1079 AC_CACHE_CHECK(for assembler .weakext directive,
1080 libc_cv_asm_weakext_directive,
1081 [dnl
1082cat > conftest.s <<EOF
2293395f 1083${libc_cv_dot_text}
c224a18a 1084${libc_cv_asm_global_directive} foo
ae1025be 1085foo:
f802accb
UD
1086.weakext bar foo
1087.weakext baz
1088${libc_cv_asm_global_directive} baz
9a97d1f7 1089baz:
c224a18a
RM
1090EOF
1091 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1092 libc_cv_asm_weakext_directive=yes
1093 else
1094 libc_cv_asm_weakext_directive=no
1095 fi
1096 rm -f conftest*])
1097
9a97d1f7 1098fi # no .weak
c224a18a 1099
ffcf9634 1100if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1101 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1102elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1103 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1104fi
1105
b15cb495
UD
1106dnl The standard hppa assembler uses `;' to start comments and `!'
1107dnl as a line separator.
1108case "${host_cpu}-${host_os}" in
1109 hppa*linux*)
1110 AC_CACHE_CHECK(for assembler line separator,
1111 libc_cv_asm_line_sep, [dnl
1112 cat > conftest.s <<EOF
1113 nop ; is_old_puffin
1114EOF
1115 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1116 libc_cv_asm_line_sep='!'
1117 else
1118 if test -z "$enable_hacker_mode"; then
1119 echo "*** You need a newer assembler to compile glibc"
1120 rm -f conftest*
1121 exit 1
1122 fi
1123 libc_cv_asm_line_sep=';'
1124 fi
1125 rm -f conftest*])
1126 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1127 ;;
1128esac
1129
a641835a
RM
1130AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1131cat > conftest.c <<\EOF
5f0e6fc7 1132_start () {}
dcf0671d
UD
1133int __eh_pc;
1134__throw () {}
a641835a 1135EOF
dcea62dd
RM
1136dnl No \ in command here because it ends up inside ''.
1137if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1138 -nostdlib -nostartfiles -Wl,--no-whole-archive
ae1025be 1139 -o conftest conftest.c 1>&AC_FD_CC]); then
a641835a
RM
1140 libc_cv_ld_no_whole_archive=yes
1141else
1142 libc_cv_ld_no_whole_archive=no
1143fi
1144rm -f conftest*])
b17277cf
UD
1145if test $libc_cv_ld_no_whole_archive = yes; then
1146 no_whole_archive=-Wl,--no-whole-archive
1147fi
1148AC_SUBST(no_whole_archive)dnl
a641835a 1149
dff14448 1150AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1151cat > conftest.c <<\EOF
1152_start () {}
1153int __eh_pc;
1154__throw () {}
1155EOF
1156dnl No \ in command here because it ends up inside ''.
1157if AC_TRY_COMMAND([${CC-cc} $CFLAGS
dff14448 1158 -nostdlib -nostartfiles -fexceptions
ae1025be 1159 -o conftest conftest.c 1>&AC_FD_CC]); then
dff14448 1160 libc_cv_gcc_exceptions=yes
b236e99d 1161else
dff14448 1162 libc_cv_gcc_exceptions=no
b236e99d
UD
1163fi
1164rm -f conftest*])
dff14448
UD
1165if test $libc_cv_gcc_exceptions = yes; then
1166 exceptions=-fexceptions
b17277cf 1167fi
dff14448 1168AC_SUBST(exceptions)dnl
b236e99d 1169
d71b808a
UD
1170if test "$base_machine" = alpha ; then
1171AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1172cat > conftest.c <<\EOF
1173foo () { }
1174EOF
1175dnl
9756dfe1 1176if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
d71b808a
UD
1177then
1178 libc_cv_gcc_alpha_ng_prefix=yes
1179else
1180 libc_cv_gcc_alpha_ng_prefix=no
1181fi
1182rm -f conftest* ])
1183if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1184 AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1185else
1186 AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1187fi
1188fi
1189
66000494
UD
1190if test "$host_cpu" = powerpc ; then
1191# Check for a bug present in at least versions 2.8.x of GCC
1192# and versions 1.0.x of EGCS.
1193AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1194AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1195 libc_cv_c_asmcr0_bug='no',
1196 libc_cv_c_asmcr0_bug='yes')])
1197if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1198 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1199fi
1200fi
1201
650425ce
UD
1202AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1203[cat > conftest.c <<EOF
1204#line __oline__ "configure"
1205static char __EH_FRAME_BEGIN__[];
1206_start ()
1207{
9756dfe1 1208#ifdef CHECK__register_frame
650425ce
UD
1209 __register_frame (__EH_FRAME_BEGIN__);
1210 __deregister_frame (__EH_FRAME_BEGIN__);
9756dfe1
UD
1211#endif
1212#ifdef CHECK__register_frame_info
1213 __register_frame_info (__EH_FRAME_BEGIN__);
1214 __deregister_frame_info (__EH_FRAME_BEGIN__);
1215#endif
650425ce
UD
1216}
1217int __eh_pc;
1218__throw () {}
1219/* FIXME: this is fragile. */
1220malloc () {}
1221strcmp () {}
1222strlen () {}
1223memcpy () {}
1224memset () {}
1225free () {}
1226abort () {}
dfd2257a 1227__bzero () {}
650425ce
UD
1228EOF
1229dnl No \ in command here because it ends up inside ''.
9756dfe1 1230if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
650425ce
UD
1231 -nostdlib -nostartfiles
1232 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
9756dfe1 1233 libc_cv_gcc_dwarf2_unwind_info=static
650425ce
UD
1234else
1235 libc_cv_gcc_dwarf2_unwind_info=no
1236fi
9756dfe1
UD
1237if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1238 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1239 -nostdlib -nostartfiles
1240 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1241 libc_cv_gcc_dwarf2_unwind_info=yes
1242 else
1243 libc_cv_gcc_dwarf2_unwind_info=no
1244 fi
1245fi
650425ce 1246rm -f conftest*])
9756dfe1
UD
1247case $libc_cv_gcc_dwarf2_unwind_info in
1248yes)
650425ce 1249 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
9756dfe1
UD
1250 ;;
1251static)
1252 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1253 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1254 ;;
1255esac
650425ce 1256
a8eab8b1
UD
1257dnl Check whether compiler understands __builtin_expect.
1258AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1259[cat > conftest.c <<EOF
1260#line __oline__ "configure"
1261int foo (int a)
1262{
1263 a = __builtin_expect (a, 10);
1264 return a == 10 ? 0 : 1;
1265}
1266EOF
1267dnl No \ in command here because it ends up inside ''.
1268if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1269 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1270 libc_cv_gcc_builtin_expect=yes
1271else
1272 libc_cv_gcc_builtin_expect=no
1273fi
1274rm -f conftest*])
1275if test "$libc_cv_gcc_builtin_expect" = yes; then
1276 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1277fi
1278
3d558f4e
UD
1279dnl Check whether the compiler supports subtraction of local labels.
1280AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1281[cat > conftest.c <<EOF
1282changequote(,)dnl
1283#line __oline__ "configure"
1284int foo (int a)
1285{
1286 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1287 void *p = &&l1 + ar[a];
1288 goto *p;
1289 l1:
1290 return 1;
1291 l2:
1292 return 2;
1293}
1294changequote([,])dnl
1295EOF
1296dnl No \ in command here because it ends up inside ''.
1297if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1298 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1299 libc_cv_gcc_subtract_local_labels=yes
1300else
1301 libc_cv_gcc_subtract_local_labels=no
1302fi
1303rm -f conftest*])
1304if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1305 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1306fi
1307
c8f3e6db
UD
1308dnl Check whether we have the gd library available.
1309AC_MSG_CHECKING(for libgd)
1310old_CFLAGS="$CFLAGS"
1311CFLAGS="$CFLAGS $libgd_include"
1312old_LDFLAGS="$LDFLAGS"
1313LDFLAGS="$LDFLAGS $libgd_ldflags"
1314old_LIBS="$LIBS"
580ca83f 1315LIBS="$LIBS -lgd -lpng -lz -lm"
c8f3e6db
UD
1316AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1317CFLAGS="$old_CFLAGS"
1318LDFLAGS="$old_LDFLAGS"
1319LIBS="$old_LIBS"
1320AC_MSG_RESULT($LIBGD)
1321AC_SUBST(LIBGD)
3d558f4e 1322
8ed1e7d5
GK
1323dnl check for the size of 'long double'.
1324AC_CHECK_SIZEOF(long double, 0)
1325sizeof_long_double=$ac_cv_sizeof_long_double
1326AC_SUBST(sizeof_long_double)
1327
c224a18a
RM
1328### End of automated tests.
1329### Now run sysdeps configure fragments.
1330
28f540f4
RM
1331# sysdeps configure fragments may set these with files to be linked below.
1332libc_link_dests=
1333libc_link_sources=
1334
cb343854 1335# They also can set these variables.
591e1ffb 1336use_ldconfig=no
cb343854
UD
1337ldd_rewrite_script=no
1338
28f540f4
RM
1339# Iterate over all the sysdep directories we will use, running their
1340# configure fragments, and looking for a uname implementation.
1341uname=
1342for dir in $sysnames; do
57ba7bb4
UD
1343 case $dir in
1344 /*) dest=$dir ;;
1345 *) dest=$srcdir/$dir ;;
1346 esac
1347 if test -r $dest/configure; then
1348 AC_MSG_RESULT(running configure fragment for $dest)
1349 . $dest/configure
28f540f4 1350 fi
4ca84cff 1351[
28f540f4 1352 if test -z "$uname"; then
e7f1f046
UD
1353 if test -r $dest/uname.c ||
1354 test -r $dest/uname.S ||
1355 { test -r $dest/syscalls.list &&
1356 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
b86199fb 1357 uname=$dir
4ca84cff 1358 fi
28f540f4 1359 fi
4ca84cff 1360]dnl
28f540f4
RM
1361done
1362
1363AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1364
1365# If we will use the generic uname implementation, we must figure out what
1366# it will say by examining the system, and write the results in config-name.h.
e7f1f046 1367if test "$uname" = "sysdeps/generic"; then
28f540f4
RM
1368
1369changequote(,)dnl
1370 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1371changequote([,])dnl
1372 if test $uname_sysname != $config_os; then
1373 config_release=`echo $config_os | sed s/$uname_sysname//`
1374 fi
1375dnl
1376AC_DEFUN(LIBC_KERNEL_ID, [dnl
1377 if test -r /vmunix; then
1378 kernel_id=`strings /vmunix | grep UNIX`
1379 elif test -r /dynix; then
1380 kernel_id=`strings /dynix | grep DYNIX`
1381 else
1382 kernel_id=
1383 fi
1384])dnl
1385
b8dc6a10 1386 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
28f540f4
RM
1387AC_REQUIRE([LIBC_KERNEL_ID])dnl
1388changequote(,)dnl
1389 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1390changequote([,])dnl
1391 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1392 != x$config_release; then
1393 # The configuration release is a substring of the kernel release.
1394 libc_cv_uname_release=$kernel_release
1395 elif test x$config_release != x; then
1396 libc_cv_uname_release=$config_release
1397 elif test x$kernel_release != x; then
1398 libc_cv_uname_release=$kernel_release
1399 else
1400 libc_cv_uname_release=unknown
1401 fi])
28f540f4
RM
1402 uname_release="$libc_cv_uname_release"
1403
b8dc6a10 1404 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
28f540f4
RM
1405AC_REQUIRE([LIBC_KERNEL_ID])dnl
1406changequote(,)dnl
1407 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1408changequote([,])dnl
1409 if test -n "$kernel_version"; then
1410 libc_cv_uname_version="$kernel_version"
1411 else
1412 libc_cv_uname_version=unknown
1413 fi])
28f540f4
RM
1414 uname_version="$libc_cv_uname_version"
1415
1416AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1417 config_uname=config-name.h:config-name.in
1418else
1419 # For non-generic uname, we don't need to create config-name.h at all.
1420 config_uname=
1421fi
1422
96aa2d94
RM
1423AC_MSG_CHECKING(stdio selection)
1424AC_SUBST(stdio)
1425case $stdio in
1426libio) AC_DEFINE(USE_IN_LIBIO) ;;
1427default) stdio=stdio ;;
1428esac
1429AC_MSG_RESULT($stdio)
1430
a53bad16
UD
1431# Test for old glibc 2.0.x headers so that they can be removed properly
1432# Search only in includedir.
1433AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 1434if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
1435then
1436 old_glibc_headers=yes
1437else
1438 old_glibc_headers=no
1439fi
1440AC_MSG_RESULT($old_glibc_headers)
1441if test ${old_glibc_headers} = yes; then
1442 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1443 AC_MSG_WARN(*** be removed.)
1444fi
b195f6bc 1445AC_SUBST(old_glibc_headers)
26b4d766 1446
84384f5b 1447AC_SUBST(libc_cv_slibdir)
a1d84548 1448AC_SUBST(libc_cv_localedir)
84384f5b 1449AC_SUBST(libc_cv_sysconfdir)
1ef32c3d
UD
1450AC_SUBST(libc_cv_rootsbindir)
1451
591e1ffb 1452AC_SUBST(use_ldconfig)
cb343854 1453AC_SUBST(ldd_rewrite_script)
84384f5b 1454
c224a18a 1455AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
28f540f4
RM
1456if test $gnu_ld = yes; then
1457 AC_DEFINE(HAVE_GNU_LD)
1458fi
1459if test $gnu_as = yes; then
1460 AC_DEFINE(HAVE_GNU_AS)
1461fi
1462if test $elf = yes; then
1463 AC_DEFINE(HAVE_ELF)
1464fi
28f540f4 1465
650425ce 1466AC_SUBST(static)
ff3d7ed3
RM
1467AC_SUBST(shared)
1468if test $shared = default; then
1469 if test $gnu_ld = yes; then
1470 shared=$elf
f65fd747
UD
1471 else
1472 # For now we do not assume shared libs are available. In future more
1473 # tests might become available.
1474 shared=no
ff3d7ed3
RM
1475 fi
1476fi
cc3fa755
UD
1477
1478AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1479[pic_default=yes
1480cat > conftest.c <<EOF
9756dfe1 1481#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1482# error PIC is default.
1483#endif
1484EOF
1485if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1486 pic_default=no
1487fi
1488rm -f conftest.*])
1489AC_SUBST(pic_default)
1490
ff3d7ed3
RM
1491AC_SUBST(profile)
1492AC_SUBST(omitfp)
5a97622d 1493AC_SUBST(bounded)
5107cf1d 1494AC_SUBST(static_nss)
5ae3e846 1495AC_SUBST(nopic_initfini)
ff3d7ed3 1496
edf5b2d7
UD
1497AC_SUBST(DEFINES)
1498
7cabd57c
UD
1499case "$add_ons" in
1500 *door*) linux_doors=yes ;;
1501 *) linux_doors=no ;;
1502esac
1503AC_SUBST(linux_doors)
1504
28f540f4
RM
1505if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1506 config_makefile=
1507else
1508 config_makefile=Makefile
1509fi
1510
ee74a442
UD
1511VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1512RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1513AC_SUBST(VERSION)
ee74a442 1514AC_SUBST(RELEASE)
df4ef2ab 1515
737547be
UD
1516AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1517case $CONFIG_FILES in *config.make*)
1518echo "$config_vars" >> config.make;;
1519esac
1520test -d bits || mkdir bits], [config_vars='$config_vars'])