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