]> git.ipfire.org Git - thirdparty/glibc.git/blob - configure.in
(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
[thirdparty/glibc.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION([$CVSid$])
3 AC_PREREQ(2.53)dnl dnl Minimum Autoconf version required.
4 AC_INIT([GNU C Library], [(see version.h)], [glibc])
5 AC_CONFIG_SRCDIR([include/features.h])
6 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_AUX_DIR([scripts])
8
9 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
10 AC_MSG_ERROR([you must configure in a separate build directory])
11 fi
12
13 # This will get text that should go into config.make.
14 config_vars=
15
16 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
17 AC_ARG_WITH([gmp],
18 AC_HELP_STRING([--with-gmp=DIRECTORY],
19 [find GMP source code in DIRECTORY (not needed)]),
20 [
21 case "$with_gmp" in
22 yes) AC_MSG_ERROR([--with-gmp requires an argument; use --with-gmp=DIRECTORY]) ;;
23 ''|no) ;;
24 *) config_vars="$config_vars
25 gmp-srcdir = $withval" ;;
26 esac
27 ])
28 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
29 AC_ARG_WITH([gd],
30 AC_HELP_STRING([--with-gd=DIR],
31 [find libgd include dir and library with prefix DIR]),
32 [dnl
33 case "$with_gd" in
34 yes|''|no) ;;
35 *) libgd_include="-I$withval/include"
36 libgd_ldflags="-L$withval/lib" ;;
37 esac
38 ])
39 AC_ARG_WITH([gd-include],
40 AC_HELP_STRING([--with-gd-include=DIR],
41 [find libgd include files in DIR]),
42 [dnl
43 case "$with_gd_include" in
44 ''|no) ;;
45 *) libgd_include="-I$withval" ;;
46 esac
47 ])
48 AC_ARG_WITH([gd-lib],
49 AC_HELP_STRING([--with-gd-lib=DIR],
50 [find libgd library files in DIR]),
51 [dnl
52 case "$with_gd_lib" in
53 ''|no) ;;
54 *) libgd_ldflags="-L$withval" ;;
55 esac
56 ])
57
58 if test -n "$libgd_include"; then
59 config_vars="$config_vars
60 CFLAGS-memusagestat.c = $libgd_include"
61 fi
62 if test -n "$libgd_ldflags"; then
63 config_vars="$config_vars
64 libgd-LDFLAGS = $libgd_ldflags"
65 fi
66
67 dnl Arguments to specify presence of other packages/features.
68 AC_ARG_WITH([fp],
69 AC_HELP_STRING([--with-fp],
70 [if using floating-point hardware @<:@default=yes@:>@]),
71 [with_fp=$withval],
72 [with_fp=yes])
73 AC_SUBST(with_fp)
74 AC_ARG_WITH([binutils],
75 AC_HELP_STRING([--with-binutils=PATH],
76 [specify location of binutils (as and ld)]),
77 [path_binutils=$withval],
78 [path_binutils=''])
79 AC_ARG_WITH([elf],
80 AC_HELP_STRING([--with-elf],
81 [if using the ELF object format]),
82 [elf=$withval],
83 [elf=no])
84 AC_ARG_WITH([selinux],
85 AC_HELP_STRING([--with-selinux],
86 [if building with SELinux support]),
87 [with_selinux=$withval],
88 [with_selinux=auto])
89 AC_ARG_WITH([xcoff],
90 AC_HELP_STRING([--with-xcoff],
91 [if using the XCOFF object format]),
92 [xcoff=$withval],
93 [xcoff=no])
94 AC_ARG_WITH([cvs],
95 AC_HELP_STRING([--without-cvs],
96 [if CVS should not be used]),
97 [with_cvs=$withval],
98 [with_cvs=yes])
99 if test "$with_cvs" = yes; then
100 if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
101 then
102 with_cvs=no
103 fi
104 fi
105 AC_SUBST(with_cvs)
106
107 AC_ARG_WITH([headers],
108 AC_HELP_STRING([--with-headers=PATH],
109 [location of system headers to use
110 (for example /usr/src/linux/include)
111 @<:@default=compiler default@:>@]),
112 [sysheaders=$withval],
113 [sysheaders=''])
114
115 AC_ARG_ENABLE([sanity-checks],
116 AC_HELP_STRING([--disable-sanity-checks],
117 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
118 [enable_sanity=$enableval],
119 [enable_sanity=yes])
120
121 AC_SUBST(enable_check_abi)
122 AC_ARG_ENABLE([check-abi],
123 AC_HELP_STRING([--enable-check-abi],
124 [do "make check-abi" in "make check" (no/warn/yes)
125 @<:@default=no@:>@]),
126 [enable_check_abi=$enableval],
127 [enable_check_abi=no])
128
129 dnl Arguments to enable or disable building the static, shared, profiled,
130 dnl and -fomit-frame-pointer libraries.
131 dnl I've disabled this for now since we cannot build glibc without static
132 dnl libraries built in the moment.
133 dnl AC_ARG_ENABLE([static],
134 dnl AC_HELP_STRING([--enable-static],
135 dnl [build static library @<:@default=yes@:>@]),
136 dnl [static=$enableval],
137 dnl [static=yes])
138 static=yes
139 AC_ARG_ENABLE([shared],
140 AC_HELP_STRING([--enable-shared],
141 [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
142 [shared=$enableval],
143 [shared=default])
144 AC_ARG_ENABLE([profile],
145 AC_HELP_STRING([--enable-profile],
146 [build profiled library @<:@default=yes@:>@]),
147 [profile=$enableval],
148 [profile=yes])
149 AC_ARG_ENABLE([omitfp],
150 AC_HELP_STRING([--enable-omitfp],
151 [build undebuggable optimized library @<:@default=no@:>@]),
152 [omitfp=$enableval],
153 [omitfp=no])
154 AC_ARG_ENABLE([bounded],
155 AC_HELP_STRING([--enable-bounded],
156 [build with runtime bounds checking @<:@default=no@:>@]),
157 [bounded=$enableval],
158 [bounded=no])
159 AC_ARG_ENABLE([versioning],
160 AC_HELP_STRING([--disable-versioning],
161 [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
162 [enable_versioning=$enableval],
163 [enable_versioning=yes])
164
165 AC_ARG_ENABLE([oldest-abi],
166 AC_HELP_STRING([--enable-oldest-abi=ABI],
167 [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
168 [oldest_abi=$enableval],
169 [oldest_abi=no])
170 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
171 oldest_abi=default
172 else
173 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
174 fi
175 AC_SUBST(oldest_abi)
176
177 dnl Generic infrastructure for drop-in additions to libc.
178 AC_ARG_ENABLE([add-ons],
179 AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
180 [configure and build add-ons in DIR1,DIR2,... search for add-ons if no parameter given]),
181 [case "$enableval" in
182 yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
183 add_ons_automatic=yes
184 test "$add_ons" = "*" && add_ons= ;;
185 *) add_ons=`echo "$enableval" | sed 's/,/ /g'`
186 add_ons_automatic=no ;;
187 esac],
188 [add_ons= add_ons_automatic=no])
189
190 dnl Let the user avoid using TLS. Don't know why but...
191 AC_ARG_WITH([tls],
192 AC_HELP_STRING([--with-tls],
193 [enable support for TLS]),
194 [usetls=$withval],
195 [usetls=yes])
196
197 AC_ARG_WITH([__thread],
198 AC_HELP_STRING([--without-__thread],
199 [do not use TLS features even when supporting them]),
200 [use__thread=$withval],
201 [use__thread=yes])
202
203 AC_ARG_ENABLE([hidden-plt],
204 AC_HELP_STRING([--disable-hidden-plt],
205 [do not hide internal function calls to avoid PLT]),
206 [hidden=$enableval],
207 [hidden=yes])
208 if test "x$hidden" = xno; then
209 AC_DEFINE(NO_HIDDEN)
210 fi
211
212 AC_ARG_ENABLE([bind-now],
213 AC_HELP_STRING([--enable-bind-now],
214 [disable lazy relocations in DSOs]),
215 [bindnow=$enableval],
216 [bindnow=no])
217 AC_SUBST(bindnow)
218
219 dnl On some platforms we cannot use dynamic loading. We must provide
220 dnl static NSS modules.
221 AC_ARG_ENABLE([static-nss],
222 AC_HELP_STRING([--enable-static-nss],
223 [build static NSS modules @<:@default=no@:>@]),
224 [static_nss=$enableval],
225 [static_nss=no])
226 dnl Enable static NSS also if we build no shared objects.
227 if test x"$static_nss" = xyes || test x"$shared" = xno; then
228 static_nss=yes
229 AC_DEFINE(DO_STATIC_NSS)
230 fi
231
232 AC_ARG_ENABLE([force-install],
233 AC_HELP_STRING([--disable-force-install],
234 [don't force installation of files from this package, even if they are older than the installed files]),
235 [force_install=$enableval],
236 [force_install=yes])
237 AC_SUBST(force_install)
238
239 dnl On some platforms we allow dropping compatibility with all kernel
240 dnl versions.
241 AC_ARG_ENABLE([kernel],
242 AC_HELP_STRING([--enable-kernel=VERSION],
243 [compile for compatibility with kernel not older than VERSION]),
244 [minimum_kernel=$enableval],
245 [])
246 dnl Prevent unreasonable values.
247 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
248 # Better nothing than this.
249 minimum_kernel=""
250 else
251 if test "$minimum_kernel" = current; then
252 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
253 fi
254 fi
255
256 dnl For the development we sometimes want gcc to issue even more warnings.
257 dnl This is not the default since many of the extra warnings are not
258 dnl appropriate.
259 AC_ARG_ENABLE([all-warnings],
260 AC_HELP_STRING([--enable-all-warnings],
261 [enable all useful warnings gcc can issue]),
262 [all_warnings=$enableval],
263 [])
264 AC_SUBST(all_warnings)
265
266 AC_CANONICAL_HOST
267
268 # The way shlib-versions is used to generate soversions.mk uses a
269 # fairly simplistic model for name recognition that can't distinguish
270 # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
271 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
272 # tell. This doesn't get used much beyond that, so it's fairly safe.
273 case "$host_os" in
274 linux*)
275 ;;
276 gnu*)
277 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
278 ;;
279 esac
280
281 # We keep the original values in `$config_*' and never modify them, so we
282 # can write them unchanged into config.make. Everything else uses
283 # $machine, $vendor, and $os, and changes them whenever convenient.
284 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
285
286 # Don't allow vendor == "unknown"
287 test "$config_vendor" = unknown && config_vendor=
288 config_os="`echo $config_os | sed 's/^unknown-//'`"
289
290 # Some configurations imply other options.
291 case "$host_os" in
292 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
293 # These systems always use GNU tools.
294 gnu_ld=yes gnu_as=yes ;;
295 esac
296 case "$host_os" in
297 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
298 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
299 ;;
300 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
301 # These systems (almost) always use the ELF format.
302 elf=yes
303 ;;
304 aix*)
305 # These systems are always xcoff
306 xcoff=yes
307 elf=no
308 ;;
309 esac
310
311 # The configure fragment of an add-on port can modify these to supplement
312 # or override the table in the case statement below. No fragment should
313 # ever change the config_* variables, however.
314 machine=$config_machine
315 vendor=$config_vendor
316 os=$config_os
317
318 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
319 # Unify this here.
320 if test "$machine" = rs6000; then
321 machine="powerpc"
322 fi
323
324 # Braindead PowerPC box with absolutely no FPU.
325 case "$machine-$host_os" in
326 powerpc*-*soft)
327 with_fp=no
328 ;;
329 esac
330
331
332 # An add-on can set this when it the tuple to disable the sanity check below.
333 libc_config_ok=no
334
335 dnl Having this here, though empty, makes sure that if add-ons' fragments
336 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
337 dnl our AC_OUTPUT will actually use it.
338 AC_CONFIG_SUBDIRS()
339
340 add_ons_sfx=
341 add_ons_pfx=
342 if test x"$add_ons" != x; then
343 for f in $add_ons; do
344 # Some sanity checks
345 case "$f" in
346 crypt)
347 AC_MSG_ERROR([
348 *** It seems that you're using an old \`crypt' add-on. crypt is now
349 *** part of glibc and using the old add-on will not work with this
350 *** release. Start again with fresh sources and without the old
351 *** \`crypt' add-on.])
352 ;;
353 localedata)
354 AC_MSG_ERROR([
355 *** It seems that you're using an old \`localedata' add-on. localedata
356 *** is now part of glibc and using the old add-on will not work with
357 *** this release. Start again with fresh sources and without the old
358 *** \`localedata' add-on.])
359 ;;
360 esac
361
362 # Test whether such a subdir really exists.
363 test -d $srcdir/$f || {
364 AC_MSG_ERROR(add-on directory \"$f\" does not exist)
365 }
366 done
367
368 # Now source each add-on's configure fragment.
369 # The fragments can use $srcdir/$libc_add_on to find themselves,
370 # and test $add_ons_automatic to see if they were explicitly requested.
371 # A fragment can clear (or even change) $libc_add_on to affect
372 # whether it goes into the list to be actually used in the build.
373 use_add_ons=
374 for libc_add_on in $add_ons; do
375 libc_add_on_frag=$srcdir/$libc_add_on/configure
376 if test -r $libc_add_on_frag; then
377 AC_MSG_RESULT(running configure fragment for add-on $libc_add_on)
378 . $libc_add_on_frag
379 else
380 AC_MSG_WARN(add-on fragment $libc_add_on_frag missing)
381 fi
382 if test -n "$libc_add_on"; then
383 use_add_ons="$use_add_ons $libc_add_on"
384 add_ons_pfx="$add_ons_pfx $libc_add_on/"
385 add_ons_sfx="$add_ons_sfx /$libc_add_on"
386 fi
387 done
388 # Use echo to strip excess whitespace.
389 add_ons="`echo $use_add_ons`"
390 fi
391 AC_SUBST(add_ons)
392
393
394 ###
395 ### I put this here to prevent those annoying emails from people who cannot
396 ### read and try to compile glibc on unsupported platforms. --drepper
397 ###
398 ### By using the undocumented --enable-hacker-mode option for configure
399 ### one can skip this test to make the configuration not fail for unsupported
400 ### platforms.
401 ###
402 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
403 case "$machine-$host_os" in
404 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
405 ;;
406 *)
407 echo "*** The GNU C library is currently not available for this platform."
408 echo "*** So far nobody cared to port it and if there is no volunteer it"
409 echo "*** might never happen. So, if you have interest to see glibc on"
410 echo "*** this platform visit"
411 echo "*** http://www.gnu.org/software/libc/porting.html"
412 echo "*** and join the group of porters"
413 exit 1
414 ;;
415 esac
416 fi
417
418 dnl We need to use [ and ] for other purposes for a while now.
419 changequote(,)dnl
420 # Expand the configuration machine name into a subdirectory by architecture
421 # type and particular chip. If an add-on configure fragment already set
422 # base_machine, we don't change it.
423 test -n "$base_machine" || case "$machine" in
424 a29k | am29000) base_machine=a29k machine=a29k ;;
425 alpha*) base_machine=alpha machine=alpha/$machine ;;
426 arm*) base_machine=arm machine=arm/arm32/$machine ;;
427 c3[012]) base_machine=cx0 machine=cx0/c30 ;;
428 c4[04]) base_machine=cx0 machine=cx0/c40 ;;
429 hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
430 hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
431 i[34567]86) base_machine=i386 machine=i386/$machine ;;
432 ia64) base_machine=ia64 machine=ia64 ;;
433 m680?0) base_machine=m68k machine=m68k/$machine ;;
434 m68k) base_machine=m68k machine=m68k/m68020 ;;
435 m88???) base_machine=m88k machine=m88k/$machine ;;
436 m88k) base_machine=m88k machine=m88k/m88100 ;;
437 mips64*) base_machine=mips64
438 case "$CC $CFLAGS $CPPFLAGS " in
439 *" -mabi=n32 "*) mips_cc_abi=n32 ;;
440 *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
441 *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
442 *) mips_cc_abi=default ;;
443 esac
444 case $config_os in
445 *abin32*) mips_config_abi=n32 ;;
446 *abi64*|*abin64*) mips_config_abi=64 ;;
447 *abi32*|*abio32*) mips_config_abi=32 ;;
448 *) mips_config_abi=$mips_cc_abi ;;
449 esac
450 case $mips_config_abi in
451 default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
452 n32) machine=mips/mips64/n32 ;;
453 64) machine=mips/mips64/n64 ;;
454 32) machine=mips/mips32/kern64 ;;
455 esac
456 machine=$machine/$config_machine
457 if test $mips_config_abi != $mips_cc_abi; then
458 # This won't make it to config.make, but we want to
459 # set this in case configure tests depend on it.
460 CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
461 fi
462 ;;
463 mips*) base_machine=mips machine=mips/mips32/$machine ;;
464 powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
465 powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
466 s390) base_machine=s390 machine=s390/s390-32 ;;
467 s390x) base_machine=s390 machine=s390/s390-64 ;;
468 sh3*) base_machine=sh machine=sh/sh3 ;;
469 sh4*) base_machine=sh machine=sh/sh4 ;;
470 sparc | sparcv[67])
471 base_machine=sparc machine=sparc/sparc32 ;;
472 sparcv8 | supersparc | hypersparc)
473 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
474 sparcv8plus | sparcv8plusa | sparcv9)
475 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
476 sparcv8plusb | sparcv9b)
477 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
478 sparc64 | ultrasparc)
479 base_machine=sparc machine=sparc/sparc64 ;;
480 sparc64b | ultrasparc3)
481 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
482 thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
483 *) base_machine=$machine ;;
484 esac
485 changequote([,])dnl
486 AC_SUBST(base_machine)
487
488 if test "$base_machine" = "i386"; then
489 AC_DEFINE(USE_REGPARMS)
490 fi
491
492 # Compute the list of sysdep directories for this configuration.
493 # This can take a while to compute.
494 sysdep_dir=$srcdir/sysdeps
495 AC_MSG_CHECKING(sysdep dirs)
496 dnl We need to use [ and ] for other purposes for a while now.
497 changequote(,)dnl
498 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
499 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
500
501 case "$os" in
502 gnu*)
503 base_os=mach/hurd ;;
504 netbsd* | 386bsd* | freebsd* | bsdi*)
505 base_os=unix/bsd/bsd4.4 ;;
506 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
507 base_os=unix/bsd ;;
508 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
509 base_os=unix/sysv ;;
510 irix6*)
511 base_os=unix/sysv/irix6/$os ;;
512 solaris[2-9]*)
513 base_os=unix/sysv/sysv4 ;;
514 hpux*)
515 base_os=unix/sysv/hpux/$os ;;
516 aix4.3*)
517 base_os=unix/sysv/aix/aix4.3 ;;
518 none)
519 base_os=standalone ;;
520 *)
521 base_os='' ;;
522 esac
523
524 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
525 tail=$os
526 ostry=$os
527 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
528 ostry="$ostry /$o"
529 tail=$o
530 done
531 o=`echo $tail | sed 's/[0-9]*$//'`
532 if test $o != $tail; then
533 ostry="$ostry /$o"
534 fi
535 # For linux-gnu, try linux-gnu, then linux.
536 o=`echo $tail | sed 's/-.*$//'`
537 if test $o != $tail; then
538 ostry="$ostry /$o"
539 fi
540
541 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
542 base=
543 tail=$base_os
544 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
545 set $b
546 base="$base /$1"
547 tail="$2"
548 done
549
550 # For sparc/sparc32, try sparc/sparc32 and then sparc.
551 mach=
552 tail=$machine
553 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
554 set $m
555 # Prepend the machine's FPU directory unless --without-fp.
556 if test "$with_fp" = yes; then
557 mach="$mach /$1/fpu"
558 else
559 mach="$mach /$1/nofpu"
560 fi
561 mach="$mach /$1"
562 tail="$2"
563 done
564
565 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
566 changequote([,])dnl
567
568 # Find what sysdep directories exist.
569 sysnames=
570 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
571 for d in $add_ons_pfx ''; do
572 for b in $base ''; do
573 for m0 in $mach ''; do
574 for v in /$vendor ''; do
575 test "$v" = / && continue
576 for o in /$ostry ''; do
577 test "$o" = / && continue
578 for m in $mach ''; do
579 for a in $add_ons_sfx ''; do
580 if test "$m0$b$v$o$m"; then
581 try="${d}sysdeps$m0$b$v$o$m$a"
582 test -n "$enable_debug_configure" &&
583 echo "$0 [DEBUG]: try $try" >&2
584 if test -d $srcdir/$try; then
585 sysnames="$sysnames $try"
586 { test -n "$o" || test -n "$b"; } && os_used=t
587 { test -n "$m" || test -n "$m0"; } && machine_used=t
588 fi
589 fi
590 done
591 done
592 done
593 done
594 done
595 done
596 done
597 IFS="$ac_save_ifs"
598
599 if test -z "$os_used" && test "$os" != none; then
600 AC_MSG_ERROR(Operating system $os is not supported.)
601 fi
602 if test -z "$machine_used" && test "$machine" != none; then
603 AC_MSG_ERROR(The $machine is not supported.)
604 fi
605
606 # We have now validated the configuration.
607
608
609 # If using ELF, look for an `elf' subdirectory of each machine directory.
610 # We prepend these rather than inserting them whereever the machine appears
611 # because things specified by the machine's ELF ABI should override
612 # OS-specific things, and should always be the same for any OS on the
613 # machine (otherwise what's the point of an ABI?).
614 if test "$elf" = yes; then
615 elf_dirs=
616 for d in $add_ons_pfx ''; do
617 for m in $mach; do
618 if test -d $srcdir/${d}sysdeps$m/elf; then
619 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
620 fi
621 done
622 done
623 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
624 fi
625
626
627 # Expand the list of system names into a full list of directories
628 # from each element's parent name and Implies file (if present).
629 set $sysnames
630 names=
631 while test $# -gt 0; do
632 name=$1
633 shift
634
635 case " $names " in *" $name "*)
636 # Already in the list.
637 continue
638 esac
639
640 # Report each name as we discover it, so there is no long pause in output.
641 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
642
643 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
644
645 case $name in
646 /*) xsrcdir= ;;
647 *) xsrcdir=$srcdir/ ;;
648 esac
649 test -n "$enable_debug_configure" &&
650 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
651
652 if test -f $xsrcdir$name/Implies; then
653 # Collect more names from the `Implies' file (removing comments).
654 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
655 implied=
656 for x in $implied_candidate; do
657 found=no
658 if test -d $xsrcdir$name_base/$x; then
659 implied="$implied $name_base/$x";
660 found=yes
661 fi
662 for d in $add_ons_pfx ''; do
663 try="${d}sysdeps/$x"
664 case $d in
665 /*) try_srcdir= ;;
666 *) try_srcdir=$srcdir/ ;;
667 esac
668 test -n "$enable_debug_configure" &&
669 echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
670 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
671 then
672 implied="$implied $try"
673 found=yes
674 fi
675 done
676 if test $found = no; then
677 AC_MSG_WARN($name/Implies specifies nonexistent $x)
678 fi
679 done
680 else
681 implied=
682 fi
683
684 # Add NAME to the list of names.
685 names="$names $name"
686
687 # Find the parent of NAME, using the empty string if it has none.
688 changequote(,)dnl
689 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
690 changequote([,])dnl
691
692 # Add the names implied by NAME, and NAME's parent (if it has one), to
693 # the list of names to be processed (the argument list). We prepend the
694 # implied names to the list and append the parent. We want implied
695 # directories to come before further directories inferred from the
696 # configuration components; this ensures that for sysv4, unix/common
697 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
698 # after sysv4).
699 sysnames="`echo $implied $* $parent`"
700 test -n "$sysnames" && set $sysnames
701 done
702
703 # Add the default directories.
704 default_sysnames=sysdeps/generic
705 if test "$elf" = yes; then
706 default_sysnames="sysdeps/generic/elf $default_sysnames"
707 fi
708 sysnames="$names $default_sysnames"
709 AC_SUBST(sysnames)
710 # The other names were emitted during the scan.
711 AC_MSG_RESULT($default_sysnames)
712
713
714 ### Locate tools.
715
716 AC_PROG_INSTALL
717 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
718 # The makefiles need to use a different form to find it in $srcdir.
719 INSTALL='\$(..)./scripts/install-sh -c'
720 fi
721 AC_PROG_LN_S
722
723 AC_PROG_CC
724 if test $host != $build; then
725 AC_CHECK_PROGS(BUILD_CC, gcc cc)
726 fi
727 AC_SUBST(cross_compiling)
728 AC_PROG_CPP
729 # We need the C++ compiler only for testing.
730 AC_PROG_CXX
731 LIBC_PROG_BINUTILS
732 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
733
734 # Accept binutils 2.13 or newer.
735 AC_CHECK_PROG_VER(AS, $AS, --version,
736 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
737 [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
738 AC_CHECK_PROG_VER(LD, $LD, --version,
739 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
740 [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
741
742 # We need the physical current working directory. We cannot use the
743 # "pwd -P" shell builtin since that's not portable. Instead we try to
744 # find a pwd binary. Note that assigning to the PWD environment
745 # variable might have some interesting side effects, so we don't do
746 # that.
747 AC_PATH_PROG(PWD_P, pwd, no)
748 if test "$PWD_P" = no; then
749 AC_MSG_ERROR(*** A pwd binary could not be found.)
750 fi
751
752 # These programs are version sensitive.
753 AC_CHECK_TOOL_PREFIX
754 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
755 [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]* | 4.[0-9]* ],
756 critic_missing="$critic_missing gcc")
757 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
758 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
759 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
760
761 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
762 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
763 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
764 MSGFMT=: aux_missing="$aux_missing msgfmt")
765 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
766 [GNU texinfo.* \([0-9][0-9.]*\)],
767 [4.*],
768 MAKEINFO=: aux_missing="$aux_missing makeinfo")
769 AC_CHECK_PROG_VER(SED, sed, --version,
770 [GNU sed version \([0-9]*\.[0-9.]*\)],
771 [3.0[2-9]*|3.[1-9]*|[4-9]*],
772 SED=: aux_missing="$aux_missing sed")
773
774 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
775 case "x$AUTOCONF" in
776 xno|x|x:) AUTOCONF=no ;;
777 *)
778 AC_CACHE_CHECK(dnl
779 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
780 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
781 libc_cv_autoconf_works=yes
782 else
783 libc_cv_autoconf_works=no
784 fi])
785 test $libc_cv_autoconf_works = yes || AUTOCONF=no
786 ;;
787 esac
788 if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
789 # If --without-cvs they probably won't change configure.in, so no complaints.
790 aux_missing="$aux_missing autoconf"
791 fi
792
793 test -n "$critic_missing" && AC_MSG_ERROR([
794 *** These critical programs are missing or too old:$critic_missing
795 *** Check the INSTALL file for required versions.])
796
797 test -n "$aux_missing" && AC_MSG_WARN([
798 *** These auxiliary programs are missing or incompatible versions:$aux_missing
799 *** some features will be disabled.
800 *** Check the INSTALL file for required versions.])
801
802 # if using special system headers, find out the compiler's sekrit
803 # header directory and add that to the list. NOTE: Only does the right
804 # thing on a system that doesn't need fixincludes. (Not presently a problem.)
805 if test -n "$sysheaders"; then
806 ccheaders=`$CC -print-file-name=include`
807 SYSINCLUDES="-nostdinc -isystem $ccheaders \
808 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
809 fi
810 AC_SUBST(SYSINCLUDES)
811
812 # check if ranlib is necessary
813 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
814 cat > conftest.c <<EOF
815 int a;
816 char b;
817 void c(void) {}
818 EOF
819 $CC $CFLAGS $CPPFLAGS -c conftest.c
820 $AR cr conftest.a conftest.o
821 cp conftest.a conftest2.a
822 $RANLIB conftest.a
823 if cmp -s conftest.a conftest2.a; then
824 libc_cv_ranlib_necessary=no
825 else
826 libc_cv_ranlib_necessary=yes
827 fi
828 rm -rf conftest*])
829 if test "$libc_cv_ranlib_necessary" = no; then
830 RANLIB=:
831 fi
832
833 # Test if LD_LIBRARY_PATH contains the notation for the current directory
834 # since this would lead to problems installing/building glibc.
835 # LD_LIBRARY_PATH contains the current directory if one of the following
836 # is true:
837 # - one of the terminals (":" and ";") is the first or last sign
838 # - two terminals occur directly after each other
839 # - the path contains an element with a dot in it
840 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
841 changequote(,)dnl
842 case ${LD_LIBRARY_PATH} in
843 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
844 ld_library_path_setting="contains current directory"
845 ;;
846 *)
847 ld_library_path_setting="ok"
848 ;;
849 esac
850 changequote([,])dnl
851 AC_MSG_RESULT($ld_library_path_setting)
852 if test "$ld_library_path_setting" != "ok"; then
853 AC_MSG_ERROR([
854 *** LD_LIBRARY_PATH shouldn't contain the current directory when
855 *** building glibc. Please change the environment variable
856 *** and run configure again.])
857 fi
858
859 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
860 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
861 libc_cv_gcc_static_libgcc=
862 else
863 libc_cv_gcc_static_libgcc=-static-libgcc
864 fi])
865 AC_SUBST(libc_cv_gcc_static_libgcc)
866
867 AC_PATH_PROG(BASH, bash, no)
868 if test "$BASH" != no &&
869 $BASH -c 'test "$BASH_VERSINFO" \
870 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
871 libc_cv_have_bash2=yes
872 else
873 libc_cv_have_bash2=no
874 fi
875 AC_SUBST(libc_cv_have_bash2)
876
877 dnl We need a ksh compatible shell for tzselect.
878 if test "$BASH" = no; then
879 AC_PATH_PROG(KSH, ksh, no)
880 if test "$KSH" = no; then
881 libc_cv_have_ksh=no
882 else
883 libc_cv_have_ksh=yes
884 fi
885 else
886 KSH="$BASH"
887 AC_SUBST(KSH)
888 libc_cv_have_ksh=yes
889 fi
890 AC_SUBST(libc_cv_have_ksh)
891
892 AC_PROG_AWK
893 AC_PATH_PROG(PERL, perl, no)
894 if test "$PERL" != no &&
895 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
896 PERL=no
897 fi
898 AC_PATH_PROG(INSTALL_INFO, install-info, no,
899 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
900 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
901
902 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
903 echo '#include <stddef.h>
904 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
905 if eval "$ac_cpp conftest.c 2>/dev/null" \
906 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
907 libc_cv_signed_size_t=no
908 else
909 libc_cv_signed_size_t=yes
910 fi
911 rm -f conftest*])
912 if test $libc_cv_signed_size_t = yes; then
913 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
914 cat >> confdefs.h <<\EOF
915 #undef __SIZE_TYPE__
916 #define __SIZE_TYPE__ unsigned
917 EOF
918 fi
919
920 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
921 AC_TRY_COMPILE(dnl
922 [#define __need_size_t
923 #define __need_wchar_t
924 #include <stddef.h>
925 #define __need_NULL
926 #include <stddef.h>], [size_t size; wchar_t wchar;
927 #ifdef offsetof
928 #error stddef.h ignored __need_*
929 #endif
930 if (&size == NULL || &wchar == NULL) abort ();],
931 libc_cv_friendly_stddef=yes,
932 libc_cv_friendly_stddef=no)])
933 if test $libc_cv_friendly_stddef = yes; then
934 config_vars="$config_vars
935 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
936 fi
937
938 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
939 libc_cv_need_minus_P, [dnl
940 cat > conftest.S <<EOF
941 #include "confdefs.h"
942 /* Nothing whatsoever. */
943 EOF
944 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
945 libc_cv_need_minus_P=no
946 else
947 libc_cv_need_minus_P=yes
948 fi
949 rm -f conftest*])
950 if test $libc_cv_need_minus_P = yes; then
951 config_vars="$config_vars
952 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
953 fi
954
955 AC_MSG_CHECKING(whether .text pseudo-op must be used)
956 AC_CACHE_VAL(libc_cv_dot_text, [dnl
957 cat > conftest.s <<EOF
958 .text
959 EOF
960 libc_cv_dot_text=
961 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
962 libc_cv_dot_text=.text
963 fi
964 rm -f conftest*])
965 if test -z "$libc_cv_dot_text"; then
966 AC_MSG_RESULT(no)
967 else
968 AC_MSG_RESULT(yes)
969 fi
970
971 AC_CACHE_CHECK(for assembler global-symbol directive,
972 libc_cv_asm_global_directive, [dnl
973 libc_cv_asm_global_directive=UNKNOWN
974 for ac_globl in .globl .global .EXPORT; do
975 cat > conftest.s <<EOF
976 ${libc_cv_dot_text}
977 ${ac_globl} foo
978 foo:
979 EOF
980 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
981 libc_cv_asm_global_directive=${ac_globl}
982 fi
983 rm -f conftest*
984 test $libc_cv_asm_global_directive != UNKNOWN && break
985 done])
986 if test $libc_cv_asm_global_directive = UNKNOWN; then
987 AC_MSG_ERROR(cannot determine asm global directive)
988 else
989 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
990 fi
991
992 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
993 cat > conftest.s <<EOF
994 ${libc_cv_dot_text}
995 foo:
996 .set glibc_conftest_frobozz,foo
997 $libc_cv_asm_global_directive glibc_conftest_frobozz
998 EOF
999 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1000 # (but it doesn't work), so we must do a linking check to be sure.
1001 cat > conftest1.c <<\EOF
1002 extern int glibc_conftest_frobozz;
1003 void _start() { glibc_conftest_frobozz = 1; }
1004 EOF
1005 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1006 -nostartfiles -nostdlib \
1007 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1008 libc_cv_asm_set_directive=yes
1009 else
1010 libc_cv_asm_set_directive=no
1011 fi
1012 rm -f conftest*])
1013 if test $libc_cv_asm_set_directive = yes; then
1014 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1015 fi
1016
1017 AC_CACHE_CHECK(for assembler .type directive prefix,
1018 libc_cv_asm_type_prefix, [dnl
1019 libc_cv_asm_type_prefix=no
1020 for ac_try_prefix in '@' '%' '#'; do
1021 cat > conftest.s <<EOF
1022 ${libc_cv_dot_text}
1023 ${libc_cv_asm_global_directive} foo
1024 .type foo, ${ac_try_prefix}object
1025 .size foo, 1
1026 foo:
1027 .byte 1
1028 EOF
1029 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1030 libc_cv_asm_type_prefix=${ac_try_prefix}
1031 fi
1032 rm -f conftest*
1033 test "x$libc_cv_asm_type_prefix" != xno && break
1034 done])
1035 if test "x$libc_cv_asm_type_prefix" != xno; then
1036 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
1037 fi
1038
1039 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1040 [cat > conftest.s <<EOF
1041 ${libc_cv_dot_text}
1042 _sym:
1043 .symver _sym,sym@VERS
1044 EOF
1045 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1046 libc_cv_asm_symver_directive=yes
1047 else
1048 libc_cv_asm_symver_directive=no
1049 fi
1050 rm -f conftest*])
1051 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1052 if test $libc_cv_asm_symver_directive = yes; then
1053 cat > conftest.s <<EOF
1054 ${libc_cv_dot_text}
1055 _sym:
1056 .symver _sym,sym@VERS
1057 EOF
1058 cat > conftest.map <<EOF
1059 VERS_1 {
1060 global: sym;
1061 };
1062
1063 VERS_2 {
1064 global: sym;
1065 } VERS_1;
1066 EOF
1067 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1068 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1069 -o conftest.so conftest.o
1070 -nostartfiles -nostdlib
1071 -Wl,--version-script,conftest.map
1072 1>&AS_MESSAGE_LOG_FD]);
1073 then
1074 libc_cv_ld_version_script_option=yes
1075 else
1076 libc_cv_ld_version_script_option=no
1077 fi
1078 else
1079 libc_cv_ld_version_script_option=no
1080 fi
1081 else
1082 libc_cv_ld_version_script_option=no
1083 fi
1084 rm -f conftest*])
1085 if test $shared != no &&
1086 test $libc_cv_asm_symver_directive = yes &&
1087 test $libc_cv_ld_version_script_option = yes &&
1088 test $enable_versioning = yes; then
1089 VERSIONING=yes
1090 AC_DEFINE(DO_VERSIONING)
1091 else
1092 VERSIONING=no
1093 fi
1094 AC_SUBST(VERSIONING)
1095
1096 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1097 echo "\
1098 *** WARNING: You should not compile GNU libc without versioning. Not using
1099 *** versioning will introduce incompatibilities so that old binaries
1100 *** will not run anymore.
1101 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1102 fi
1103 if test $elf = yes; then
1104 AC_CACHE_CHECK(for .previous assembler directive,
1105 libc_cv_asm_previous_directive, [dnl
1106 cat > conftest.s <<EOF
1107 .section foo_section
1108 .previous
1109 EOF
1110 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1111 libc_cv_asm_previous_directive=yes
1112 else
1113 libc_cv_asm_previous_directive=no
1114 fi
1115 rm -f conftest*])
1116 if test $libc_cv_asm_previous_directive = yes; then
1117 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1118 else
1119 AC_CACHE_CHECK(for .popsection assembler directive,
1120 libc_cv_asm_popsection_directive, [dnl
1121 cat > conftest.s <<EOF
1122 .pushsection foo_section
1123 .popsection
1124 EOF
1125 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1126 libc_cv_asm_popsection_directive=yes
1127 else
1128 libc_cv_asm_popsection_directive=no
1129 fi
1130 rm -f conftest*])
1131 if test $libc_cv_asm_popsection_directive = yes; then
1132 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1133 fi
1134 fi
1135 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1136 libc_cv_asm_protected_directive, [dnl
1137 cat > conftest.s <<EOF
1138 .protected foo
1139 foo:
1140 .hidden bar
1141 bar:
1142 EOF
1143 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1144 libc_cv_asm_protected_directive=yes
1145 else
1146 libc_cv_asm_protected_directive=no
1147 fi
1148 rm -f conftest*])
1149 AC_SUBST(libc_cv_asm_protected_directive)
1150 AC_DEFINE(HAVE_PROTECTED)
1151 AC_DEFINE(HAVE_HIDDEN)
1152
1153 if test $libc_cv_asm_protected_directive = yes; then
1154 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1155 libc_cv_visibility_attribute,
1156 [cat > conftest.c <<EOF
1157 int foo __attribute__ ((visibility ("hidden"))) = 1;
1158 int bar __attribute__ ((visibility ("protected"))) = 1;
1159 EOF
1160 libc_cv_visibility_attribute=no
1161 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1162 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1163 if grep '\.protected.*bar' conftest.s >/dev/null; then
1164 libc_cv_visibility_attribute=yes
1165 fi
1166 fi
1167 fi
1168 rm -f conftest.[cs]
1169 ])
1170 if test $libc_cv_visibility_attribute = yes; then
1171 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1172 fi
1173 fi
1174
1175 if test $libc_cv_visibility_attribute = yes; then
1176 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1177 libc_cv_broken_visibility_attribute,
1178 [cat > conftest.c <<EOF
1179 int foo (int x);
1180 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1181 int bar (int x) { return x; }
1182 EOF
1183 libc_cv_broken_visibility_attribute=yes
1184 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1185 changequote(,)dnl
1186 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1187 changequote([,])dnl
1188 libc_cv_broken_visibility_attribute=no
1189 fi
1190 fi
1191 rm -f conftest.c conftest.s
1192 ])
1193 if test $libc_cv_broken_visibility_attribute = yes; then
1194 AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1195 fi
1196 fi
1197
1198 AC_CACHE_CHECK(for broken __attribute__((alias())),
1199 libc_cv_broken_alias_attribute,
1200 [cat > conftest.c <<EOF
1201 extern int foo (int x) __asm ("xyzzy");
1202 int bar (int x) { return x; }
1203 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1204 extern int dfoo;
1205 extern __typeof (dfoo) dfoo __asm ("abccb");
1206 int dfoo = 1;
1207 EOF
1208 libc_cv_broken_alias_attribute=yes
1209 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1210 if grep 'xyzzy' conftest.s >/dev/null &&
1211 grep 'abccb' conftest.s >/dev/null; then
1212 libc_cv_broken_alias_attribute=no
1213 fi
1214 fi
1215 rm -f conftest.c conftest.s
1216 ])
1217 if test $libc_cv_broken_alias_attribute = yes; then
1218 AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1219 fi
1220
1221 if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1222 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1223 libc_cv_have_sdata_section,
1224 [echo "int i;" > conftest.c
1225 libc_cv_have_sdata_section=no
1226 if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1227 | grep '\.sdata' >/dev/null; then
1228 libc_cv_have_sdata_section=yes
1229 fi
1230 rm -f conftest.c conftest.so
1231 ])
1232 if test $libc_cv_have_sdata_section = yes; then
1233 AC_DEFINE(HAVE_SDATA_SECTION)
1234 fi
1235 fi
1236
1237 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1238 libc_cv_initfinit_array, [dnl
1239 cat > conftest.c <<EOF
1240 int _start (void) { return 0; }
1241 int __start (void) { return 0; }
1242 int foo (void) { return 1; }
1243 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1244 EOF
1245 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1246 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1247 then
1248 if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1249 libc_cv_initfinit_array=yes
1250 else
1251 libc_cv_initfinit_array=no
1252 fi
1253 else
1254 libc_cv_initfinit_array=no
1255 fi
1256 rm -f conftest*])
1257 AC_SUBST(libc_cv_initfinit_array)
1258 if test $libc_cv_initfinit_array = yes; then
1259 AC_DEFINE(HAVE_INITFINI_ARRAY)
1260 fi
1261
1262 AC_CACHE_CHECK(for libunwind-support in compiler,
1263 libc_cv_cc_with_libunwind, [
1264 cat > conftest.c <<EOF
1265 int main (void) { return 0; }
1266 EOF
1267 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1268 conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1269 libc_cv_cc_with_libunwind=yes
1270 else
1271 libc_cv_cc_with_libunwind=no
1272 fi
1273 rm -f conftest*])
1274 AC_SUBST(libc_cv_cc_with_libunwind)
1275 if test $libc_cv_cc_with_libunwind = yes; then
1276 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1277 fi
1278
1279 AC_CACHE_CHECK(for -z nodelete option,
1280 libc_cv_z_nodelete, [dnl
1281 cat > conftest.c <<EOF
1282 int _start (void) { return 42; }
1283 EOF
1284 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1285 -shared -o conftest.so conftest.c
1286 -nostartfiles -nostdlib
1287 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1288 then
1289 libc_cv_z_nodelete=yes
1290 else
1291 libc_cv_z_nodelete=no
1292 fi
1293 rm -f conftest*])
1294 AC_SUBST(libc_cv_z_nodelete)
1295
1296 AC_CACHE_CHECK(for -z nodlopen option,
1297 libc_cv_z_nodlopen, [dnl
1298 cat > conftest.c <<EOF
1299 int _start (void) { return 42; }
1300 EOF
1301 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1302 -shared -o conftest.so conftest.c
1303 -nostartfiles -nostdlib
1304 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1305 then
1306 libc_cv_z_nodlopen=yes
1307 else
1308 libc_cv_z_nodlopen=no
1309 fi
1310 rm -f conftest*])
1311 AC_SUBST(libc_cv_z_nodlopen)
1312
1313 AC_CACHE_CHECK(for -z initfirst option,
1314 libc_cv_z_initfirst, [dnl
1315 cat > conftest.c <<EOF
1316 int _start (void) { return 42; }
1317 EOF
1318 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1319 -shared -o conftest.so conftest.c
1320 -nostartfiles -nostdlib
1321 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1322 then
1323 libc_cv_z_initfirst=yes
1324 else
1325 libc_cv_z_initfirst=no
1326 fi
1327 rm -f conftest*])
1328 AC_SUBST(libc_cv_z_initfirst)
1329
1330 AC_CACHE_CHECK(for -z relro option,
1331 libc_cv_z_relro, [dnl
1332 libc_cv_z_relro=no
1333 if AC_TRY_COMMAND([${CC-cc} -v --help 2>&1|grep "z relro" 1>&AS_MESSAGE_LOG_FD])
1334 then
1335 if AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&AS_MESSAGE_LOG_FD])
1336 then
1337 libc_cv_z_relro=yes
1338 fi
1339 fi])
1340 AC_SUBST(libc_cv_z_relro)
1341 if test $libc_cv_z_relro = yes; then
1342 AC_DEFINE(HAVE_Z_RELRO)
1343 fi
1344
1345 AC_CACHE_CHECK(for -Bgroup option,
1346 libc_cv_Bgroup, [dnl
1347 cat > conftest.c <<EOF
1348 int _start (void) { return 42; }
1349 EOF
1350 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1351 -shared -o conftest.so conftest.c
1352 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1353 then
1354 libc_cv_Bgroup=yes
1355 else
1356 libc_cv_Bgroup=no
1357 fi
1358 rm -f conftest*])
1359 AC_SUBST(libc_cv_Bgroup)
1360
1361 AC_CACHE_CHECK(for libgcc_s suffix,
1362 libc_cv_libgcc_s_suffix, [dnl
1363 cat > conftest.c <<EOF
1364 int main (void) { return 0; }
1365 EOF
1366 changequote(,)dnl
1367 libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1368 -shared -shared-libgcc -o conftest.so \
1369 conftest.c -v 2>&1 >/dev/null \
1370 | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1371 changequote([,])dnl
1372 rm -f conftest*])
1373 AC_SUBST(libc_cv_libgcc_s_suffix)
1374
1375 AC_CACHE_CHECK(for --as-needed option,
1376 libc_cv_as_needed, [dnl
1377 cat > conftest.c <<EOF
1378 int main (void) { return 0; }
1379 EOF
1380 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1381 -shared -o conftest.so conftest.c
1382 -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1383 -nostdlib 1>&AS_MESSAGE_LOG_FD])
1384 then
1385 libc_cv_as_needed=yes
1386 else
1387 libc_cv_as_needed=no
1388 fi
1389 rm -f conftest*])
1390 AC_SUBST(libc_cv_as_needed)
1391
1392 ASFLAGS_config=
1393 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1394 libc_cv_as_noexecstack, [dnl
1395 cat > conftest.c <<EOF
1396 void foo (void) { }
1397 EOF
1398 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1399 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1400 && grep -q .note.GNU-stack conftest.s \
1401 && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
1402 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1403 then
1404 libc_cv_as_noexecstack=yes
1405 else
1406 libc_cv_as_noexecstack=no
1407 fi
1408 rm -f conftest*])
1409 if test $libc_cv_as_noexecstack = yes; then
1410 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1411 fi
1412 AC_SUBST(ASFLAGS_config)
1413
1414 AC_CACHE_CHECK(for -z combreloc,
1415 libc_cv_z_combreloc, [dnl
1416 cat > conftest.c <<EOF
1417 extern int bar (int);
1418 extern int mumble;
1419 int foo (void) { return bar (mumble); }
1420 EOF
1421 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1422 -shared -o conftest.so conftest.c
1423 -nostdlib -nostartfiles
1424 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1425 then
1426 dnl The following test is a bit weak. We must use a tool which can test
1427 dnl cross-platform since the gcc used can be a cross compiler. Without
1428 dnl introducing new options this is not easily doable. Instead use a tool
1429 dnl which always is cross-platform: readelf. To detect whether -z combreloc
1430 dnl look for a section named .rel.dyn.
1431 if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1432 libc_cv_z_combreloc=yes
1433 else
1434 libc_cv_z_combreloc=no
1435 fi
1436 else
1437 libc_cv_z_combreloc=no
1438 fi
1439 rm -f conftest*])
1440 if test "$libc_cv_z_combreloc" = yes; then
1441 AC_DEFINE(HAVE_Z_COMBRELOC)
1442 fi
1443 AC_SUBST(libc_cv_z_combreloc)
1444
1445 AC_CACHE_CHECK(for -z execstack,
1446 libc_cv_z_execstack, [dnl
1447 cat > conftest.c <<EOF
1448 int _start (void) { return 42; }
1449 EOF
1450 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1451 -shared -o conftest.so conftest.c
1452 -Wl,-z,execstack -nostdlib
1453 1>&AS_MESSAGE_LOG_FD])
1454 then
1455 libc_cv_z_execstack=yes
1456 else
1457 libc_cv_z_execstack=no
1458 fi
1459 rm -f conftest*])
1460 AC_SUBST(libc_cv_z_execstack)
1461
1462 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1463 cat > conftest.c <<EOF
1464 int foo;
1465 main () { return 0;}
1466 EOF
1467 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1468 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1469 then
1470 libc_cv_fpie=yes
1471 else
1472 libc_cv_fpie=no
1473 fi
1474 rm -f conftest*])
1475
1476 AC_SUBST(libc_cv_fpie)
1477 fi
1478
1479 AC_CACHE_CHECK(for -fno-unit-at-a-time, libc_cv_fno_unit_at_a_time, [dnl
1480 cat > conftest.c <<EOF
1481 int foo;
1482 EOF
1483 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-unit-at-a-time
1484 conftest.c 1>&AS_MESSAGE_LOG_FD])
1485 then
1486 libc_cv_fno_unit_at_a_time=yes
1487 else
1488 libc_cv_fno_unit_at_a_time=no
1489 fi
1490 rm -f conftest*])
1491 if test $libc_cv_fno_unit_at_a_time = yes; then
1492 fno_unit_at_a_time=-fno-unit-at-a-time
1493 fi
1494 AC_SUBST(fno_unit_at_a_time)
1495
1496 if test $elf != yes; then
1497 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1498 [AC_TRY_COMPILE(, [asm (".section .init");
1499 asm (".section .fini");
1500 asm ("${libc_cv_dot_text}");],
1501 libc_cv_have_initfini=yes,
1502 libc_cv_have_initfini=no)])
1503 AC_SUBST(libc_cv_have_initfini)dnl
1504 if test $libc_cv_have_initfini = yes; then
1505 AC_DEFINE(HAVE_INITFINI)
1506 fi
1507 fi
1508
1509 if test $elf = yes -a $gnu_ld = yes; then
1510 AC_CACHE_CHECK(whether cc puts quotes around section names,
1511 libc_cv_have_section_quotes,
1512 [cat > conftest.c <<EOF
1513 static const int foo
1514 __attribute__ ((section ("bar"))) = 1;
1515 EOF
1516 if ${CC-cc} -S conftest.c -o conftest.s; then
1517 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1518 libc_cv_have_section_quotes=yes
1519 else
1520 libc_cv_have_section_quotes=no
1521 fi
1522 else
1523 libc_cv_have_section_quotes=unknown
1524 fi
1525 rm -f conftest.[cs]
1526 ])
1527 if test $libc_cv_have_section_quotes = yes; then
1528 AC_DEFINE(HAVE_SECTION_QUOTES)
1529 fi
1530 fi
1531
1532 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1533 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1534 [cat > conftest.$ac_ext <<EOF
1535 dnl This sometimes fails to find confdefs.h, for some reason.
1536 dnl [#]line $LINENO "[$]0"
1537 [#]line $LINENO "configure"
1538 #include "confdefs.h"
1539 void underscore_test(void) {
1540 return; }
1541 EOF
1542 if AC_TRY_EVAL(ac_compile); then
1543 if grep _underscore_test conftest* >/dev/null; then
1544 ifelse([$1], , :, [rm -f conftest*
1545 $1])
1546 else
1547 ifelse([$2], , , [rm -f conftest*
1548 $2])
1549 fi
1550 else
1551 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1552 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1553 ifelse([$2], , , [rm -f conftest*
1554 $2])
1555 fi
1556 rm -f conftest*])
1557
1558 if test $elf = yes; then
1559 libc_cv_asm_underscores=no
1560 else
1561 if test $ac_cv_prog_cc_works = yes; then
1562 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1563 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1564 libc_cv_asm_underscores=yes,
1565 libc_cv_asm_underscores=no)])
1566 else
1567 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1568 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1569 libc_cv_asm_underscores=no)])
1570 fi
1571 fi
1572 if test $libc_cv_asm_underscores = no; then
1573 AC_DEFINE(NO_UNDERSCORES)
1574 fi
1575
1576 if test $elf = yes; then
1577 libc_cv_weak_symbols=yes
1578 fi
1579
1580 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1581 [dnl
1582 cat > conftest.s <<EOF
1583 ${libc_cv_dot_text}
1584 ${libc_cv_asm_global_directive} foo
1585 foo:
1586 .weak foo
1587 .weak bar; bar = foo
1588 EOF
1589 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1590 libc_cv_asm_weak_directive=yes
1591 else
1592 libc_cv_asm_weak_directive=no
1593 fi
1594 rm -f conftest*])
1595
1596 if test $libc_cv_asm_weak_directive = no; then
1597 AC_CACHE_CHECK(for assembler .weakext directive,
1598 libc_cv_asm_weakext_directive,
1599 [dnl
1600 cat > conftest.s <<EOF
1601 ${libc_cv_dot_text}
1602 ${libc_cv_asm_global_directive} foo
1603 foo:
1604 .weakext bar foo
1605 .weakext baz
1606 ${libc_cv_asm_global_directive} baz
1607 baz:
1608 EOF
1609 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1610 libc_cv_asm_weakext_directive=yes
1611 else
1612 libc_cv_asm_weakext_directive=no
1613 fi
1614 rm -f conftest*])
1615
1616 fi # no .weak
1617
1618 if test $libc_cv_asm_weak_directive = yes; then
1619 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1620 elif test $libc_cv_asm_weakext_directive = yes; then
1621 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1622 fi
1623
1624 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1625 cat > conftest.s <<EOF
1626 .text
1627 .type func,@function
1628 func:
1629 .cfi_startproc
1630 .cfi_remember_state
1631 .cfi_rel_offset 1, 0
1632 .cfi_endproc
1633 EOF
1634 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1635 libc_cv_asm_cfi_directives=yes
1636 else
1637 libc_cv_asm_cfi_directives=no
1638 fi
1639 rm -f conftest*])
1640 if test $libc_cv_asm_cfi_directives = yes; then
1641 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1642 fi
1643
1644 AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1645 libc_cv_cpp_asm_debuginfo, [dnl
1646 cat > conftest.S <<EOF
1647 #include "confdefs.h"
1648
1649 /* comment on
1650 two lines */
1651 ${libc_cv_dot_text}
1652 ${libc_cv_asm_global_directive} foo
1653 foo:
1654 /* Unfortunately this test only works for a real instruction,
1655 not for any of the machine-independent pseudo-ops.
1656 So we just have to assume everybody has a "nop". */
1657 nop
1658 /* comment */
1659 nop
1660 /* comment */
1661 nop
1662 EOF
1663 if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) && {
1664 ac_pattern='conftest\.S'
1665 AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1666 grep $ac_pattern 1>&AS_MESSAGE_LOG_FD])
1667 }; then
1668 libc_cv_cpp_asm_debuginfo=yes
1669 else
1670 libc_cv_cpp_asm_debuginfo=no
1671 fi
1672 rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1673 if test $libc_cv_cpp_asm_debuginfo = yes; then
1674 AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1675 fi
1676
1677 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1678 cat > conftest.c <<\EOF
1679 _start () {}
1680 int __eh_pc;
1681 __throw () {}
1682 EOF
1683 dnl No \ in command here because it ends up inside ''.
1684 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1685 -nostdlib -nostartfiles -Wl,--no-whole-archive
1686 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1687 libc_cv_ld_no_whole_archive=yes
1688 else
1689 libc_cv_ld_no_whole_archive=no
1690 fi
1691 rm -f conftest*])
1692 if test $libc_cv_ld_no_whole_archive = yes; then
1693 no_whole_archive=-Wl,--no-whole-archive
1694 fi
1695 AC_SUBST(no_whole_archive)dnl
1696
1697 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1698 cat > conftest.c <<\EOF
1699 _start () {}
1700 int __eh_pc;
1701 __throw () {}
1702 EOF
1703 dnl No \ in command here because it ends up inside ''.
1704 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1705 -nostdlib -nostartfiles -fexceptions
1706 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1707 libc_cv_gcc_exceptions=yes
1708 else
1709 libc_cv_gcc_exceptions=no
1710 fi
1711 rm -f conftest*])
1712 if test $libc_cv_gcc_exceptions = yes; then
1713 exceptions=-fexceptions
1714 fi
1715 AC_SUBST(exceptions)dnl
1716
1717 if test "$host_cpu" = powerpc ; then
1718 # Check for a bug present in at least versions 2.8.x of GCC
1719 # and versions 1.0.x of EGCS.
1720 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1721 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1722 libc_cv_c_asmcr0_bug='no',
1723 libc_cv_c_asmcr0_bug='yes')])
1724 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1725 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1726 fi
1727 fi
1728
1729 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1730 [cat > conftest.c <<EOF
1731 #line $LINENO "configure"
1732 static char *__EH_FRAME_BEGIN__;
1733 _start ()
1734 {
1735 #ifdef CHECK__register_frame
1736 __register_frame (__EH_FRAME_BEGIN__);
1737 __deregister_frame (__EH_FRAME_BEGIN__);
1738 #endif
1739 #ifdef CHECK__register_frame_info
1740 __register_frame_info (__EH_FRAME_BEGIN__);
1741 __deregister_frame_info (__EH_FRAME_BEGIN__);
1742 #endif
1743 }
1744 int __eh_pc;
1745 __throw () {}
1746 /* FIXME: this is fragile. */
1747 malloc () {}
1748 strcmp () {}
1749 strlen () {}
1750 memcpy () {}
1751 memset () {}
1752 free () {}
1753 abort () {}
1754 __bzero () {}
1755 dl_iterate_phdr () {}
1756 EOF
1757 libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1758 $LDFLAGS \
1759 -nostdlib -nostartfiles -o conftest conftest.c \
1760 -lgcc"
1761 # Some platforms' specs put -lgcc first. The second one doesn't hurt.
1762 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1763 AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1764 then
1765 if $libc_unwind_check -v 2>&1 >/dev/null \
1766 | grep -- --eh-frame-hdr 2>&1 >/dev/null; then
1767 libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1768 else
1769 libc_cv_gcc_dwarf2_unwind_info=static
1770 fi
1771 else
1772 libc_cv_gcc_dwarf2_unwind_info=no
1773 fi
1774 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1775 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1776 $LDFLAGS -nostdlib -nostartfiles
1777 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1778 libc_cv_gcc_dwarf2_unwind_info=yes
1779 else
1780 libc_cv_gcc_dwarf2_unwind_info=no
1781 fi
1782 fi
1783 rm -f conftest*])
1784 case $libc_cv_gcc_dwarf2_unwind_info in
1785 yes)
1786 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1787 ;;
1788 static)
1789 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1790 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1791 ;;
1792 esac
1793
1794 dnl Check whether compiler understands __builtin_expect.
1795 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1796 [cat > conftest.c <<EOF
1797 #line $LINENO "configure"
1798 int foo (int a)
1799 {
1800 a = __builtin_expect (a, 10);
1801 return a == 10 ? 0 : 1;
1802 }
1803 EOF
1804 dnl No \ in command here because it ends up inside ''.
1805 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1806 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1807 libc_cv_gcc_builtin_expect=yes
1808 else
1809 libc_cv_gcc_builtin_expect=no
1810 fi
1811 rm -f conftest*])
1812 if test "$libc_cv_gcc_builtin_expect" = yes; then
1813 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1814 fi
1815
1816 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1817 cat > conftest.c <<\EOF
1818 void zero (void *x)
1819 {
1820 __builtin_memset (x, 0, 1000);
1821 }
1822 EOF
1823 dnl
1824 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1825 then
1826 libc_cv_gcc_builtin_memset=no
1827 else
1828 libc_cv_gcc_builtin_memset=yes
1829 fi
1830 rm -f conftest* ])
1831 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1832 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1833 fi
1834
1835 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1836 cat > conftest.c <<\EOF
1837 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1838 char *foo (const char *a, const char *b)
1839 {
1840 return __builtin_strstr (a, b);
1841 }
1842 EOF
1843 dnl
1844 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1845 then
1846 libc_cv_gcc_builtin_redirection=yes
1847 else
1848 libc_cv_gcc_builtin_redirection=no
1849 fi
1850 rm -f conftest* ])
1851 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
1852 AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
1853 fi
1854
1855 dnl Check whether the compiler supports subtraction of local labels.
1856 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1857 [cat > conftest.c <<EOF
1858 changequote(,)dnl
1859 #line $LINENO "configure"
1860 int foo (int a)
1861 {
1862 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1863 void *p = &&l1 + ar[a];
1864 goto *p;
1865 l1:
1866 return 1;
1867 l2:
1868 return 2;
1869 }
1870 changequote([,])dnl
1871 EOF
1872 dnl No \ in command here because it ends up inside ''.
1873 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1874 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1875 libc_cv_gcc_subtract_local_labels=yes
1876 else
1877 libc_cv_gcc_subtract_local_labels=no
1878 fi
1879 rm -f conftest*])
1880 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1881 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1882 fi
1883
1884 dnl Check whether the compiler supports the __thread keyword.
1885 if test "x$use__thread" != xno; then
1886 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1887 [cat > conftest.c <<\EOF
1888 __thread int a = 42;
1889 EOF
1890 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1891 libc_cv_gcc___thread=yes
1892 else
1893 libc_cv_gcc___thread=no
1894 fi
1895 rm -f conftest*])
1896 if test "$libc_cv_gcc___thread" = yes; then
1897 AC_DEFINE(HAVE___THREAD)
1898 fi
1899 else
1900 libc_cv_gcc___thread=no
1901 fi
1902
1903 if test "$libc_cv_gcc___thread" = yes; then
1904 dnl Check whether the compiler supports the tls_model attribute.
1905 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1906 cat > conftest.c <<\EOF
1907 extern __thread int a __attribute__((tls_model ("initial-exec")));
1908 EOF
1909 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1910 libc_cv_gcc_tls_model_attr=yes
1911 else
1912 libc_cv_gcc_tls_model_attr=no
1913 fi
1914 rm -f conftest*])
1915 if test "$libc_cv_gcc_tls_model_attr" = yes; then
1916 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1917 fi
1918 fi
1919
1920 dnl Check whether we have the gd library available.
1921 AC_MSG_CHECKING(for libgd)
1922 if test "$with_gd" != "no"; then
1923 old_CFLAGS="$CFLAGS"
1924 CFLAGS="$CFLAGS $libgd_include"
1925 old_LDFLAGS="$LDFLAGS"
1926 LDFLAGS="$LDFLAGS $libgd_ldflags"
1927 old_LIBS="$LIBS"
1928 LIBS="$LIBS -lgd -lpng -lz -lm"
1929 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1930 CFLAGS="$old_CFLAGS"
1931 LDFLAGS="$old_LDFLAGS"
1932 LIBS="$old_LIBS"
1933 else
1934 LIBGD=no
1935 fi
1936 AC_MSG_RESULT($LIBGD)
1937 AC_SUBST(LIBGD)
1938
1939 # SELinux detection
1940 if test x$with_selinux = xno ; then
1941 have_selinux=no;
1942 else
1943 # See if we have the SELinux library
1944 AC_CHECK_LIB(selinux, is_selinux_enabled,
1945 have_selinux=yes, have_selinux=no)
1946 # See if we have the SELinux header with the NSCD permissions in it.
1947 if test x$have_selinux = xyes ; then
1948 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1949 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1950 [#ifdef NSCD__SHMEMHOST
1951 return 0;
1952 #else
1953 #error NSCD__SHMEMHOST not defined
1954 #endif],
1955 have_selinux=yes, have_selinux=no)
1956 AC_MSG_RESULT($have_selinux)
1957 fi
1958
1959 if test x$with_selinux = xyes ; then
1960 if test x$have_selinux = xno ; then
1961 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1962 fi
1963 fi
1964 fi
1965 # Check if we're building with SELinux support.
1966 if test "x$have_selinux" = xyes; then
1967 AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
1968 fi
1969 AC_SUBST(have_selinux)
1970
1971 dnl check for the size of 'long double'.
1972 AC_CHECK_SIZEOF(long double, 0)
1973 sizeof_long_double=$ac_cv_sizeof_long_double
1974 AC_SUBST(sizeof_long_double)
1975
1976 ### End of automated tests.
1977 ### Now run sysdeps configure fragments.
1978
1979 # They also can set these variables.
1980 use_ldconfig=no
1981 ldd_rewrite_script=no
1982 libc_cv_sysconfdir=$sysconfdir
1983 libc_cv_gcc_unwind_find_fde=no
1984 libc_cv_idn=no
1985
1986 # Iterate over all the sysdep directories we will use, running their
1987 # configure fragments, and looking for a uname implementation.
1988 uname=
1989 for dir in $sysnames; do
1990 case $dir in
1991 /*) dest=$dir ;;
1992 *) dest=$srcdir/$dir ;;
1993 esac
1994 if test -r $dest/configure; then
1995 AC_MSG_RESULT(running configure fragment for $dir)
1996 . $dest/configure
1997 fi
1998 [
1999 if test -z "$uname"; then
2000 if test -r $dest/uname.c ||
2001 test -r $dest/uname.S ||
2002 { test -r $dest/syscalls.list &&
2003 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
2004 uname=$dir
2005 fi
2006 fi
2007 ]dnl
2008 done
2009
2010 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2011 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2012 fi
2013 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2014
2015 # If we will use the generic uname implementation, we must figure out what
2016 # it will say by examining the system, and write the results in config-name.h.
2017 if test "$uname" = "sysdeps/generic"; then
2018
2019 changequote(,)dnl
2020 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
2021 changequote([,])dnl
2022 if test $uname_sysname != $config_os; then
2023 config_release=`echo $config_os | sed s/$uname_sysname//`
2024 fi
2025 dnl
2026 AC_DEFUN(LIBC_KERNEL_ID, [dnl
2027 if test -r /vmunix; then
2028 kernel_id=`strings /vmunix | grep UNIX`
2029 elif test -r /dynix; then
2030 kernel_id=`strings /dynix | grep DYNIX`
2031 else
2032 kernel_id=
2033 fi
2034 ])dnl
2035
2036 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
2037 LIBC_KERNEL_ID
2038 changequote(,)dnl
2039 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
2040 changequote([,])dnl
2041 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
2042 != x$config_release; then
2043 # The configuration release is a substring of the kernel release.
2044 libc_cv_uname_release=$kernel_release
2045 elif test x$config_release != x; then
2046 libc_cv_uname_release=$config_release
2047 elif test x$kernel_release != x; then
2048 libc_cv_uname_release=$kernel_release
2049 else
2050 libc_cv_uname_release=unknown
2051 fi])
2052 uname_release="$libc_cv_uname_release"
2053
2054 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
2055 LIBC_KERNEL_ID
2056 changequote(,)dnl
2057 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
2058 changequote([,])dnl
2059 if test -n "$kernel_version"; then
2060 libc_cv_uname_version="$kernel_version"
2061 else
2062 libc_cv_uname_version=unknown
2063 fi])
2064 uname_version="$libc_cv_uname_version"
2065
2066 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
2067 config_uname=config-name.h:config-name.in
2068 else
2069 # For non-generic uname, we don't need to create config-name.h at all.
2070 config_uname=
2071 fi
2072
2073 dnl This is tested by existing code and it's simpler to avoid changing it.
2074 AC_DEFINE(USE_IN_LIBIO)
2075
2076 # Test for old glibc 2.0.x headers so that they can be removed properly
2077 # Search only in includedir.
2078 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2079 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2080 then
2081 old_glibc_headers=yes
2082 else
2083 old_glibc_headers=no
2084 fi
2085 AC_MSG_RESULT($old_glibc_headers)
2086 if test ${old_glibc_headers} = yes; then
2087 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2088 AC_MSG_WARN(*** be removed.)
2089 fi
2090 AC_SUBST(old_glibc_headers)
2091
2092 AC_SUBST(libc_cv_slibdir)
2093 AC_SUBST(libc_cv_localedir)
2094 AC_SUBST(libc_cv_sysconfdir)
2095 AC_SUBST(libc_cv_rootsbindir)
2096 AC_SUBST(libc_cv_forced_unwind)
2097
2098 AC_SUBST(use_ldconfig)
2099 AC_SUBST(ldd_rewrite_script)
2100
2101 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
2102 if test $gnu_ld = yes; then
2103 AC_DEFINE(HAVE_GNU_LD)
2104 fi
2105 if test $gnu_as = yes; then
2106 AC_DEFINE(HAVE_GNU_AS)
2107 fi
2108 if test $elf = yes; then
2109 AC_DEFINE(HAVE_ELF)
2110 fi
2111 if test $xcoff = yes; then
2112 AC_DEFINE(HAVE_XCOFF)
2113 fi
2114
2115 AC_SUBST(static)
2116 AC_SUBST(shared)
2117 if test $shared = default; then
2118 if test $gnu_ld = yes; then
2119 shared=$elf
2120 else
2121 # For now we do not assume shared libs are available. In future more
2122 # tests might become available.
2123 shared=no
2124 fi
2125 fi
2126
2127 if test x"$libc_cv_idn" = xyes; then
2128 AC_DEFINE(HAVE_LIBIDN)
2129 fi
2130
2131 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
2132 [pic_default=yes
2133 cat > conftest.c <<EOF
2134 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2135 # error PIC is default.
2136 #endif
2137 EOF
2138 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2139 pic_default=no
2140 fi
2141 rm -f conftest.*])
2142 AC_SUBST(pic_default)
2143
2144 AC_SUBST(profile)
2145 AC_SUBST(omitfp)
2146 AC_SUBST(bounded)
2147 AC_SUBST(static_nss)
2148 AC_SUBST(nopic_initfini)
2149
2150 AC_SUBST(DEFINES)
2151
2152 case "$add_ons" in
2153 *door*) linux_doors=yes ;;
2154 *) linux_doors=no ;;
2155 esac
2156 AC_SUBST(linux_doors)
2157
2158 dnl See sysdeps/mach/configure.in for this variable.
2159 AC_SUBST(mach_interface_list)
2160
2161 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2162 config_makefile=
2163 else
2164 config_makefile=Makefile
2165 fi
2166
2167 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2168 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2169 AC_SUBST(VERSION)
2170 AC_SUBST(RELEASE)
2171
2172 AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
2173 AC_CONFIG_COMMANDS([default],[[
2174 case $CONFIG_FILES in *config.make*)
2175 echo "$config_vars" >> config.make;;
2176 esac
2177 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2178 AC_OUTPUT