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