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