* sysdeps/m68k/fpu/e_log2f.c: Fix typo.
[glibc.git] / configure.in
blob248eb5586c0ee796f80b61a8026464c65dfed4a5
1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION([$CVSid$])
3 AC_PREREQ(2.13)dnl              dnl Minimum Autoconf version required.
4 AC_INIT(include/features.h)
5 AC_CONFIG_HEADER(config.h)
6 AC_CONFIG_AUX_DIR(scripts)
8 # This will get text that should go into config.make.
9 config_vars=
11 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
12 AC_ARG_WITH(gmp, dnl
13   --with-gmp=DIRECTORY    find GMP source code in DIRECTORY (not needed),
14             [dnl
15 case "$with_gmp" in
16 yes) AC_MSG_ERROR(--with-gmp requires an argument; use --with-gmp=DIRECTORY) ;;
17 ''|no) ;;
18 *) config_vars="$config_vars
19 gmp-srcdir = $withval" ;;
20 esac
22 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
23 AC_ARG_WITH(gd, dnl
24   --with-gd=DIR           find libgd include dir and library with prefix DIR,
25             [dnl
26 case "$with_gd" in
27 yes|''|no) ;;
28 *) libgd_include="-I$withval/include"
29    libgd_ldflags="-L$withval/lib" ;;
30 esac
32 AC_ARG_WITH(gd-include, dnl
33   --with-gd-include=DIR   find libgd include files in DIR,
34             [dnl
35 case "$with_gd_include" in
36 ''|no) ;;
37 *) libgd_include="-I$withval" ;;
38 esac
40 AC_ARG_WITH(gd-lib, dnl
41   --with-gd-lib=DIR       find libgd library files in DIR,
42             [dnl
43 case "$with_gd_lib" in
44 ''|no) ;;
45 *) libgd_ldflags="-L$withval" ;;
46 esac
49 if test -n "$libgd_include"; then
50   config_vars="$config_vars
51 CFLAGS-memusagestat.c = $libgd_include"
53 if test -n "$libgd_ldflags"; then
54   config_vars="$config_vars
55 libgd-LDFLAGS = $libgd_ldflags"
58 dnl Arguments to specify presence of other packages/features.
59 AC_ARG_WITH(fp, dnl
60 [  --with-fp              if using floating-point hardware [default=yes]],
61             with_fp=$withval, with_fp=yes)
62 AC_ARG_WITH(binutils, dnl
63   --with-binutils=PATH    specify location of binutils (as and ld),
64             path_binutils=$withval, path_binutils='')
65 AC_ARG_WITH(elf, dnl
66   --with-elf              if using the ELF object format,
67             elf=$withval, elf=no)
68 AC_ARG_WITH(cvs, dnl
69 [  --without-cvs           if CVS should not be used],
70             with_cvs=$withval, with_cvs=yes)
71 if 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
77 AC_SUBST(with_cvs)
79 AC_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='')
85 AC_ARG_ENABLE(libio, dnl
86 [  --enable-libio          build in GNU libio instead of GNU stdio],
87               [if test $enableval = yes; then
88                  stdio=libio
89                else
90                  stdio=stdio
91                fi],
92               stdio=default)
94 AC_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)
99 dnl Arguments to enable or disable building the static, shared, profiled,
100 dnl and -fomit-frame-pointer libraries.
101 dnl I've disabled this for now since we cannot build glibc without static
102 dnl libraries built in the moment.
103 dnl AC_ARG_ENABLE(static, dnl
104 dnl [  --enable-static         build static library [default=yes]],
105 dnl           static=$enableval, static=yes)
106 static=yes
107 AC_ARG_ENABLE(shared, dnl
108 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
109               shared=$enableval, shared=default)
110 AC_ARG_ENABLE(profile, dnl
111 [  --enable-profile        build profiled library [default=yes]],
112               profile=$enableval, profile=yes)
113 AC_ARG_ENABLE(omitfp, dnl
114 [  --enable-omitfp         build undebuggable optimized library [default=no]],
115               omitfp=$enableval, omitfp=no)
116 AC_ARG_ENABLE(bounded, dnl
117 [  --enable-bounded        build with runtime bounds checking [default=no]],
118               bounded=$enableval, bounded=no)
119 AC_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)
124 AC_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)
128 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
129   oldest_abi=default
130 else
131   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
133 AC_SUBST(oldest_abi)
135 dnl Generic infrastructure for drop-in additions to libc.
136 AC_ARG_ENABLE(add-ons, dnl
137 [  --enable-add-ons[=DIR1,DIR2]...
138                           configure and build add-ons in DIR1,DIR2,...
139                           search for add-ons if no parameter given],
140   [case "$enableval" in
141     yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
142          test "$add_ons" = "*" && add_ons= ;;
143     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
144    esac],
145   [add_ons=])
147 AC_CONFIG_SUBDIRS($add_ons)
148 add_ons_pfx=
149 if test x"$add_ons" != x; then
150   for f in $add_ons; do
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
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
172   done
175 dnl On some platforms we cannot use dynamic loading.  We must provide
176 dnl static NSS modules.
177 AC_ARG_ENABLE(static-nss, dnl
178 [  --enable-static-nss     build static NSS modules [default=no]],
179               static_nss=$enableval, static_nss=no)
180 if test x"$static_nss" = xyes; then
181   AC_DEFINE(DO_STATIC_NSS)
184 AC_ARG_ENABLE(force-install,
185 [  --disable-force-install don't force installation of files from this package,
186                           even if they are older than the installed files],
187               force_install=$enableval, force_install=yes)
188 AC_SUBST(force_install)
190 dnl On some platforms we allow dropping compatibility with all kernel
191 dnl versions.
192 AC_ARG_ENABLE(kernel,
193 [  --enable-kernel=VERSION compile for compatibility with kernel not older
194                            than VERSION],
195               minimum_kernel=$enableval)
196 dnl Prevent unreasonable values.
197 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
198   # Better nothing than this.
199   minimum_kernel=""
200 else
201   if test "$minimum_kernel" = current; then
202     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
203   fi
206 dnl For the development we sometimes want gcc to issue even more warnings.
207 dnl This is not the default since many of the extra warnings are not
208 dnl appropriate.
209 AC_ARG_ENABLE(all-warnings,
210 [  --enable-all-warnings   enable all useful warnings gcc can issue],
211               all_warnings=$enableval)
212 AC_SUBST(all_warnings)
214 AC_CANONICAL_HOST
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.
221 case "$host_os" in
222 linux*)
223   ;;
224 gnu*)
225   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
226   ;;
227 esac
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.
232 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
234 # Don't allow vendor == "unknown"
235 test "$config_vendor" = unknown && config_vendor=
236 config_os="`echo $config_os | sed 's/^unknown-//'`"
238 # Some configurations imply other options.
239 case "$host_os" in
240 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
241   # These systems always use GNU tools.
242   gnu_ld=yes gnu_as=yes ;;
243 esac
244 case "$host_os" in
245 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
246 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
247   ;;
248 gnu* | linux* | sysv4* | solaris2* | irix6*)
249   # These systems (almost) always use the ELF format.
250   elf=yes
251   ;;
252 esac
254 machine=$config_machine
255 vendor=$config_vendor
256 os=$config_os
258 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
259 # Unify this here.
260 if test "$machine" = rs6000; then
261   machine="powerpc"
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
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.
272 if test -z "$enable_hacker_mode"; then
273   case "$machine-$host_os" in
274   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
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
288 dnl We need to use [ and ] for other purposes for a while now.
289 changequote(,)dnl
290 # Expand the configuration machine name into a subdirectory by architecture
291 # type and particular chip.
292 case "$machine" in
293 a29k | am29000) base_machine=a29k machine=a29k ;;
294 alpha*)         base_machine=alpha machine=alpha/$machine ;;
295 arm*)           base_machine=arm machine=arm/arm32/$machine ;;
296 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
297 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
298 hppa*64*)       base_machine=hppa machine=hppa/hppa64 ;;
299 hppa*)          base_machine=hppa machine=hppa/hppa1.1 ;;
300 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
301 ia64)           base_machine=ia64 machine=ia64 ;;
302 m680?0)         base_machine=m68k machine=m68k/$machine ;;
303 m68k)           base_machine=m68k machine=m68k/m68020 ;;
304 m88???)         base_machine=m88k machine=m88k/$machine ;;
305 m88k)           base_machine=m88k machine=m88k/m88100 ;;
306 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
307 mips*)          base_machine=mips
308                 case "`uname -m`" in
309                 IP22) machine=mips/mips3 ;;
310                 *)    machine=mips/$machine ;;
311                 esac ;;
312 s390)           base_machine=s390 machine=s390/s390-32 ;;
313 s390x)          base_machine=s390 machine=s390/s390-64 ;;
314 sh3*)           base_machine=sh machine=sh/sh3 ;;
315 sh4*)           base_machine=sh machine=sh/sh4 ;;
316 sparc | sparcv[67])
317                 base_machine=sparc machine=sparc/sparc32 ;;
318 sparcv8 | supersparc | hypersparc)
319                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
320 sparcv8plus | sparcv8plusa | sparcv9)
321                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
322 sparcv8plusb | sparcv9b)
323                 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
324 sparc64 | ultrasparc)
325                 base_machine=sparc machine=sparc/sparc64 ;;
326 sparc64b | ultrasparc3)
327                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
328 thumb*)         base_machine=thumb machine=arm/thumb/$machine ;;
329 esac
330 changequote([,])dnl
331 AC_SUBST(base_machine)
333 if test "$base_machine" = "i386"; then
334   AC_DEFINE(USE_REGPARMS)
337 # Compute the list of sysdep directories for this configuration.
338 # This can take a while to compute.
339 sysdep_dir=$srcdir/sysdeps
340 AC_MSG_CHECKING(sysdep dirs)
341 dnl We need to use [ and ] for other purposes for a while now.
342 changequote(,)dnl
343 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
344 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
346 case "$os" in
347 gnu*)
348   base_os=mach/hurd ;;
349 netbsd* | 386bsd* | freebsd* | bsdi*)
350   base_os=unix/bsd/bsd4.4 ;;
351 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
352   base_os=unix/bsd ;;
353 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
354   base_os=unix/sysv ;;
355 irix6*)
356   base_os=unix/sysv/irix6/$os ;;
357 solaris[2-9]*)
358   base_os=unix/sysv/sysv4 ;;
359 hpux*)
360   base_os=unix/sysv/hpux/$os ;;
361 aix4.3*)
362   base_os=unix/sysv/aix/aix4.3 ;;
363 none)
364   base_os=standalone ;;
366   base_os='' ;;
367 esac
369 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
370 tail=$os
371 ostry=$os
372 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
373   ostry="$ostry /$o"
374   tail=$o
375 done
376 o=`echo $tail | sed 's/[0-9]*$//'`
377 if test $o != $tail; then
378   ostry="$ostry /$o"
380 # For linux-gnu, try linux-gnu, then linux.
381 o=`echo $tail | sed 's/-.*$//'`
382 if test $o != $tail; then
383   ostry="$ostry /$o"
386 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
387 base=
388 tail=$base_os
389 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
390   set $b
391   base="$base /$1"
392   tail="$2"
393 done
395 # For sparc/sparc32, try sparc/sparc32 and then sparc.
396 mach=
397 tail=$machine
398 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
399   set $m
400   # Prepend the machine's FPU directory unless --without-fp.
401   if test "$with_fp" = yes; then
402     mach="$mach /$1/fpu"
403   fi
404   mach="$mach /$1"
405   tail="$2"
406 done
408 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
409 changequote([,])dnl
411 # Find what sysdep directories exist.
412 sysnames=
413 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
414 for d in $add_ons_pfx ''; do
415   for b in $base ''; do
416     for m0 in $mach ''; do
417       for v in /$vendor ''; do
418         test "$v" = / && continue
419         for o in /$ostry ''; do
420           test "$o" = / && continue
421           for m in $mach ''; do
422             if test "$m0$b$v$o$m"; then
423               try="${d}sysdeps$m0$b$v$o$m"
424               test -n "$enable_debug_configure" &&
425               echo "$0 [DEBUG]: try $try" >&2
426               if test -d $srcdir/$try; then
427                 sysnames="$sysnames $try"
428                 { test -n "$o" || test -n "$b"; } && os_used=t
429                 { test -n "$m" || test -n "$m0"; } && machine_used=t
430               fi
431             fi
432           done
433         done
434       done
435     done
436   done
437 done
438 IFS="$ac_save_ifs"
440 if test -z "$os_used" && test "$os" != none; then
441   AC_MSG_ERROR(Operating system $os is not supported.)
443 if test -z "$machine_used" && test "$machine" != none; then
444   AC_MSG_ERROR(The $machine is not supported.)
447 # We have now validated the configuration.
450 # If using ELF, look for an `elf' subdirectory of each machine directory.
451 # We prepend these rather than inserting them whereever the machine appears
452 # because things specified by the machine's ELF ABI should override
453 # OS-specific things, and should always be the same for any OS on the
454 # machine (otherwise what's the point of an ABI?).
455 if test "$elf" = yes; then
456   elf_dirs=
457   for d in $add_ons_pfx ''; do
458     for m in $mach; do
459       if test -d $srcdir/${d}sysdeps$m/elf; then
460         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
461       fi
462     done
463   done
464   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
468 # Expand the list of system names into a full list of directories
469 # from each element's parent name and Implies file (if present).
470 set $sysnames
471 names=
472 while test $# -gt 0; do
473   name=$1
474   shift
476   case " $names " in *" $name "*)
477     # Already in the list.
478     continue
479   esac
481   # Report each name as we discover it, so there is no long pause in output.
482   echo $ac_n "$name $ac_c" >&AC_FD_MSG
484   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
486   case $name in
487     /*) xsrcdir= ;;
488     *)  xsrcdir=$srcdir/ ;;
489   esac
490   test -n "$enable_debug_configure" &&
491   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
493   if test -f $xsrcdir$name/Implies; then
494     # Collect more names from the `Implies' file (removing comments).
495     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
496     implied=
497     for x in $implied_candidate; do
498       if test -d $xsrcdir$name_base/$x; then
499         implied="$implied $name_base/$x";
500       else
501         AC_MSG_WARN($name/Implies specifies nonexistent $x)
502       fi
503     done
504   else
505     implied=
506   fi
508   # Add NAME to the list of names.
509   names="$names $name"
511   # Find the parent of NAME, using the empty string if it has none.
512 changequote(,)dnl
513   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
514 changequote([,])dnl
516   # Add the names implied by NAME, and NAME's parent (if it has one), to
517   # the list of names to be processed (the argument list).  We prepend the
518   # implied names to the list and append the parent.  We want implied
519   # directories to come before further directories inferred from the
520   # configuration components; this ensures that for sysv4, unix/common
521   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
522   # after sysv4).
523   sysnames="`echo $implied $* $parent`"
524   test -n "$sysnames" && set $sysnames
525 done
527 # Add the default directories.
528 default_sysnames=sysdeps/generic
529 if test "$elf" = yes; then
530   default_sysnames="sysdeps/generic/elf $default_sysnames"
532 sysnames="$names $default_sysnames"
533 AC_SUBST(sysnames)
534 # The other names were emitted during the scan.
535 AC_MSG_RESULT($default_sysnames)
538 ### Locate tools.
540 AC_PROG_INSTALL
541 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
542   # The makefiles need to use a different form to find it in $srcdir.
543   INSTALL='\$(..)./scripts/install-sh -c'
545 AC_PROG_LN_S
547 # We need the physical current working directory.  We cannot use the
548 # "pwd -P" shell builtin since that's not portable.  Instead we try to
549 # find a pwd binary.  Note that assigning to the PWD environment
550 # variable might have some interesting side effects, so we don't do
551 # that.
552 AC_PATH_PROG(PWD_P, pwd, no)
553 if test "$PWD_P" = no; then
554   AC_MSG_ERROR(*** A pwd binary could not be found.)
557 # These programs are version sensitive.
558 AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
559 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
560   [version \([egcygnustpi-]*[0-9.]*\)],
561   [*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-*],
562   critic_missing=gcc)
563 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
564   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
565   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
568 if test -n "$critic_missing"; then
569 AC_MSG_ERROR([
570 *** These critical programs are missing or too old:$critic_missing
571 *** Check the INSTALL file for required versions.])
575 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
576   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
577   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
578   MSGFMT=: aux_missing="$aux_missing msgfmt")
579 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
580   [GNU texinfo.* \([0-9][0-9.]*\)],
581   [4.*],
582   MAKEINFO=: aux_missing="$aux_missing makeinfo")
583 AC_CHECK_PROG_VER(SED, gsed sed, --version,
584   [GNU sed version \([0-9]*\.[0-9.]*\)],
585   [3.0[2-9]*|3.[1-9]*|[4-9]*],
586   SED=: aux_missing="$aux_missing sed")
588 AC_PROG_CC_LOCAL
589 AC_CANONICAL_BUILD
590 if test $host != $build; then
591   AC_CHECK_PROGS(BUILD_CC, gcc cc)
593 AC_SUBST(cross_compiling)
594 AC_PROG_CPP
595 LIBC_PROG_BINUTILS
596 AC_CHECK_TOOL(MIG, mig)
598 # Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
599 # XXX Commented out because it filters out too many good versions.
600 # XXX --drepper
601 # AC_CHECK_PROG_VER(AS, $AS, --version,
602 #   [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
603 #   [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
605 test -n "$aux_missing" && AC_MSG_WARN([
606 *** These auxiliary programs are missing or too old:$aux_missing
607 *** some features will be disabled.
608 *** Check the INSTALL file for required versions.])
610 # glibcbug.in wants to know the compiler version.
611 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
612 AC_SUBST(CCVERSION)
614 # if using special system headers, find out the compiler's sekrit
615 # header directory and add that to the list.  NOTE: Only does the right
616 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
617 if test -n "$sysheaders"; then
618   ccheaders=`$CC -print-file-name=include`
619   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
621 AC_SUBST(SYSINCLUDES)
623 # check if ranlib is necessary
624 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
625 cat > conftest.c <<EOF
626 int a;
627 char b;
628 void c(void) {}
630 $CC $CFLAGS -c conftest.c
631 $AR cr conftest.a conftest.c
632 cp conftest.a conftest2.a
633 $RANLIB conftest.a
634 if cmp -s conftest.a conftest2.a; then
635   libc_cv_ranlib_necessary=no
636 else
637   libc_cv_ranlib_necessary=yes
639 rm -rf conftest*])
640 if test "$libc_cv_ranlib_necessary" = no; then
641  RANLIB=:
644 # Test if LD_LIBRARY_PATH contains the notation for the current directory
645 # since this would lead to problems installing/building glibc.
646 # LD_LIBRARY_PATH contains the current directory if one of the following
647 # is true:
648 # - one of the terminals (":" and ";") is the first or last sign
649 # - two terminals occur directly after each other
650 # - the path contains an element with a dot in it
651 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
652 changequote(,)dnl
653 case ${LD_LIBRARY_PATH} in
654   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
655     ld_library_path_setting="contains current directory"
656     ;;
657   *)
658     ld_library_path_setting="ok"
659     ;;
660 esac
661 changequote([,])dnl
662 AC_MSG_RESULT($ld_library_path_setting)
663 if test "$ld_library_path_setting" != "ok"; then
664 AC_MSG_ERROR([
665 *** LD_LIBRARY_PATH shouldn't contain the current directory when
666 *** building glibc. Please change the environment variable
667 *** and run configure again.])
670 AC_PATH_PROG(BASH, bash, no)
671 if test "$BASH" != no &&
672    $BASH -c 'test "$BASH_VERSINFO" \
673              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
674   libc_cv_have_bash2=yes
675 else
676   libc_cv_have_bash2=no
678 AC_SUBST(libc_cv_have_bash2)
680 dnl We need a ksh compatible shell for tzselect.
681 if test "$BASH" = no; then
682   AC_PATH_PROG(KSH, ksh, no)
683   if test "$KSH" = no; then
684     libc_cv_have_ksh=no
685   else
686     libc_cv_have_ksh=yes
687   fi
688 else
689   KSH="$BASH"
690   AC_SUBST(KSH)
691   libc_cv_have_ksh=yes
693 AC_SUBST(libc_cv_have_ksh)
695 AC_PROG_AWK
696 AC_PATH_PROG(PERL, perl, no)
697 if test "$PERL" != no &&
698    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
699   PERL=no
701 AC_PATH_PROG(INSTALL_INFO, install-info, no,
702              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
703 if test "$INSTALL_INFO" != "no"; then
704 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
705  [mkdir conftest.d
706   # There is a hard ^_ on the next line.  I am open to better ideas.
707   (echo '\x1f'
708   echo 'File: dir       Node: Top       This is the top of the INFO tree'
709   echo '* Menu:') >conftest.d/dir
710   (echo 'INFO-DIR-SECTION i-d-s works'
711   echo 'START-INFO-DIR-ENTRY'
712   echo '* Prog: (prog).   Program.'
713   echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
714   if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
715   then
716     if grep -s 'i-d-s works' conftest.d/dir >/dev/null
717     then libc_cv_old_debian_install_info=no
718     else libc_cv_old_debian_install_info=yes
719     fi
720   else libc_cv_old_debian_install_info=no testfailed=t
721   fi
722   rm -fr conftest.d])
723 if test -n "$testfailed"
724 then AC_MSG_WARN([install-info errored out, check config.log])
726 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
728 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
730 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
732 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
733 echo '#include <stddef.h>
734 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
735 if eval "$ac_cpp conftest.c 2>/dev/null" \
736 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
737   libc_cv_signed_size_t=no
738 else
739   libc_cv_signed_size_t=yes
741 rm -f conftest*])
742 if test $libc_cv_signed_size_t = yes; then
743   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
744   cat >> confdefs.h <<\EOF
745 #undef __SIZE_TYPE__
746 #define __SIZE_TYPE__ unsigned
750 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
751 AC_TRY_COMPILE(dnl
752 [#define __need_size_t
753 #define __need_wchar_t
754 #include <stddef.h>
755 #define __need_NULL
756 #include <stddef.h>], [size_t size; wchar_t wchar;
757 #ifdef offsetof
758 #error stddef.h ignored __need_*
759 #endif
760 if (&size == NULL || &wchar == NULL) abort ();],
761                libc_cv_friendly_stddef=yes,
762                libc_cv_friendly_stddef=no)])
763 if test $libc_cv_friendly_stddef = yes; then
764   config_vars="$config_vars
765 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
768 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
769                libc_cv_need_minus_P, [dnl
770 cat > conftest.S <<EOF
771 #include "confdefs.h"
772 /* Nothing whatsoever.  */
774 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
775   libc_cv_need_minus_P=no
776 else
777   libc_cv_need_minus_P=yes
779 rm -f conftest*])
780 if test $libc_cv_need_minus_P = yes; then
781   config_vars="$config_vars
782 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
785 AC_MSG_CHECKING(whether .text pseudo-op must be used)
786 AC_CACHE_VAL(libc_cv_dot_text, [dnl
787 cat > conftest.s <<EOF
788 .text
790 libc_cv_dot_text=
791 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
792   libc_cv_dot_text=.text
794 rm -f conftest*])
795 if test -z "$libc_cv_dot_text"; then
796   AC_MSG_RESULT(no)
797 else
798   AC_MSG_RESULT(yes)
801 AC_CACHE_CHECK(for assembler global-symbol directive,
802                libc_cv_asm_global_directive, [dnl
803 libc_cv_asm_global_directive=UNKNOWN
804 for ac_globl in .globl .global .EXPORT; do
805   cat > conftest.s <<EOF
806         ${libc_cv_dot_text}
807         ${ac_globl} foo
808 foo:
810   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
811     libc_cv_asm_global_directive=${ac_globl}
812   fi
813   rm -f conftest*
814   test $libc_cv_asm_global_directive != UNKNOWN && break
815 done])
816 if test $libc_cv_asm_global_directive = UNKNOWN; then
817   AC_MSG_ERROR(cannot determine asm global directive)
818 else
819   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
822 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
823 cat > conftest.s <<EOF
824 ${libc_cv_dot_text}
825 foo:
826 .set glibc_conftest_frobozz,foo
827 $libc_cv_asm_global_directive glibc_conftest_frobozz
829 # The alpha-dec-osf1 assembler gives only a warning for `.set'
830 # (but it doesn't work), so we must do a linking check to be sure.
831 cat > conftest1.c <<\EOF
832 extern int glibc_conftest_frobozz;
833 main () { printf ("%d\n", glibc_conftest_frobozz); }
835 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
836             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
837   libc_cv_asm_set_directive=yes
838 else
839   libc_cv_asm_set_directive=no
841 rm -f conftest*])
842 if test $libc_cv_asm_set_directive = yes; then
843   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
846 # The Aix ld uses global .symbol_names instead of symbol_names.
847 case "$os" in
848 aix4.3*)
849   AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
850 esac
852 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
853 [cat > conftest.s <<EOF
854 ${libc_cv_dot_text}
855 _sym:
856 .symver _sym,sym@VERS
858 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
859   libc_cv_asm_symver_directive=yes
860 else
861   libc_cv_asm_symver_directive=no
863 rm -f conftest*])
864 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
865 if test $libc_cv_asm_symver_directive = yes; then
866   cat > conftest.s <<EOF
867 ${libc_cv_dot_text}
868 _sym:
869 .symver _sym,sym@VERS
871   cat > conftest.map <<EOF
872 VERS_1 {
873         global: sym;
876 VERS_2 {
877         global: sym;
878 } VERS_1;
880   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
881     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
882                                         -nostartfiles -nostdlib
883                                         -Wl,--version-script,conftest.map
884                        1>&AC_FD_CC]);
885     then
886       libc_cv_ld_version_script_option=yes
887     else
888       libc_cv_ld_version_script_option=no
889     fi
890   else
891     libc_cv_ld_version_script_option=no
892   fi
893 else
894   libc_cv_ld_version_script_option=no
896 rm -f conftest*])
897 if test $shared != no &&
898    test $libc_cv_asm_symver_directive = yes &&
899    test $libc_cv_ld_version_script_option = yes &&
900    test $enable_versioning = yes; then
901   VERSIONING=yes
902   AC_DEFINE(DO_VERSIONING)
903 else
904   VERSIONING=no
906 AC_SUBST(VERSIONING)
908 if test $shared != no && test $VERSIONING = no; then
909   echo "\
910 *** WARNING: You should not compile GNU libc without versioning. Not using
911 *** versioning will introduce incompatibilities so that old binaries
912 *** will not run anymore.
913 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
915 if test $elf = yes; then
916   AC_CACHE_CHECK(for .previous assembler directive,
917                  libc_cv_asm_previous_directive, [dnl
918   cat > conftest.s <<EOF
919 .section foo_section
920 .previous
922   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
923     libc_cv_asm_previous_directive=yes
924   else
925     libc_cv_asm_previous_directive=no
926   fi
927   rm -f conftest*])
928   if test $libc_cv_asm_previous_directive = yes; then
929     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
930   else
931     AC_CACHE_CHECK(for .popsection assembler directive,
932                    libc_cv_asm_popsection_directive, [dnl
933     cat > conftest.s <<EOF
934 .pushsection foo_section
935 .popsection
937     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
938       libc_cv_asm_popsection_directive=yes
939     else
940       libc_cv_asm_popsection_directive=no
941     fi
942     rm -f conftest*])
943     if test $libc_cv_asm_popsection_directive = yes; then
944       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
945     fi
946   fi
947   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
948                  libc_cv_asm_protected_directive, [dnl
949   cat > conftest.s <<EOF
950 .protected foo
951 foo:
952 .hidden bar
953 bar:
955   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
956     libc_cv_asm_protected_directive=yes
957   else
958     libc_cv_asm_protected_directive=no
959   fi
960   rm -f conftest*])
961   AC_SUBST(libc_cv_asm_protected_directive)
963   AC_CACHE_CHECK(for -z nodelete option,
964                  libc_cv_z_nodelete, [dnl
965   cat > conftest.c <<EOF
966 int _start (void) { return 42; }
968   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
969   then
970     libc_cv_z_nodelete=yes
971   else
972     libc_cv_z_nodelete=no
973   fi
974   rm -f conftest*])
975   AC_SUBST(libc_cv_z_nodelete)
977   AC_CACHE_CHECK(for -z nodlopen option,
978                  libc_cv_z_nodlopen, [dnl
979   cat > conftest.c <<EOF
980 int _start (void) { return 42; }
982   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
983   then
984     libc_cv_z_nodlopen=yes
985   else
986     libc_cv_z_nodlopen=no
987   fi
988   rm -f conftest*])
989   AC_SUBST(libc_cv_z_nodlopen)
991   AC_CACHE_CHECK(for -z initfirst option,
992                  libc_cv_z_initfirst, [dnl
993   cat > conftest.c <<EOF
994 int _start (void) { return 42; }
996   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
997   then
998     libc_cv_z_initfirst=yes
999   else
1000     libc_cv_z_initfirst=no
1001   fi
1002   rm -f conftest*])
1003   AC_SUBST(libc_cv_z_initfirst)
1005   AC_CACHE_CHECK(for -Bgroup option,
1006                  libc_cv_Bgroup, [dnl
1007   cat > conftest.c <<EOF
1008 int _start (void) { return 42; }
1010   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AC_FD_CC])
1011   then
1012     libc_cv_Bgroup=yes
1013   else
1014     libc_cv_Bgroup=no
1015   fi
1016   rm -f conftest*])
1017   AC_SUBST(libc_cv_Bgroup)
1020 if test $elf != yes; then
1021   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1022                  [AC_TRY_COMPILE(, [asm (".section .init");
1023                                     asm (".section .fini");
1024                                     asm ("${libc_cv_dot_text}");],
1025                                  libc_cv_have_initfini=yes,
1026                                  libc_cv_have_initfini=no)])
1027   AC_SUBST(libc_cv_have_initfini)dnl
1028   if test $libc_cv_have_initfini = yes; then
1029     AC_DEFINE(HAVE_INITFINI)
1030   fi
1033 if test $elf = yes -a $gnu_ld = yes; then
1034   AC_CACHE_CHECK(whether cc puts quotes around section names,
1035                  libc_cv_have_section_quotes,
1036                  [cat > conftest.c <<EOF
1037                   static const int foo
1038                   __attribute__ ((section ("bar"))) = 1;
1040                   if ${CC-cc} -S conftest.c -o conftest.s; then
1041                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1042                       libc_cv_have_section_quotes=yes
1043                     else
1044                       libc_cv_have_section_quotes=no
1045                     fi
1046                   else
1047                     libc_cv_have_section_quotes=unknown
1048                   fi
1049                   rm -f conftest.[cs]
1050                  ])
1051   if test $libc_cv_have_section_quotes = yes; then
1052     AC_DEFINE(HAVE_SECTION_QUOTES)
1053   fi
1056 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1057 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1058 [cat > conftest.$ac_ext <<EOF
1059 dnl This sometimes fails to find confdefs.h, for some reason.
1060 dnl [#]line __oline__ "[$]0"
1061 [#]line __oline__ "configure"
1062 #include "confdefs.h"
1063 void underscore_test(void) {
1064 return; }
1066 if AC_TRY_EVAL(ac_compile); then
1067   if grep _underscore_test conftest* >/dev/null; then
1068     ifelse([$1], , :, [rm -f conftest*
1069     $1])
1070   else
1071     ifelse([$2], , , [rm -f conftest*
1072     $2])
1073   fi
1074 else
1075   echo "configure: failed program was:" >&AC_FD_CC
1076   cat conftest.$ac_ext >&AC_FD_CC
1077   ifelse([$2], , , [rm -f conftest*
1078   $2])
1080 rm -f conftest*])
1082 if test $elf = yes; then
1083   libc_cv_asm_underscores=no
1084 else
1085   if test $ac_cv_prog_cc_works = yes; then
1086     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1087                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1088                                 libc_cv_asm_underscores=yes,
1089                                 libc_cv_asm_underscores=no)])
1090   else
1091     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1092                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1093                                             libc_cv_asm_underscores=no)])
1094   fi
1096 if test $libc_cv_asm_underscores = no; then
1097   AC_DEFINE(NO_UNDERSCORES)
1100 if test $elf = yes; then
1101   libc_cv_weak_symbols=yes
1104 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1105                [dnl
1106 cat > conftest.s <<EOF
1107 ${libc_cv_dot_text}
1108 ${libc_cv_asm_global_directive} foo
1109 foo:
1110 .weak foo
1111 .weak bar; bar = foo
1113 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1114   libc_cv_asm_weak_directive=yes
1115 else
1116   libc_cv_asm_weak_directive=no
1118 rm -f conftest*])
1120 if test $libc_cv_asm_weak_directive = no; then
1121   AC_CACHE_CHECK(for assembler .weakext directive,
1122                  libc_cv_asm_weakext_directive,
1123                  [dnl
1124 cat > conftest.s <<EOF
1125 ${libc_cv_dot_text}
1126 ${libc_cv_asm_global_directive} foo
1127 foo:
1128 .weakext bar foo
1129 .weakext baz
1130 ${libc_cv_asm_global_directive} baz
1131 baz:
1133   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1134     libc_cv_asm_weakext_directive=yes
1135   else
1136     libc_cv_asm_weakext_directive=no
1137   fi
1138   rm -f conftest*])
1140 fi # no .weak
1142 if test $libc_cv_asm_weak_directive = yes; then
1143   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1144 elif test $libc_cv_asm_weakext_directive = yes; then
1145   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1148 dnl The standard hppa assembler uses `;' to start comments and `!'
1149 dnl as a line separator.  CRIS uses `;' to start comments and `@' for
1150 dnl line separator.
1151 case "${host_cpu}-${host_os}" in
1152   cris*)
1153     libc_cv_asm_line_sep='@'
1154     AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1155     ;;
1156   hppa*linux*)
1157   AC_CACHE_CHECK(for assembler line separator,
1158                  libc_cv_asm_line_sep, [dnl
1159   cat > conftest.s <<EOF
1160  nop ; is_old_puffin
1162   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1163     libc_cv_asm_line_sep='!'
1164   else
1165     if test -z "$enable_hacker_mode"; then
1166       echo "*** You need a newer assembler to compile glibc"
1167       rm -f conftest*
1168       exit 1
1169     fi
1170     libc_cv_asm_line_sep=';'
1171   fi
1172   rm -f conftest*])
1173   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1174   ;;
1175 esac
1177 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1178 cat > conftest.c <<\EOF
1179 _start () {}
1180 int __eh_pc;
1181 __throw () {}
1183 dnl No \ in command here because it ends up inside ''.
1184 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1185                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1186                             -o conftest conftest.c 1>&AC_FD_CC]); then
1187   libc_cv_ld_no_whole_archive=yes
1188 else
1189   libc_cv_ld_no_whole_archive=no
1191 rm -f conftest*])
1192 if test $libc_cv_ld_no_whole_archive = yes; then
1193   no_whole_archive=-Wl,--no-whole-archive
1195 AC_SUBST(no_whole_archive)dnl
1197 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1198 cat > conftest.c <<\EOF
1199 _start () {}
1200 int __eh_pc;
1201 __throw () {}
1203 dnl No \ in command here because it ends up inside ''.
1204 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1205                             -nostdlib -nostartfiles -fexceptions
1206                             -o conftest conftest.c 1>&AC_FD_CC]); then
1207   libc_cv_gcc_exceptions=yes
1208 else
1209   libc_cv_gcc_exceptions=no
1211 rm -f conftest*])
1212 if test $libc_cv_gcc_exceptions = yes; then
1213   exceptions=-fexceptions
1215 AC_SUBST(exceptions)dnl
1217 if test "$base_machine" = alpha ; then
1218 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1219 cat > conftest.c <<\EOF
1220 foo () { }
1223 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
1224 then
1225   libc_cv_gcc_alpha_ng_prefix=yes
1226 else
1227   libc_cv_gcc_alpha_ng_prefix=no
1229 rm -f conftest* ])
1230 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1231   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1232 else
1233   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1237 if test "$host_cpu" = powerpc ; then
1238 # Check for a bug present in at least versions 2.8.x of GCC
1239 # and versions 1.0.x of EGCS.
1240 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1241 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1242                libc_cv_c_asmcr0_bug='no',
1243                libc_cv_c_asmcr0_bug='yes')])
1244 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1245   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1249 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1250 [cat > conftest.c <<EOF
1251 #line __oline__ "configure"
1252 static char __EH_FRAME_BEGIN__[];
1253 _start ()
1255 #ifdef CHECK__register_frame
1256   __register_frame (__EH_FRAME_BEGIN__);
1257   __deregister_frame (__EH_FRAME_BEGIN__);
1258 #endif
1259 #ifdef CHECK__register_frame_info
1260   __register_frame_info (__EH_FRAME_BEGIN__);
1261   __deregister_frame_info (__EH_FRAME_BEGIN__);
1262 #endif
1264 int __eh_pc;
1265 __throw () {}
1266 /* FIXME: this is fragile.  */
1267 malloc () {}
1268 strcmp () {}
1269 strlen () {}
1270 memcpy () {}
1271 memset () {}
1272 free () {}
1273 abort () {}
1274 __bzero () {}
1276 dnl No \ in command here because it ends up inside ''.
1277 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1278                             -nostdlib -nostartfiles
1279                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1280   libc_cv_gcc_dwarf2_unwind_info=static
1281 else
1282   libc_cv_gcc_dwarf2_unwind_info=no
1284 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1285   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1286                               -nostdlib -nostartfiles
1287                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1288     libc_cv_gcc_dwarf2_unwind_info=yes
1289   else
1290     libc_cv_gcc_dwarf2_unwind_info=no
1291   fi
1293 rm -f conftest*])
1294 case $libc_cv_gcc_dwarf2_unwind_info in
1295 yes)
1296   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1297   ;;
1298 static)
1299   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1300   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1301   ;;
1302 esac
1304 dnl Check whether compiler understands __builtin_expect.
1305 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1306 [cat > conftest.c <<EOF
1307 #line __oline__ "configure"
1308 int foo (int a)
1310   a = __builtin_expect (a, 10);
1311   return a == 10 ? 0 : 1;
1314 dnl No \ in command here because it ends up inside ''.
1315 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1316                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1317   libc_cv_gcc_builtin_expect=yes
1318 else
1319   libc_cv_gcc_builtin_expect=no
1321 rm -f conftest*])
1322 if test "$libc_cv_gcc_builtin_expect" = yes; then
1323   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1326 dnl Check whether the compiler supports subtraction of local labels.
1327 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1328 [cat > conftest.c <<EOF
1329 changequote(,)dnl
1330 #line __oline__ "configure"
1331 int foo (int a)
1333   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1334   void *p = &&l1 + ar[a];
1335   goto *p;
1336  l1:
1337   return 1;
1338  l2:
1339   return 2;
1341 changequote([,])dnl
1343 dnl No \ in command here because it ends up inside ''.
1344 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1345                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1346   libc_cv_gcc_subtract_local_labels=yes
1347 else
1348   libc_cv_gcc_subtract_local_labels=no
1350 rm -f conftest*])
1351 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1352   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1355 dnl Check whether we have the gd library available.
1356 AC_MSG_CHECKING(for libgd)
1357 if test "$with_gd" != "no"; then
1358   old_CFLAGS="$CFLAGS"
1359   CFLAGS="$CFLAGS $libgd_include"
1360   old_LDFLAGS="$LDFLAGS"
1361   LDFLAGS="$LDFLAGS $libgd_ldflags"
1362   old_LIBS="$LIBS"
1363   LIBS="$LIBS -lgd -lpng -lz -lm"
1364   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1365   CFLAGS="$old_CFLAGS"
1366   LDFLAGS="$old_LDFLAGS"
1367   LIBS="$old_LIBS"
1368 else
1369   LIBGD=no
1371 AC_MSG_RESULT($LIBGD)
1372 AC_SUBST(LIBGD)
1374 dnl check for the size of 'long double'.
1375 AC_CHECK_SIZEOF(long double, 0)
1376 sizeof_long_double=$ac_cv_sizeof_long_double
1377 AC_SUBST(sizeof_long_double)
1379 ### End of automated tests.
1380 ### Now run sysdeps configure fragments.
1382 # sysdeps configure fragments may set these with files to be linked below.
1383 libc_link_dests=
1384 libc_link_sources=
1386 # They also can set these variables.
1387 use_ldconfig=no
1388 ldd_rewrite_script=no
1390 # Iterate over all the sysdep directories we will use, running their
1391 # configure fragments, and looking for a uname implementation.
1392 uname=
1393 for dir in $sysnames; do
1394   case $dir in
1395     /*) dest=$dir ;;
1396     *)  dest=$srcdir/$dir ;;
1397   esac
1398   if test -r $dest/configure; then
1399     AC_MSG_RESULT(running configure fragment for $dest)
1400     . $dest/configure
1401   fi
1403   if test -z "$uname"; then
1404     if test -r $dest/uname.c ||
1405        test -r $dest/uname.S ||
1406        { test -r $dest/syscalls.list &&
1407          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1408       uname=$dir
1409     fi
1410   fi
1411 ]dnl
1412 done
1414 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1416 # If we will use the generic uname implementation, we must figure out what
1417 # it will say by examining the system, and write the results in config-name.h.
1418 if test "$uname" = "sysdeps/generic"; then
1420 changequote(,)dnl
1421   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1422 changequote([,])dnl
1423   if test $uname_sysname != $config_os; then
1424     config_release=`echo $config_os | sed s/$uname_sysname//`
1425   fi
1427 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1428     if test -r /vmunix; then
1429       kernel_id=`strings /vmunix | grep UNIX`
1430     elif test -r /dynix; then
1431       kernel_id=`strings /dynix | grep DYNIX`
1432     else
1433       kernel_id=
1434     fi
1435 ])dnl
1437   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1438 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1439 changequote(,)dnl
1440   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1441 changequote([,])dnl
1442   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1443          != x$config_release; then
1444     # The configuration release is a substring of the kernel release.
1445     libc_cv_uname_release=$kernel_release
1446   elif test x$config_release != x; then
1447     libc_cv_uname_release=$config_release
1448   elif test x$kernel_release != x; then
1449     libc_cv_uname_release=$kernel_release
1450   else
1451     libc_cv_uname_release=unknown
1452   fi])
1453   uname_release="$libc_cv_uname_release"
1455   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1456 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1457 changequote(,)dnl
1458   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1459 changequote([,])dnl
1460   if test -n "$kernel_version"; then
1461     libc_cv_uname_version="$kernel_version"
1462   else
1463     libc_cv_uname_version=unknown
1464   fi])
1465   uname_version="$libc_cv_uname_version"
1467 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1468   config_uname=config-name.h:config-name.in
1469 else
1470   # For non-generic uname, we don't need to create config-name.h at all.
1471   config_uname=
1474 AC_MSG_CHECKING(stdio selection)
1475 AC_SUBST(stdio)
1476 case $stdio in
1477 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1478 default) stdio=stdio ;;
1479 esac
1480 AC_MSG_RESULT($stdio)
1482 # Test for old glibc 2.0.x headers so that they can be removed properly
1483 # Search only in includedir.
1484 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1485 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1486 then
1487   old_glibc_headers=yes
1488 else
1489   old_glibc_headers=no
1491 AC_MSG_RESULT($old_glibc_headers)
1492 if test ${old_glibc_headers} = yes; then
1493   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1494   AC_MSG_WARN(*** be removed.)
1496 AC_SUBST(old_glibc_headers)
1498 AC_SUBST(libc_cv_slibdir)
1499 AC_SUBST(libc_cv_localedir)
1500 AC_SUBST(libc_cv_sysconfdir)
1501 AC_SUBST(libc_cv_rootsbindir)
1503 AC_SUBST(use_ldconfig)
1504 AC_SUBST(ldd_rewrite_script)
1506 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
1507 if test $gnu_ld = yes; then
1508   AC_DEFINE(HAVE_GNU_LD)
1510 if test $gnu_as = yes; then
1511   AC_DEFINE(HAVE_GNU_AS)
1513 if test $elf = yes; then
1514   AC_DEFINE(HAVE_ELF)
1517 AC_SUBST(static)
1518 AC_SUBST(shared)
1519 if test $shared = default; then
1520   if test $gnu_ld = yes; then
1521     shared=$elf
1522   else
1523     # For now we do not assume shared libs are available.  In future more
1524     # tests might become available.
1525     shared=no
1526   fi
1529 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1530 [pic_default=yes
1531 cat > conftest.c <<EOF
1532 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1533 # error PIC is default.
1534 #endif
1536 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1537   pic_default=no
1539 rm -f conftest.*])
1540 AC_SUBST(pic_default)
1542 AC_SUBST(profile)
1543 AC_SUBST(omitfp)
1544 AC_SUBST(bounded)
1545 AC_SUBST(static_nss)
1546 AC_SUBST(nopic_initfini)
1548 AC_SUBST(DEFINES)
1550 case "$add_ons" in
1551   *door*) linux_doors=yes ;;
1552   *) linux_doors=no ;;
1553 esac
1554 AC_SUBST(linux_doors)
1556 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1557   config_makefile=
1558 else
1559   config_makefile=Makefile
1562 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1563 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1564 AC_SUBST(VERSION)
1565 AC_SUBST(RELEASE)
1567 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1568 case $CONFIG_FILES in *config.make*)
1569 echo "$config_vars" >> config.make;;
1570 esac
1571 test -d bits || mkdir bits], [config_vars='$config_vars'])