Delete test for `ar S'. Add test to determine whether ranlib does
[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 AC_ARG_WITH(cvs, dnl
46 [  --without-cvs          if CVS should not be used],
47             with_cvs=$withval, with_cvs=yes)
48 AC_SUBST(with_cvs)
49
50 AC_ARG_WITH(headers, dnl
51 [  --with-headers=PATH     location of system headers to use
52                           [e.g. /usr/src/linux/include]
53                           [default=compiler default]],
54             sysheaders=$withval, sysheaders='')
55
56 AC_ARG_ENABLE(libio, dnl
57 [  --enable-libio          build in GNU libio instead of GNU stdio],
58               [if test $enableval = yes; then
59                  stdio=libio
60                else
61                  stdio=stdio
62                fi],
63               stdio=default)
64
65 AC_ARG_ENABLE(sanity-checks, dnl
66 [  --disable-sanity-checks really do not use threads (should not be used
67                           except in special situations) [default=yes]],
68               enable_sanity=$enableval, enable_sanity=yes)
69
70 dnl Arguments to enable or disable building the static, shared, profiled,
71 dnl and -fomit-frame-pointer libraries.
72 AC_ARG_ENABLE(static, dnl
73 [  --enable-static         build static library [default=yes]],
74               static=$enableval, static=yes)
75 AC_ARG_ENABLE(shared, dnl
76 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
77               shared=$enableval, shared=default)
78 AC_ARG_ENABLE(profile, dnl
79 [  --enable-profile        build profiled library [default=yes]],
80               profile=$enableval, profile=yes)
81 AC_ARG_ENABLE(omitfp, dnl
82 [  --enable-omitfp         build undebuggable optimized library [default=no]],
83               omitfp=$enableval, omitfp=no)
84 AC_ARG_ENABLE(bounded, dnl
85 [  --enable-bounded        build with runtime bounds checking [default=no]],
86               bounded=$enableval, bounded=no)
87 AC_ARG_ENABLE(versioning, dnl
88 [  --disable-versioning    do not include versioning information in the
89                           library objects [default=yes if supported]],
90              enable_versioning=$enableval, enable_versioning=yes)
91
92 dnl Generic infrastructure for drop-in additions to libc.
93 AC_ARG_ENABLE(add-ons, dnl
94 [  --enable-add-ons[=DIR1,DIR2]...
95                           configure and build add-ons in DIR1,DIR2,...
96                           search for add-ons if no parameter given],
97   [case "$enableval" in
98     yes) if test "$srcdir" = "."; then
99            add_ons=`echo */configure | sed -e 's!/configure!!g'`
100          else
101            add_ons=`echo $srcdir/*/configure | \
102                     sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
103          fi;;
104     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
105    esac],
106   [add_ons=])
107
108 AC_CONFIG_SUBDIRS($add_ons)
109 add_ons_pfx=
110 if test x"$add_ons" != x; then
111   for f in $add_ons; do
112     # Test whether such a subdir really exists.
113     if test -d $srcdir/$f; then
114       add_ons_pfx="$add_ons_pfx $f/"
115     else
116       AC_MSG_ERROR(add-on directory \"$f\" does not exist)
117     fi
118   done
119 fi
120
121 dnl On some platforms we cannot use dynamic loading.  We must provide
122 dnl static NSS modules.
123 AC_ARG_ENABLE(static-nss, dnl
124 [  --enable-static-nss     build static NSS modules [default=no]],
125               static_nss=$enableval, static_nss=no)
126 if test x"$static_nss" = xyes; then
127   AC_DEFINE(DO_STATIC_NSS)
128 fi
129
130 AC_ARG_ENABLE(force-install,
131 [  --disable-force-install don't force installation of files from this package,
132                           even if they are older than the installed files],
133               force_install=$enableval, force_install=yes)
134 AC_SUBST(force_install)
135
136 AC_CANONICAL_HOST
137
138 # The way shlib-versions is used to generate soversions.mk uses a
139 # fairly simplistic model for name recognition that can't distinguish
140 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
141 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
142 # tell.  This doesn't get used much beyond that, so it's fairly safe.
143 case "$host_os" in
144 linux*)
145   ;;
146 gnu*)
147   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
148   ;;
149 esac
150
151 ###
152 ### I put this here to prevent those annoying emails from people who cannot
153 ### read and try to compile glibc on unsupported platforms.  --drepper
154 ###
155 ### By using the undocumented --enable-hacker-mode option for configure
156 ### one can skip this test to make the configuration not fail for unsupported
157 ### platforms.
158 ###
159 if test -z "$enable_hacker_mode"; then
160   case "$machine-$host_os" in
161   *-linux* | *-gnu* | arm*-none*)
162     ;;
163   *)
164     echo "*** The GNU C library is currently not available for this platform."
165     echo "*** So far nobody cared to port it and if there is no volunteer it"
166     echo "*** might never happen.  So, if you have interest to see glibc on"
167     echo "*** this platform visit"
168     echo "***   http://www.gnu.org/software/libc/porting.html"
169     echo "*** and join the group of porters"
170     exit 1
171     ;;
172   esac
173 fi
174
175 # We keep the original values in `$config_*' and never modify them, so we
176 # can write them unchanged into config.make.  Everything else uses
177 # $machine, $vendor, and $os, and changes them whenever convenient.
178 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
179
180 # Some configurations imply other options.
181 case "$host_os" in
182 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
183   # These systems always use GNU tools.
184   gnu_ld=yes gnu_as=yes ;;
185 esac
186 case "$host_os" in
187 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
188 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
189   ;;
190 gnu* | linux* | sysv4* | solaris2* | irix6*)
191   # These systems (almost) always use the ELF format.
192   elf=yes
193   ;;
194 esac
195
196 machine=$config_machine
197 vendor=$config_vendor
198 os=$config_os
199
200 dnl We need to use [ and ] for other purposes for a while now.
201 changequote(,)dnl
202 # Expand the configuration machine name into a subdirectory by architecture
203 # type and particular chip.
204 case "$machine" in
205 a29k | am29000) base_machine=a29k machine=a29k ;;
206 alpha*)         base_machine=alpha machine=alpha/$machine ;;
207 arm*)           base_machine=arm machine=arm/$machine ;;
208 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
209 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
210 hppa*)          base_machine=hppa machine=hppa/$machine ;;
211 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
212 m680?0)         base_machine=m68k machine=m68k/$machine ;;
213 m68k)           base_machine=m68k machine=m68k/m68020 ;;
214 m88???)         base_machine=m88k machine=m88k/$machine ;;
215 m88k)           base_machine=m88k machine=m88k/m88100 ;;
216 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
217 mips*)          base_machine=mips
218                 case "`uname -m`" in
219                 IP22) machine=mips/mips3 ;;
220                 *)    machine=mips/$machine ,,
221                 esac ;;
222 sparc | sparcv[67])
223                 base_machine=sparc machine=sparc/sparc32 ;;
224 sparcv8 | supersparc | hypersparc)
225                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
226 sparc64 | ultrasparc)
227                 base_machine=sparc machine=sparc/sparc64 ;;
228 esac
229 changequote([,])dnl
230 AC_SUBST(base_machine)
231
232 if test "$base_machine" = "i386"; then
233   AC_DEFINE(USE_REGPARMS)
234 fi
235
236 # Compute the list of sysdep directories for this configuration.
237 # This can take a while to compute.
238 sysdep_dir=$srcdir/sysdeps
239 AC_MSG_CHECKING(sysdep dirs)
240 dnl We need to use [ and ] for other purposes for a while now.
241 changequote(,)dnl
242 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
243 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
244
245 case "$os" in
246 gnu*)
247   base_os=mach/hurd ;;
248 netbsd* | 386bsd* | freebsd* | bsdi*)
249   base_os=unix/bsd/bsd4.4 ;;
250 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
251   base_os=unix/bsd ;;
252 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
253   base_os=unix/sysv ;;
254 irix6*)
255   base_os=unix/sysv/irix6/$os ;;
256 solaris[2-9]*)
257   base_os=unix/sysv/sysv4 ;;
258 none)
259   base_os=standalone ;;
260 *)
261   base_os='' ;;
262 esac
263
264 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
265 tail=$os
266 ostry=$os
267 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
268   ostry="$ostry /$o"
269   tail=$o
270 done
271 o=`echo $tail | sed 's/[0-9]*$//'`
272 if test $o != $tail; then
273   ostry="$ostry /$o"
274 fi
275 # For linux-gnu, try linux-gnu, then linux.
276 o=`echo $tail | sed 's/-.*$//'`
277 if test $o != $tail; then
278   ostry="$ostry /$o"
279 fi
280
281 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
282 base=
283 tail=$base_os
284 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
285   set $b
286   base="$base /$1"
287   tail="$2"
288 done
289
290 # For sparc/sparc9, try sparc/sparc9 and then sparc.
291 mach=
292 tail=$machine
293 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
294   set $m
295   # Prepend the machine's FPU directory unless --without-fp.
296   if test "$with_fp" = yes; then
297     mach="$mach /$1/fpu"
298   fi
299   mach="$mach /$1"
300   tail="$2"
301 done
302
303 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
304 changequote([,])dnl
305
306 # Find what sysdep directories exist.
307 sysnames=
308 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
309 for d in $add_ons_pfx ''; do
310   for b in $base ''; do
311     for m0 in $mach ''; do
312       for v in /$vendor ''; do
313         test "$v" = / && continue
314         for o in /$ostry ''; do
315           test "$o" = / && continue
316           for m in $mach ''; do
317             if test "$m0$b$v$o$m"; then
318               try="${d}sysdeps$m0$b$v$o$m"
319               test -n "$enable_debug_configure" &&
320               echo "$0 [DEBUG]: try $try" >&2
321               case $try in
322                 /*) dest=$try ;;
323                 *)  dest=$srcdir/$try ;;
324               esac
325               if test -d $dest; then
326                 sysnames="$sysnames $try"
327                 { test -n "$o" || test -n "$b"; } && os_used=t
328                 { test -n "$m" || test -n "$m0"; } && machine_used=t
329               fi
330             fi
331           done
332         done
333       done
334     done
335   done
336 done
337 IFS="$ac_save_ifs"
338
339 if test -z "$os_used" && test "$os" != none; then
340   AC_MSG_ERROR(Operating system $os is not supported.)
341 fi
342 if test -z "$machine_used" && test "$machine" != none; then
343   AC_MSG_ERROR(The $machine is not supported.)
344 fi
345
346 # We have now validated the configuration.
347
348
349 # If using ELF, look for an `elf' subdirectory of each machine directory.
350 # We prepend these rather than inserting them whereever the machine appears
351 # because things specified by the machine's ELF ABI should override
352 # OS-specific things, and should always be the same for any OS on the
353 # machine (otherwise what's the point of an ABI?).
354 if test "$elf" = yes; then
355   elf_dirs=
356   for d in $add_ons_pfx ''; do
357     case $d in
358       /*) xsrcdir= ;;
359       *)  xsrcdir=$srcdir/ ;;
360     esac
361     for m in $mach; do
362       if test -d $xsrcdir${d}sysdeps$m/elf; then
363         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
364       fi
365     done
366   done
367   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
368 fi
369
370
371 # Expand the list of system names into a full list of directories
372 # from each element's parent name and Implies file (if present).
373 set $sysnames
374 names=
375 while test $# -gt 0; do
376   name=$1
377   shift
378
379   case " $names " in *" $name "*)
380     # Already in the list.
381     continue
382   esac
383
384   # Report each name as we discover it, so there is no long pause in output.
385   echo $ac_n "$name $ac_c" >&AC_FD_MSG
386
387   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
388
389   case $name in
390     /*) xsrcdir= ;;
391     *)  xsrcdir=$srcdir/ ;;
392   esac
393   test -n "$enable_debug_configure" &&
394   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
395
396   if test -f $xsrcdir$name/Implies; then
397     # Collect more names from the `Implies' file (removing comments).
398     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
399     implied=
400     for x in $implied_candidate; do
401       if test -d $xsrcdir$name_base/$x; then
402         implied="$implied $name_base/$x";
403       else
404         AC_MSG_WARN($name/Implies specifies nonexistent $x)
405       fi
406     done
407   else
408     implied=
409   fi
410
411   # Add NAME to the list of names.
412   names="$names $name"
413
414   # Find the parent of NAME, using the empty string if it has none.
415 changequote(,)dnl
416   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
417 changequote([,])dnl
418
419   # Add the names implied by NAME, and NAME's parent (if it has one), to
420   # the list of names to be processed (the argument list).  We prepend the
421   # implied names to the list and append the parent.  We want implied
422   # directories to come before further directories inferred from the
423   # configuration components; this ensures that for sysv4, unix/common
424   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
425   # after sysv4).
426   sysnames="`echo $implied $* $parent`"
427   test -n "$sysnames" && set $sysnames
428 done
429
430 # Add the default directories.
431 sysnames="$names sysdeps/generic"
432 AC_SUBST(sysnames)
433 # The other names were emitted during the scan.
434 AC_MSG_RESULT(sysdeps/generic)
435
436
437 ### Locate tools.
438
439 AC_PROG_INSTALL
440 if test "$INSTALL" = "${srcdir}/install-sh -c"; then
441   # The makefiles need to use a different form to find it in $srcdir.
442   INSTALL='\$(..)./install-sh -c'
443 fi
444 AC_PROG_LN_S
445
446 # These programs are version sensitive.
447 AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
448 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
449   [version \([egcst0-9.-]*\)],
450   [egcs-2.91.*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|*2.8.[1-9]*|*2.9.[0-9]*],
451   critic_missing=t)
452 AC_CHECK_PROG_VER(MAKE, make gmake, --version,
453   [version \([0-9][0-9.]*\), by],
454   [3.75 | 3.76.[1-9] | 3.7[789]* | 3.[89]*], critic_missing=t)
455
456 AC_CHECK_PROG_VER(MSGFMT, msgfmt gmsgfmt, --version,
457   [GNU gettext.*\([0-9][0-9]*\.[0-9]*\)],
458   [0.[1-9][0-9] | [1-9].*], MSGFMT=: aux_missing=t)
459 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
460   [GNU texinfo \([0-9][0-9.]*\)],
461   [3.1[1-9] | 3.[2-9][0-9]], MAKEINFO=: aux_missing=t)
462
463 if test -n "$critic_missing"; then
464 AC_MSG_ERROR([
465 *** Some critical program is missing or too old.
466 *** Check the INSTALL file for required versions.])
467 fi
468
469 test -n "$aux_missing" && AC_MSG_WARN([
470 *** An auxiliary program is missing or too old;
471 *** some features will be disabled.
472 *** Check the INSTALL file for required versions.])
473
474 AC_PROG_CC_LOCAL
475 AC_CANONICAL_BUILD
476 if test $host != $build; then
477   AC_CHECK_PROGS(BUILD_CC, gcc cc)
478 fi
479 AC_SUBST(cross_compiling)
480 AC_PROG_CPP
481 LIBC_PROG_BINUTILS
482 AC_CHECK_TOOL(AR, ar)
483 AC_CHECK_TOOL(RANLIB, ranlib, :)
484 AC_CHECK_TOOL(MIG, mig)
485
486 # if using special system headers, find out the compiler's sekrit
487 # header directory and add that to the list.  NOTE: Only does the right
488 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
489 if test -n "$sysheaders"; then
490   ccheaders=`$CC -print-file-name=include`
491   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
492 fi
493 AC_SUBST(SYSINCLUDES)
494
495 # check if ranlib is necessary
496 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
497 cat > conftest.c <<EOF
498 int a;
499 char b;
500 void c(void) {}
501 EOF
502 $CC $CFLAGS -c conftest.c
503 $AR cr conftest.a conftest.c
504 cp conftest.a conftest2.a
505 $RANLIB conftest.a
506 if cmp -s conftest.a conftest2.a; then
507   libc_cv_ranlib_necessary=no
508 else
509   libc_cv_ranlib_necessary=yes
510 fi
511 rm -rf conftest*])
512 if test "$libc_cv_ranlib_necessary" = no; then
513  RANLIB=:
514 fi
515
516 # Test if LD_LIBRARY_PATH contains the notation for the current directory
517 # since this would lead to problems installing/building glibc.
518 # LD_LIBRARY_PATH contains the current directory if one of the following
519 # is true:
520 # - one of the terminals (":" and ";") is the first or last sign
521 # - two terminals occur directly after each other
522 # - the path contains an element with a dot in it
523 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
524 changequote(,)dnl
525 case ${LD_LIBRARY_PATH} in
526   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
527     ld_library_path_setting="contains current directory"
528     ;;
529   *)
530     ld_library_path_setting="ok"
531     ;;
532 esac
533 changequote([,])dnl
534 AC_MSG_RESULT($ld_library_path_setting)
535 if test "$ld_library_path_setting" != "ok"; then
536 AC_MSG_ERROR([
537 *** LD_LIBRARY_PATH shouldn't contain the current directory when
538 *** building glibc. Please change the environment variable
539 *** and run configure again.])
540 fi
541
542 AC_PATH_PROG(BASH, bash, no)
543 if test "$BASH" != no &&
544    $BASH -c 'test "$BASH_VERSINFO" \
545              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
546   libc_cv_have_bash2=yes
547 else
548   libc_cv_have_bash2=no
549 fi
550 AC_SUBST(libc_cv_have_bash2)
551
552 dnl We need a ksh compatible shell for tzselect.
553 if test "$BASH" = no; then
554   AC_PATH_PROG(KSH, ksh, no)
555   if test "$KSH" = no; then
556     libc_cv_have_ksh=no
557   else
558     libc_cv_have_ksh=yes
559   fi
560 else
561   KSH="$BASH"
562   AC_SUBST(KSH)
563   libc_cv_have_ksh=yes
564 fi
565 AC_SUBST(libc_cv_have_ksh)
566
567 AC_PROG_AWK
568 AC_PATH_PROGS(PERL, perl, no)
569 AC_SUBST(PERL)
570
571 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
572 echo '#include <stddef.h>
573 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
574 if eval "$ac_cpp conftest.c 2>/dev/null" \
575 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
576   libc_cv_signed_size_t=no
577 else
578   libc_cv_signed_size_t=yes
579 fi
580 rm -f conftest*])
581 if test $libc_cv_signed_size_t = yes; then
582   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
583   cat >> confdefs.h <<\EOF
584 #undef __SIZE_TYPE__
585 #define __SIZE_TYPE__ unsigned
586 EOF
587 fi
588
589 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
590 AC_TRY_COMPILE(dnl
591 [#define __need_size_t
592 #define __need_wchar_t
593 #include <stddef.h>
594 #define __need_NULL
595 #include <stddef.h>], [size_t size; wchar_t wchar;
596 #ifdef offsetof
597 #error stddef.h ignored __need_*
598 #endif
599 if (&size == NULL || &wchar == NULL) abort ();],
600                libc_cv_friendly_stddef=yes,
601                libc_cv_friendly_stddef=no)])
602 if test $libc_cv_friendly_stddef = yes; then
603   config_vars="$config_vars
604 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
605 fi
606
607 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
608                libc_cv_need_minus_P, [dnl
609 cat > conftest.S <<EOF
610 #include "confdefs.h"
611 /* Nothing whatsoever.  */
612 EOF
613 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
614   libc_cv_need_minus_P=no
615 else
616   libc_cv_need_minus_P=yes
617 fi
618 rm -f conftest*])
619 if test $libc_cv_need_minus_P = yes; then
620   config_vars="$config_vars
621 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
622 fi
623
624 AC_CACHE_CHECK(for assembler global-symbol directive,
625                libc_cv_asm_global_directive, [dnl
626 libc_cv_asm_global_directive=UNKNOWN
627 for ac_globl in .globl .global; do
628   cat > conftest.s <<EOF
629 .text
630 ${ac_globl} foo
631 foo:
632 EOF
633   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
634     libc_cv_asm_global_directive=${ac_globl}
635   fi
636   rm -f conftest*
637   test $libc_cv_asm_global_directive != UNKNOWN && break
638 done])
639 if test $libc_cv_asm_global_directive = UNKNOWN; then
640   AC_MSG_ERROR(cannot determine asm global directive)
641 else
642   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
643 fi
644
645 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
646 cat > conftest.s <<EOF
647 .text
648 foo:
649 .set glibc_conftest_frobozz,foo
650 $libc_cv_asm_global_directive glibc_conftest_frobozz
651 EOF
652 # The alpha-dec-osf1 assembler gives only a warning for `.set'
653 # (but it doesn't work), so we must do a linking check to be sure.
654 cat > conftest1.c <<\EOF
655 extern int glibc_conftest_frobozz;
656 main () { printf ("%d\n", glibc_conftest_frobozz); }
657 EOF
658 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
659             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
660   libc_cv_asm_set_directive=yes
661 else
662   libc_cv_asm_set_directive=no
663 fi
664 rm -f conftest*])
665 if test $libc_cv_asm_set_directive = yes; then
666   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
667 fi
668
669 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
670 [cat > conftest.s <<EOF
671 .text
672 _sym:
673 .symver _sym,sym@VERS
674 EOF
675 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
676   libc_cv_asm_symver_directive=yes
677 else
678   libc_cv_asm_symver_directive=no
679 fi
680 rm -f conftest*])
681 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
682 if test $libc_cv_asm_symver_directive = yes; then
683   cat > conftest.s <<EOF
684 .text
685 _sym:
686 .symver _sym,sym@VERS
687 EOF
688   cat > conftest.map <<EOF
689 VERS_1 {
690         global: sym;
691 };
692
693 VERS_2 {
694         global: sym;
695 } VERS_1;
696 EOF
697   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
698     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
699                                         -nostartfiles -nostdlib
700                                         -Wl,--version-script,conftest.map
701                        1>&AC_FD_CC]);
702     then
703       libc_cv_ld_version_script_option=yes
704     else
705       libc_cv_ld_version_script_option=no
706     fi
707   else
708     libc_cv_ld_version_script_option=no
709   fi
710 else
711   libc_cv_ld_version_script_option=no
712 fi
713 rm -f conftest*])
714 if test $libc_cv_asm_symver_directive = yes &&
715    test $libc_cv_ld_version_script_option = yes &&
716    test $enable_versioning = yes; then
717   VERSIONING=yes
718   AC_DEFINE(DO_VERSIONING)
719 else
720   VERSIONING=no
721 fi
722 AC_SUBST(VERSIONING)
723
724 if test $VERSIONING = no; then
725   echo "\
726 *** WARNING: You should not compile GNU libc without versioning. Not using
727 *** versioning will introduce incompatibilities so that old binaries
728 *** will not run anymore.
729 *** For versioning you need recent binutils (binutils-2.8.1.0.17 or newer)."
730 fi
731 if test $elf = yes; then
732   AC_CACHE_CHECK(for .previous assembler directive,
733                  libc_cv_asm_previous_directive, [dnl
734   cat > conftest.s <<EOF
735 .section foo_section
736 .previous
737 EOF
738   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
739     libc_cv_asm_previous_directive=yes
740   else
741     libc_cv_asm_previous_directive=no
742   fi
743   rm -f conftest*])
744   if test $libc_cv_asm_previous_directive = yes; then
745     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
746   else
747     AC_CACHE_CHECK(for .popsection assembler directive,
748                    libc_cv_asm_popsection_directive, [dnl
749     cat > conftest.s <<EOF
750 .pushsection foo_section
751 .popsection
752 EOF
753     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
754       libc_cv_asm_popsection_directive=yes
755     else
756       libc_cv_asm_popsection_directive=no
757     fi
758     rm -f conftest*])
759     if test $libc_cv_asm_popsection_directive = yes; then
760       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
761     fi
762   fi
763 fi
764
765 if test $elf != yes; then
766   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
767                  [AC_TRY_COMPILE(, [asm (".section .init");
768                                     asm (".section .fini");
769                                     asm (".text");],
770                                  libc_cv_have_initfini=yes,
771                                  libc_cv_have_initfini=no)])
772   AC_SUBST(libc_cv_have_initfini)dnl
773   if test $libc_cv_have_initfini = yes; then
774     AC_DEFINE(HAVE_INITFINI)
775   fi
776 fi
777
778 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
779 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
780 [cat > conftest.$ac_ext <<EOF
781 dnl This sometimes fails to find confdefs.h, for some reason.
782 dnl [#]line __oline__ "[$]0"
783 [#]line __oline__ "configure"
784 #include "confdefs.h"
785 void underscore_test(void) {
786 return; }
787 EOF
788 if AC_TRY_EVAL(ac_compile); then
789   if grep _underscore_test conftest* >/dev/null; then
790     ifelse([$1], , :, [rm -f conftest*
791     $1])
792   else
793     ifelse([$2], , , [rm -f conftest*
794     $2])
795   fi
796 else
797   echo "configure: failed program was:" >&AC_FD_CC
798   cat conftest.$ac_ext >&AC_FD_CC
799   ifelse([$2], , , [rm -f conftest*
800   $2])
801 fi
802 rm -f conftest*])
803
804 if test $elf = yes; then
805   libc_cv_asm_underscores=no
806 else
807   if test $ac_cv_prog_cc_works = yes; then
808     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
809                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
810                                 libc_cv_asm_underscores=yes,
811                                 libc_cv_asm_underscores=no)])
812   else
813     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
814                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
815                                             libc_cv_asm_underscores=no)])
816   fi
817 fi
818 if test $libc_cv_asm_underscores = no; then
819   AC_DEFINE(NO_UNDERSCORES)
820 fi
821
822 if test $elf = yes; then
823   libc_cv_weak_symbols=yes
824 fi
825
826 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
827                  [dnl
828 cat > conftest.s <<EOF
829 .text
830 ${libc_cv_asm_global_directive} foo
831 foo:
832 .weak foo
833 .weak bar; bar = foo
834 EOF
835 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
836   libc_cv_asm_weak_directive=yes
837 else
838   libc_cv_asm_weak_directive=no
839 fi
840 rm -f conftest*])
841
842 if test $libc_cv_asm_weak_directive = no; then
843   AC_CACHE_CHECK(for assembler .weakext directive,
844                  libc_cv_asm_weakext_directive,
845                  [dnl
846 cat > conftest.s <<EOF
847 .text
848 ${libc_cv_asm_global_directive} foo
849 foo:
850 .weakext bar foo
851 .weakext baz
852 ${libc_cv_asm_global_directive} baz
853 baz:
854 EOF
855   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
856     libc_cv_asm_weakext_directive=yes
857   else
858     libc_cv_asm_weakext_directive=no
859   fi
860   rm -f conftest*])
861
862 fi # no .weak
863
864 if test $libc_cv_asm_weak_directive = yes; then
865   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
866 elif test $libc_cv_asm_weakext_directive = yes; then
867   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
868 fi
869
870 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
871 cat > conftest.c <<\EOF
872 _start () {}
873 int __eh_pc;
874 __throw () {}
875 EOF
876 dnl No \ in command here because it ends up inside ''.
877 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
878                             -nostdlib -nostartfiles -Wl,--no-whole-archive
879                             -o conftest conftest.c 1>&AC_FD_CC]); then
880   libc_cv_ld_no_whole_archive=yes
881 else
882   libc_cv_ld_no_whole_archive=no
883 fi
884 rm -f conftest*])
885 AC_SUBST(libc_cv_ld_no_whole_archive)dnl
886
887 AC_CACHE_CHECK(for gcc -fno-exceptions, libc_cv_gcc_no_exceptions, [dnl
888 cat > conftest.c <<\EOF
889 _start () {}
890 int __eh_pc;
891 __throw () {}
892 EOF
893 dnl No \ in command here because it ends up inside ''.
894 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
895                             -nostdlib -nostartfiles -fno-exceptions
896                             -o conftest conftest.c 1>&AC_FD_CC]); then
897   libc_cv_gcc_no_exceptions=yes
898 else
899   libc_cv_gcc_no_exceptions=no
900 fi
901 rm -f conftest*])
902 AC_SUBST(libc_cv_gcc_no_exceptions)dnl
903
904 if test "$base_machine" = alpha ; then
905 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
906 cat > conftest.c <<\EOF
907 foo () { }
908 EOF
909 dnl
910 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
911 then
912   libc_cv_gcc_alpha_ng_prefix=yes
913 else
914   libc_cv_gcc_alpha_ng_prefix=no
915 fi
916 rm -f conftest* ])
917 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
918   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
919 else
920   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
921 fi
922 fi
923
924 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
925 [cat > conftest.c <<EOF
926 #line __oline__ "configure"
927 static char __EH_FRAME_BEGIN__[];
928 _start ()
929 {
930 #ifdef CHECK__register_frame
931   __register_frame (__EH_FRAME_BEGIN__);
932   __deregister_frame (__EH_FRAME_BEGIN__);
933 #endif
934 #ifdef CHECK__register_frame_info
935   __register_frame_info (__EH_FRAME_BEGIN__);
936   __deregister_frame_info (__EH_FRAME_BEGIN__);
937 #endif
938 }
939 int __eh_pc;
940 __throw () {}
941 /* FIXME: this is fragile.  */
942 malloc () {}
943 strcmp () {}
944 strlen () {}
945 memcpy () {}
946 memset () {}
947 free () {}
948 abort () {}
949 __bzero () {}
950 EOF
951 dnl No \ in command here because it ends up inside ''.
952 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
953                             -nostdlib -nostartfiles
954                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
955   libc_cv_gcc_dwarf2_unwind_info=static
956 else
957   libc_cv_gcc_dwarf2_unwind_info=no
958 fi
959 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
960   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
961                               -nostdlib -nostartfiles
962                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
963     libc_cv_gcc_dwarf2_unwind_info=yes
964   else
965     libc_cv_gcc_dwarf2_unwind_info=no
966   fi
967 fi
968 rm -f conftest*])
969 case $libc_cv_gcc_dwarf2_unwind_info in
970 yes)
971   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
972   ;;
973 static)
974   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
975   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
976   ;;
977 esac
978
979 ### End of automated tests.
980 ### Now run sysdeps configure fragments.
981
982 # sysdeps configure fragments may set these with files to be linked below.
983 libc_link_dests=
984 libc_link_sources=
985
986 # They also can set these variables.
987 ldd_rewrite_script=no
988
989 # Iterate over all the sysdep directories we will use, running their
990 # configure fragments, and looking for a uname implementation.
991 uname=
992 for dir in $sysnames; do
993   case $dir in
994     /*) dest=$dir ;;
995     *)  dest=$srcdir/$dir ;;
996   esac
997   if test -r $dest/configure; then
998     AC_MSG_RESULT(running configure fragment for $dest)
999     . $dest/configure
1000   fi
1001 [
1002   if test -z "$uname"; then
1003     if test -r $dest/uname.c ||
1004        test -r $dest/uname.S ||
1005        { test -r $dest/syscalls.list &&
1006          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1007       uname=$dir
1008     fi
1009   fi
1010 ]dnl
1011 done
1012
1013 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1014
1015 # If we will use the generic uname implementation, we must figure out what
1016 # it will say by examining the system, and write the results in config-name.h.
1017 if test "$uname" = "sysdeps/generic"; then
1018
1019 changequote(,)dnl
1020   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1021 changequote([,])dnl
1022   if test $uname_sysname != $config_os; then
1023     config_release=`echo $config_os | sed s/$uname_sysname//`
1024   fi
1025 dnl
1026 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1027     if test -r /vmunix; then
1028       kernel_id=`strings /vmunix | grep UNIX`
1029     elif test -r /dynix; then
1030       kernel_id=`strings /dynix | grep DYNIX`
1031     else
1032       kernel_id=
1033     fi
1034 ])dnl
1035
1036   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1037 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1038 changequote(,)dnl
1039   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1040 changequote([,])dnl
1041   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1042          != x$config_release; then
1043     # The configuration release is a substring of the kernel release.
1044     libc_cv_uname_release=$kernel_release
1045   elif test x$config_release != x; then
1046     libc_cv_uname_release=$config_release
1047   elif test x$kernel_release != x; then
1048     libc_cv_uname_release=$kernel_release
1049   else
1050     libc_cv_uname_release=unknown
1051   fi])
1052   uname_release="$libc_cv_uname_release"
1053
1054   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1055 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1056 changequote(,)dnl
1057   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1058 changequote([,])dnl
1059   if test -n "$kernel_version"; then
1060     libc_cv_uname_version="$kernel_version"
1061   else
1062     libc_cv_uname_version=unknown
1063   fi])
1064   uname_version="$libc_cv_uname_version"
1065
1066 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1067   config_uname=config-name.h:config-name.in
1068 else
1069   # For non-generic uname, we don't need to create config-name.h at all.
1070   config_uname=
1071 fi
1072
1073 AC_MSG_CHECKING(stdio selection)
1074 AC_SUBST(stdio)
1075 case $stdio in
1076 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1077 default) stdio=stdio ;;
1078 esac
1079 AC_MSG_RESULT($stdio)
1080
1081 AC_MSG_CHECKING(ldap selection)
1082 AC_SUBST(LDAP)
1083 case $add_ons in
1084 *ldap*)
1085    ldap=yes
1086    LDAP=ldap ;;
1087 *) ldap=no
1088    LDAP= ;;
1089 esac
1090 AC_MSG_RESULT($ldap)
1091
1092 AC_SUBST(libc_cv_slibdir)
1093 AC_SUBST(libc_cv_sysconfdir)
1094 AC_SUBST(libc_cv_rootsbindir)
1095
1096 AC_SUBST(has_ldconfig)
1097 AC_SUBST(ldd_rewrite_script)
1098
1099 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
1100 if test $gnu_ld = yes; then
1101   AC_DEFINE(HAVE_GNU_LD)
1102 fi
1103 if test $gnu_as = yes; then
1104   AC_DEFINE(HAVE_GNU_AS)
1105 fi
1106 if test $elf = yes; then
1107   AC_DEFINE(HAVE_ELF)
1108 fi
1109
1110 AC_SUBST(static)
1111 AC_SUBST(shared)
1112 if test $shared = default; then
1113   if test $gnu_ld = yes; then
1114     shared=$elf
1115   else
1116     # For now we do not assume shared libs are available.  In future more
1117     # tests might become available.
1118     shared=no
1119   fi
1120 fi
1121
1122 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1123 [pic_default=yes
1124 cat > conftest.c <<EOF
1125 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1126 # error PIC is default.
1127 #endif
1128 EOF
1129 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1130   pic_default=no
1131 fi
1132 rm -f conftest.*])
1133 AC_SUBST(pic_default)
1134
1135 AC_SUBST(profile)
1136 AC_SUBST(omitfp)
1137 AC_SUBST(bounded)
1138 AC_SUBST(static_nss)
1139 AC_SUBST(nopic_initfini)
1140
1141 AC_SUBST(DEFINES)
1142
1143 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1144   config_makefile=
1145 else
1146   config_makefile=Makefile
1147 fi
1148
1149 VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
1150 AC_SUBST(VERSION)
1151
1152 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
1153           [echo '$config_vars' >> config.make; test -d bits || mkdir bits])