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