]> 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 ;;
0c8b61e6 295arm*) base_machine=arm machine=arm/arm32/$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 ;;
136d4332
UD
312s390) base_machine=s390 machine=s390/s390-32 ;;
313s390x) base_machine=s390 machine=s390/s390-64 ;;
88615235
UD
314sh3*) base_machine=sh machine=sh/sh3 ;;
315sh4*) base_machine=sh machine=sh/sh4 ;;
ca34d7a7
UD
316sparc | sparcv[67])
317 base_machine=sparc machine=sparc/sparc32 ;;
318sparcv8 | supersparc | hypersparc)
319 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
ae6b8730
RH
320sparcv8plus | sparcv8plusa | sparcv9)
321 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
ca34d7a7
UD
322sparc64 | ultrasparc)
323 base_machine=sparc machine=sparc/sparc64 ;;
0c8b61e6 324thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
28f540f4 325esac
f0523145
RM
326changequote([,])dnl
327AC_SUBST(base_machine)
28f540f4 328
dfd2257a
UD
329if test "$base_machine" = "i386"; then
330 AC_DEFINE(USE_REGPARMS)
331fi
332
f0523145 333# Compute the list of sysdep directories for this configuration.
f332db02 334# This can take a while to compute.
f0523145 335sysdep_dir=$srcdir/sysdeps
f332db02 336AC_MSG_CHECKING(sysdep dirs)
f0523145
RM
337dnl We need to use [ and ] for other purposes for a while now.
338changequote(,)dnl
28f540f4
RM
339# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
340os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
341
342case "$os" in
343gnu*)
344 base_os=mach/hurd ;;
883bc19b 345netbsd* | 386bsd* | freebsd* | bsdi*)
28f540f4 346 base_os=unix/bsd/bsd4.4 ;;
222c4e71 347osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
28f540f4 348 base_os=unix/bsd ;;
d586354e 349sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
28f540f4 350 base_os=unix/sysv ;;
f802accb
UD
351irix6*)
352 base_os=unix/sysv/irix6/$os ;;
d586354e 353solaris[2-9]*)
28f540f4 354 base_os=unix/sysv/sysv4 ;;
908c3d5b
UD
355hpux*)
356 base_os=unix/sysv/hpux/$os ;;
75d86c1f
UD
357aix4.3*)
358 base_os=unix/sysv/aix/aix4.3 ;;
28f540f4
RM
359none)
360 base_os=standalone ;;
361*)
362 base_os='' ;;
363esac
364
365# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
366tail=$os
367ostry=$os
368while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
369 ostry="$ostry /$o"
370 tail=$o
75914335 371done
28f540f4
RM
372o=`echo $tail | sed 's/[0-9]*$//'`
373if test $o != $tail; then
374 ostry="$ostry /$o"
375fi
ec4b0518
UD
376# For linux-gnu, try linux-gnu, then linux.
377o=`echo $tail | sed 's/-.*$//'`
378if test $o != $tail; then
379 ostry="$ostry /$o"
380fi
28f540f4
RM
381
382# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
383base=
384tail=$base_os
385while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
386 set $b
387 base="$base /$1"
388 tail="$2"
389done
390
ae6b8730 391# For sparc/sparc32, try sparc/sparc32 and then sparc.
28f540f4
RM
392mach=
393tail=$machine
394while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
395 set $m
10ceac89
RM
396 # Prepend the machine's FPU directory unless --without-fp.
397 if test "$with_fp" = yes; then
398 mach="$mach /$1/fpu"
82d00cab 399 fi
28f540f4
RM
400 mach="$mach /$1"
401 tail="$2"
402done
403
404dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
405changequote([,])dnl
406
407# Find what sysdep directories exist.
408sysnames=
57ba7bb4
UD
409IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
410for d in $add_ons_pfx ''; do
411 for b in $base ''; do
412 for m0 in $mach ''; do
413 for v in /$vendor ''; do
ae828bc6 414 test "$v" = / && continue
57ba7bb4 415 for o in /$ostry ''; do
ae828bc6 416 test "$o" = / && continue
57ba7bb4
UD
417 for m in $mach ''; do
418 if test "$m0$b$v$o$m"; then
419 try="${d}sysdeps$m0$b$v$o$m"
420 test -n "$enable_debug_configure" &&
421 echo "$0 [DEBUG]: try $try" >&2
9c4c0024 422 if test -d $srcdir/$try; then
57ba7bb4
UD
423 sysnames="$sysnames $try"
424 { test -n "$o" || test -n "$b"; } && os_used=t
425 { test -n "$m" || test -n "$m0"; } && machine_used=t
426 fi
427 fi
428 done
28f540f4
RM
429 done
430 done
431 done
432 done
433done
57ba7bb4 434IFS="$ac_save_ifs"
28f540f4
RM
435
436if test -z "$os_used" && test "$os" != none; then
437 AC_MSG_ERROR(Operating system $os is not supported.)
438fi
439if test -z "$machine_used" && test "$machine" != none; then
440 AC_MSG_ERROR(The $machine is not supported.)
441fi
442
443# We have now validated the configuration.
444
335aa320 445
10ceac89
RM
446# If using ELF, look for an `elf' subdirectory of each machine directory.
447# We prepend these rather than inserting them whereever the machine appears
448# because things specified by the machine's ELF ABI should override
449# OS-specific things, and should always be the same for any OS on the
450# machine (otherwise what's the point of an ABI?).
451if test "$elf" = yes; then
452 elf_dirs=
57ba7bb4 453 for d in $add_ons_pfx ''; do
57ba7bb4 454 for m in $mach; do
9c4c0024 455 if test -d $srcdir/${d}sysdeps$m/elf; then
c2bb8cab 456 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
57ba7bb4
UD
457 fi
458 done
28f540f4 459 done
57ba7bb4 460 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
28f540f4
RM
461fi
462
335aa320 463
28f540f4
RM
464# Expand the list of system names into a full list of directories
465# from each element's parent name and Implies file (if present).
466set $sysnames
e50ec9f9 467names=
28f540f4
RM
468while test $# -gt 0; do
469 name=$1
470 shift
471
e50ec9f9 472 case " $names " in *" $name "*)
f332db02
RM
473 # Already in the list.
474 continue
e50ec9f9 475 esac
f332db02
RM
476
477 # Report each name as we discover it, so there is no long pause in output.
478 echo $ac_n "$name $ac_c" >&AC_FD_MSG
479
57ba7bb4
UD
480 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
481
482 case $name in
483 /*) xsrcdir= ;;
484 *) xsrcdir=$srcdir/ ;;
485 esac
486 test -n "$enable_debug_configure" &&
487 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
488
489 if test -f $xsrcdir$name/Implies; then
28f540f4 490 # Collect more names from the `Implies' file (removing comments).
57ba7bb4
UD
491 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
492 implied=
493 for x in $implied_candidate; do
494 if test -d $xsrcdir$name_base/$x; then
495 implied="$implied $name_base/$x";
496 else
497 AC_MSG_WARN($name/Implies specifies nonexistent $x)
498 fi
28f540f4
RM
499 done
500 else
501 implied=
502 fi
503
504 # Add NAME to the list of names.
505 names="$names $name"
506
507 # Find the parent of NAME, using the empty string if it has none.
508changequote(,)dnl
57ba7bb4 509 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
28f540f4
RM
510changequote([,])dnl
511
512 # Add the names implied by NAME, and NAME's parent (if it has one), to
513 # the list of names to be processed (the argument list). We prepend the
514 # implied names to the list and append the parent. We want implied
515 # directories to come before further directories inferred from the
516 # configuration components; this ensures that for sysv4, unix/common
517 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
518 # after sysv4).
519 sysnames="`echo $implied $* $parent`"
520 test -n "$sysnames" && set $sysnames
521done
522
523# Add the default directories.
ecdc196c 524default_sysnames=sysdeps/generic
2de7874e 525if test "$elf" = yes; then
ecdc196c 526 default_sysnames="sysdeps/generic/elf $default_sysnames"
2de7874e 527fi
ecdc196c 528sysnames="$names $default_sysnames"
f332db02
RM
529AC_SUBST(sysnames)
530# The other names were emitted during the scan.
ecdc196c 531AC_MSG_RESULT($default_sysnames)
28f540f4 532
f332db02
RM
533
534### Locate tools.
28f540f4 535
28f540f4 536AC_PROG_INSTALL
2b80a372 537if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
28f540f4 538 # The makefiles need to use a different form to find it in $srcdir.
2b80a372 539 INSTALL='\$(..)./scripts/install-sh -c'
28f540f4 540fi
0e3426bb 541AC_PROG_LN_S
ae828bc6 542
a4301d41
UD
543# We need the physical current working directory. We cannot use the
544# "pwd -P" shell builtin since that's not portable. Instead we try to
545# find a pwd binary. Note that assigning to the PWD environment
546# variable might have some interesting side effects, so we don't do
547# that.
548AC_PATH_PROG(PWD_P, pwd, no)
549if test "$PWD_P" = no; then
550 AC_MSG_ERROR(*** A pwd binary could not be found.)
551fi
552
63bda0c1 553# These programs are version sensitive.
4bca4c17
UD
554AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
555AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
d64e704c 556 [version \([egcygnustpi-]*[0-9.]*\)],
aab51d22 557 [*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*],
4bca4c17 558 critic_missing=t)
22e65f8f 559AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
8fc1e2ca 560 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
2bbc70d5 561 [3.79* | 3.[89]*], critic_missing=t)
63bda0c1 562
22e65f8f 563AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
bdd421cc
UD
564 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
565 [0.[1-9][0-9].* | [1-9].*], MSGFMT=: aux_missing=t)
63bda0c1 566AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
8b7fb588 567 [GNU texinfo.* \([0-9][0-9.]*\)],
1468be21 568 [4.*], MAKEINFO=: aux_missing=t)
aec103d3
UD
569AC_CHECK_PROG_VER(SED, gsed sed, --version,
570 [GNU sed version \([0-9]*\.[0-9.]*\)],
ce19d417 571 [3.0[2-9]*|3.[1-9]*|[4-9]*], SED=: aux_missing=t)
63bda0c1 572
ea9f119b
AJ
573AC_PROG_CC_LOCAL
574AC_CANONICAL_BUILD
575if test $host != $build; then
576 AC_CHECK_PROGS(BUILD_CC, gcc cc)
577fi
578AC_SUBST(cross_compiling)
579AC_PROG_CPP
580LIBC_PROG_BINUTILS
581AC_CHECK_TOOL(MIG, mig)
582
583# Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
45ef592d
UD
584# XXX Commented out because it filters out too many good versions.
585# XXX --drepper
586# AC_CHECK_PROG_VER(AS, $AS, --version,
587# [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
588# [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
ea9f119b 589
4bca4c17
UD
590if test -n "$critic_missing"; then
591AC_MSG_ERROR([
63bda0c1
UD
592*** Some critical program is missing or too old.
593*** Check the INSTALL file for required versions.])
4bca4c17 594fi
63bda0c1 595
4bca4c17 596test -n "$aux_missing" && AC_MSG_WARN([
63bda0c1
UD
597*** An auxiliary program is missing or too old;
598*** some features will be disabled.
599*** Check the INSTALL file for required versions.])
28f540f4 600
d01d6319
UD
601# glibcbug.in wants to know the compiler version.
602CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
603AC_SUBST(CCVERSION)
604
dbe7a0f5
UD
605# if using special system headers, find out the compiler's sekrit
606# header directory and add that to the list. NOTE: Only does the right
607# thing on a system that doesn't need fixincludes. (Not presently a problem.)
608if test -n "$sysheaders"; then
609 ccheaders=`$CC -print-file-name=include`
610 SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
611fi
612AC_SUBST(SYSINCLUDES)
613
97a47867
UD
614# check if ranlib is necessary
615AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
616cat > conftest.c <<EOF
617int a;
618char b;
619void c(void) {}
620EOF
621$CC $CFLAGS -c conftest.c
622$AR cr conftest.a conftest.c
623cp conftest.a conftest2.a
624$RANLIB conftest.a
625if cmp -s conftest.a conftest2.a; then
626 libc_cv_ranlib_necessary=no
f38931a9 627else
97a47867
UD
628 libc_cv_ranlib_necessary=yes
629fi
630rm -rf conftest*])
631if test "$libc_cv_ranlib_necessary" = no; then
632 RANLIB=:
f38931a9 633fi
f38931a9 634
3911660e
UD
635# Test if LD_LIBRARY_PATH contains the notation for the current directory
636# since this would lead to problems installing/building glibc.
637# LD_LIBRARY_PATH contains the current directory if one of the following
638# is true:
639# - one of the terminals (":" and ";") is the first or last sign
640# - two terminals occur directly after each other
641# - the path contains an element with a dot in it
642AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
643changequote(,)dnl
644case ${LD_LIBRARY_PATH} in
645 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 646 ld_library_path_setting="contains current directory"
3911660e
UD
647 ;;
648 *)
649 ld_library_path_setting="ok"
650 ;;
651esac
652changequote([,])dnl
653AC_MSG_RESULT($ld_library_path_setting)
654if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
655AC_MSG_ERROR([
656*** LD_LIBRARY_PATH shouldn't contain the current directory when
657*** building glibc. Please change the environment variable
658*** and run configure again.])
3911660e 659fi
8e31cf7e 660
84384f5b 661AC_PATH_PROG(BASH, bash, no)
a18f587d 662if test "$BASH" != no &&
f43ce637 663 $BASH -c 'test "$BASH_VERSINFO" \
6973fc01 664 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
84384f5b
UD
665 libc_cv_have_bash2=yes
666else
667 libc_cv_have_bash2=no
668fi
669AC_SUBST(libc_cv_have_bash2)
670
5290baf0
UD
671dnl We need a ksh compatible shell for tzselect.
672if test "$BASH" = no; then
673 AC_PATH_PROG(KSH, ksh, no)
674 if test "$KSH" = no; then
675 libc_cv_have_ksh=no
676 else
677 libc_cv_have_ksh=yes
678 fi
679else
680 KSH="$BASH"
681 AC_SUBST(KSH)
682 libc_cv_have_ksh=yes
683fi
684AC_SUBST(libc_cv_have_ksh)
685
5aa8ff62 686AC_PROG_AWK
c0016081 687AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
688if test "$PERL" != no &&
689 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
690 PERL=no
ecb06196 691fi
2f512715
AS
692AC_PATH_PROG(INSTALL_INFO, install-info, no,
693 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
c0016081
UD
694if test "$INSTALL_INFO" != "no"; then
695AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
696 [mkdir conftest.d
697 # There is a hard ^_ on the next line. I am open to better ideas.
698 (echo '\1f'
699 echo 'File: dir Node: Top This is the top of the INFO tree'
700 echo '* Menu:') >conftest.d/dir
701 (echo 'INFO-DIR-SECTION i-d-s works'
702 echo 'START-INFO-DIR-ENTRY'
703 echo '* Prog: (prog). Program.'
704 echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
705 if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
d8cceb4f 706 then
c0016081
UD
707 if grep -s 'i-d-s works' conftest.d/dir >/dev/null
708 then libc_cv_old_debian_install_info=no
709 else libc_cv_old_debian_install_info=yes
710 fi
711 else libc_cv_old_debian_install_info=no testfailed=t
712 fi
713 rm -fr conftest.d])
714if test -n "$testfailed"
715then AC_MSG_WARN([install-info errored out, check config.log])
716fi
717OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
718fi
719AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
a2b08ee5 720
2de00372
UD
721AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
722
b8dc6a10 723AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
28f540f4
RM
724echo '#include <stddef.h>
725FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
726if eval "$ac_cpp conftest.c 2>/dev/null" \
727| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
728 libc_cv_signed_size_t=no
729else
730 libc_cv_signed_size_t=yes
731fi
732rm -f conftest*])
28f540f4
RM
733if test $libc_cv_signed_size_t = yes; then
734 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
735 cat >> confdefs.h <<\EOF
736#undef __SIZE_TYPE__
737#define __SIZE_TYPE__ unsigned
738EOF
739fi
740
b8dc6a10 741AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
742AC_TRY_COMPILE(dnl
743[#define __need_size_t
744#define __need_wchar_t
745#include <stddef.h>
746#define __need_NULL
747#include <stddef.h>], [size_t size; wchar_t wchar;
748#ifdef offsetof
749#error stddef.h ignored __need_*
750#endif
751if (&size == NULL || &wchar == NULL) abort ();],
752 libc_cv_friendly_stddef=yes,
753 libc_cv_friendly_stddef=no)])
28f540f4
RM
754if test $libc_cv_friendly_stddef = yes; then
755 config_vars="$config_vars
756override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
757fi
758
b8dc6a10
RM
759AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
760 libc_cv_need_minus_P, [dnl
28f540f4
RM
761cat > conftest.S <<EOF
762#include "confdefs.h"
763/* Nothing whatsoever. */
764EOF
765if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
766 libc_cv_need_minus_P=no
767else
768 libc_cv_need_minus_P=yes
769fi
770rm -f conftest*])
28f540f4
RM
771if test $libc_cv_need_minus_P = yes; then
772 config_vars="$config_vars
773asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
774fi
775
2293395f
UD
776AC_MSG_CHECKING(whether .text pseudo-op must be used)
777AC_CACHE_VAL(libc_cv_dot_text, [dnl
778cat > conftest.s <<EOF
779.text
780EOF
781libc_cv_dot_text=
782if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
783 libc_cv_dot_text=.text
784fi
785rm -f conftest*])
786if test -z "$libc_cv_dot_text"; then
787 AC_MSG_RESULT(no)
788else
789 AC_MSG_RESULT(yes)
790fi
791
b8dc6a10
RM
792AC_CACHE_CHECK(for assembler global-symbol directive,
793 libc_cv_asm_global_directive, [dnl
9a70fcab 794libc_cv_asm_global_directive=UNKNOWN
908c3d5b 795for ac_globl in .globl .global .EXPORT; do
9a70fcab 796 cat > conftest.s <<EOF
2293395f 797 ${libc_cv_dot_text}
908c3d5b 798 ${ac_globl} foo
ae1025be 799foo:
9a70fcab
UD
800EOF
801 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
802 libc_cv_asm_global_directive=${ac_globl}
803 fi
804 rm -f conftest*
805 test $libc_cv_asm_global_directive != UNKNOWN && break
806done])
9a70fcab
UD
807if test $libc_cv_asm_global_directive = UNKNOWN; then
808 AC_MSG_ERROR(cannot determine asm global directive)
809else
810 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
811fi
812
b8dc6a10 813AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 814cat > conftest.s <<EOF
2293395f 815${libc_cv_dot_text}
ae1025be 816foo:
df2a0c93 817.set glibc_conftest_frobozz,foo
9a70fcab 818$libc_cv_asm_global_directive glibc_conftest_frobozz
e215c478 819EOF
df2a0c93
RM
820# The alpha-dec-osf1 assembler gives only a warning for `.set'
821# (but it doesn't work), so we must do a linking check to be sure.
822cat > conftest1.c <<\EOF
823extern int glibc_conftest_frobozz;
824main () { printf ("%d\n", glibc_conftest_frobozz); }
825EOF
826if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
cb2f05ed 827 -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
e215c478
RM
828 libc_cv_asm_set_directive=yes
829else
830 libc_cv_asm_set_directive=no
831fi
65b3cbcb 832rm -f conftest*])
e215c478
RM
833if test $libc_cv_asm_set_directive = yes; then
834 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
835fi
836
2aa15430
UD
837# The Aix ld uses global .symbol_names instead of symbol_names.
838case "$os" in
839aix4.3*)
840 AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
841esac
842
377a515b
UD
843AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
844[cat > conftest.s <<EOF
2293395f 845${libc_cv_dot_text}
4cca6b86 846_sym:
377a515b
UD
847.symver _sym,sym@VERS
848EOF
849if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
850 libc_cv_asm_symver_directive=yes
851else
852 libc_cv_asm_symver_directive=no
853fi
854rm -f conftest*])
855AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
856if test $libc_cv_asm_symver_directive = yes; then
857 cat > conftest.s <<EOF
2293395f 858${libc_cv_dot_text}
4cca6b86 859_sym:
377a515b
UD
860.symver _sym,sym@VERS
861EOF
862 cat > conftest.map <<EOF
f43ce637 863VERS_1 {
377a515b
UD
864 global: sym;
865};
f43ce637
UD
866
867VERS_2 {
868 global: sym;
869} VERS_1;
377a515b
UD
870EOF
871 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
5ae3e846
UD
872 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
873 -nostartfiles -nostdlib
ae1025be
UD
874 -Wl,--version-script,conftest.map
875 1>&AC_FD_CC]);
377a515b
UD
876 then
877 libc_cv_ld_version_script_option=yes
878 else
879 libc_cv_ld_version_script_option=no
880 fi
881 else
882 libc_cv_ld_version_script_option=no
883 fi
884else
885 libc_cv_ld_version_script_option=no
886fi
887rm -f conftest*])
7499a22a
RM
888if test $shared != no &&
889 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
890 test $libc_cv_ld_version_script_option = yes &&
891 test $enable_versioning = yes; then
377a515b
UD
892 VERSIONING=yes
893 AC_DEFINE(DO_VERSIONING)
894else
895 VERSIONING=no
896fi
897AC_SUBST(VERSIONING)
898
7499a22a 899if test $shared != no && test $VERSIONING = no; then
f43ce637 900 echo "\
f4017d20 901*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
902*** versioning will introduce incompatibilities so that old binaries
903*** will not run anymore.
50304ef0 904*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 905fi
fd26970f
UD
906if test $elf = yes; then
907 AC_CACHE_CHECK(for .previous assembler directive,
908 libc_cv_asm_previous_directive, [dnl
909 cat > conftest.s <<EOF
910.section foo_section
911.previous
912EOF
913 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
914 libc_cv_asm_previous_directive=yes
915 else
916 libc_cv_asm_previous_directive=no
917 fi
918 rm -f conftest*])
919 if test $libc_cv_asm_previous_directive = yes; then
920 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
921 else
922 AC_CACHE_CHECK(for .popsection assembler directive,
923 libc_cv_asm_popsection_directive, [dnl
924 cat > conftest.s <<EOF
925.pushsection foo_section
926.popsection
927EOF
928 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
929 libc_cv_asm_popsection_directive=yes
930 else
931 libc_cv_asm_popsection_directive=no
932 fi
933 rm -f conftest*])
934 if test $libc_cv_asm_popsection_directive = yes; then
935 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
936 fi
937 fi
2d499f55
UD
938 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
939 libc_cv_asm_protected_directive, [dnl
940 cat > conftest.s <<EOF
941.protected foo
942foo:
943.hidden bar
944bar:
945EOF
946 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
947 libc_cv_asm_protected_directive=yes
948 else
949 libc_cv_asm_protected_directive=no
950 fi
951 rm -f conftest*])
952 AC_SUBST(libc_cv_asm_protected_directive)
0fb7851f
UD
953
954 AC_CACHE_CHECK(for -z nodelete option,
955 libc_cv_z_nodelete, [dnl
956 cat > conftest.c <<EOF
957int _start (void) { return 42; }
958EOF
959 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
960 then
961 libc_cv_z_nodelete=yes
962 else
963 libc_cv_z_nodelete=no
964 fi
965 rm -f conftest*])
966 AC_SUBST(libc_cv_z_nodelete)
2f54c82d
UD
967
968 AC_CACHE_CHECK(for -z nodlopen option,
969 libc_cv_z_nodlopen, [dnl
970 cat > conftest.c <<EOF
971int _start (void) { return 42; }
972EOF
973 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
974 then
975 libc_cv_z_nodlopen=yes
976 else
977 libc_cv_z_nodlopen=no
978 fi
979 rm -f conftest*])
980 AC_SUBST(libc_cv_z_nodlopen)
5d916713
UD
981
982 AC_CACHE_CHECK(for -z initfirst option,
983 libc_cv_z_initfirst, [dnl
984 cat > conftest.c <<EOF
985int _start (void) { return 42; }
986EOF
987 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
988 then
989 libc_cv_z_initfirst=yes
990 else
991 libc_cv_z_initfirst=no
992 fi
993 rm -f conftest*])
994 AC_SUBST(libc_cv_z_initfirst)
639c3248
UD
995
996 AC_CACHE_CHECK(for -Bgroup option,
997 libc_cv_Bgroup, [dnl
998 cat > conftest.c <<EOF
999int _start (void) { return 42; }
1000EOF
1001 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AC_FD_CC])
1002 then
1003 libc_cv_Bgroup=yes
1004 else
1005 libc_cv_Bgroup=no
1006 fi
1007 rm -f conftest*])
1008 AC_SUBST(libc_cv_Bgroup)
fd26970f
UD
1009fi
1010
b8dc6a10
RM
1011if test $elf != yes; then
1012 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1013 [AC_TRY_COMPILE(, [asm (".section .init");
84724245 1014 asm (".section .fini");
2293395f 1015 asm ("${libc_cv_dot_text}");],
b8dc6a10
RM
1016 libc_cv_have_initfini=yes,
1017 libc_cv_have_initfini=no)])
1018 AC_SUBST(libc_cv_have_initfini)dnl
1019 if test $libc_cv_have_initfini = yes; then
1020 AC_DEFINE(HAVE_INITFINI)
1021 fi
1022fi
e215c478 1023
e26dd47f
UD
1024if test $elf = yes -a $gnu_ld = yes; then
1025 AC_CACHE_CHECK(whether cc puts quotes around section names,
1026 libc_cv_have_section_quotes,
1027 [cat > conftest.c <<EOF
1028 static const int foo
1029 __attribute__ ((section ("bar"))) = 1;
1030EOF
1031 if ${CC-cc} -S conftest.c -o conftest.s; then
1032 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1033 libc_cv_have_section_quotes=yes
1034 else
1035 libc_cv_have_section_quotes=no
1036 fi
1037 else
1038 libc_cv_have_section_quotes=unknown
1039 fi
1040 rm -f conftest.[cs]
1041 ])
1042 if test $libc_cv_have_section_quotes = yes; then
1043 AC_DEFINE(HAVE_SECTION_QUOTES)
1044 fi
1045fi
1046
9a0a462c
UD
1047dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1048AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1049[cat > conftest.$ac_ext <<EOF
1050dnl This sometimes fails to find confdefs.h, for some reason.
1051dnl [#]line __oline__ "[$]0"
1052[#]line __oline__ "configure"
1053#include "confdefs.h"
1054void underscore_test(void) {
1055return; }
1056EOF
1057if AC_TRY_EVAL(ac_compile); then
1058 if grep _underscore_test conftest* >/dev/null; then
1059 ifelse([$1], , :, [rm -f conftest*
1060 $1])
1061 else
1062 ifelse([$2], , , [rm -f conftest*
1063 $2])
1064 fi
1065else
1066 echo "configure: failed program was:" >&AC_FD_CC
1067 cat conftest.$ac_ext >&AC_FD_CC
1068 ifelse([$2], , , [rm -f conftest*
1069 $2])
1070fi
1071rm -f conftest*])
1072
c224a18a
RM
1073if test $elf = yes; then
1074 libc_cv_asm_underscores=no
1075else
9a0a462c
UD
1076 if test $ac_cv_prog_cc_works = yes; then
1077 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1078 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1079 libc_cv_asm_underscores=yes,
1080 libc_cv_asm_underscores=no)])
1081 else
1082 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1083 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1084 libc_cv_asm_underscores=no)])
1085 fi
c224a18a
RM
1086fi
1087if test $libc_cv_asm_underscores = no; then
1088 AC_DEFINE(NO_UNDERSCORES)
1089fi
1090
1091if test $elf = yes; then
1092 libc_cv_weak_symbols=yes
9a97d1f7
UD
1093fi
1094
1095AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1096 [dnl
c224a18a 1097cat > conftest.s <<EOF
2293395f 1098${libc_cv_dot_text}
c224a18a 1099${libc_cv_asm_global_directive} foo
ae1025be 1100foo:
c224a18a
RM
1101.weak foo
1102.weak bar; bar = foo
1103EOF
9a97d1f7
UD
1104if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1105 libc_cv_asm_weak_directive=yes
1106else
1107 libc_cv_asm_weak_directive=no
1108fi
1109rm -f conftest*])
c224a18a 1110
c8cf0b14 1111if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1112 AC_CACHE_CHECK(for assembler .weakext directive,
1113 libc_cv_asm_weakext_directive,
1114 [dnl
1115cat > conftest.s <<EOF
2293395f 1116${libc_cv_dot_text}
c224a18a 1117${libc_cv_asm_global_directive} foo
ae1025be 1118foo:
f802accb
UD
1119.weakext bar foo
1120.weakext baz
1121${libc_cv_asm_global_directive} baz
9a97d1f7 1122baz:
c224a18a
RM
1123EOF
1124 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1125 libc_cv_asm_weakext_directive=yes
1126 else
1127 libc_cv_asm_weakext_directive=no
1128 fi
1129 rm -f conftest*])
1130
9a97d1f7 1131fi # no .weak
c224a18a 1132
ffcf9634 1133if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1134 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1135elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1136 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1137fi
1138
b15cb495
UD
1139dnl The standard hppa assembler uses `;' to start comments and `!'
1140dnl as a line separator.
1141case "${host_cpu}-${host_os}" in
1142 hppa*linux*)
1143 AC_CACHE_CHECK(for assembler line separator,
1144 libc_cv_asm_line_sep, [dnl
1145 cat > conftest.s <<EOF
1146 nop ; is_old_puffin
1147EOF
1148 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1149 libc_cv_asm_line_sep='!'
1150 else
1151 if test -z "$enable_hacker_mode"; then
1152 echo "*** You need a newer assembler to compile glibc"
1153 rm -f conftest*
1154 exit 1
1155 fi
1156 libc_cv_asm_line_sep=';'
1157 fi
1158 rm -f conftest*])
1159 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1160 ;;
1161esac
1162
a641835a
RM
1163AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1164cat > conftest.c <<\EOF
5f0e6fc7 1165_start () {}
dcf0671d
UD
1166int __eh_pc;
1167__throw () {}
a641835a 1168EOF
dcea62dd
RM
1169dnl No \ in command here because it ends up inside ''.
1170if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1171 -nostdlib -nostartfiles -Wl,--no-whole-archive
ae1025be 1172 -o conftest conftest.c 1>&AC_FD_CC]); then
a641835a
RM
1173 libc_cv_ld_no_whole_archive=yes
1174else
1175 libc_cv_ld_no_whole_archive=no
1176fi
1177rm -f conftest*])
b17277cf
UD
1178if test $libc_cv_ld_no_whole_archive = yes; then
1179 no_whole_archive=-Wl,--no-whole-archive
1180fi
1181AC_SUBST(no_whole_archive)dnl
a641835a 1182
dff14448 1183AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1184cat > conftest.c <<\EOF
1185_start () {}
1186int __eh_pc;
1187__throw () {}
1188EOF
1189dnl No \ in command here because it ends up inside ''.
1190if AC_TRY_COMMAND([${CC-cc} $CFLAGS
dff14448 1191 -nostdlib -nostartfiles -fexceptions
ae1025be 1192 -o conftest conftest.c 1>&AC_FD_CC]); then
dff14448 1193 libc_cv_gcc_exceptions=yes
b236e99d 1194else
dff14448 1195 libc_cv_gcc_exceptions=no
b236e99d
UD
1196fi
1197rm -f conftest*])
dff14448
UD
1198if test $libc_cv_gcc_exceptions = yes; then
1199 exceptions=-fexceptions
b17277cf 1200fi
dff14448 1201AC_SUBST(exceptions)dnl
b236e99d 1202
d71b808a
UD
1203if test "$base_machine" = alpha ; then
1204AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1205cat > conftest.c <<\EOF
1206foo () { }
1207EOF
1208dnl
9756dfe1 1209if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
d71b808a
UD
1210then
1211 libc_cv_gcc_alpha_ng_prefix=yes
1212else
1213 libc_cv_gcc_alpha_ng_prefix=no
1214fi
1215rm -f conftest* ])
1216if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1217 AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1218else
1219 AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1220fi
1221fi
1222
66000494
UD
1223if test "$host_cpu" = powerpc ; then
1224# Check for a bug present in at least versions 2.8.x of GCC
1225# and versions 1.0.x of EGCS.
1226AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1227AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1228 libc_cv_c_asmcr0_bug='no',
1229 libc_cv_c_asmcr0_bug='yes')])
1230if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1231 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1232fi
1233fi
1234
650425ce
UD
1235AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1236[cat > conftest.c <<EOF
1237#line __oline__ "configure"
1238static char __EH_FRAME_BEGIN__[];
1239_start ()
1240{
9756dfe1 1241#ifdef CHECK__register_frame
650425ce
UD
1242 __register_frame (__EH_FRAME_BEGIN__);
1243 __deregister_frame (__EH_FRAME_BEGIN__);
9756dfe1
UD
1244#endif
1245#ifdef CHECK__register_frame_info
1246 __register_frame_info (__EH_FRAME_BEGIN__);
1247 __deregister_frame_info (__EH_FRAME_BEGIN__);
1248#endif
650425ce
UD
1249}
1250int __eh_pc;
1251__throw () {}
1252/* FIXME: this is fragile. */
1253malloc () {}
1254strcmp () {}
1255strlen () {}
1256memcpy () {}
1257memset () {}
1258free () {}
1259abort () {}
dfd2257a 1260__bzero () {}
650425ce
UD
1261EOF
1262dnl No \ in command here because it ends up inside ''.
9756dfe1 1263if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
650425ce
UD
1264 -nostdlib -nostartfiles
1265 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
9756dfe1 1266 libc_cv_gcc_dwarf2_unwind_info=static
650425ce
UD
1267else
1268 libc_cv_gcc_dwarf2_unwind_info=no
1269fi
9756dfe1
UD
1270if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1271 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1272 -nostdlib -nostartfiles
1273 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1274 libc_cv_gcc_dwarf2_unwind_info=yes
1275 else
1276 libc_cv_gcc_dwarf2_unwind_info=no
1277 fi
1278fi
650425ce 1279rm -f conftest*])
9756dfe1
UD
1280case $libc_cv_gcc_dwarf2_unwind_info in
1281yes)
650425ce 1282 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
9756dfe1
UD
1283 ;;
1284static)
1285 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1286 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1287 ;;
1288esac
650425ce 1289
a8eab8b1
UD
1290dnl Check whether compiler understands __builtin_expect.
1291AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1292[cat > conftest.c <<EOF
1293#line __oline__ "configure"
1294int foo (int a)
1295{
1296 a = __builtin_expect (a, 10);
1297 return a == 10 ? 0 : 1;
1298}
1299EOF
1300dnl No \ in command here because it ends up inside ''.
1301if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1302 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1303 libc_cv_gcc_builtin_expect=yes
1304else
1305 libc_cv_gcc_builtin_expect=no
1306fi
1307rm -f conftest*])
1308if test "$libc_cv_gcc_builtin_expect" = yes; then
1309 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1310fi
1311
3d558f4e
UD
1312dnl Check whether the compiler supports subtraction of local labels.
1313AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1314[cat > conftest.c <<EOF
1315changequote(,)dnl
1316#line __oline__ "configure"
1317int foo (int a)
1318{
1319 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1320 void *p = &&l1 + ar[a];
1321 goto *p;
1322 l1:
1323 return 1;
1324 l2:
1325 return 2;
1326}
1327changequote([,])dnl
1328EOF
1329dnl No \ in command here because it ends up inside ''.
1330if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1331 -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1332 libc_cv_gcc_subtract_local_labels=yes
1333else
1334 libc_cv_gcc_subtract_local_labels=no
1335fi
1336rm -f conftest*])
1337if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1338 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1339fi
1340
c8f3e6db
UD
1341dnl Check whether we have the gd library available.
1342AC_MSG_CHECKING(for libgd)
6dab8688
UD
1343if test "$with_gd" != "no"; then
1344 old_CFLAGS="$CFLAGS"
1345 CFLAGS="$CFLAGS $libgd_include"
1346 old_LDFLAGS="$LDFLAGS"
1347 LDFLAGS="$LDFLAGS $libgd_ldflags"
1348 old_LIBS="$LIBS"
1349 LIBS="$LIBS -lgd -lpng -lz -lm"
1350 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1351 CFLAGS="$old_CFLAGS"
1352 LDFLAGS="$old_LDFLAGS"
1353 LIBS="$old_LIBS"
1354else
1355 LIBGD=no
1356fi
c8f3e6db
UD
1357AC_MSG_RESULT($LIBGD)
1358AC_SUBST(LIBGD)
3d558f4e 1359
8ed1e7d5
GK
1360dnl check for the size of 'long double'.
1361AC_CHECK_SIZEOF(long double, 0)
1362sizeof_long_double=$ac_cv_sizeof_long_double
1363AC_SUBST(sizeof_long_double)
1364
c224a18a
RM
1365### End of automated tests.
1366### Now run sysdeps configure fragments.
1367
28f540f4
RM
1368# sysdeps configure fragments may set these with files to be linked below.
1369libc_link_dests=
1370libc_link_sources=
1371
cb343854 1372# They also can set these variables.
591e1ffb 1373use_ldconfig=no
cb343854
UD
1374ldd_rewrite_script=no
1375
28f540f4
RM
1376# Iterate over all the sysdep directories we will use, running their
1377# configure fragments, and looking for a uname implementation.
1378uname=
1379for dir in $sysnames; do
57ba7bb4
UD
1380 case $dir in
1381 /*) dest=$dir ;;
1382 *) dest=$srcdir/$dir ;;
1383 esac
1384 if test -r $dest/configure; then
1385 AC_MSG_RESULT(running configure fragment for $dest)
1386 . $dest/configure
28f540f4 1387 fi
4ca84cff 1388[
28f540f4 1389 if test -z "$uname"; then
e7f1f046
UD
1390 if test -r $dest/uname.c ||
1391 test -r $dest/uname.S ||
1392 { test -r $dest/syscalls.list &&
1393 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
b86199fb 1394 uname=$dir
4ca84cff 1395 fi
28f540f4 1396 fi
4ca84cff 1397]dnl
28f540f4
RM
1398done
1399
1400AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1401
1402# If we will use the generic uname implementation, we must figure out what
1403# it will say by examining the system, and write the results in config-name.h.
e7f1f046 1404if test "$uname" = "sysdeps/generic"; then
28f540f4
RM
1405
1406changequote(,)dnl
1407 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1408changequote([,])dnl
1409 if test $uname_sysname != $config_os; then
1410 config_release=`echo $config_os | sed s/$uname_sysname//`
1411 fi
1412dnl
1413AC_DEFUN(LIBC_KERNEL_ID, [dnl
1414 if test -r /vmunix; then
1415 kernel_id=`strings /vmunix | grep UNIX`
1416 elif test -r /dynix; then
1417 kernel_id=`strings /dynix | grep DYNIX`
1418 else
1419 kernel_id=
1420 fi
1421])dnl
1422
b8dc6a10 1423 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
28f540f4
RM
1424AC_REQUIRE([LIBC_KERNEL_ID])dnl
1425changequote(,)dnl
1426 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1427changequote([,])dnl
1428 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1429 != x$config_release; then
1430 # The configuration release is a substring of the kernel release.
1431 libc_cv_uname_release=$kernel_release
1432 elif test x$config_release != x; then
1433 libc_cv_uname_release=$config_release
1434 elif test x$kernel_release != x; then
1435 libc_cv_uname_release=$kernel_release
1436 else
1437 libc_cv_uname_release=unknown
1438 fi])
28f540f4
RM
1439 uname_release="$libc_cv_uname_release"
1440
b8dc6a10 1441 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
28f540f4
RM
1442AC_REQUIRE([LIBC_KERNEL_ID])dnl
1443changequote(,)dnl
1444 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1445changequote([,])dnl
1446 if test -n "$kernel_version"; then
1447 libc_cv_uname_version="$kernel_version"
1448 else
1449 libc_cv_uname_version=unknown
1450 fi])
28f540f4
RM
1451 uname_version="$libc_cv_uname_version"
1452
1453AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1454 config_uname=config-name.h:config-name.in
1455else
1456 # For non-generic uname, we don't need to create config-name.h at all.
1457 config_uname=
1458fi
1459
96aa2d94
RM
1460AC_MSG_CHECKING(stdio selection)
1461AC_SUBST(stdio)
1462case $stdio in
1463libio) AC_DEFINE(USE_IN_LIBIO) ;;
1464default) stdio=stdio ;;
1465esac
1466AC_MSG_RESULT($stdio)
1467
a53bad16
UD
1468# Test for old glibc 2.0.x headers so that they can be removed properly
1469# Search only in includedir.
1470AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 1471if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
1472then
1473 old_glibc_headers=yes
1474else
1475 old_glibc_headers=no
1476fi
1477AC_MSG_RESULT($old_glibc_headers)
1478if test ${old_glibc_headers} = yes; then
1479 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1480 AC_MSG_WARN(*** be removed.)
1481fi
b195f6bc 1482AC_SUBST(old_glibc_headers)
26b4d766 1483
84384f5b 1484AC_SUBST(libc_cv_slibdir)
a1d84548 1485AC_SUBST(libc_cv_localedir)
84384f5b 1486AC_SUBST(libc_cv_sysconfdir)
1ef32c3d
UD
1487AC_SUBST(libc_cv_rootsbindir)
1488
591e1ffb 1489AC_SUBST(use_ldconfig)
cb343854 1490AC_SUBST(ldd_rewrite_script)
84384f5b 1491
c224a18a 1492AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
28f540f4
RM
1493if test $gnu_ld = yes; then
1494 AC_DEFINE(HAVE_GNU_LD)
1495fi
1496if test $gnu_as = yes; then
1497 AC_DEFINE(HAVE_GNU_AS)
1498fi
1499if test $elf = yes; then
1500 AC_DEFINE(HAVE_ELF)
1501fi
28f540f4 1502
650425ce 1503AC_SUBST(static)
ff3d7ed3
RM
1504AC_SUBST(shared)
1505if test $shared = default; then
1506 if test $gnu_ld = yes; then
1507 shared=$elf
f65fd747
UD
1508 else
1509 # For now we do not assume shared libs are available. In future more
1510 # tests might become available.
1511 shared=no
ff3d7ed3
RM
1512 fi
1513fi
cc3fa755
UD
1514
1515AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1516[pic_default=yes
1517cat > conftest.c <<EOF
9756dfe1 1518#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1519# error PIC is default.
1520#endif
1521EOF
1522if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1523 pic_default=no
1524fi
1525rm -f conftest.*])
1526AC_SUBST(pic_default)
1527
ff3d7ed3
RM
1528AC_SUBST(profile)
1529AC_SUBST(omitfp)
5a97622d 1530AC_SUBST(bounded)
5107cf1d 1531AC_SUBST(static_nss)
5ae3e846 1532AC_SUBST(nopic_initfini)
ff3d7ed3 1533
edf5b2d7
UD
1534AC_SUBST(DEFINES)
1535
7cabd57c
UD
1536case "$add_ons" in
1537 *door*) linux_doors=yes ;;
1538 *) linux_doors=no ;;
1539esac
1540AC_SUBST(linux_doors)
1541
28f540f4
RM
1542if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1543 config_makefile=
1544else
1545 config_makefile=Makefile
1546fi
1547
ee74a442
UD
1548VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1549RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1550AC_SUBST(VERSION)
ee74a442 1551AC_SUBST(RELEASE)
df4ef2ab 1552
737547be
UD
1553AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1554case $CONFIG_FILES in *config.make*)
1555echo "$config_vars" >> config.make;;
1556esac
1557test -d bits || mkdir bits], [config_vars='$config_vars'])