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