Move mips64* recognition before mips*.
[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.11)dnl              dnl Minimum Autoconf version required.
4 AC_INIT(include/features.h)
5 AC_CONFIG_HEADER(config.h)
6
7 # This will get text that should go into config.make.
8 config_vars=
9
10 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
11 AC_ARG_WITH(gmp, dnl
12   --with-gmp=DIRECTORY    find GMP source code in DIRECTORY (not needed),
13             [dnl
14 case "$with_gmp" in
15 yes) AC_MSG_ERROR(--with-gmp requires an argument; use --with-gmp=DIRECTORY) ;;
16 ''|no) ;;
17 *) config_vars="$config_vars
18 gmp-srcdir = $withval" ;;
19 esac
20 ])
21 # Check for a --with-gettext argument and set gettext-srcdir in config.make.
22 AC_ARG_WITH(gettext, dnl
23   --with-gettext=DIR      find GNU gettext source code in DIR (not needed),
24             [dnl
25 case "$with_gettext" in
26 yes)
27   AC_MSG_ERROR(--with-gettext requires an argument; use --with-gettext=DIR) ;;
28 ''|no) ;;
29 *)
30   config_vars="$config_vars
31 gettext-srcdir = $withval" ;;
32 esac
33 ])
34
35 dnl Arguments to specify presence of other packages/features.
36 AC_ARG_WITH(fp, dnl
37 [  --with-fp              if using floating-point hardware [default=yes]],
38             with_fp=$withval, with_fp=yes)
39 AC_ARG_WITH(gnu-binutils, dnl
40   --with-gnu-binutils     if using GNU binutils (as and ld),
41             gnu_binutils=$withval, gnu_binutils=no)
42 AC_ARG_WITH(gnu-ld, dnl
43   --with-gnu-ld           if using GNU ld (in the binutils package),
44             gnu_ld=$withval, gnu_ld=no)
45 AC_ARG_WITH(gnu-as, dnl
46   --with-gnu-as           if using GNU as (in the binutils package),
47             gnu_as=$withval, gnu_as=no)
48 test $gnu_binutils = yes && gnu_as=yes gnu_ld=yes
49 AC_ARG_WITH(elf, dnl
50   --with-elf              if using the ELF object format,
51             elf=$withval, elf=no)
52
53 AC_ARG_ENABLE(libio, dnl
54 [  --enable-libio          build in GNU libio instead of GNU stdio],
55               [if test $enableval = yes; then
56                  stdio=libio
57                else
58                  stdio=stdio
59                fi],
60               stdio=default)
61
62 AC_ARG_ENABLE(sanity-checks, dnl
63 [  --disable-sanity-checks really do not use threads (should not be used
64                           except in special situations) [default=yes]],
65               enable_sanity=$enableval, enable_sanity=yes)
66
67 dnl Arguments to enable or disable building the shared, profiled, and
68 dnl -fomit-frame-pointer libraries.
69 AC_ARG_ENABLE(shared, dnl
70 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
71               shared=$enableval, shared=default)
72 AC_ARG_ENABLE(profile, dnl
73 [  --enable-profile        build profiled library [default=yes]],
74               profile=$enableval, profile=yes)
75 AC_ARG_ENABLE(omitfp, dnl
76 [  --enable-omitfp         build undebuggable optimized library [default=no]],
77               omitfp=$enableval, omitfp=no)
78 AC_ARG_ENABLE(bounded, dnl
79 [  --enable-bounded        build with runtime bounds checking [default=no]],
80               bounded=$enableval, bounded=no)
81
82 dnl Generic infrastructure for drop-in additions to libc.
83 AC_ARG_ENABLE(add-ons, dnl
84 [  --enable-add-ons=DIR... configure and build named extra directories],
85               [add_ons=`echo "$enableval" | sed 's/,/ /g'`],
86               [add_ons=])
87 AC_CONFIG_SUBDIRS($add_ons)
88 add_ons_pfx=
89 if test x"$add_ons" != x; then
90   for f in $add_ons; do
91     add_ons_pfx="$add_ons_pfx $f/"
92   done
93 fi
94
95 dnl On some platforms we cannot use dynamic loading.  We must provide
96 dnl static NSS modules.
97 AC_ARG_ENABLE(static-nss, dnl
98 [  --enable-static-nss     build static NSS modules [default=no]],
99               static_nss=$enableval, static_nss=no)
100 if test x"$static_nss" = xyes; then
101   AC_DEFINE(DO_STATIC_NSS)
102 fi
103
104 AC_CANONICAL_HOST
105
106 # The way shlib-versions is used to generate soversions.mk uses a
107 # fairly simplistic model for name recognition that can't distinguish
108 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
109 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
110 # tell.  This doesn't get used much beyond that, so it's fairly safe.
111 case "$host_os" in
112 linux*)
113   ;;
114 gnu*)
115   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
116   ;;
117 esac
118
119 # We keep the original values in `$config_*' and never modify them, so we
120 # can write them unchanged into config.make.  Everything else uses
121 # $machine, $vendor, and $os, and changes them whenever convenient.
122 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
123
124 # Some configurations imply other options.
125 case "$host_os" in
126 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
127   # These systems always use GNU tools.
128   gnu_ld=yes gnu_as=yes ;;
129 esac
130 case "$host_os" in
131 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
132 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
133   ;;
134 gnu* | linux* | sysv4* | solaris2*)
135   # These systems (almost) always use the ELF format.
136   elf=yes
137   ;;
138 esac
139
140 machine=$config_machine
141 vendor=$config_vendor
142 os=$config_os
143
144 dnl We need to use [ and ] for other purposes for a while now.
145 changequote(,)dnl
146 # Expand the configuration machine name into a subdirectory by architecture
147 # type and particular chip.
148 case "$machine" in
149 a29k | am29000) base_machine=a29k machine=a29k ;;
150 alpha*)         base_machine=alpha machine=alpha/$machine ;;
151 arm*)           base_machine=arm machine=arm/$machine ;;
152 hppa*)          base_machine=hppa machine=hppa/$machine ;;
153 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
154 m680?0)         base_machine=m68k machine=m68k/$machine ;;
155 m68k)           base_machine=m68k machine=m68k/m68020 ;;
156 m88???)         base_machine=m88k machine=m88k/$machine ;;
157 m88k)           base_machine=m88k machine=m88k/m88100 ;;
158 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
159 mips*)          base_machine=mips machine=mips/$machine ;;
160 sparc[6789])    base_machine=sparc machine=sparc/$machine ;;
161 supersparc)     base_machine=sparc machine=sparc/sparc8 ;;
162 sparc64)        base_machine=sparc64 machine=sparc64/$machine ;;
163 esac
164 changequote([,])dnl
165 AC_SUBST(base_machine)
166
167 # Compute the list of sysdep directories for this configuration.
168 # This can take a while to compute.
169 sysdep_dir=$srcdir/sysdeps
170 AC_MSG_CHECKING(sysdep dirs)
171 dnl We need to use [ and ] for other purposes for a while now.
172 changequote(,)dnl
173 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
174 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
175
176 case "$os" in
177 gnu*)
178   base_os=mach/hurd ;;
179 netbsd* | 386bsd* | freebsd* | bsdi*)
180   base_os=unix/bsd/bsd4.4 ;;
181 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
182   base_os=unix/bsd ;;
183 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
184   base_os=unix/sysv ;;
185 solaris[2-9]*)
186   base_os=unix/sysv/sysv4 ;;
187 none)
188   base_os=standalone ;;
189 *)
190   base_os='' ;;
191 esac
192
193 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
194 tail=$os
195 ostry=$os
196 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
197   ostry="$ostry /$o"
198   tail=$o
199 done
200 o=`echo $tail | sed 's/[0-9]*$//'`
201 if test $o != $tail; then
202   ostry="$ostry /$o"
203 fi
204 # For linux-gnu, try linux-gnu, then linux.
205 o=`echo $tail | sed 's/-.*$//'`
206 if test $o != $tail; then
207   ostry="$ostry /$o"
208 fi
209
210 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
211 base=
212 tail=$base_os
213 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
214   set $b
215   base="$base /$1"
216   tail="$2"
217 done
218
219 # For sparc/sparc9, try sparc/sparc9 and then sparc.
220 mach=
221 tail=$machine
222 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
223   set $m
224   # Prepend the machine's FPU directory unless --without-fp.
225   if test "$with_fp" = yes; then
226     mach="$mach /$1/fpu"
227   fi
228   mach="$mach /$1"
229   tail="$2"
230 done
231
232 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
233 changequote([,])dnl
234
235 # Find what sysdep directories exist.
236 sysnames=
237 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
238 for d in $add_ons_pfx ''; do
239   for b in $base ''; do
240     for m0 in $mach ''; do
241       for v in /$vendor ''; do
242         for o in /$ostry ''; do
243           for m in $mach ''; do
244             if test "$m0$b$v$o$m"; then
245               try="${d}sysdeps$m0$b$v$o$m"
246               test -n "$enable_debug_configure" &&
247               echo "$0 [DEBUG]: try $try" >&2
248               case $try in
249                 /*) dest=$try ;;
250                 *)  dest=$srcdir/$try ;;
251               esac
252               if test -d $dest; then
253                 sysnames="$sysnames $try"
254                 { test -n "$o" || test -n "$b"; } && os_used=t
255                 { test -n "$m" || test -n "$m0"; } && machine_used=t
256               fi
257             fi
258           done
259         done
260       done
261     done
262   done
263 done
264 IFS="$ac_save_ifs"
265
266 if test -z "$os_used" && test "$os" != none; then
267   AC_MSG_ERROR(Operating system $os is not supported.)
268 fi
269 if test -z "$machine_used" && test "$machine" != none; then
270   AC_MSG_ERROR(The $machine is not supported.)
271 fi
272
273 # We have now validated the configuration.
274
275
276 # If using ELF, look for an `elf' subdirectory of each machine directory.
277 # We prepend these rather than inserting them whereever the machine appears
278 # because things specified by the machine's ELF ABI should override
279 # OS-specific things, and should always be the same for any OS on the
280 # machine (otherwise what's the point of an ABI?).
281 if test "$elf" = yes; then
282   elf_dirs=
283   for d in $add_ons_pfx ''; do
284     case $d in
285       /*) xsrcdir= ;;
286       *)  xsrcdir=$srcdir/ ;;
287     esac
288     for m in $mach; do
289       if test -d $xsrcdir${d}sysdeps$m/elf; then
290         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
291       fi
292     done
293   done
294   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
295 fi
296
297
298 # Expand the list of system names into a full list of directories
299 # from each element's parent name and Implies file (if present).
300 set $sysnames
301 names=
302 while test $# -gt 0; do
303   name=$1
304   shift
305
306   case " $names " in *" $name "*)
307     # Already in the list.
308     continue
309   esac
310
311   # Report each name as we discover it, so there is no long pause in output.
312   echo $ac_n "$name $ac_c" >&AC_FD_MSG
313
314   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
315
316   case $name in
317     /*) xsrcdir= ;;
318     *)  xsrcdir=$srcdir/ ;;
319   esac
320   test -n "$enable_debug_configure" &&
321   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
322
323   if test -f $xsrcdir$name/Implies; then
324     # Collect more names from the `Implies' file (removing comments).
325     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
326     implied=
327     for x in $implied_candidate; do
328       if test -d $xsrcdir$name_base/$x; then
329         implied="$implied $name_base/$x";
330       else
331         AC_MSG_WARN($name/Implies specifies nonexistent $x)
332       fi
333     done
334   else
335     implied=
336   fi
337
338   # Add NAME to the list of names.
339   names="$names $name"
340
341   # Find the parent of NAME, using the empty string if it has none.
342 changequote(,)dnl
343   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
344 changequote([,])dnl
345
346   # Add the names implied by NAME, and NAME's parent (if it has one), to
347   # the list of names to be processed (the argument list).  We prepend the
348   # implied names to the list and append the parent.  We want implied
349   # directories to come before further directories inferred from the
350   # configuration components; this ensures that for sysv4, unix/common
351   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
352   # after sysv4).
353   sysnames="`echo $implied $* $parent`"
354   test -n "$sysnames" && set $sysnames
355 done
356
357 # Add the default directories.
358 sysnames="$names sysdeps/generic sysdeps/stub"
359 AC_SUBST(sysnames)
360 # The other names were emitted during the scan.
361 AC_MSG_RESULT(sysdeps/generic sysdeps/stub)
362
363
364 ### Locate tools.
365
366 AC_PROG_INSTALL
367 if test "$INSTALL" = "${srcdir}/install-sh -c"; then
368   # The makefiles need to use a different form to find it in $srcdir.
369   INSTALL='$(..)./install-sh -c'
370 fi
371 AC_PROG_LN_S
372 AC_CHECK_PROGS(MSGFMT, msgfmt gmsgfmt, :)
373
374 AC_PROG_CC_LOCAL
375 AC_CANONICAL_BUILD
376 if test $host != $build; then
377   AC_CHECK_PROGS(BUILD_CC, gcc cc)
378 fi
379 AC_SUBST(cross_compiling)
380 AC_PROG_CPP
381 AC_CHECK_TOOL(AR, ar)
382 AC_CHECK_TOOL(RANLIB, ranlib, :)
383
384 AC_PATH_PROG(BASH, bash, no)
385 if test "$BASH" != no &&
386    $BASH -c 'test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
387   libc_cv_have_bash2=yes
388 else
389   libc_cv_have_bash2=no
390 fi
391 AC_SUBST(libc_cv_have_bash2)
392
393 dnl We need a ksh compatible shell for tzselect.
394 if test "$BASH" = no; then
395   AC_PATH_PROG(KSH, ksh, no)
396   if test "$KSH" = no; then
397     libc_cv_have_ksh=no
398   else
399     libc_cv_have_ksh=yes
400   fi
401 else
402   KSH="$BASH"
403   AC_SUBST(KSH)
404   libc_cv_have_ksh=yes
405 fi
406 AC_SUBST(libc_cv_have_ksh)
407
408 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
409 echo '#include <stddef.h>
410 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
411 if eval "$ac_cpp conftest.c 2>/dev/null" \
412 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
413   libc_cv_signed_size_t=no
414 else
415   libc_cv_signed_size_t=yes
416 fi
417 rm -f conftest*])
418 if test $libc_cv_signed_size_t = yes; then
419   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
420   cat >> confdefs.h <<\EOF
421 #undef __SIZE_TYPE__
422 #define __SIZE_TYPE__ unsigned
423 EOF
424 fi
425
426 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
427 AC_TRY_COMPILE(dnl
428 [#define __need_size_t
429 #define __need_wchar_t
430 #include <stddef.h>
431 #define __need_NULL
432 #include <stddef.h>], [size_t size; wchar_t wchar;
433 #ifdef offsetof
434 #error stddef.h ignored __need_*
435 #endif
436 if (&size == NULL || &wchar == NULL) abort ();],
437                libc_cv_friendly_stddef=yes,
438                libc_cv_friendly_stddef=no)])
439 if test $libc_cv_friendly_stddef = yes; then
440   config_vars="$config_vars
441 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
442 fi
443
444 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
445                libc_cv_need_minus_P, [dnl
446 cat > conftest.S <<EOF
447 #include "confdefs.h"
448 /* Nothing whatsoever.  */
449 EOF
450 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
451   libc_cv_need_minus_P=no
452 else
453   libc_cv_need_minus_P=yes
454 fi
455 rm -f conftest*])
456 if test $libc_cv_need_minus_P = yes; then
457   config_vars="$config_vars
458 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
459 fi
460
461 AC_CACHE_CHECK(for assembler global-symbol directive,
462                libc_cv_asm_global_directive, [dnl
463 libc_cv_asm_global_directive=UNKNOWN
464 for ac_globl in .globl .global; do
465   cat > conftest.s <<EOF
466 .text
467 ${ac_globl} foo
468 foo:
469 EOF
470   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
471     libc_cv_asm_global_directive=${ac_globl}
472   fi
473   rm -f conftest*
474   test $libc_cv_asm_global_directive != UNKNOWN && break
475 done])
476 if test $libc_cv_asm_global_directive = UNKNOWN; then
477   AC_MSG_ERROR(cannot determine asm global directive)
478 else
479   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
480 fi
481
482 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
483 cat > conftest.s <<EOF
484 .text
485 foo:
486 .set glibc_conftest_frobozz,foo
487 $libc_cv_asm_global_directive glibc_conftest_frobozz
488 EOF
489 # The alpha-dec-osf1 assembler gives only a warning for `.set'
490 # (but it doesn't work), so we must do a linking check to be sure.
491 cat > conftest1.c <<\EOF
492 extern int glibc_conftest_frobozz;
493 main () { printf ("%d\n", glibc_conftest_frobozz); }
494 EOF
495 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
496             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
497   libc_cv_asm_set_directive=yes
498 else
499   libc_cv_asm_set_directive=no
500 fi
501 rm -f conftest*])
502 if test $libc_cv_asm_set_directive = yes; then
503   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
504 fi
505
506 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
507 [cat > conftest.s <<EOF
508 .text
509 _sym:
510 .symver _sym,sym@VERS
511 EOF
512 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
513   libc_cv_asm_symver_directive=yes
514 else
515   libc_cv_asm_symver_directive=no
516 fi
517 rm -f conftest*])
518 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
519 if test $libc_cv_asm_symver_directive = yes; then
520   cat > conftest.s <<EOF
521 .text
522 _sym:
523 .symver _sym,sym@VERS
524 EOF
525   cat > conftest.map <<EOF
526 VERS {
527         global: sym;
528 };
529 EOF
530   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
531     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
532                                         -nostartfiles -nostdlib
533                                         -Wl,--version-script,conftest.map
534                        1>&AC_FD_CC]);
535     then
536       libc_cv_ld_version_script_option=yes
537     else
538       libc_cv_ld_version_script_option=no
539     fi
540   else
541     libc_cv_ld_version_script_option=no
542   fi
543 else
544   libc_cv_ld_version_script_option=no
545 fi
546 rm -f conftest*])
547 if test $libc_cv_asm_symver_directive = yes &&
548    test $libc_cv_ld_version_script_option = yes; then
549   VERSIONING=yes
550   AC_DEFINE(DO_VERSIONING)
551 else
552   VERSIONING=no
553 fi
554 AC_SUBST(VERSIONING)
555
556 if test $elf = yes; then
557   AC_CACHE_CHECK(for .previous assembler directive,
558                  libc_cv_asm_previous_directive, [dnl
559   cat > conftest.s <<EOF
560 .section foo_section
561 .previous
562 EOF
563   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
564     libc_cv_asm_previous_directive=yes
565   else
566     libc_cv_asm_previous_directive=no
567   fi
568   rm -f conftest*])
569   if test $libc_cv_asm_previous_directive = yes; then
570     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
571   else
572     AC_CACHE_CHECK(for .popsection assembler directive,
573                    libc_cv_asm_popsection_directive, [dnl
574     cat > conftest.s <<EOF
575 .pushsection foo_section
576 .popsection
577 EOF
578     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
579       libc_cv_asm_popsection_directive=yes
580     else
581       libc_cv_asm_popsection_directive=no
582     fi
583     rm -f conftest*])
584     if test $libc_cv_asm_popsection_directive = yes; then
585       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
586     fi
587   fi
588 fi
589
590 if test $elf != yes; then
591   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
592                  [AC_TRY_COMPILE(, [asm (".section .init");
593                                     asm (".section .fini");
594                                     asm (".text");],
595                                  libc_cv_have_initfini=yes,
596                                  libc_cv_have_initfini=no)])
597   AC_SUBST(libc_cv_have_initfini)dnl
598   if test $libc_cv_have_initfini = yes; then
599     AC_DEFINE(HAVE_INITFINI)
600   fi
601 fi
602
603 if test $elf = yes; then
604   libc_cv_asm_underscores=no
605 else
606   AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
607                  [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
608                               libc_cv_asm_underscores=yes,
609                               libc_cv_asm_underscores=no)])
610 fi
611 if test $libc_cv_asm_underscores = no; then
612   AC_DEFINE(NO_UNDERSCORES)
613 fi
614
615 if test $elf = yes; then
616   libc_cv_weak_symbols=yes
617   libc_cv_asm_weak_directive=yes
618   libc_cv_asm_weakext_directive=no
619 else
620   AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
621                  [dnl
622 cat > conftest.s <<EOF
623 .text
624 ${libc_cv_asm_global_directive} foo
625 foo:
626 .weak foo
627 .weak bar; bar = foo
628 EOF
629   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
630     libc_cv_asm_weak_directive=yes
631   else
632     libc_cv_asm_weak_directive=no
633   fi
634   rm -f conftest*])
635
636 if test $libc_cv_asm_weak_directive = no; then
637   AC_CACHE_CHECK(for assembler .weakext directive,
638                  libc_cv_asm_weakext_directive,
639                  [dnl
640 cat > conftest.s <<EOF
641 .text
642 ${libc_cv_asm_global_directive} foo
643 foo:
644 .weakext foo
645 .weakext foo, bar
646 EOF
647   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
648     libc_cv_asm_weakext_directive=yes
649   else
650     libc_cv_asm_weakext_directive=no
651   fi
652   rm -f conftest*])
653
654   fi # no .weak
655 fi # not ELF
656
657 if test $libc_cv_asm_weak_directive = yes; then
658   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
659 elif test $libc_cv_asm_weakext_directive = yes; then
660   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
661 fi
662
663 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
664 cat > conftest.c <<\EOF
665 _start () {}
666 int __eh_pc;
667 __throw () {}
668 EOF
669 dnl No \ in command here because it ends up inside ''.
670 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
671                             -nostdlib -nostartfiles -Wl,--no-whole-archive
672                             -o conftest conftest.c 1>&AC_FD_CC]); then
673   libc_cv_ld_no_whole_archive=yes
674 else
675   libc_cv_ld_no_whole_archive=no
676 fi
677 rm -f conftest*])
678 AC_SUBST(libc_cv_ld_no_whole_archive)dnl
679
680 AC_CACHE_CHECK(for gcc -fno-exceptions, libc_cv_gcc_no_exceptions, [dnl
681 cat > conftest.c <<\EOF
682 _start () {}
683 int __eh_pc;
684 __throw () {}
685 EOF
686 dnl No \ in command here because it ends up inside ''.
687 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
688                             -nostdlib -nostartfiles -fno-exceptions
689                             -o conftest conftest.c 1>&AC_FD_CC]); then
690   libc_cv_gcc_no_exceptions=yes
691 else
692   libc_cv_gcc_no_exceptions=no
693 fi
694 rm -f conftest*])
695 AC_SUBST(libc_cv_gcc_no_exceptions)dnl
696
697 ### End of automated tests.
698 ### Now run sysdeps configure fragments.
699
700 # sysdeps configure fragments may set these with files to be linked below.
701 libc_link_dests=
702 libc_link_sources=
703
704 # Iterate over all the sysdep directories we will use, running their
705 # configure fragments, and looking for a uname implementation.
706 uname=
707 for dir in $sysnames; do
708   case $dir in
709     /*) dest=$dir ;;
710     *)  dest=$srcdir/$dir ;;
711   esac
712   if test -r $dest/configure; then
713     AC_MSG_RESULT(running configure fragment for $dest)
714     . $dest/configure
715   fi
716 [
717   if test -z "$uname"; then
718     if test -r $dest/uname.c ||
719        test -r $dest/uname.S ||
720        { test -r $dest/syscalls.list &&
721          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
722       uname=$dir
723     fi
724   fi
725 ]dnl
726 done
727
728 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
729
730 # If we will use the generic uname implementation, we must figure out what
731 # it will say by examining the system, and write the results in config-name.h.
732 if test "$uname" = "sysdeps/generic"; then
733
734 changequote(,)dnl
735   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
736 changequote([,])dnl
737   if test $uname_sysname != $config_os; then
738     config_release=`echo $config_os | sed s/$uname_sysname//`
739   fi
740 dnl
741 AC_DEFUN(LIBC_KERNEL_ID, [dnl
742     if test -r /vmunix; then
743       kernel_id=`strings /vmunix | grep UNIX`
744     elif test -r /dynix; then
745       kernel_id=`strings /dynix | grep DYNIX`
746     else
747       kernel_id=
748     fi
749 ])dnl
750
751   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
752 AC_REQUIRE([LIBC_KERNEL_ID])dnl
753 changequote(,)dnl
754   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
755 changequote([,])dnl
756   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
757          != x$config_release; then
758     # The configuration release is a substring of the kernel release.
759     libc_cv_uname_release=$kernel_release
760   elif test x$config_release != x; then
761     libc_cv_uname_release=$config_release
762   elif test x$kernel_release != x; then
763     libc_cv_uname_release=$kernel_release
764   else
765     libc_cv_uname_release=unknown
766   fi])
767   uname_release="$libc_cv_uname_release"
768
769   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
770 AC_REQUIRE([LIBC_KERNEL_ID])dnl
771 changequote(,)dnl
772   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
773 changequote([,])dnl
774   if test -n "$kernel_version"; then
775     libc_cv_uname_version="$kernel_version"
776   else
777     libc_cv_uname_version=unknown
778   fi])
779   uname_version="$libc_cv_uname_version"
780
781 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
782   config_uname=config-name.h:config-name.in
783 else
784   # For non-generic uname, we don't need to create config-name.h at all.
785   config_uname=
786 fi
787
788 AC_MSG_CHECKING(stdio selection)
789 AC_SUBST(stdio)
790 case $stdio in
791 libio) AC_DEFINE(USE_IN_LIBIO) ;;
792 default) stdio=stdio ;;
793 esac
794 AC_MSG_RESULT($stdio)
795
796 AC_SUBST(libc_cv_slibdir)
797 AC_SUBST(libc_cv_sysconfdir)
798 AC_SUBST(libc_cv_rootsbindir)
799
800 AC_SUBST(has_ldconfig)
801
802 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
803 if test $gnu_ld = yes; then
804   AC_DEFINE(HAVE_GNU_LD)
805 fi
806 if test $gnu_as = yes; then
807   AC_DEFINE(HAVE_GNU_AS)
808 fi
809 if test $elf = yes; then
810   AC_DEFINE(HAVE_ELF)
811 fi
812
813 AC_SUBST(shared)
814 if test $shared = default; then
815   if test $gnu_ld = yes; then
816     shared=$elf
817   else
818     # For now we do not assume shared libs are available.  In future more
819     # tests might become available.
820     shared=no
821   fi
822 fi
823 AC_SUBST(profile)
824 AC_SUBST(omitfp)
825 AC_SUBST(bounded)
826 AC_SUBST(static_nss)
827 AC_SUBST(nopic_initfini)
828
829 AC_SUBST(DEFINES)
830
831 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
832   config_makefile=
833 else
834   config_makefile=Makefile
835 fi
836
837 VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
838 AC_SUBST(VERSION)
839
840 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
841           [echo '$config_vars' >> config.make; test -d bits || mkdir bits])