Define USE_REGPARMS for ix86 machines.
[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(binutils, dnl
40   --with-binutils=PATH    specify location of binutils (as and ld),
41             path_binutils=$withval, path_binutils='')
42 AC_ARG_WITH(elf, dnl
43   --with-elf              if using the ELF object format,
44             elf=$withval, elf=no)
45
46 AC_ARG_ENABLE(libio, dnl
47 [  --enable-libio          build in GNU libio instead of GNU stdio],
48               [if test $enableval = yes; then
49                  stdio=libio
50                else
51                  stdio=stdio
52                fi],
53               stdio=default)
54
55 AC_ARG_ENABLE(sanity-checks, dnl
56 [  --disable-sanity-checks really do not use threads (should not be used
57                           except in special situations) [default=yes]],
58               enable_sanity=$enableval, enable_sanity=yes)
59
60 dnl Arguments to enable or disable building the static, shared, profiled,
61 dnl and -fomit-frame-pointer libraries.
62 AC_ARG_ENABLE(static, dnl
63 [  --enable-static         build static library [default=yes]],
64               static=$enableval, static=yes)
65 AC_ARG_ENABLE(shared, dnl
66 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
67               shared=$enableval, shared=default)
68 AC_ARG_ENABLE(profile, dnl
69 [  --enable-profile        build profiled library [default=yes]],
70               profile=$enableval, profile=yes)
71 AC_ARG_ENABLE(omitfp, dnl
72 [  --enable-omitfp         build undebuggable optimized library [default=no]],
73               omitfp=$enableval, omitfp=no)
74 AC_ARG_ENABLE(bounded, dnl
75 [  --enable-bounded        build with runtime bounds checking [default=no]],
76               bounded=$enableval, bounded=no)
77 AC_ARG_ENABLE(versioning, dnl
78 [  --disable-versioning    do not include versioning information in the
79                           library objects [default=yes if supported]],
80              enable_versioning=$enableval, enable_versioning=yes)
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 ###
120 ### I put this here to prevent those annoying emails from people who cannot
121 ### read and try to compile glibc on unsupported platforms.  --drepper
122 ###
123 ### By using the undocumented --enable-hacker-mode option for configure
124 ### one can skip this test to make the configuration not fail for unsupported
125 ### platforms.
126 ###
127 if test -z "$enable_hacker_mode"; then
128   case "$host_os" in
129   linux* | gnu*)
130     ;;
131   *)
132     echo "*** The GNU C library is currently not available for this platform."
133     echo "*** So far nobody cared to port it and if there is no volunteer it"
134     echo "*** might never happen.  So, if you have interest to see glibc on"
135     echo "*** this platform visit"
136     echo "***   http://www.gnu.ai.mit.edu/software/libc/porting.html"
137     echo "*** and join the group of porters"
138     exit 1
139     ;;
140   esac
141 fi
142
143 # We keep the original values in `$config_*' and never modify them, so we
144 # can write them unchanged into config.make.  Everything else uses
145 # $machine, $vendor, and $os, and changes them whenever convenient.
146 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
147
148 # Some configurations imply other options.
149 case "$host_os" in
150 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
151   # These systems always use GNU tools.
152   gnu_ld=yes gnu_as=yes ;;
153 esac
154 case "$host_os" in
155 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
156 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
157   ;;
158 gnu* | linux* | sysv4* | solaris2*)
159   # These systems (almost) always use the ELF format.
160   elf=yes
161   ;;
162 esac
163
164 machine=$config_machine
165 vendor=$config_vendor
166 os=$config_os
167
168 dnl We need to use [ and ] for other purposes for a while now.
169 changequote(,)dnl
170 # Expand the configuration machine name into a subdirectory by architecture
171 # type and particular chip.
172 case "$machine" in
173 a29k | am29000) base_machine=a29k machine=a29k ;;
174 alpha*)         base_machine=alpha machine=alpha/$machine ;;
175 arm*)           base_machine=arm machine=arm/$machine ;;
176 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
177 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
178 hppa*)          base_machine=hppa machine=hppa/$machine ;;
179 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
180 m680?0)         base_machine=m68k machine=m68k/$machine ;;
181 m68k)           base_machine=m68k machine=m68k/m68020 ;;
182 m88???)         base_machine=m88k machine=m88k/$machine ;;
183 m88k)           base_machine=m88k machine=m88k/m88100 ;;
184 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
185 mips*)          base_machine=mips machine=mips/$machine ;;
186 sparc | sparcv[67])
187                 base_machine=sparc machine=sparc/sparc32 ;;
188 sparcv8 | supersparc | hypersparc)
189                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
190 sparc64 | ultrasparc)
191                 base_machine=sparc machine=sparc/sparc64 ;;
192 esac
193 changequote([,])dnl
194 AC_SUBST(base_machine)
195
196 if test "$base_machine" = "i386"; then
197   AC_DEFINE(USE_REGPARMS)
198 fi
199
200 # Compute the list of sysdep directories for this configuration.
201 # This can take a while to compute.
202 sysdep_dir=$srcdir/sysdeps
203 AC_MSG_CHECKING(sysdep dirs)
204 dnl We need to use [ and ] for other purposes for a while now.
205 changequote(,)dnl
206 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
207 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
208
209 case "$os" in
210 gnu*)
211   base_os=mach/hurd ;;
212 netbsd* | 386bsd* | freebsd* | bsdi*)
213   base_os=unix/bsd/bsd4.4 ;;
214 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
215   base_os=unix/bsd ;;
216 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
217   base_os=unix/sysv ;;
218 solaris[2-9]*)
219   base_os=unix/sysv/sysv4 ;;
220 none)
221   base_os=standalone ;;
222 *)
223   base_os='' ;;
224 esac
225
226 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
227 tail=$os
228 ostry=$os
229 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
230   ostry="$ostry /$o"
231   tail=$o
232 done
233 o=`echo $tail | sed 's/[0-9]*$//'`
234 if test $o != $tail; then
235   ostry="$ostry /$o"
236 fi
237 # For linux-gnu, try linux-gnu, then linux.
238 o=`echo $tail | sed 's/-.*$//'`
239 if test $o != $tail; then
240   ostry="$ostry /$o"
241 fi
242
243 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
244 base=
245 tail=$base_os
246 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
247   set $b
248   base="$base /$1"
249   tail="$2"
250 done
251
252 # For sparc/sparc9, try sparc/sparc9 and then sparc.
253 mach=
254 tail=$machine
255 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
256   set $m
257   # Prepend the machine's FPU directory unless --without-fp.
258   if test "$with_fp" = yes; then
259     mach="$mach /$1/fpu"
260   fi
261   mach="$mach /$1"
262   tail="$2"
263 done
264
265 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
266 changequote([,])dnl
267
268 # Find what sysdep directories exist.
269 sysnames=
270 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
271 for d in $add_ons_pfx ''; do
272   for b in $base ''; do
273     for m0 in $mach ''; do
274       for v in /$vendor ''; do
275         for o in /$ostry ''; do
276           for m in $mach ''; do
277             if test "$m0$b$v$o$m"; then
278               try="${d}sysdeps$m0$b$v$o$m"
279               test -n "$enable_debug_configure" &&
280               echo "$0 [DEBUG]: try $try" >&2
281               case $try in
282                 /*) dest=$try ;;
283                 *)  dest=$srcdir/$try ;;
284               esac
285               if test -d $dest; then
286                 sysnames="$sysnames $try"
287                 { test -n "$o" || test -n "$b"; } && os_used=t
288                 { test -n "$m" || test -n "$m0"; } && machine_used=t
289               fi
290             fi
291           done
292         done
293       done
294     done
295   done
296 done
297 IFS="$ac_save_ifs"
298
299 if test -z "$os_used" && test "$os" != none; then
300   AC_MSG_ERROR(Operating system $os is not supported.)
301 fi
302 if test -z "$machine_used" && test "$machine" != none; then
303   AC_MSG_ERROR(The $machine is not supported.)
304 fi
305
306 # We have now validated the configuration.
307
308
309 # If using ELF, look for an `elf' subdirectory of each machine directory.
310 # We prepend these rather than inserting them whereever the machine appears
311 # because things specified by the machine's ELF ABI should override
312 # OS-specific things, and should always be the same for any OS on the
313 # machine (otherwise what's the point of an ABI?).
314 if test "$elf" = yes; then
315   elf_dirs=
316   for d in $add_ons_pfx ''; do
317     case $d in
318       /*) xsrcdir= ;;
319       *)  xsrcdir=$srcdir/ ;;
320     esac
321     for m in $mach; do
322       if test -d $xsrcdir${d}sysdeps$m/elf; then
323         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
324       fi
325     done
326   done
327   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
328 fi
329
330
331 # Expand the list of system names into a full list of directories
332 # from each element's parent name and Implies file (if present).
333 set $sysnames
334 names=
335 while test $# -gt 0; do
336   name=$1
337   shift
338
339   case " $names " in *" $name "*)
340     # Already in the list.
341     continue
342   esac
343
344   # Report each name as we discover it, so there is no long pause in output.
345   echo $ac_n "$name $ac_c" >&AC_FD_MSG
346
347   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
348
349   case $name in
350     /*) xsrcdir= ;;
351     *)  xsrcdir=$srcdir/ ;;
352   esac
353   test -n "$enable_debug_configure" &&
354   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
355
356   if test -f $xsrcdir$name/Implies; then
357     # Collect more names from the `Implies' file (removing comments).
358     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
359     implied=
360     for x in $implied_candidate; do
361       if test -d $xsrcdir$name_base/$x; then
362         implied="$implied $name_base/$x";
363       else
364         AC_MSG_WARN($name/Implies specifies nonexistent $x)
365       fi
366     done
367   else
368     implied=
369   fi
370
371   # Add NAME to the list of names.
372   names="$names $name"
373
374   # Find the parent of NAME, using the empty string if it has none.
375 changequote(,)dnl
376   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
377 changequote([,])dnl
378
379   # Add the names implied by NAME, and NAME's parent (if it has one), to
380   # the list of names to be processed (the argument list).  We prepend the
381   # implied names to the list and append the parent.  We want implied
382   # directories to come before further directories inferred from the
383   # configuration components; this ensures that for sysv4, unix/common
384   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
385   # after sysv4).
386   sysnames="`echo $implied $* $parent`"
387   test -n "$sysnames" && set $sysnames
388 done
389
390 # Add the default directories.
391 sysnames="$names sysdeps/generic sysdeps/stub"
392 AC_SUBST(sysnames)
393 # The other names were emitted during the scan.
394 AC_MSG_RESULT(sysdeps/generic sysdeps/stub)
395
396
397 ### Locate tools.
398
399 AC_PROG_INSTALL
400 if test "$INSTALL" = "${srcdir}/install-sh -c"; then
401   # The makefiles need to use a different form to find it in $srcdir.
402   INSTALL='\$(..)./install-sh -c'
403 fi
404 AC_PROG_LN_S
405 AC_CHECK_PROGS(MSGFMT, msgfmt gmsgfmt, :)
406
407 AC_PROG_CC_LOCAL
408 AC_CANONICAL_BUILD
409 if test $host != $build; then
410   AC_CHECK_PROGS(BUILD_CC, gcc cc)
411 fi
412 AC_SUBST(cross_compiling)
413 AC_PROG_CPP
414 LIBC_PROG_BINUTILS
415 AC_CHECK_TOOL(AR, ar)
416 AC_CHECK_TOOL(RANLIB, ranlib, :)
417
418 AC_PATH_PROG(BASH, bash, no)
419 if test "$BASH" != no &&
420    $BASH -c 'test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
421   libc_cv_have_bash2=yes
422 else
423   libc_cv_have_bash2=no
424 fi
425 AC_SUBST(libc_cv_have_bash2)
426
427 dnl We need a ksh compatible shell for tzselect.
428 if test "$BASH" = no; then
429   AC_PATH_PROG(KSH, ksh, no)
430   if test "$KSH" = no; then
431     libc_cv_have_ksh=no
432   else
433     libc_cv_have_ksh=yes
434   fi
435 else
436   KSH="$BASH"
437   AC_SUBST(KSH)
438   libc_cv_have_ksh=yes
439 fi
440 AC_SUBST(libc_cv_have_ksh)
441
442 AC_PATH_PROGS(PERL, perl, no)
443 AC_SUBST(PERL)
444
445 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
446 echo '#include <stddef.h>
447 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
448 if eval "$ac_cpp conftest.c 2>/dev/null" \
449 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
450   libc_cv_signed_size_t=no
451 else
452   libc_cv_signed_size_t=yes
453 fi
454 rm -f conftest*])
455 if test $libc_cv_signed_size_t = yes; then
456   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
457   cat >> confdefs.h <<\EOF
458 #undef __SIZE_TYPE__
459 #define __SIZE_TYPE__ unsigned
460 EOF
461 fi
462
463 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
464 AC_TRY_COMPILE(dnl
465 [#define __need_size_t
466 #define __need_wchar_t
467 #include <stddef.h>
468 #define __need_NULL
469 #include <stddef.h>], [size_t size; wchar_t wchar;
470 #ifdef offsetof
471 #error stddef.h ignored __need_*
472 #endif
473 if (&size == NULL || &wchar == NULL) abort ();],
474                libc_cv_friendly_stddef=yes,
475                libc_cv_friendly_stddef=no)])
476 if test $libc_cv_friendly_stddef = yes; then
477   config_vars="$config_vars
478 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
479 fi
480
481 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
482                libc_cv_need_minus_P, [dnl
483 cat > conftest.S <<EOF
484 #include "confdefs.h"
485 /* Nothing whatsoever.  */
486 EOF
487 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
488   libc_cv_need_minus_P=no
489 else
490   libc_cv_need_minus_P=yes
491 fi
492 rm -f conftest*])
493 if test $libc_cv_need_minus_P = yes; then
494   config_vars="$config_vars
495 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
496 fi
497
498 AC_CACHE_CHECK(for assembler global-symbol directive,
499                libc_cv_asm_global_directive, [dnl
500 libc_cv_asm_global_directive=UNKNOWN
501 for ac_globl in .globl .global; do
502   cat > conftest.s <<EOF
503 .text
504 ${ac_globl} foo
505 foo:
506 EOF
507   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
508     libc_cv_asm_global_directive=${ac_globl}
509   fi
510   rm -f conftest*
511   test $libc_cv_asm_global_directive != UNKNOWN && break
512 done])
513 if test $libc_cv_asm_global_directive = UNKNOWN; then
514   AC_MSG_ERROR(cannot determine asm global directive)
515 else
516   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
517 fi
518
519 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
520 cat > conftest.s <<EOF
521 .text
522 foo:
523 .set glibc_conftest_frobozz,foo
524 $libc_cv_asm_global_directive glibc_conftest_frobozz
525 EOF
526 # The alpha-dec-osf1 assembler gives only a warning for `.set'
527 # (but it doesn't work), so we must do a linking check to be sure.
528 cat > conftest1.c <<\EOF
529 extern int glibc_conftest_frobozz;
530 main () { printf ("%d\n", glibc_conftest_frobozz); }
531 EOF
532 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
533             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
534   libc_cv_asm_set_directive=yes
535 else
536   libc_cv_asm_set_directive=no
537 fi
538 rm -f conftest*])
539 if test $libc_cv_asm_set_directive = yes; then
540   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
541 fi
542
543 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
544 [cat > conftest.s <<EOF
545 .text
546 _sym:
547 .symver _sym,sym@VERS
548 EOF
549 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
550   libc_cv_asm_symver_directive=yes
551 else
552   libc_cv_asm_symver_directive=no
553 fi
554 rm -f conftest*])
555 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
556 if test $libc_cv_asm_symver_directive = yes; then
557   cat > conftest.s <<EOF
558 .text
559 _sym:
560 .symver _sym,sym@VERS
561 EOF
562   cat > conftest.map <<EOF
563 VERS {
564         global: sym;
565 };
566 EOF
567   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
568     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
569                                         -nostartfiles -nostdlib
570                                         -Wl,--version-script,conftest.map
571                        1>&AC_FD_CC]);
572     then
573       libc_cv_ld_version_script_option=yes
574     else
575       libc_cv_ld_version_script_option=no
576     fi
577   else
578     libc_cv_ld_version_script_option=no
579   fi
580 else
581   libc_cv_ld_version_script_option=no
582 fi
583 rm -f conftest*])
584 if test $libc_cv_asm_symver_directive = yes &&
585    test $libc_cv_ld_version_script_option = yes &&
586    test $enable_versioning = yes; then
587   VERSIONING=yes
588   AC_DEFINE(DO_VERSIONING)
589 else
590   VERSIONING=no
591 fi
592 AC_SUBST(VERSIONING)
593
594 if test $elf = yes; then
595   AC_CACHE_CHECK(for .previous assembler directive,
596                  libc_cv_asm_previous_directive, [dnl
597   cat > conftest.s <<EOF
598 .section foo_section
599 .previous
600 EOF
601   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
602     libc_cv_asm_previous_directive=yes
603   else
604     libc_cv_asm_previous_directive=no
605   fi
606   rm -f conftest*])
607   if test $libc_cv_asm_previous_directive = yes; then
608     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
609   else
610     AC_CACHE_CHECK(for .popsection assembler directive,
611                    libc_cv_asm_popsection_directive, [dnl
612     cat > conftest.s <<EOF
613 .pushsection foo_section
614 .popsection
615 EOF
616     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
617       libc_cv_asm_popsection_directive=yes
618     else
619       libc_cv_asm_popsection_directive=no
620     fi
621     rm -f conftest*])
622     if test $libc_cv_asm_popsection_directive = yes; then
623       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
624     fi
625   fi
626 fi
627
628 if test $elf != yes; then
629   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
630                  [AC_TRY_COMPILE(, [asm (".section .init");
631                                     asm (".section .fini");
632                                     asm (".text");],
633                                  libc_cv_have_initfini=yes,
634                                  libc_cv_have_initfini=no)])
635   AC_SUBST(libc_cv_have_initfini)dnl
636   if test $libc_cv_have_initfini = yes; then
637     AC_DEFINE(HAVE_INITFINI)
638   fi
639 fi
640
641 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
642 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
643 [cat > conftest.$ac_ext <<EOF
644 dnl This sometimes fails to find confdefs.h, for some reason.
645 dnl [#]line __oline__ "[$]0"
646 [#]line __oline__ "configure"
647 #include "confdefs.h"
648 void underscore_test(void) {
649 return; }
650 EOF
651 if AC_TRY_EVAL(ac_compile); then
652   if grep _underscore_test conftest* >/dev/null; then
653     ifelse([$1], , :, [rm -f conftest*
654     $1])
655   else
656     ifelse([$2], , , [rm -f conftest*
657     $2])
658   fi
659 else
660   echo "configure: failed program was:" >&AC_FD_CC
661   cat conftest.$ac_ext >&AC_FD_CC
662   ifelse([$2], , , [rm -f conftest*
663   $2])
664 fi
665 rm -f conftest*])
666
667 if test $elf = yes; then
668   libc_cv_asm_underscores=no
669 else
670   if test $ac_cv_prog_cc_works = yes; then
671     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
672                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
673                                 libc_cv_asm_underscores=yes,
674                                 libc_cv_asm_underscores=no)])
675   else
676     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
677                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
678                                             libc_cv_asm_underscores=no)])
679   fi
680 fi
681 if test $libc_cv_asm_underscores = no; then
682   AC_DEFINE(NO_UNDERSCORES)
683 fi
684
685 if test $elf = yes; then
686   libc_cv_weak_symbols=yes
687   libc_cv_asm_weak_directive=yes
688   libc_cv_asm_weakext_directive=no
689 else
690   AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
691                  [dnl
692 cat > conftest.s <<EOF
693 .text
694 ${libc_cv_asm_global_directive} foo
695 foo:
696 .weak foo
697 .weak bar; bar = foo
698 EOF
699   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
700     libc_cv_asm_weak_directive=yes
701   else
702     libc_cv_asm_weak_directive=no
703   fi
704   rm -f conftest*])
705
706 if test $libc_cv_asm_weak_directive = no; then
707   AC_CACHE_CHECK(for assembler .weakext directive,
708                  libc_cv_asm_weakext_directive,
709                  [dnl
710 cat > conftest.s <<EOF
711 .text
712 ${libc_cv_asm_global_directive} foo
713 foo:
714 .weakext foo
715 .weakext foo, bar
716 EOF
717   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
718     libc_cv_asm_weakext_directive=yes
719   else
720     libc_cv_asm_weakext_directive=no
721   fi
722   rm -f conftest*])
723
724   fi # no .weak
725 fi # not ELF
726
727 if test $libc_cv_asm_weak_directive = yes; then
728   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
729 elif test $libc_cv_asm_weakext_directive = yes; then
730   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
731 fi
732
733 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
734 cat > conftest.c <<\EOF
735 _start () {}
736 int __eh_pc;
737 __throw () {}
738 EOF
739 dnl No \ in command here because it ends up inside ''.
740 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
741                             -nostdlib -nostartfiles -Wl,--no-whole-archive
742                             -o conftest conftest.c 1>&AC_FD_CC]); then
743   libc_cv_ld_no_whole_archive=yes
744 else
745   libc_cv_ld_no_whole_archive=no
746 fi
747 rm -f conftest*])
748 AC_SUBST(libc_cv_ld_no_whole_archive)dnl
749
750 AC_CACHE_CHECK(for gcc -fno-exceptions, libc_cv_gcc_no_exceptions, [dnl
751 cat > conftest.c <<\EOF
752 _start () {}
753 int __eh_pc;
754 __throw () {}
755 EOF
756 dnl No \ in command here because it ends up inside ''.
757 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
758                             -nostdlib -nostartfiles -fno-exceptions
759                             -o conftest conftest.c 1>&AC_FD_CC]); then
760   libc_cv_gcc_no_exceptions=yes
761 else
762   libc_cv_gcc_no_exceptions=no
763 fi
764 rm -f conftest*])
765 AC_SUBST(libc_cv_gcc_no_exceptions)dnl
766
767 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
768 [cat > conftest.c <<EOF
769 #line __oline__ "configure"
770 static char __EH_FRAME_BEGIN__[];
771 _start ()
772 {
773   __register_frame (__EH_FRAME_BEGIN__);
774   __deregister_frame (__EH_FRAME_BEGIN__);
775 }
776 int __eh_pc;
777 __throw () {}
778 /* FIXME: this is fragile.  */
779 malloc () {}
780 strcmp () {}
781 strlen () {}
782 memcpy () {}
783 memset () {}
784 free () {}
785 abort () {}
786 EOF
787 dnl No \ in command here because it ends up inside ''.
788 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
789                             -nostdlib -nostartfiles
790                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
791   libc_cv_gcc_dwarf2_unwind_info=yes
792 else
793   libc_cv_gcc_dwarf2_unwind_info=no
794 fi
795 rm -f conftest*])
796 if test $libc_cv_gcc_dwarf2_unwind_info = yes; then
797   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
798 fi
799
800 ### End of automated tests.
801 ### Now run sysdeps configure fragments.
802
803 # sysdeps configure fragments may set these with files to be linked below.
804 libc_link_dests=
805 libc_link_sources=
806
807 # Iterate over all the sysdep directories we will use, running their
808 # configure fragments, and looking for a uname implementation.
809 uname=
810 for dir in $sysnames; do
811   case $dir in
812     /*) dest=$dir ;;
813     *)  dest=$srcdir/$dir ;;
814   esac
815   if test -r $dest/configure; then
816     AC_MSG_RESULT(running configure fragment for $dest)
817     . $dest/configure
818   fi
819 [
820   if test -z "$uname"; then
821     if test -r $dest/uname.c ||
822        test -r $dest/uname.S ||
823        { test -r $dest/syscalls.list &&
824          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
825       uname=$dir
826     fi
827   fi
828 ]dnl
829 done
830
831 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
832
833 # If we will use the generic uname implementation, we must figure out what
834 # it will say by examining the system, and write the results in config-name.h.
835 if test "$uname" = "sysdeps/generic"; then
836
837 changequote(,)dnl
838   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
839 changequote([,])dnl
840   if test $uname_sysname != $config_os; then
841     config_release=`echo $config_os | sed s/$uname_sysname//`
842   fi
843 dnl
844 AC_DEFUN(LIBC_KERNEL_ID, [dnl
845     if test -r /vmunix; then
846       kernel_id=`strings /vmunix | grep UNIX`
847     elif test -r /dynix; then
848       kernel_id=`strings /dynix | grep DYNIX`
849     else
850       kernel_id=
851     fi
852 ])dnl
853
854   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
855 AC_REQUIRE([LIBC_KERNEL_ID])dnl
856 changequote(,)dnl
857   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
858 changequote([,])dnl
859   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
860          != x$config_release; then
861     # The configuration release is a substring of the kernel release.
862     libc_cv_uname_release=$kernel_release
863   elif test x$config_release != x; then
864     libc_cv_uname_release=$config_release
865   elif test x$kernel_release != x; then
866     libc_cv_uname_release=$kernel_release
867   else
868     libc_cv_uname_release=unknown
869   fi])
870   uname_release="$libc_cv_uname_release"
871
872   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
873 AC_REQUIRE([LIBC_KERNEL_ID])dnl
874 changequote(,)dnl
875   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
876 changequote([,])dnl
877   if test -n "$kernel_version"; then
878     libc_cv_uname_version="$kernel_version"
879   else
880     libc_cv_uname_version=unknown
881   fi])
882   uname_version="$libc_cv_uname_version"
883
884 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
885   config_uname=config-name.h:config-name.in
886 else
887   # For non-generic uname, we don't need to create config-name.h at all.
888   config_uname=
889 fi
890
891 AC_MSG_CHECKING(stdio selection)
892 AC_SUBST(stdio)
893 case $stdio in
894 libio) AC_DEFINE(USE_IN_LIBIO) ;;
895 default) stdio=stdio ;;
896 esac
897 AC_MSG_RESULT($stdio)
898
899 AC_MSG_CHECKING(ldap selection)
900 AC_SUBST(LDAP)
901 case $add_ons in
902 *ldap*)
903    ldap=yes
904    LDAP=ldap ;;
905 *) ldap=no
906    LDAP= ;;
907 esac
908 AC_MSG_RESULT($ldap)
909
910 AC_SUBST(libc_cv_slibdir)
911 AC_SUBST(libc_cv_sysconfdir)
912 AC_SUBST(libc_cv_rootsbindir)
913
914 AC_SUBST(has_ldconfig)
915
916 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
917 if test $gnu_ld = yes; then
918   AC_DEFINE(HAVE_GNU_LD)
919 fi
920 if test $gnu_as = yes; then
921   AC_DEFINE(HAVE_GNU_AS)
922 fi
923 if test $elf = yes; then
924   AC_DEFINE(HAVE_ELF)
925 fi
926
927 AC_SUBST(static)
928 AC_SUBST(shared)
929 if test $shared = default; then
930   if test $gnu_ld = yes; then
931     shared=$elf
932   else
933     # For now we do not assume shared libs are available.  In future more
934     # tests might become available.
935     shared=no
936   fi
937 fi
938 AC_SUBST(profile)
939 AC_SUBST(omitfp)
940 AC_SUBST(bounded)
941 AC_SUBST(static_nss)
942 AC_SUBST(nopic_initfini)
943
944 AC_SUBST(DEFINES)
945
946 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
947   config_makefile=
948 else
949   config_makefile=Makefile
950 fi
951
952 VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
953 AC_SUBST(VERSION)
954
955 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
956           [echo '$config_vars' >> config.make; test -d bits || mkdir bits])