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