Update.
[glibc.git] / configure.in
blob523e8efe6ab82e6e7ad15dd93bbf4c49f386621f
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_SUBST(with_fp)
63 AC_ARG_WITH(binutils, dnl
64   --with-binutils=PATH    specify location of binutils (as and ld),
65             path_binutils=$withval, path_binutils='')
66 AC_ARG_WITH(elf, dnl
67   --with-elf              if using the ELF object format,
68             elf=$withval, elf=no)
69 AC_ARG_WITH(xcoff, dnl
70   --with-xcoff            if using the XCOFF object format,
71             xcoff=$withval, xcoff=no)
72 AC_ARG_WITH(cvs, dnl
73 [  --without-cvs           if CVS should not be used],
74             with_cvs=$withval, with_cvs=yes)
75 if test "$with_cvs" = yes; then
76   if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
77   then
78     with_cvs=no
79   fi
81 AC_SUBST(with_cvs)
83 AC_ARG_WITH(headers, dnl
84 [  --with-headers=PATH     location of system headers to use
85                           [e.g. /usr/src/linux/include]
86                           [default=compiler default]],
87             sysheaders=$withval, sysheaders='')
89 AC_ARG_ENABLE(libio, dnl
90 [  --enable-libio          build in GNU libio instead of GNU stdio],
91               [if test $enableval = yes; then
92                  stdio=libio
93                else
94                  stdio=stdio
95                fi],
96               stdio=default)
98 AC_ARG_ENABLE(sanity-checks, dnl
99 [  --disable-sanity-checks really do not use threads (should not be used
100                           except in special situations) [default=yes]],
101               enable_sanity=$enableval, enable_sanity=yes)
103 dnl Arguments to enable or disable building the static, shared, profiled,
104 dnl and -fomit-frame-pointer libraries.
105 dnl I've disabled this for now since we cannot build glibc without static
106 dnl libraries built in the moment.
107 dnl AC_ARG_ENABLE(static, dnl
108 dnl [  --enable-static         build static library [default=yes]],
109 dnl           static=$enableval, static=yes)
110 static=yes
111 AC_ARG_ENABLE(shared, dnl
112 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
113               shared=$enableval, shared=default)
114 AC_ARG_ENABLE(profile, dnl
115 [  --enable-profile        build profiled library [default=yes]],
116               profile=$enableval, profile=yes)
117 AC_ARG_ENABLE(omitfp, dnl
118 [  --enable-omitfp         build undebuggable optimized library [default=no]],
119               omitfp=$enableval, omitfp=no)
120 AC_ARG_ENABLE(bounded, dnl
121 [  --enable-bounded        build with runtime bounds checking [default=no]],
122               bounded=$enableval, bounded=no)
123 AC_ARG_ENABLE(versioning, dnl
124 [  --disable-versioning    do not include versioning information in the
125                           library objects [default=yes if supported]],
126              enable_versioning=$enableval, enable_versioning=yes)
128 AC_ARG_ENABLE(oldest-abi, dnl
129 [  --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2]
130                           [default=glibc default]],
131             oldest_abi=$enableval, oldest_abi=no)
132 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
133   oldest_abi=default
134 else
135   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
137 AC_SUBST(oldest_abi)
139 dnl Generic infrastructure for drop-in additions to libc.
140 AC_ARG_ENABLE(add-ons, dnl
141 [  --enable-add-ons[=DIR1,DIR2]...
142                           configure and build add-ons in DIR1,DIR2,...
143                           search for add-ons if no parameter given],
144   [case "$enableval" in
145     yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
146          test "$add_ons" = "*" && add_ons= ;;
147     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
148    esac],
149   [add_ons=])
151 dnl Let the user avoid using TLS.  Don't know why but...
152 AC_ARG_WITH(tls, dnl
153 [  --without-tls           prevent support for TLS],
154             usetls=$withval, usetls=yes)
156 AC_CONFIG_SUBDIRS($add_ons)
157 add_ons_pfx=
158 if test x"$add_ons" != x; then
159   for f in $add_ons; do
160     # Some sanity checks
161     if test "$f" = "crypt"; then
162       AC_MSG_ERROR([
163 *** It seems that you're using an old \`crypt' add-on.  crypt is now
164 *** part of glibc and using the old add-on will not work with this
165 *** release.  Start again with fresh sources and without the old
166 *** \`crypt' add-on.])
167     fi
168     if test "$f" = "localedata"; then
169       AC_MSG_ERROR([
170 *** It seems that you're using an old \`localedata' add-on.  localedata
171 *** is now part of glibc and using the old add-on will not work with
172 *** this release.  Start again with fresh sources and without the old
173 *** \`localedata' add-on.])
174     fi
175     # Test whether such a subdir really exists.
176     if test -d $srcdir/$f; then
177       add_ons_pfx="$add_ons_pfx $f/"
178     else
179       AC_MSG_ERROR(add-on directory \"$f\" does not exist)
180     fi
181   done
184 dnl On some platforms we cannot use dynamic loading.  We must provide
185 dnl static NSS modules.
186 AC_ARG_ENABLE(static-nss, dnl
187 [  --enable-static-nss     build static NSS modules [default=no]],
188               static_nss=$enableval, static_nss=no)
189 if test x"$static_nss" = xyes; then
190   AC_DEFINE(DO_STATIC_NSS)
193 AC_ARG_ENABLE(force-install,
194 [  --disable-force-install don't force installation of files from this package,
195                           even if they are older than the installed files],
196               force_install=$enableval, force_install=yes)
197 AC_SUBST(force_install)
199 dnl On some platforms we allow dropping compatibility with all kernel
200 dnl versions.
201 AC_ARG_ENABLE(kernel,
202 [  --enable-kernel=VERSION compile for compatibility with kernel not older
203                            than VERSION],
204               minimum_kernel=$enableval)
205 dnl Prevent unreasonable values.
206 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
207   # Better nothing than this.
208   minimum_kernel=""
209 else
210   if test "$minimum_kernel" = current; then
211     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
212   fi
215 dnl For the development we sometimes want gcc to issue even more warnings.
216 dnl This is not the default since many of the extra warnings are not
217 dnl appropriate.
218 AC_ARG_ENABLE(all-warnings,
219 [  --enable-all-warnings   enable all useful warnings gcc can issue],
220               all_warnings=$enableval)
221 AC_SUBST(all_warnings)
223 AC_CANONICAL_HOST
225 # The way shlib-versions is used to generate soversions.mk uses a
226 # fairly simplistic model for name recognition that can't distinguish
227 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
228 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
229 # tell.  This doesn't get used much beyond that, so it's fairly safe.
230 case "$host_os" in
231 linux*)
232   ;;
233 gnu*)
234   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
235   ;;
236 esac
238 # We keep the original values in `$config_*' and never modify them, so we
239 # can write them unchanged into config.make.  Everything else uses
240 # $machine, $vendor, and $os, and changes them whenever convenient.
241 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
243 # Don't allow vendor == "unknown"
244 test "$config_vendor" = unknown && config_vendor=
245 config_os="`echo $config_os | sed 's/^unknown-//'`"
247 # Some configurations imply other options.
248 case "$host_os" in
249 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
250   # These systems always use GNU tools.
251   gnu_ld=yes gnu_as=yes ;;
252 esac
253 case "$host_os" in
254 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
255 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
256   ;;
257 gnu* | linux* | sysv4* | solaris2* | irix6*)
258   # These systems (almost) always use the ELF format.
259   elf=yes
260   ;;
261 aix*)
262   # These systems are always xcoff
263   xcoff=yes
264   elf=no
265   ;;
266 esac
268 machine=$config_machine
269 vendor=$config_vendor
270 os=$config_os
272 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
273 # Unify this here.
274 if test "$machine" = rs6000; then
275   machine="powerpc"
279 ### I put this here to prevent those annoying emails from people who cannot
280 ### read and try to compile glibc on unsupported platforms.  --drepper
282 ### By using the undocumented --enable-hacker-mode option for configure
283 ### one can skip this test to make the configuration not fail for unsupported
284 ### platforms.
286 if test -z "$enable_hacker_mode"; then
287   case "$machine-$host_os" in
288   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
289     ;;
290   *)
291     echo "*** The GNU C library is currently not available for this platform."
292     echo "*** So far nobody cared to port it and if there is no volunteer it"
293     echo "*** might never happen.  So, if you have interest to see glibc on"
294     echo "*** this platform visit"
295     echo "***   http://www.gnu.org/software/libc/porting.html"
296     echo "*** and join the group of porters"
297     exit 1
298     ;;
299   esac
302 dnl We need to use [ and ] for other purposes for a while now.
303 changequote(,)dnl
304 # Expand the configuration machine name into a subdirectory by architecture
305 # type and particular chip.
306 case "$machine" in
307 a29k | am29000) base_machine=a29k machine=a29k ;;
308 alpha*)         base_machine=alpha machine=alpha/$machine ;;
309 arm*)           base_machine=arm machine=arm/arm32/$machine ;;
310 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
311 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
312 hppa*64*)       base_machine=hppa machine=hppa/hppa64 ;;
313 hppa*)          base_machine=hppa machine=hppa/hppa1.1 ;;
314 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
315 ia64)           base_machine=ia64 machine=ia64 ;;
316 m680?0)         base_machine=m68k machine=m68k/$machine ;;
317 m68k)           base_machine=m68k machine=m68k/m68020 ;;
318 m88???)         base_machine=m88k machine=m88k/$machine ;;
319 m88k)           base_machine=m88k machine=m88k/m88100 ;;
320 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
321 mips*)          base_machine=mips
322                 case "`uname -m`" in
323                 IP22) machine=mips/mips3 ;;
324                 *)    machine=mips/$machine ;;
325                 esac ;;
326 s390)           base_machine=s390 machine=s390/s390-32 ;;
327 s390x)          base_machine=s390 machine=s390/s390-64 ;;
328 sh3*)           base_machine=sh machine=sh/sh3 ;;
329 sh4*)           base_machine=sh machine=sh/sh4 ;;
330 sparc | sparcv[67])
331                 base_machine=sparc machine=sparc/sparc32 ;;
332 sparcv8 | supersparc | hypersparc)
333                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
334 sparcv8plus | sparcv8plusa | sparcv9)
335                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
336 sparcv8plusb | sparcv9b)
337                 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
338 sparc64 | ultrasparc)
339                 base_machine=sparc machine=sparc/sparc64 ;;
340 sparc64b | ultrasparc3)
341                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
342 thumb*)         base_machine=thumb machine=arm/thumb/$machine ;;
343 *)              base_machine=$machine ;;
344 esac
345 changequote([,])dnl
346 AC_SUBST(base_machine)
348 if test "$base_machine" = "i386"; then
349   AC_DEFINE(USE_REGPARMS)
352 # Compute the list of sysdep directories for this configuration.
353 # This can take a while to compute.
354 sysdep_dir=$srcdir/sysdeps
355 AC_MSG_CHECKING(sysdep dirs)
356 dnl We need to use [ and ] for other purposes for a while now.
357 changequote(,)dnl
358 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
359 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
361 case "$os" in
362 gnu*)
363   base_os=mach/hurd ;;
364 netbsd* | 386bsd* | freebsd* | bsdi*)
365   base_os=unix/bsd/bsd4.4 ;;
366 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
367   base_os=unix/bsd ;;
368 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
369   base_os=unix/sysv ;;
370 irix6*)
371   base_os=unix/sysv/irix6/$os ;;
372 solaris[2-9]*)
373   base_os=unix/sysv/sysv4 ;;
374 hpux*)
375   base_os=unix/sysv/hpux/$os ;;
376 aix4.3*)
377   base_os=unix/sysv/aix/aix4.3 ;;
378 none)
379   base_os=standalone ;;
381   base_os='' ;;
382 esac
384 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
385 tail=$os
386 ostry=$os
387 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
388   ostry="$ostry /$o"
389   tail=$o
390 done
391 o=`echo $tail | sed 's/[0-9]*$//'`
392 if test $o != $tail; then
393   ostry="$ostry /$o"
395 # For linux-gnu, try linux-gnu, then linux.
396 o=`echo $tail | sed 's/-.*$//'`
397 if test $o != $tail; then
398   ostry="$ostry /$o"
401 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
402 base=
403 tail=$base_os
404 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
405   set $b
406   base="$base /$1"
407   tail="$2"
408 done
410 # For sparc/sparc32, try sparc/sparc32 and then sparc.
411 mach=
412 tail=$machine
413 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
414   set $m
415   # Prepend the machine's FPU directory unless --without-fp.
416   if test "$with_fp" = yes; then
417     mach="$mach /$1/fpu"
418   fi
419   mach="$mach /$1"
420   tail="$2"
421 done
423 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
424 changequote([,])dnl
426 # Find what sysdep directories exist.
427 sysnames=
428 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
429 for d in $add_ons_pfx ''; do
430   for b in $base ''; do
431     for m0 in $mach ''; do
432       for v in /$vendor ''; do
433         test "$v" = / && continue
434         for o in /$ostry ''; do
435           test "$o" = / && continue
436           for m in $mach ''; do
437             if test "$m0$b$v$o$m"; then
438               try="${d}sysdeps$m0$b$v$o$m"
439               test -n "$enable_debug_configure" &&
440               echo "$0 [DEBUG]: try $try" >&2
441               if test -d $srcdir/$try; then
442                 sysnames="$sysnames $try"
443                 { test -n "$o" || test -n "$b"; } && os_used=t
444                 { test -n "$m" || test -n "$m0"; } && machine_used=t
445               fi
446             fi
447           done
448         done
449       done
450     done
451   done
452 done
453 IFS="$ac_save_ifs"
455 if test -z "$os_used" && test "$os" != none; then
456   AC_MSG_ERROR(Operating system $os is not supported.)
458 if test -z "$machine_used" && test "$machine" != none; then
459   AC_MSG_ERROR(The $machine is not supported.)
462 # We have now validated the configuration.
465 # If using ELF, look for an `elf' subdirectory of each machine directory.
466 # We prepend these rather than inserting them whereever the machine appears
467 # because things specified by the machine's ELF ABI should override
468 # OS-specific things, and should always be the same for any OS on the
469 # machine (otherwise what's the point of an ABI?).
470 if test "$elf" = yes; then
471   elf_dirs=
472   for d in $add_ons_pfx ''; do
473     for m in $mach; do
474       if test -d $srcdir/${d}sysdeps$m/elf; then
475         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
476       fi
477     done
478   done
479   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
483 # Expand the list of system names into a full list of directories
484 # from each element's parent name and Implies file (if present).
485 set $sysnames
486 names=
487 while test $# -gt 0; do
488   name=$1
489   shift
491   case " $names " in *" $name "*)
492     # Already in the list.
493     continue
494   esac
496   # Report each name as we discover it, so there is no long pause in output.
497   echo $ac_n "$name $ac_c" >&AC_FD_MSG
499   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
501   case $name in
502     /*) xsrcdir= ;;
503     *)  xsrcdir=$srcdir/ ;;
504   esac
505   test -n "$enable_debug_configure" &&
506   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
508   if test -f $xsrcdir$name/Implies; then
509     # Collect more names from the `Implies' file (removing comments).
510     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
511     implied=
512     for x in $implied_candidate; do
513       found=no
514       if test -d $xsrcdir$name_base/$x; then
515         implied="$implied $name_base/$x";
516         found=yes
517       fi
518       for d in $add_ons_pfx ''; do
519         try="${d}sysdeps/$x"
520         case $d in
521          /*) try_srcdir= ;;
522          *) try_srcdir=$srcdir/ ;;
523         esac
524         test -n "$enable_debug_configure" &&
525          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
526         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
527         then
528           implied="$implied $try"
529           found=yes
530         fi
531       done
532       if test $found = no; then
533         AC_MSG_WARN($name/Implies specifies nonexistent $x)
534       fi
535     done
536   else
537     implied=
538   fi
540   # Add NAME to the list of names.
541   names="$names $name"
543   # Find the parent of NAME, using the empty string if it has none.
544 changequote(,)dnl
545   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
546 changequote([,])dnl
548   # Add the names implied by NAME, and NAME's parent (if it has one), to
549   # the list of names to be processed (the argument list).  We prepend the
550   # implied names to the list and append the parent.  We want implied
551   # directories to come before further directories inferred from the
552   # configuration components; this ensures that for sysv4, unix/common
553   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
554   # after sysv4).
555   sysnames="`echo $implied $* $parent`"
556   test -n "$sysnames" && set $sysnames
557 done
559 # Add the default directories.
560 default_sysnames=sysdeps/generic
561 if test "$elf" = yes; then
562   default_sysnames="sysdeps/generic/elf $default_sysnames"
564 sysnames="$names $default_sysnames"
565 AC_SUBST(sysnames)
566 # The other names were emitted during the scan.
567 AC_MSG_RESULT($default_sysnames)
570 ### Locate tools.
572 AC_PROG_INSTALL
573 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
574   # The makefiles need to use a different form to find it in $srcdir.
575   INSTALL='\$(..)./scripts/install-sh -c'
577 AC_PROG_LN_S
579 # We need the physical current working directory.  We cannot use the
580 # "pwd -P" shell builtin since that's not portable.  Instead we try to
581 # find a pwd binary.  Note that assigning to the PWD environment
582 # variable might have some interesting side effects, so we don't do
583 # that.
584 AC_PATH_PROG(PWD_P, pwd, no)
585 if test "$PWD_P" = no; then
586   AC_MSG_ERROR(*** A pwd binary could not be found.)
589 # These programs are version sensitive.
590 AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
591 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
592   [version \([egcygnustpi-]*[0-9.]*\)],
593   [*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-*],
594   critic_missing=gcc)
595 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
596   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
597   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
600 if test -n "$critic_missing"; then
601 AC_MSG_ERROR([
602 *** These critical programs are missing or too old:$critic_missing
603 *** Check the INSTALL file for required versions.])
607 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
608   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
609   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
610   MSGFMT=: aux_missing="$aux_missing msgfmt")
611 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
612   [GNU texinfo.* \([0-9][0-9.]*\)],
613   [4.*],
614   MAKEINFO=: aux_missing="$aux_missing makeinfo")
615 AC_CHECK_PROG_VER(SED, sed, --version,
616   [GNU sed version \([0-9]*\.[0-9.]*\)],
617   [3.0[2-9]*|3.[1-9]*|[4-9]*],
618   SED=: aux_missing="$aux_missing sed")
620 AC_PROG_CC_LOCAL
621 AC_CANONICAL_BUILD
622 if test $host != $build; then
623   AC_CHECK_PROGS(BUILD_CC, gcc cc)
625 AC_SUBST(cross_compiling)
626 AC_PROG_CPP
627 LIBC_PROG_BINUTILS
628 AC_CHECK_TOOL(MIG, mig)
630 # Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
631 # XXX Commented out because it filters out too many good versions.
632 # XXX --drepper
633 # AC_CHECK_PROG_VER(AS, $AS, --version,
634 #   [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
635 #   [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
637 test -n "$aux_missing" && AC_MSG_WARN([
638 *** These auxiliary programs are missing or too old:$aux_missing
639 *** some features will be disabled.
640 *** Check the INSTALL file for required versions.])
642 # glibcbug.in wants to know the compiler version.
643 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
644 AC_SUBST(CCVERSION)
646 # if using special system headers, find out the compiler's sekrit
647 # header directory and add that to the list.  NOTE: Only does the right
648 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
649 if test -n "$sysheaders"; then
650   ccheaders=`$CC -print-file-name=include`
651   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
653 AC_SUBST(SYSINCLUDES)
655 # check if ranlib is necessary
656 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
657 cat > conftest.c <<EOF
658 int a;
659 char b;
660 void c(void) {}
662 $CC $CFLAGS -c conftest.c
663 $AR cr conftest.a conftest.c
664 cp conftest.a conftest2.a
665 $RANLIB conftest.a
666 if cmp -s conftest.a conftest2.a; then
667   libc_cv_ranlib_necessary=no
668 else
669   libc_cv_ranlib_necessary=yes
671 rm -rf conftest*])
672 if test "$libc_cv_ranlib_necessary" = no; then
673  RANLIB=:
676 # Test if LD_LIBRARY_PATH contains the notation for the current directory
677 # since this would lead to problems installing/building glibc.
678 # LD_LIBRARY_PATH contains the current directory if one of the following
679 # is true:
680 # - one of the terminals (":" and ";") is the first or last sign
681 # - two terminals occur directly after each other
682 # - the path contains an element with a dot in it
683 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
684 changequote(,)dnl
685 case ${LD_LIBRARY_PATH} in
686   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
687     ld_library_path_setting="contains current directory"
688     ;;
689   *)
690     ld_library_path_setting="ok"
691     ;;
692 esac
693 changequote([,])dnl
694 AC_MSG_RESULT($ld_library_path_setting)
695 if test "$ld_library_path_setting" != "ok"; then
696 AC_MSG_ERROR([
697 *** LD_LIBRARY_PATH shouldn't contain the current directory when
698 *** building glibc. Please change the environment variable
699 *** and run configure again.])
702 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
703 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
704   libc_cv_gcc_static_libgcc=
705 else
706   libc_cv_gcc_static_libgcc=-static-libgcc
707 fi])
708 AC_SUBST(libc_cv_gcc_static_libgcc)
710 AC_PATH_PROG(BASH, bash, no)
711 if test "$BASH" != no &&
712    $BASH -c 'test "$BASH_VERSINFO" \
713              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
714   libc_cv_have_bash2=yes
715 else
716   libc_cv_have_bash2=no
718 AC_SUBST(libc_cv_have_bash2)
720 dnl We need a ksh compatible shell for tzselect.
721 if test "$BASH" = no; then
722   AC_PATH_PROG(KSH, ksh, no)
723   if test "$KSH" = no; then
724     libc_cv_have_ksh=no
725   else
726     libc_cv_have_ksh=yes
727   fi
728 else
729   KSH="$BASH"
730   AC_SUBST(KSH)
731   libc_cv_have_ksh=yes
733 AC_SUBST(libc_cv_have_ksh)
735 AC_PROG_AWK
736 AC_PATH_PROG(PERL, perl, no)
737 if test "$PERL" != no &&
738    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
739   PERL=no
741 AC_PATH_PROG(INSTALL_INFO, install-info, no,
742              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
743 if test "$INSTALL_INFO" != "no"; then
744 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
745  [mkdir conftest.d
746   # There is a hard ^_ on the next line.  I am open to better ideas.
747   (echo '\x1f'
748   echo 'File: dir       Node: Top       This is the top of the INFO tree'
749   echo '* Menu:') >conftest.d/dir
750   (echo 'INFO-DIR-SECTION i-d-s works'
751   echo 'START-INFO-DIR-ENTRY'
752   echo '* Prog: (prog).   Program.'
753   echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
754   if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
755   then
756     if grep -s 'i-d-s works' conftest.d/dir >/dev/null
757     then libc_cv_old_debian_install_info=no
758     else libc_cv_old_debian_install_info=yes
759     fi
760   else libc_cv_old_debian_install_info=no testfailed=t
761   fi
762   rm -fr conftest.d])
763 if test -n "$testfailed"
764 then AC_MSG_WARN([install-info errored out, check config.log])
766 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
768 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
770 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
772 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
773 echo '#include <stddef.h>
774 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
775 if eval "$ac_cpp conftest.c 2>/dev/null" \
776 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
777   libc_cv_signed_size_t=no
778 else
779   libc_cv_signed_size_t=yes
781 rm -f conftest*])
782 if test $libc_cv_signed_size_t = yes; then
783   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
784   cat >> confdefs.h <<\EOF
785 #undef __SIZE_TYPE__
786 #define __SIZE_TYPE__ unsigned
790 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
791 AC_TRY_COMPILE(dnl
792 [#define __need_size_t
793 #define __need_wchar_t
794 #include <stddef.h>
795 #define __need_NULL
796 #include <stddef.h>], [size_t size; wchar_t wchar;
797 #ifdef offsetof
798 #error stddef.h ignored __need_*
799 #endif
800 if (&size == NULL || &wchar == NULL) abort ();],
801                libc_cv_friendly_stddef=yes,
802                libc_cv_friendly_stddef=no)])
803 if test $libc_cv_friendly_stddef = yes; then
804   config_vars="$config_vars
805 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
808 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
809                libc_cv_need_minus_P, [dnl
810 cat > conftest.S <<EOF
811 #include "confdefs.h"
812 /* Nothing whatsoever.  */
814 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
815   libc_cv_need_minus_P=no
816 else
817   libc_cv_need_minus_P=yes
819 rm -f conftest*])
820 if test $libc_cv_need_minus_P = yes; then
821   config_vars="$config_vars
822 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
825 AC_MSG_CHECKING(whether .text pseudo-op must be used)
826 AC_CACHE_VAL(libc_cv_dot_text, [dnl
827 cat > conftest.s <<EOF
828 .text
830 libc_cv_dot_text=
831 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
832   libc_cv_dot_text=.text
834 rm -f conftest*])
835 if test -z "$libc_cv_dot_text"; then
836   AC_MSG_RESULT(no)
837 else
838   AC_MSG_RESULT(yes)
841 AC_CACHE_CHECK(for assembler global-symbol directive,
842                libc_cv_asm_global_directive, [dnl
843 libc_cv_asm_global_directive=UNKNOWN
844 for ac_globl in .globl .global .EXPORT; do
845   cat > conftest.s <<EOF
846         ${libc_cv_dot_text}
847         ${ac_globl} foo
848 foo:
850   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
851     libc_cv_asm_global_directive=${ac_globl}
852   fi
853   rm -f conftest*
854   test $libc_cv_asm_global_directive != UNKNOWN && break
855 done])
856 if test $libc_cv_asm_global_directive = UNKNOWN; then
857   AC_MSG_ERROR(cannot determine asm global directive)
858 else
859   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
862 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
863 cat > conftest.s <<EOF
864 ${libc_cv_dot_text}
865 foo:
866 .set glibc_conftest_frobozz,foo
867 $libc_cv_asm_global_directive glibc_conftest_frobozz
869 # The alpha-dec-osf1 assembler gives only a warning for `.set'
870 # (but it doesn't work), so we must do a linking check to be sure.
871 cat > conftest1.c <<\EOF
872 extern int glibc_conftest_frobozz;
873 main () { printf ("%d\n", glibc_conftest_frobozz); }
875 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
876             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
877   libc_cv_asm_set_directive=yes
878 else
879   libc_cv_asm_set_directive=no
881 rm -f conftest*])
882 if test $libc_cv_asm_set_directive = yes; then
883   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
886 # The Aix ld uses global .symbol_names instead of symbol_names.
887 case "$os" in
888 aix4.3*)
889   AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
890 esac
892 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
893 [cat > conftest.s <<EOF
894 ${libc_cv_dot_text}
895 _sym:
896 .symver _sym,sym@VERS
898 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
899   libc_cv_asm_symver_directive=yes
900 else
901   libc_cv_asm_symver_directive=no
903 rm -f conftest*])
904 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
905 if test $libc_cv_asm_symver_directive = yes; then
906   cat > conftest.s <<EOF
907 ${libc_cv_dot_text}
908 _sym:
909 .symver _sym,sym@VERS
911   cat > conftest.map <<EOF
912 VERS_1 {
913         global: sym;
916 VERS_2 {
917         global: sym;
918 } VERS_1;
920   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
921     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
922                                         -nostartfiles -nostdlib
923                                         -Wl,--version-script,conftest.map
924                        1>&AC_FD_CC]);
925     then
926       libc_cv_ld_version_script_option=yes
927     else
928       libc_cv_ld_version_script_option=no
929     fi
930   else
931     libc_cv_ld_version_script_option=no
932   fi
933 else
934   libc_cv_ld_version_script_option=no
936 rm -f conftest*])
937 if test $shared != no &&
938    test $libc_cv_asm_symver_directive = yes &&
939    test $libc_cv_ld_version_script_option = yes &&
940    test $enable_versioning = yes; then
941   VERSIONING=yes
942   AC_DEFINE(DO_VERSIONING)
943 else
944   VERSIONING=no
946 AC_SUBST(VERSIONING)
948 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
949   echo "\
950 *** WARNING: You should not compile GNU libc without versioning. Not using
951 *** versioning will introduce incompatibilities so that old binaries
952 *** will not run anymore.
953 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
955 if test $elf = yes; then
956   AC_CACHE_CHECK(for .previous assembler directive,
957                  libc_cv_asm_previous_directive, [dnl
958   cat > conftest.s <<EOF
959 .section foo_section
960 .previous
962   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
963     libc_cv_asm_previous_directive=yes
964   else
965     libc_cv_asm_previous_directive=no
966   fi
967   rm -f conftest*])
968   if test $libc_cv_asm_previous_directive = yes; then
969     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
970   else
971     AC_CACHE_CHECK(for .popsection assembler directive,
972                    libc_cv_asm_popsection_directive, [dnl
973     cat > conftest.s <<EOF
974 .pushsection foo_section
975 .popsection
977     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
978       libc_cv_asm_popsection_directive=yes
979     else
980       libc_cv_asm_popsection_directive=no
981     fi
982     rm -f conftest*])
983     if test $libc_cv_asm_popsection_directive = yes; then
984       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
985     fi
986   fi
987   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
988                  libc_cv_asm_protected_directive, [dnl
989   cat > conftest.s <<EOF
990 .protected foo
991 foo:
992 .hidden bar
993 bar:
995   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
996     libc_cv_asm_protected_directive=yes
997   else
998     libc_cv_asm_protected_directive=no
999   fi
1000   rm -f conftest*])
1001   AC_SUBST(libc_cv_asm_protected_directive)
1002   AC_DEFINE(HAVE_PROTECTED)
1004   AC_CACHE_CHECK(for -z nodelete option,
1005                  libc_cv_z_nodelete, [dnl
1006   cat > conftest.c <<EOF
1007 int _start (void) { return 42; }
1009   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1010                      -nostartfiles -nostdlib
1011                      -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
1012   then
1013     libc_cv_z_nodelete=yes
1014   else
1015     libc_cv_z_nodelete=no
1016   fi
1017   rm -f conftest*])
1018   AC_SUBST(libc_cv_z_nodelete)
1020   AC_CACHE_CHECK(for -z nodlopen option,
1021                  libc_cv_z_nodlopen, [dnl
1022   cat > conftest.c <<EOF
1023 int _start (void) { return 42; }
1025   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1026                         -nostartfiles -nostdlib
1027                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
1028   then
1029     libc_cv_z_nodlopen=yes
1030   else
1031     libc_cv_z_nodlopen=no
1032   fi
1033   rm -f conftest*])
1034   AC_SUBST(libc_cv_z_nodlopen)
1036   AC_CACHE_CHECK(for -z initfirst option,
1037                  libc_cv_z_initfirst, [dnl
1038   cat > conftest.c <<EOF
1039 int _start (void) { return 42; }
1041   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1042                         -nostartfiles -nostdlib
1043                         -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
1044   then
1045     libc_cv_z_initfirst=yes
1046   else
1047     libc_cv_z_initfirst=no
1048   fi
1049   rm -f conftest*])
1050   AC_SUBST(libc_cv_z_initfirst)
1052   AC_CACHE_CHECK(for -Bgroup option,
1053                  libc_cv_Bgroup, [dnl
1054   cat > conftest.c <<EOF
1055 int _start (void) { return 42; }
1057   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AC_FD_CC])
1058   then
1059     libc_cv_Bgroup=yes
1060   else
1061     libc_cv_Bgroup=no
1062   fi
1063   rm -f conftest*])
1064   AC_SUBST(libc_cv_Bgroup)
1066   AC_CACHE_CHECK(for -z combreloc,
1067                  libc_cv_z_combreloc, [dnl
1068   cat > conftest.c <<EOF
1069 extern int bar (int);
1070 extern int mumble;
1071 int foo (void) { return bar (mumble); }
1073   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1074                         -nostdlib -nostartfiles
1075                         -Wl,-z,combreloc 1>&AC_FD_CC])
1076   then
1077 dnl The following test is a bit weak.  We must use a tool which can test
1078 dnl cross-platform since the gcc used can be a cross compiler.  Without
1079 dnl introducing new options this is not easily doable.  Instead use a tool
1080 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1081 dnl look for a section named .rel.dyn.
1082     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1083       libc_cv_z_combreloc=yes
1084     else
1085       libc_cv_z_combreloc=no
1086     fi
1087   else
1088     libc_cv_z_combreloc=no
1089   fi
1090   rm -f conftest*])
1091   if test "$libc_cv_z_combreloc" = yes; then
1092     AC_DEFINE(HAVE_Z_COMBRELOC)
1093   fi
1095 AC_SUBST(libc_cv_z_combreloc)
1097 if test $elf != yes; then
1098   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1099                  [AC_TRY_COMPILE(, [asm (".section .init");
1100                                     asm (".section .fini");
1101                                     asm ("${libc_cv_dot_text}");],
1102                                  libc_cv_have_initfini=yes,
1103                                  libc_cv_have_initfini=no)])
1104   AC_SUBST(libc_cv_have_initfini)dnl
1105   if test $libc_cv_have_initfini = yes; then
1106     AC_DEFINE(HAVE_INITFINI)
1107   fi
1110 if test $elf = yes -a $gnu_ld = yes; then
1111   AC_CACHE_CHECK(whether cc puts quotes around section names,
1112                  libc_cv_have_section_quotes,
1113                  [cat > conftest.c <<EOF
1114                   static const int foo
1115                   __attribute__ ((section ("bar"))) = 1;
1117                   if ${CC-cc} -S conftest.c -o conftest.s; then
1118                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1119                       libc_cv_have_section_quotes=yes
1120                     else
1121                       libc_cv_have_section_quotes=no
1122                     fi
1123                   else
1124                     libc_cv_have_section_quotes=unknown
1125                   fi
1126                   rm -f conftest.[cs]
1127                  ])
1128   if test $libc_cv_have_section_quotes = yes; then
1129     AC_DEFINE(HAVE_SECTION_QUOTES)
1130   fi
1133 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1134 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1135 [cat > conftest.$ac_ext <<EOF
1136 dnl This sometimes fails to find confdefs.h, for some reason.
1137 dnl [#]line __oline__ "[$]0"
1138 [#]line __oline__ "configure"
1139 #include "confdefs.h"
1140 void underscore_test(void) {
1141 return; }
1143 if AC_TRY_EVAL(ac_compile); then
1144   if grep _underscore_test conftest* >/dev/null; then
1145     ifelse([$1], , :, [rm -f conftest*
1146     $1])
1147   else
1148     ifelse([$2], , , [rm -f conftest*
1149     $2])
1150   fi
1151 else
1152   echo "configure: failed program was:" >&AC_FD_CC
1153   cat conftest.$ac_ext >&AC_FD_CC
1154   ifelse([$2], , , [rm -f conftest*
1155   $2])
1157 rm -f conftest*])
1159 if test $elf = yes; then
1160   libc_cv_asm_underscores=no
1161 else
1162   if test $ac_cv_prog_cc_works = yes; then
1163     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1164                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1165                                 libc_cv_asm_underscores=yes,
1166                                 libc_cv_asm_underscores=no)])
1167   else
1168     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1169                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1170                                             libc_cv_asm_underscores=no)])
1171   fi
1173 if test $libc_cv_asm_underscores = no; then
1174   AC_DEFINE(NO_UNDERSCORES)
1177 if test $elf = yes; then
1178   libc_cv_weak_symbols=yes
1181 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1182                [dnl
1183 cat > conftest.s <<EOF
1184 ${libc_cv_dot_text}
1185 ${libc_cv_asm_global_directive} foo
1186 foo:
1187 .weak foo
1188 .weak bar; bar = foo
1190 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1191   libc_cv_asm_weak_directive=yes
1192 else
1193   libc_cv_asm_weak_directive=no
1195 rm -f conftest*])
1197 if test $libc_cv_asm_weak_directive = no; then
1198   AC_CACHE_CHECK(for assembler .weakext directive,
1199                  libc_cv_asm_weakext_directive,
1200                  [dnl
1201 cat > conftest.s <<EOF
1202 ${libc_cv_dot_text}
1203 ${libc_cv_asm_global_directive} foo
1204 foo:
1205 .weakext bar foo
1206 .weakext baz
1207 ${libc_cv_asm_global_directive} baz
1208 baz:
1210   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1211     libc_cv_asm_weakext_directive=yes
1212   else
1213     libc_cv_asm_weakext_directive=no
1214   fi
1215   rm -f conftest*])
1217 fi # no .weak
1219 if test $libc_cv_asm_weak_directive = yes; then
1220   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1221 elif test $libc_cv_asm_weakext_directive = yes; then
1222   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1225 dnl The standard hppa assembler uses `;' to start comments and `!'
1226 dnl as a line separator.  CRIS uses `;' to start comments and `@' for
1227 dnl line separator.
1228 case "${host_cpu}-${host_os}" in
1229   cris*)
1230     libc_cv_asm_line_sep='@'
1231     AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1232     ;;
1233   hppa*linux*)
1234   AC_CACHE_CHECK(for assembler line separator,
1235                  libc_cv_asm_line_sep, [dnl
1236   cat > conftest.s <<EOF
1237  nop ; is_old_puffin
1239   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1240     libc_cv_asm_line_sep='!'
1241   else
1242     if test -z "$enable_hacker_mode"; then
1243       echo "*** You need a newer assembler to compile glibc"
1244       rm -f conftest*
1245       exit 1
1246     fi
1247     libc_cv_asm_line_sep=';'
1248   fi
1249   rm -f conftest*])
1250   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1251   ;;
1252 esac
1254 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1255 cat > conftest.c <<\EOF
1256 _start () {}
1257 int __eh_pc;
1258 __throw () {}
1260 dnl No \ in command here because it ends up inside ''.
1261 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1262                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1263                             -o conftest conftest.c 1>&AC_FD_CC]); then
1264   libc_cv_ld_no_whole_archive=yes
1265 else
1266   libc_cv_ld_no_whole_archive=no
1268 rm -f conftest*])
1269 if test $libc_cv_ld_no_whole_archive = yes; then
1270   no_whole_archive=-Wl,--no-whole-archive
1272 AC_SUBST(no_whole_archive)dnl
1274 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1275 cat > conftest.c <<\EOF
1276 _start () {}
1277 int __eh_pc;
1278 __throw () {}
1280 dnl No \ in command here because it ends up inside ''.
1281 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1282                             -nostdlib -nostartfiles -fexceptions
1283                             -o conftest conftest.c 1>&AC_FD_CC]); then
1284   libc_cv_gcc_exceptions=yes
1285 else
1286   libc_cv_gcc_exceptions=no
1288 rm -f conftest*])
1289 if test $libc_cv_gcc_exceptions = yes; then
1290   exceptions=-fexceptions
1292 AC_SUBST(exceptions)dnl
1294 if test "$base_machine" = alpha ; then
1295 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1296 cat > conftest.c <<\EOF
1297 foo () { }
1300 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
1301 then
1302   libc_cv_gcc_alpha_ng_prefix=yes
1303 else
1304   libc_cv_gcc_alpha_ng_prefix=no
1306 rm -f conftest* ])
1307 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1308   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1309 else
1310   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1314 if test "$host_cpu" = powerpc ; then
1315 # Check for a bug present in at least versions 2.8.x of GCC
1316 # and versions 1.0.x of EGCS.
1317 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1318 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1319                libc_cv_c_asmcr0_bug='no',
1320                libc_cv_c_asmcr0_bug='yes')])
1321 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1322   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1326 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1327 [cat > conftest.c <<EOF
1328 #line __oline__ "configure"
1329 static char __EH_FRAME_BEGIN__[];
1330 _start ()
1332 #ifdef CHECK__register_frame
1333   __register_frame (__EH_FRAME_BEGIN__);
1334   __deregister_frame (__EH_FRAME_BEGIN__);
1335 #endif
1336 #ifdef CHECK__register_frame_info
1337   __register_frame_info (__EH_FRAME_BEGIN__);
1338   __deregister_frame_info (__EH_FRAME_BEGIN__);
1339 #endif
1341 int __eh_pc;
1342 __throw () {}
1343 /* FIXME: this is fragile.  */
1344 malloc () {}
1345 strcmp () {}
1346 strlen () {}
1347 memcpy () {}
1348 memset () {}
1349 free () {}
1350 abort () {}
1351 __bzero () {}
1353 dnl No \ in command here because it ends up inside ''.
1354 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1355                             -nostdlib -nostartfiles
1356                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1357   libc_cv_gcc_dwarf2_unwind_info=static
1358 else
1359   libc_cv_gcc_dwarf2_unwind_info=no
1361 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1362   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1363                               -nostdlib -nostartfiles
1364                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1365     libc_cv_gcc_dwarf2_unwind_info=yes
1366   else
1367     libc_cv_gcc_dwarf2_unwind_info=no
1368   fi
1370 rm -f conftest*])
1371 case $libc_cv_gcc_dwarf2_unwind_info in
1372 yes)
1373   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1374   ;;
1375 static)
1376   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1377   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1378   ;;
1379 esac
1381 dnl Check whether compiler understands __builtin_expect.
1382 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1383 [cat > conftest.c <<EOF
1384 #line __oline__ "configure"
1385 int foo (int a)
1387   a = __builtin_expect (a, 10);
1388   return a == 10 ? 0 : 1;
1391 dnl No \ in command here because it ends up inside ''.
1392 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1393                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1394   libc_cv_gcc_builtin_expect=yes
1395 else
1396   libc_cv_gcc_builtin_expect=no
1398 rm -f conftest*])
1399 if test "$libc_cv_gcc_builtin_expect" = yes; then
1400   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1403 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1404 cat > conftest.c <<\EOF
1405 void zero (void *x)
1407   __builtin_memset (x, 0, 1000);
1411 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1412 then
1413   libc_cv_gcc_builtin_memset=no
1414 else
1415   libc_cv_gcc_builtin_memset=yes
1417 rm -f conftest* ])
1418 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1419   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1422 dnl Check whether the compiler supports subtraction of local labels.
1423 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1424 [cat > conftest.c <<EOF
1425 changequote(,)dnl
1426 #line __oline__ "configure"
1427 int foo (int a)
1429   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1430   void *p = &&l1 + ar[a];
1431   goto *p;
1432  l1:
1433   return 1;
1434  l2:
1435   return 2;
1437 changequote([,])dnl
1439 dnl No \ in command here because it ends up inside ''.
1440 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1441                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1442   libc_cv_gcc_subtract_local_labels=yes
1443 else
1444   libc_cv_gcc_subtract_local_labels=no
1446 rm -f conftest*])
1447 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1448   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1451 dnl Check whether we have the gd library available.
1452 AC_MSG_CHECKING(for libgd)
1453 if test "$with_gd" != "no"; then
1454   old_CFLAGS="$CFLAGS"
1455   CFLAGS="$CFLAGS $libgd_include"
1456   old_LDFLAGS="$LDFLAGS"
1457   LDFLAGS="$LDFLAGS $libgd_ldflags"
1458   old_LIBS="$LIBS"
1459   LIBS="$LIBS -lgd -lpng -lz -lm"
1460   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1461   CFLAGS="$old_CFLAGS"
1462   LDFLAGS="$old_LDFLAGS"
1463   LIBS="$old_LIBS"
1464 else
1465   LIBGD=no
1467 AC_MSG_RESULT($LIBGD)
1468 AC_SUBST(LIBGD)
1470 dnl check for the size of 'long double'.
1471 AC_CHECK_SIZEOF(long double, 0)
1472 sizeof_long_double=$ac_cv_sizeof_long_double
1473 AC_SUBST(sizeof_long_double)
1475 ### End of automated tests.
1476 ### Now run sysdeps configure fragments.
1478 # sysdeps configure fragments may set these with files to be linked below.
1479 libc_link_dests=
1480 libc_link_sources=
1482 # They also can set these variables.
1483 use_ldconfig=no
1484 ldd_rewrite_script=no
1485 libc_cv_sysconfdir=$sysconfdir
1486 libc_cv_gcc_unwind_find_fde=no
1488 # Iterate over all the sysdep directories we will use, running their
1489 # configure fragments, and looking for a uname implementation.
1490 uname=
1491 for dir in $sysnames; do
1492   case $dir in
1493     /*) dest=$dir ;;
1494     *)  dest=$srcdir/$dir ;;
1495   esac
1496   if test -r $dest/configure; then
1497     AC_MSG_RESULT(running configure fragment for $dest)
1498     . $dest/configure
1499   fi
1501   if test -z "$uname"; then
1502     if test -r $dest/uname.c ||
1503        test -r $dest/uname.S ||
1504        { test -r $dest/syscalls.list &&
1505          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1506       uname=$dir
1507     fi
1508   fi
1509 ]dnl
1510 done
1512 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1513   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1515 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1517 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1519 # If we will use the generic uname implementation, we must figure out what
1520 # it will say by examining the system, and write the results in config-name.h.
1521 if test "$uname" = "sysdeps/generic"; then
1523 changequote(,)dnl
1524   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1525 changequote([,])dnl
1526   if test $uname_sysname != $config_os; then
1527     config_release=`echo $config_os | sed s/$uname_sysname//`
1528   fi
1530 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1531     if test -r /vmunix; then
1532       kernel_id=`strings /vmunix | grep UNIX`
1533     elif test -r /dynix; then
1534       kernel_id=`strings /dynix | grep DYNIX`
1535     else
1536       kernel_id=
1537     fi
1538 ])dnl
1540   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1541 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1542 changequote(,)dnl
1543   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1544 changequote([,])dnl
1545   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1546          != x$config_release; then
1547     # The configuration release is a substring of the kernel release.
1548     libc_cv_uname_release=$kernel_release
1549   elif test x$config_release != x; then
1550     libc_cv_uname_release=$config_release
1551   elif test x$kernel_release != x; then
1552     libc_cv_uname_release=$kernel_release
1553   else
1554     libc_cv_uname_release=unknown
1555   fi])
1556   uname_release="$libc_cv_uname_release"
1558   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1559 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1560 changequote(,)dnl
1561   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1562 changequote([,])dnl
1563   if test -n "$kernel_version"; then
1564     libc_cv_uname_version="$kernel_version"
1565   else
1566     libc_cv_uname_version=unknown
1567   fi])
1568   uname_version="$libc_cv_uname_version"
1570 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1571   config_uname=config-name.h:config-name.in
1572 else
1573   # For non-generic uname, we don't need to create config-name.h at all.
1574   config_uname=
1577 AC_MSG_CHECKING(stdio selection)
1578 AC_SUBST(stdio)
1579 case $stdio in
1580 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1581 default) stdio=stdio ;;
1582 esac
1583 AC_MSG_RESULT($stdio)
1585 # Test for old glibc 2.0.x headers so that they can be removed properly
1586 # Search only in includedir.
1587 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1588 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1589 then
1590   old_glibc_headers=yes
1591 else
1592   old_glibc_headers=no
1594 AC_MSG_RESULT($old_glibc_headers)
1595 if test ${old_glibc_headers} = yes; then
1596   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1597   AC_MSG_WARN(*** be removed.)
1599 AC_SUBST(old_glibc_headers)
1601 AC_SUBST(libc_cv_slibdir)
1602 AC_SUBST(libc_cv_localedir)
1603 AC_SUBST(libc_cv_sysconfdir)
1604 AC_SUBST(libc_cv_rootsbindir)
1606 AC_SUBST(use_ldconfig)
1607 AC_SUBST(ldd_rewrite_script)
1609 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1610 if test $gnu_ld = yes; then
1611   AC_DEFINE(HAVE_GNU_LD)
1613 if test $gnu_as = yes; then
1614   AC_DEFINE(HAVE_GNU_AS)
1616 if test $elf = yes; then
1617   AC_DEFINE(HAVE_ELF)
1619 if test $xcoff = yes; then
1620   AC_DEFINE(HAVE_XCOFF)
1623 AC_SUBST(static)
1624 AC_SUBST(shared)
1625 if test $shared = default; then
1626   if test $gnu_ld = yes; then
1627     shared=$elf
1628   else
1629     # For now we do not assume shared libs are available.  In future more
1630     # tests might become available.
1631     shared=no
1632   fi
1635 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1636 [pic_default=yes
1637 cat > conftest.c <<EOF
1638 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1639 # error PIC is default.
1640 #endif
1642 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1643   pic_default=no
1645 rm -f conftest.*])
1646 AC_SUBST(pic_default)
1648 AC_SUBST(profile)
1649 AC_SUBST(omitfp)
1650 AC_SUBST(bounded)
1651 AC_SUBST(static_nss)
1652 AC_SUBST(nopic_initfini)
1654 AC_SUBST(DEFINES)
1656 case "$add_ons" in
1657   *door*) linux_doors=yes ;;
1658   *) linux_doors=no ;;
1659 esac
1660 AC_SUBST(linux_doors)
1662 dnl See sysdeps/mach/configure.in for this variable.
1663 AC_SUBST(mach_interface_list)
1665 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1666   config_makefile=
1667 else
1668   config_makefile=Makefile
1671 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1672 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1673 AC_SUBST(VERSION)
1674 AC_SUBST(RELEASE)
1676 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1677 case $CONFIG_FILES in *config.make*)
1678 echo "$config_vars" >> config.make;;
1679 esac
1680 test -d bits || mkdir bits], [config_vars='$config_vars'])