Fix test for .rela.dyn section.
[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 case $CCVERSION in
640   3.*) gcc3=yes;;
641 esac
642
643 if test x"$gcc3" = xyes; then
644     echo "\
645 *** This version of GNU libc cannot be compiled by GCC 3.x.
646 *** GCC 3.x will generate a library that is binary incompatible to
647 *** older and future releases of GNU libc.
648 *** You should compile this GNU libc release by an older GCC version
649 *** or wait for the next GNU libc release."
650   if test $enable_sanity = yes; then
651     echo "\
652 *** If you really mean to use GCC 3.x, run configure again
653 *** using the extra parameter \`--disable-sanity-checks'."
654     exit 1
655   else
656     echo "\
657 *** This configuration is not supported by the GNU libc developers."
658   fi
659 fi
660 # if using special system headers, find out the compiler's sekrit
661 # header directory and add that to the list.  NOTE: Only does the right
662 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
663 if test -n "$sysheaders"; then
664   ccheaders=`$CC -print-file-name=include`
665   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
666 fi
667 AC_SUBST(SYSINCLUDES)
668
669 # check if ranlib is necessary
670 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
671 cat > conftest.c <<EOF
672 int a;
673 char b;
674 void c(void) {}
675 EOF
676 $CC $CFLAGS -c conftest.c
677 $AR cr conftest.a conftest.c
678 cp conftest.a conftest2.a
679 $RANLIB conftest.a
680 if cmp -s conftest.a conftest2.a; then
681   libc_cv_ranlib_necessary=no
682 else
683   libc_cv_ranlib_necessary=yes
684 fi
685 rm -rf conftest*])
686 if test "$libc_cv_ranlib_necessary" = no; then
687  RANLIB=:
688 fi
689
690 # Test if LD_LIBRARY_PATH contains the notation for the current directory
691 # since this would lead to problems installing/building glibc.
692 # LD_LIBRARY_PATH contains the current directory if one of the following
693 # is true:
694 # - one of the terminals (":" and ";") is the first or last sign
695 # - two terminals occur directly after each other
696 # - the path contains an element with a dot in it
697 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
698 changequote(,)dnl
699 case ${LD_LIBRARY_PATH} in
700   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
701     ld_library_path_setting="contains current directory"
702     ;;
703   *)
704     ld_library_path_setting="ok"
705     ;;
706 esac
707 changequote([,])dnl
708 AC_MSG_RESULT($ld_library_path_setting)
709 if test "$ld_library_path_setting" != "ok"; then
710 AC_MSG_ERROR([
711 *** LD_LIBRARY_PATH shouldn't contain the current directory when
712 *** building glibc. Please change the environment variable
713 *** and run configure again.])
714 fi
715
716 AC_PATH_PROG(BASH, bash, no)
717 if test "$BASH" != no &&
718    $BASH -c 'test "$BASH_VERSINFO" \
719              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
720   libc_cv_have_bash2=yes
721 else
722   libc_cv_have_bash2=no
723 fi
724 AC_SUBST(libc_cv_have_bash2)
725
726 dnl We need a ksh compatible shell for tzselect.
727 if test "$BASH" = no; then
728   AC_PATH_PROG(KSH, ksh, no)
729   if test "$KSH" = no; then
730     libc_cv_have_ksh=no
731   else
732     libc_cv_have_ksh=yes
733   fi
734 else
735   KSH="$BASH"
736   AC_SUBST(KSH)
737   libc_cv_have_ksh=yes
738 fi
739 AC_SUBST(libc_cv_have_ksh)
740
741 AC_PROG_AWK
742 AC_PATH_PROG(PERL, perl, no)
743 if test "$PERL" != no &&
744    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
745   PERL=no
746 fi
747 AC_PATH_PROG(INSTALL_INFO, install-info, no,
748              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
749 if test "$INSTALL_INFO" != "no"; then
750 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
751  [mkdir conftest.d
752   # There is a hard ^_ on the next line.  I am open to better ideas.
753   (echo '\1f'
754   echo 'File: dir       Node: Top       This is the top of the INFO tree'
755   echo '* Menu:') >conftest.d/dir
756   (echo 'INFO-DIR-SECTION i-d-s works'
757   echo 'START-INFO-DIR-ENTRY'
758   echo '* Prog: (prog).   Program.'
759   echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
760   if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
761   then
762     if grep -s 'i-d-s works' conftest.d/dir >/dev/null
763     then libc_cv_old_debian_install_info=no
764     else libc_cv_old_debian_install_info=yes
765     fi
766   else libc_cv_old_debian_install_info=no testfailed=t
767   fi
768   rm -fr conftest.d])
769 if test -n "$testfailed"
770 then AC_MSG_WARN([install-info errored out, check config.log])
771 fi
772 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
773 fi
774 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
775
776 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
777
778 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
779 echo '#include <stddef.h>
780 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
781 if eval "$ac_cpp conftest.c 2>/dev/null" \
782 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
783   libc_cv_signed_size_t=no
784 else
785   libc_cv_signed_size_t=yes
786 fi
787 rm -f conftest*])
788 if test $libc_cv_signed_size_t = yes; then
789   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
790   cat >> confdefs.h <<\EOF
791 #undef __SIZE_TYPE__
792 #define __SIZE_TYPE__ unsigned
793 EOF
794 fi
795
796 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
797 AC_TRY_COMPILE(dnl
798 [#define __need_size_t
799 #define __need_wchar_t
800 #include <stddef.h>
801 #define __need_NULL
802 #include <stddef.h>], [size_t size; wchar_t wchar;
803 #ifdef offsetof
804 #error stddef.h ignored __need_*
805 #endif
806 if (&size == NULL || &wchar == NULL) abort ();],
807                libc_cv_friendly_stddef=yes,
808                libc_cv_friendly_stddef=no)])
809 if test $libc_cv_friendly_stddef = yes; then
810   config_vars="$config_vars
811 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
812 fi
813
814 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
815                libc_cv_need_minus_P, [dnl
816 cat > conftest.S <<EOF
817 #include "confdefs.h"
818 /* Nothing whatsoever.  */
819 EOF
820 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
821   libc_cv_need_minus_P=no
822 else
823   libc_cv_need_minus_P=yes
824 fi
825 rm -f conftest*])
826 if test $libc_cv_need_minus_P = yes; then
827   config_vars="$config_vars
828 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
829 fi
830
831 AC_MSG_CHECKING(whether .text pseudo-op must be used)
832 AC_CACHE_VAL(libc_cv_dot_text, [dnl
833 cat > conftest.s <<EOF
834 .text
835 EOF
836 libc_cv_dot_text=
837 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
838   libc_cv_dot_text=.text
839 fi
840 rm -f conftest*])
841 if test -z "$libc_cv_dot_text"; then
842   AC_MSG_RESULT(no)
843 else
844   AC_MSG_RESULT(yes)
845 fi
846
847 AC_CACHE_CHECK(for assembler global-symbol directive,
848                libc_cv_asm_global_directive, [dnl
849 libc_cv_asm_global_directive=UNKNOWN
850 for ac_globl in .globl .global .EXPORT; do
851   cat > conftest.s <<EOF
852         ${libc_cv_dot_text}
853         ${ac_globl} foo
854 foo:
855 EOF
856   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
857     libc_cv_asm_global_directive=${ac_globl}
858   fi
859   rm -f conftest*
860   test $libc_cv_asm_global_directive != UNKNOWN && break
861 done])
862 if test $libc_cv_asm_global_directive = UNKNOWN; then
863   AC_MSG_ERROR(cannot determine asm global directive)
864 else
865   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
866 fi
867
868 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
869 cat > conftest.s <<EOF
870 ${libc_cv_dot_text}
871 foo:
872 .set glibc_conftest_frobozz,foo
873 $libc_cv_asm_global_directive glibc_conftest_frobozz
874 EOF
875 # The alpha-dec-osf1 assembler gives only a warning for `.set'
876 # (but it doesn't work), so we must do a linking check to be sure.
877 cat > conftest1.c <<\EOF
878 extern int glibc_conftest_frobozz;
879 main () { printf ("%d\n", glibc_conftest_frobozz); }
880 EOF
881 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
882             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
883   libc_cv_asm_set_directive=yes
884 else
885   libc_cv_asm_set_directive=no
886 fi
887 rm -f conftest*])
888 if test $libc_cv_asm_set_directive = yes; then
889   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
890 fi
891
892 # The Aix ld uses global .symbol_names instead of symbol_names.
893 case "$os" in
894 aix4.3*)
895   AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
896 esac
897
898 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
899 [cat > conftest.s <<EOF
900 ${libc_cv_dot_text}
901 _sym:
902 .symver _sym,sym@VERS
903 EOF
904 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
905   libc_cv_asm_symver_directive=yes
906 else
907   libc_cv_asm_symver_directive=no
908 fi
909 rm -f conftest*])
910 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
911 if test $libc_cv_asm_symver_directive = yes; then
912   cat > conftest.s <<EOF
913 ${libc_cv_dot_text}
914 _sym:
915 .symver _sym,sym@VERS
916 EOF
917   cat > conftest.map <<EOF
918 VERS_1 {
919         global: sym;
920 };
921
922 VERS_2 {
923         global: sym;
924 } VERS_1;
925 EOF
926   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
927     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
928                                         -nostartfiles -nostdlib
929                                         -Wl,--version-script,conftest.map
930                        1>&AC_FD_CC]);
931     then
932       libc_cv_ld_version_script_option=yes
933     else
934       libc_cv_ld_version_script_option=no
935     fi
936   else
937     libc_cv_ld_version_script_option=no
938   fi
939 else
940   libc_cv_ld_version_script_option=no
941 fi
942 rm -f conftest*])
943 if test $shared != no &&
944    test $libc_cv_asm_symver_directive = yes &&
945    test $libc_cv_ld_version_script_option = yes &&
946    test $enable_versioning = yes; then
947   VERSIONING=yes
948   AC_DEFINE(DO_VERSIONING)
949 else
950   VERSIONING=no
951 fi
952 AC_SUBST(VERSIONING)
953
954 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
955   echo "\
956 *** WARNING: You should not compile GNU libc without versioning. Not using
957 *** versioning will introduce incompatibilities so that old binaries
958 *** will not run anymore.
959 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
960 fi
961 if test $elf = yes; then
962   AC_CACHE_CHECK(for .previous assembler directive,
963                  libc_cv_asm_previous_directive, [dnl
964   cat > conftest.s <<EOF
965 .section foo_section
966 .previous
967 EOF
968   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
969     libc_cv_asm_previous_directive=yes
970   else
971     libc_cv_asm_previous_directive=no
972   fi
973   rm -f conftest*])
974   if test $libc_cv_asm_previous_directive = yes; then
975     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
976   else
977     AC_CACHE_CHECK(for .popsection assembler directive,
978                    libc_cv_asm_popsection_directive, [dnl
979     cat > conftest.s <<EOF
980 .pushsection foo_section
981 .popsection
982 EOF
983     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
984       libc_cv_asm_popsection_directive=yes
985     else
986       libc_cv_asm_popsection_directive=no
987     fi
988     rm -f conftest*])
989     if test $libc_cv_asm_popsection_directive = yes; then
990       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
991     fi
992   fi
993   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
994                  libc_cv_asm_protected_directive, [dnl
995   cat > conftest.s <<EOF
996 .protected foo
997 foo:
998 .hidden bar
999 bar:
1000 EOF
1001   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1002     libc_cv_asm_protected_directive=yes
1003   else
1004     libc_cv_asm_protected_directive=no
1005   fi
1006   rm -f conftest*])
1007   AC_SUBST(libc_cv_asm_protected_directive)
1008
1009   AC_CACHE_CHECK(for -z nodelete option,
1010                  libc_cv_z_nodelete, [dnl
1011   cat > conftest.c <<EOF
1012 int _start (void) { return 42; }
1013 EOF
1014   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
1015   then
1016     libc_cv_z_nodelete=yes
1017   else
1018     libc_cv_z_nodelete=no
1019   fi
1020   rm -f conftest*])
1021   AC_SUBST(libc_cv_z_nodelete)
1022
1023   AC_CACHE_CHECK(for -z nodlopen option,
1024                  libc_cv_z_nodlopen, [dnl
1025   cat > conftest.c <<EOF
1026 int _start (void) { return 42; }
1027 EOF
1028   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
1029   then
1030     libc_cv_z_nodlopen=yes
1031   else
1032     libc_cv_z_nodlopen=no
1033   fi
1034   rm -f conftest*])
1035   AC_SUBST(libc_cv_z_nodlopen)
1036
1037   AC_CACHE_CHECK(for -z initfirst option,
1038                  libc_cv_z_initfirst, [dnl
1039   cat > conftest.c <<EOF
1040 int _start (void) { return 42; }
1041 EOF
1042   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
1043   then
1044     libc_cv_z_initfirst=yes
1045   else
1046     libc_cv_z_initfirst=no
1047   fi
1048   rm -f conftest*])
1049   AC_SUBST(libc_cv_z_initfirst)
1050
1051   AC_CACHE_CHECK(for -Bgroup option,
1052                  libc_cv_Bgroup, [dnl
1053   cat > conftest.c <<EOF
1054 int _start (void) { return 42; }
1055 EOF
1056   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AC_FD_CC])
1057   then
1058     libc_cv_Bgroup=yes
1059   else
1060     libc_cv_Bgroup=no
1061   fi
1062   rm -f conftest*])
1063   AC_SUBST(libc_cv_Bgroup)
1064
1065   AC_CACHE_CHECK(for -z combreloc,
1066                  libc_cv_z_combreloc, [dnl
1067   cat > conftest.c <<EOF
1068 int foo (void) { return 0; }
1069 EOF
1070   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-z,combreloc 1>&AC_FD_CC])
1071   then
1072 dnl The following test is a bit weak.  We must use a tool which can test
1073 dnl cross-platform since the gcc used can be a cross compiler.  Without
1074 dnl introducing new options this is not easily doable.  Instead use a tool
1075 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1076 dnl look for a section named .rel.dyn.
1077     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1078       libc_cv_z_combreloc=yes
1079     else
1080       libc_cv_z_combreloc=no
1081     fi
1082   else
1083     libc_cv_z_combreloc=no
1084   fi
1085   rm -f conftest*])
1086   if test "$libc_cv_z_combreloc" = yes; then
1087     AC_DEFINE(HAVE_Z_COMBRELOC)
1088   fi
1089 fi
1090
1091 if test $elf != yes; then
1092   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1093                  [AC_TRY_COMPILE(, [asm (".section .init");
1094                                     asm (".section .fini");
1095                                     asm ("${libc_cv_dot_text}");],
1096                                  libc_cv_have_initfini=yes,
1097                                  libc_cv_have_initfini=no)])
1098   AC_SUBST(libc_cv_have_initfini)dnl
1099   if test $libc_cv_have_initfini = yes; then
1100     AC_DEFINE(HAVE_INITFINI)
1101   fi
1102 fi
1103
1104 if test $elf = yes -a $gnu_ld = yes; then
1105   AC_CACHE_CHECK(whether cc puts quotes around section names,
1106                  libc_cv_have_section_quotes,
1107                  [cat > conftest.c <<EOF
1108                   static const int foo
1109                   __attribute__ ((section ("bar"))) = 1;
1110 EOF
1111                   if ${CC-cc} -S conftest.c -o conftest.s; then
1112                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1113                       libc_cv_have_section_quotes=yes
1114                     else
1115                       libc_cv_have_section_quotes=no
1116                     fi
1117                   else
1118                     libc_cv_have_section_quotes=unknown
1119                   fi
1120                   rm -f conftest.[cs]
1121                  ])
1122   if test $libc_cv_have_section_quotes = yes; then
1123     AC_DEFINE(HAVE_SECTION_QUOTES)
1124   fi
1125 fi
1126
1127 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1128 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1129 [cat > conftest.$ac_ext <<EOF
1130 dnl This sometimes fails to find confdefs.h, for some reason.
1131 dnl [#]line __oline__ "[$]0"
1132 [#]line __oline__ "configure"
1133 #include "confdefs.h"
1134 void underscore_test(void) {
1135 return; }
1136 EOF
1137 if AC_TRY_EVAL(ac_compile); then
1138   if grep _underscore_test conftest* >/dev/null; then
1139     ifelse([$1], , :, [rm -f conftest*
1140     $1])
1141   else
1142     ifelse([$2], , , [rm -f conftest*
1143     $2])
1144   fi
1145 else
1146   echo "configure: failed program was:" >&AC_FD_CC
1147   cat conftest.$ac_ext >&AC_FD_CC
1148   ifelse([$2], , , [rm -f conftest*
1149   $2])
1150 fi
1151 rm -f conftest*])
1152
1153 if test $elf = yes; then
1154   libc_cv_asm_underscores=no
1155 else
1156   if test $ac_cv_prog_cc_works = yes; then
1157     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1158                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1159                                 libc_cv_asm_underscores=yes,
1160                                 libc_cv_asm_underscores=no)])
1161   else
1162     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1163                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1164                                             libc_cv_asm_underscores=no)])
1165   fi
1166 fi
1167 if test $libc_cv_asm_underscores = no; then
1168   AC_DEFINE(NO_UNDERSCORES)
1169 fi
1170
1171 if test $elf = yes; then
1172   libc_cv_weak_symbols=yes
1173 fi
1174
1175 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1176                [dnl
1177 cat > conftest.s <<EOF
1178 ${libc_cv_dot_text}
1179 ${libc_cv_asm_global_directive} foo
1180 foo:
1181 .weak foo
1182 .weak bar; bar = foo
1183 EOF
1184 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1185   libc_cv_asm_weak_directive=yes
1186 else
1187   libc_cv_asm_weak_directive=no
1188 fi
1189 rm -f conftest*])
1190
1191 if test $libc_cv_asm_weak_directive = no; then
1192   AC_CACHE_CHECK(for assembler .weakext directive,
1193                  libc_cv_asm_weakext_directive,
1194                  [dnl
1195 cat > conftest.s <<EOF
1196 ${libc_cv_dot_text}
1197 ${libc_cv_asm_global_directive} foo
1198 foo:
1199 .weakext bar foo
1200 .weakext baz
1201 ${libc_cv_asm_global_directive} baz
1202 baz:
1203 EOF
1204   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1205     libc_cv_asm_weakext_directive=yes
1206   else
1207     libc_cv_asm_weakext_directive=no
1208   fi
1209   rm -f conftest*])
1210
1211 fi # no .weak
1212
1213 if test $libc_cv_asm_weak_directive = yes; then
1214   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1215 elif test $libc_cv_asm_weakext_directive = yes; then
1216   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1217 fi
1218
1219 dnl The standard hppa assembler uses `;' to start comments and `!'
1220 dnl as a line separator.  CRIS uses `;' to start comments and `@' for
1221 dnl line separator.
1222 case "${host_cpu}-${host_os}" in
1223   cris*)
1224     libc_cv_asm_line_sep='@'
1225     AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1226     ;;
1227   hppa*linux*)
1228   AC_CACHE_CHECK(for assembler line separator,
1229                  libc_cv_asm_line_sep, [dnl
1230   cat > conftest.s <<EOF
1231  nop ; is_old_puffin
1232 EOF
1233   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1234     libc_cv_asm_line_sep='!'
1235   else
1236     if test -z "$enable_hacker_mode"; then
1237       echo "*** You need a newer assembler to compile glibc"
1238       rm -f conftest*
1239       exit 1
1240     fi
1241     libc_cv_asm_line_sep=';'
1242   fi
1243   rm -f conftest*])
1244   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1245   ;;
1246 esac
1247
1248 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1249 cat > conftest.c <<\EOF
1250 _start () {}
1251 int __eh_pc;
1252 __throw () {}
1253 EOF
1254 dnl No \ in command here because it ends up inside ''.
1255 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1256                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1257                             -o conftest conftest.c 1>&AC_FD_CC]); then
1258   libc_cv_ld_no_whole_archive=yes
1259 else
1260   libc_cv_ld_no_whole_archive=no
1261 fi
1262 rm -f conftest*])
1263 if test $libc_cv_ld_no_whole_archive = yes; then
1264   no_whole_archive=-Wl,--no-whole-archive
1265 fi
1266 AC_SUBST(no_whole_archive)dnl
1267
1268 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1269 cat > conftest.c <<\EOF
1270 _start () {}
1271 int __eh_pc;
1272 __throw () {}
1273 EOF
1274 dnl No \ in command here because it ends up inside ''.
1275 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1276                             -nostdlib -nostartfiles -fexceptions
1277                             -o conftest conftest.c 1>&AC_FD_CC]); then
1278   libc_cv_gcc_exceptions=yes
1279 else
1280   libc_cv_gcc_exceptions=no
1281 fi
1282 rm -f conftest*])
1283 if test $libc_cv_gcc_exceptions = yes; then
1284   exceptions=-fexceptions
1285 fi
1286 AC_SUBST(exceptions)dnl
1287
1288 if test "$base_machine" = alpha ; then
1289 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1290 cat > conftest.c <<\EOF
1291 foo () { }
1292 EOF
1293 dnl
1294 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
1295 then
1296   libc_cv_gcc_alpha_ng_prefix=yes
1297 else
1298   libc_cv_gcc_alpha_ng_prefix=no
1299 fi
1300 rm -f conftest* ])
1301 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1302   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1303 else
1304   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1305 fi
1306 fi
1307
1308 if test "$host_cpu" = powerpc ; then
1309 # Check for a bug present in at least versions 2.8.x of GCC
1310 # and versions 1.0.x of EGCS.
1311 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1312 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1313                libc_cv_c_asmcr0_bug='no',
1314                libc_cv_c_asmcr0_bug='yes')])
1315 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1316   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1317 fi
1318 fi
1319
1320 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1321 [cat > conftest.c <<EOF
1322 #line __oline__ "configure"
1323 static char __EH_FRAME_BEGIN__[];
1324 _start ()
1325 {
1326 #ifdef CHECK__register_frame
1327   __register_frame (__EH_FRAME_BEGIN__);
1328   __deregister_frame (__EH_FRAME_BEGIN__);
1329 #endif
1330 #ifdef CHECK__register_frame_info
1331   __register_frame_info (__EH_FRAME_BEGIN__);
1332   __deregister_frame_info (__EH_FRAME_BEGIN__);
1333 #endif
1334 }
1335 int __eh_pc;
1336 __throw () {}
1337 /* FIXME: this is fragile.  */
1338 malloc () {}
1339 strcmp () {}
1340 strlen () {}
1341 memcpy () {}
1342 memset () {}
1343 free () {}
1344 abort () {}
1345 __bzero () {}
1346 EOF
1347 dnl No \ in command here because it ends up inside ''.
1348 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1349                             -nostdlib -nostartfiles
1350                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1351   libc_cv_gcc_dwarf2_unwind_info=static
1352 else
1353   libc_cv_gcc_dwarf2_unwind_info=no
1354 fi
1355 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1356   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1357                               -nostdlib -nostartfiles
1358                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1359     libc_cv_gcc_dwarf2_unwind_info=yes
1360   else
1361     libc_cv_gcc_dwarf2_unwind_info=no
1362   fi
1363 fi
1364 rm -f conftest*])
1365 case $libc_cv_gcc_dwarf2_unwind_info in
1366 yes)
1367   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1368   ;;
1369 static)
1370   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1371   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1372   ;;
1373 esac
1374
1375 dnl Check whether compiler understands __builtin_expect.
1376 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1377 [cat > conftest.c <<EOF
1378 #line __oline__ "configure"
1379 int foo (int a)
1380 {
1381   a = __builtin_expect (a, 10);
1382   return a == 10 ? 0 : 1;
1383 }
1384 EOF
1385 dnl No \ in command here because it ends up inside ''.
1386 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1387                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1388   libc_cv_gcc_builtin_expect=yes
1389 else
1390   libc_cv_gcc_builtin_expect=no
1391 fi
1392 rm -f conftest*])
1393 if test "$libc_cv_gcc_builtin_expect" = yes; then
1394   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1395 fi
1396
1397 dnl Check whether the compiler supports subtraction of local labels.
1398 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1399 [cat > conftest.c <<EOF
1400 changequote(,)dnl
1401 #line __oline__ "configure"
1402 int foo (int a)
1403 {
1404   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1405   void *p = &&l1 + ar[a];
1406   goto *p;
1407  l1:
1408   return 1;
1409  l2:
1410   return 2;
1411 }
1412 changequote([,])dnl
1413 EOF
1414 dnl No \ in command here because it ends up inside ''.
1415 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1416                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1417   libc_cv_gcc_subtract_local_labels=yes
1418 else
1419   libc_cv_gcc_subtract_local_labels=no
1420 fi
1421 rm -f conftest*])
1422 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1423   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1424 fi
1425
1426 dnl Check whether we have the gd library available.
1427 AC_MSG_CHECKING(for libgd)
1428 if test "$with_gd" != "no"; then
1429   old_CFLAGS="$CFLAGS"
1430   CFLAGS="$CFLAGS $libgd_include"
1431   old_LDFLAGS="$LDFLAGS"
1432   LDFLAGS="$LDFLAGS $libgd_ldflags"
1433   old_LIBS="$LIBS"
1434   LIBS="$LIBS -lgd -lpng -lz -lm"
1435   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1436   CFLAGS="$old_CFLAGS"
1437   LDFLAGS="$old_LDFLAGS"
1438   LIBS="$old_LIBS"
1439 else
1440   LIBGD=no
1441 fi
1442 AC_MSG_RESULT($LIBGD)
1443 AC_SUBST(LIBGD)
1444
1445 dnl check for the size of 'long double'.
1446 AC_CHECK_SIZEOF(long double, 0)
1447 sizeof_long_double=$ac_cv_sizeof_long_double
1448 AC_SUBST(sizeof_long_double)
1449
1450 ### End of automated tests.
1451 ### Now run sysdeps configure fragments.
1452
1453 # sysdeps configure fragments may set these with files to be linked below.
1454 libc_link_dests=
1455 libc_link_sources=
1456
1457 # They also can set these variables.
1458 use_ldconfig=no
1459 ldd_rewrite_script=no
1460 libc_cv_sysconfdir=$sysconfdir
1461
1462 # Iterate over all the sysdep directories we will use, running their
1463 # configure fragments, and looking for a uname implementation.
1464 uname=
1465 for dir in $sysnames; do
1466   case $dir in
1467     /*) dest=$dir ;;
1468     *)  dest=$srcdir/$dir ;;
1469   esac
1470   if test -r $dest/configure; then
1471     AC_MSG_RESULT(running configure fragment for $dest)
1472     . $dest/configure
1473   fi
1474 [
1475   if test -z "$uname"; then
1476     if test -r $dest/uname.c ||
1477        test -r $dest/uname.S ||
1478        { test -r $dest/syscalls.list &&
1479          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1480       uname=$dir
1481     fi
1482   fi
1483 ]dnl
1484 done
1485
1486 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1487
1488 # If we will use the generic uname implementation, we must figure out what
1489 # it will say by examining the system, and write the results in config-name.h.
1490 if test "$uname" = "sysdeps/generic"; then
1491
1492 changequote(,)dnl
1493   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1494 changequote([,])dnl
1495   if test $uname_sysname != $config_os; then
1496     config_release=`echo $config_os | sed s/$uname_sysname//`
1497   fi
1498 dnl
1499 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1500     if test -r /vmunix; then
1501       kernel_id=`strings /vmunix | grep UNIX`
1502     elif test -r /dynix; then
1503       kernel_id=`strings /dynix | grep DYNIX`
1504     else
1505       kernel_id=
1506     fi
1507 ])dnl
1508
1509   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1510 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1511 changequote(,)dnl
1512   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1513 changequote([,])dnl
1514   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1515          != x$config_release; then
1516     # The configuration release is a substring of the kernel release.
1517     libc_cv_uname_release=$kernel_release
1518   elif test x$config_release != x; then
1519     libc_cv_uname_release=$config_release
1520   elif test x$kernel_release != x; then
1521     libc_cv_uname_release=$kernel_release
1522   else
1523     libc_cv_uname_release=unknown
1524   fi])
1525   uname_release="$libc_cv_uname_release"
1526
1527   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1528 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1529 changequote(,)dnl
1530   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1531 changequote([,])dnl
1532   if test -n "$kernel_version"; then
1533     libc_cv_uname_version="$kernel_version"
1534   else
1535     libc_cv_uname_version=unknown
1536   fi])
1537   uname_version="$libc_cv_uname_version"
1538
1539 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1540   config_uname=config-name.h:config-name.in
1541 else
1542   # For non-generic uname, we don't need to create config-name.h at all.
1543   config_uname=
1544 fi
1545
1546 AC_MSG_CHECKING(stdio selection)
1547 AC_SUBST(stdio)
1548 case $stdio in
1549 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1550 default) stdio=stdio ;;
1551 esac
1552 AC_MSG_RESULT($stdio)
1553
1554 # Test for old glibc 2.0.x headers so that they can be removed properly
1555 # Search only in includedir.
1556 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1557 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1558 then
1559   old_glibc_headers=yes
1560 else
1561   old_glibc_headers=no
1562 fi
1563 AC_MSG_RESULT($old_glibc_headers)
1564 if test ${old_glibc_headers} = yes; then
1565   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1566   AC_MSG_WARN(*** be removed.)
1567 fi
1568 AC_SUBST(old_glibc_headers)
1569
1570 AC_SUBST(libc_cv_slibdir)
1571 AC_SUBST(libc_cv_localedir)
1572 AC_SUBST(libc_cv_sysconfdir)
1573 AC_SUBST(libc_cv_rootsbindir)
1574
1575 AC_SUBST(use_ldconfig)
1576 AC_SUBST(ldd_rewrite_script)
1577
1578 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1579 if test $gnu_ld = yes; then
1580   AC_DEFINE(HAVE_GNU_LD)
1581 fi
1582 if test $gnu_as = yes; then
1583   AC_DEFINE(HAVE_GNU_AS)
1584 fi
1585 if test $elf = yes; then
1586   AC_DEFINE(HAVE_ELF)
1587 fi
1588 if test $xcoff = yes; then
1589   AC_DEFINE(HAVE_XCOFF)
1590 fi
1591
1592 AC_SUBST(static)
1593 AC_SUBST(shared)
1594 if test $shared = default; then
1595   if test $gnu_ld = yes; then
1596     shared=$elf
1597   else
1598     # For now we do not assume shared libs are available.  In future more
1599     # tests might become available.
1600     shared=no
1601   fi
1602 fi
1603
1604 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1605 [pic_default=yes
1606 cat > conftest.c <<EOF
1607 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1608 # error PIC is default.
1609 #endif
1610 EOF
1611 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1612   pic_default=no
1613 fi
1614 rm -f conftest.*])
1615 AC_SUBST(pic_default)
1616
1617 AC_SUBST(profile)
1618 AC_SUBST(omitfp)
1619 AC_SUBST(bounded)
1620 AC_SUBST(static_nss)
1621 AC_SUBST(nopic_initfini)
1622
1623 AC_SUBST(DEFINES)
1624
1625 case "$add_ons" in
1626   *door*) linux_doors=yes ;;
1627   *) linux_doors=no ;;
1628 esac
1629 AC_SUBST(linux_doors)
1630
1631 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1632   config_makefile=
1633 else
1634   config_makefile=Makefile
1635 fi
1636
1637 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1638 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1639 AC_SUBST(VERSION)
1640 AC_SUBST(RELEASE)
1641
1642 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1643 case $CONFIG_FILES in *config.make*)
1644 echo "$config_vars" >> config.make;;
1645 esac
1646 test -d bits || mkdir bits], [config_vars='$config_vars'])