Formerly ../configure.in.~44~
[kopensolaris-gnu/glibc.git] / configure.in
1 dnl Autoconf sets the quotes to [ and ], which hoses shell commands.
2 dnl We get rid of the quotes altogether, and turn them on for AC_*.
3 changequote(,)dnl
4 #! /bin/sh
5
6 # Configuration script for the GNU C Library.
7 dnl You can ignore the following line if you are reading this sentence.
8 # DO NOT EDIT!  This script is generated from configure.in; edit that instead.
9
10 # Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
11 # This file is part of the GNU C Library.
12
13 # The GNU C Library is free software; you can redistribute it and/or
14 # modify it under the terms of the GNU Library General Public License as
15 # published by the Free Software Foundation; either version 2 of the
16 # License, or (at your option) any later version.
17
18 # The GNU C Library is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21 # Library General Public License for more details.
22
23 # You should have received a copy of the GNU Library General Public
24 # License along with the GNU C Library; see the file COPYING.LIB.  If
25 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
26 # Cambridge, MA 02139, USA.
27
28 #
29 #       Configure the GNU C Library.
30 #
31
32 prog="`basename $0`"
33
34 # All the standard GNU configure options are accepted but only
35 # --nfp, --with-gnu-ld, and --with-gnu-as are meaningful.
36 nfp=
37 gnu_ld=
38 gnu_as=
39 version=
40 release=
41 prefix=
42 exec_prefix=
43 verbose=
44
45 next=
46 lose=
47 for arg in $*; do
48   if [ x$next != x ]; then
49     eval "$next=\$arg"
50     next=
51   else
52     case $arg in
53     -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
54        srcdir=`echo $arg | sed 's/-*s[a-z]*=//'`
55        ;;
56     -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
57        next=srcdir
58        ;;
59     -target | --target | --targe | --targ | --tar | --ta | --t)
60        next=target
61        ;;
62     -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
63        target=`echo $arg | sed 's/-*t[a-z]*=//'`
64        ;; 
65
66     -with-gnu-ld | --with-gnu-ld | --with-gnu-l)
67        gnu_ld=--with-gnu-ld
68        ;;
69
70     -gas | --gas | --ga | --g | -with-gnu-as | --with-gnu-as | -with-gnu-a)
71        gnu_as=--with-gnu-as
72        ;;
73
74     -nfp | --nfp | --nf | --n)
75        nfp=--nfp
76        ;;
77
78     -with-* | --with-*)
79       # For `--with-foo=bar', do "with_foo='bar'".
80       # For `--with-fnord', do "with_fnord=yes".
81       # These variables may be examined by sysdep configure fragments.
82       eval `echo "$arg" | sed '{s/^-*//;s/-/_/g
83 s/^\([^=]*\)=\(.*\)$/\1='\''\2'\''/;s/^\([^=]*\)$/\1=yes/;}'`
84       ;;
85
86     -x | --x)
87       ;; # ignored
88
89     -os-release=* | -os-releas=* | -os-relea=* | -os-rele=* | -os-rel=* \
90     | -os-re=* | -os-r=* | --os-release=* | --os-releas=* | --os-relea=* \
91     | --os-rele=* | --os-rel=* | --os-re=* | --os-r=*)
92       release=`echo $arg | sed 's/-*os-r[a-z]*=//'`
93       ;;
94     -os-release | -os-releas | -os-relea | -os-rele | -os-rel \
95     | -os-re | -os-r | --os-release | --os-releas | --os-relea \
96     | --os-rele | --os-rel | --os-re | --os-r)
97       next=release
98       ;;
99
100     -os-version=* | -os-versio=* | -os-versi=* | -os-vers=* | -os-ver=* \
101     | -os-ver=* | -os-ve=* | -os-v=* | --os-version=* | --os-versio=* \
102     | --os-versi=* | --os-vers=* | --os-ver=* | --os-ver=* | --os-ve=* \
103     | --os-v=*)
104       version=`echo $arg | sed 's/-*os-v[a-z]*=//'`
105       ;;
106     -os-version | -os-versio | -os-versi | -os-vers | -os-ver \
107     | -os-ver | -os-ve | -os-v |--os-version | --os-versio \
108     | --os-versi | --os-vers | --os-ver | --os-ver | --os-ve | --os-v)
109       next=version
110       ;;
111
112     # For backward compatibility, also recognize exact --exec_prefix.
113     -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
114        exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'`
115        ;;
116     -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
117        next=exec_prefix
118        ;;
119
120     -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
121        prefix=`echo $arg | sed 's/[-a-z_]*=//'`
122        ;;
123     -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
124        next=prefix
125        ;;
126
127     -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v)
128       # Autoconf-generated code below will test this.
129       verbose=yes
130       ;;
131
132     -*)
133        echo "Invalid option \`$arg'" 1>&2
134        lose=yes
135        ;;
136     *)
137        if [ ! "$target" ]; then
138          target=$arg
139        else
140          lose=yes
141        fi
142        ;;
143     esac
144   fi
145 done
146
147 # NEXT will be set iff we have seen an option that wants an arg, but no arg.
148 if [ "$next" ]; then
149   echo "$0: the \`--${next}' option requires an argument" >&2
150   lose=yes
151 fi
152
153 dnl This deals with setting srcdir if it needs to be set.
154 changequote([,])
155 AC_PREPARE(features.h)
156 changequote(,)
157
158 # Decanonicalize srcdir so we can tell when we are configuring in srcdir.
159 if [ "`(cd ${srcdir}; pwd)`" = "`pwd`" ]; then
160   srcdir=.
161 fi
162
163 if [ ! "$target" ]; then
164   target=`$srcdir/config.guess`
165   test -n "$target" && echo "No target given; guessing target is ${target}."
166 fi
167
168 if [ "$lose" = yes -o ! "$target" ]; then
169   echo "\
170 Usage: $prog [--srcdir=DIR] [--prefix=DIR] [--exec-prefix=DIR]
171              [--nfp] [--with-gnu-ld] [--with-gnu-as] TARGET" >&2
172   if [ -r config.status ]; then
173     cat config.status >&2
174   fi
175   exit 1
176 fi
177
178 # Done parsing the arguments.
179
180 # This will get text that should go into config.make.
181 config_vars=
182
183 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
184 case "$with_gmp" in
185 yes) echo "$prog: --with-gmp requires an argument; use --with-gmp=DIRECTORY"
186      exit 1 ;;
187 '') ;;
188 *) config_vars="$config_vars
189 gmp-srcdir = $with_gmp" ;;
190 esac
191
192 # Canonicalize the configuration name.
193 config=`$srcdir/config.sub $target`
194 if [ ! "$config" ]; then
195   # config.sub has written an error message.
196   exit 1
197 fi
198
199 sysdep_dir=$srcdir/sysdeps
200
201 # machine-vendor-os
202 eval "`echo $config | \
203        sed 's/^\(.*\)-\(.*\)-\(.*\)$/\
204 config_machine=\1 config_vendor=\2 config_os=\3/'`"
205
206 # We keep the original values in `$config_*' and never modify them, so we
207 # can write them unchanged into config.make.  Everything else uses
208 # $machine, $vendor, and $os, and changes them whenever convenient.
209 machine=$config_machine
210 vendor=$config_vendor
211 os=$config_os
212
213 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
214 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
215
216 case "$machine" in
217 i[34]86)
218   machine=i386/$machine ;;
219 sparc[6789])
220   machine=sparc/$machine ;;
221 m68k)
222   machine=m68k/m68020 ;;
223 m680?0)
224   machine=m68k/$machine ;;
225 m88k)
226   machine=m88k/m88100 ;;
227 m88???)
228   machine=m88k/$machine ;;
229 mips|r2000)
230   machine=mips/r3000 ;;
231 r[34]000)
232   machine=mips/$machine ;;
233 esac
234
235 case "$os" in
236 gnu*)
237   base_os=mach/hurd ;;
238 netbsd* | 386bsd*)
239   base_os=unix/bsd/bsd4.4 ;;
240 osf1* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
241   base_os=unix/bsd ;;
242 linux* | sysv* | isc* | esix* | sco* | minix*)
243   base_os=unix/sysv ;;
244 solaris[2-9]*)
245   base_os=unix/sysv/sysv4 ;;
246 esac
247
248 case "$os:$base_os" in
249 gnu* | linux* | bsd4.4* | *:bsd4.4)
250   gnu_ld=--with-gnu-ld
251   gnu_as=--with-gnu-as
252 esac
253
254 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
255 tail=$os
256 ostry=$os
257 while o=`echo $tail | sed 's/\.[^.]*$//'`; [ $o != $tail ]; do
258   ostry="$ostry /$o"
259   tail=$o
260 done  
261 o=`echo $tail | sed 's/[0-9]*$//'`
262 if [ $o != $tail ]; then
263   ostry="$ostry /$o"
264 fi
265
266 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
267 base=
268 tail=$base_os
269 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; [ "$b" ]; do
270   set $b
271   base="$base /$1"
272   tail="$2"
273 done
274
275 # For sparc/sparc9, try sparc/sparc9 and then sparc.
276 mach=
277 tail=$machine
278 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; [ "$m" ]; do
279   set $m
280   mach="$mach /$1"
281   tail="$2"
282 done
283
284 # Find what sysdep directories exist.
285 sysnames=
286 for b in $base ''; do
287   for v in /$vendor ''; do
288     for o in /$ostry ''; do
289       for m in $mach ''; do
290         if [ -d $sysdep_dir$b$v$o$m ]; then
291           sysnames="$sysnames $b$v$o$m"
292           [ "$o" -o "$b" ] && os_used=t
293           [ "$m" ] && machine_used=t
294         fi
295       done
296     done
297   done
298 done
299
300 if [ ! "$os_used" -a "$os" != none ]; then
301   echo Operating system $os is not supported. >&2
302   exit 1
303 fi
304 if [ ! "$machine_used" -a "$machine" != none ]; then
305   echo The $machine is not supported. >&2
306   exit 1
307 fi
308
309 # We have now validated the configuration.
310
311 PWD=`pwd`
312 echo Configuring the GNU C library in $PWD
313 echo on `(hostname || uname -n) 2>/dev/null | sed 1q` for ${config}.
314
315 # Remove the leading slashes.
316 sysnames="`echo $sysnames | sed -e 's@^/@@' -e 's@ /@ @g'`"
317
318 # Prepend the machine's FPU directory unless --nfp.
319 if [ ! "$nfp" -a -d $sysdep_dir/$machine/fpu ]; then
320   sysnames="${machine}/fpu $sysnames"
321 fi
322
323 # Expand the list of system names into a full list of directories
324 # from each element's parent name and Implies file (if present).
325 set $sysnames
326 while [ $# -gt 0 ]; do
327   name=$1
328   shift
329
330   if [ -f $sysdep_dir/$name/Implies ]; then
331     # Collect more names from the `Implies' file (removing comments).
332     implied="`sed 's/#.*$//' < $sysdep_dir/$name/Implies`"
333   else
334     implied=
335   fi
336
337   # Add NAME to the list of names.
338   names="$names $name"
339
340   # Find the parent of NAME, using the empty string if it has none.
341   parent="`echo $name | sed -n -e '/\//!q' -e 's=/[^/]*$==p'`"
342
343   # Append the names implied by NAME, and NAME's parent (if it has one),
344   # to the list of names to be processed (the argument list).
345   sysnames="`echo $* $implied $parent`"
346   if [ "$sysnames" != "" ]; then
347     set $sysnames
348   fi
349 done
350
351 # Add the default directories.
352 names="$names generic stub"
353
354 # Now uniquize the list.
355 seen=
356 sysnames=
357 for name in $names; do
358   if echo "$seen" | fgrep -x $name >/dev/null; then
359     # Already in the list.
360     true;
361   else
362     # A new one.
363     if [ "$seen" = "" ]; then
364       seen="$name" sysnames="$name"
365     else
366       seen="$seen
367 $name"
368       sysnames="$sysnames $name"
369     fi
370   fi
371 done
372
373 echo Using system-dependent files from directories:
374 for dir in $sysnames; do echo " $dir"; done
375
376 changequote([,])dnl The world is now safe for m4, and unsafe for shell.
377 dnl Be sure to add each macro used here to aclocal.m4 (which see).
378
379 dnl Without this hack, AC_PROG_INSTALL will expand ${srcdir} in the name.
380 define([AC_PROG_INSTALL_INSTALL_SH], ['$(..)install.sh -c'])
381 AC_PROG_INSTALL
382 AC_PROG_RANLIB
383
384 AC_PROG_CC
385 AC_PROG_CPP
386
387 echo checking for signed size_t type
388 echo '#include <stddef.h>
389 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
390 eval "$CPP conftest.c 2>/dev/null" \
391 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null \
392 || {
393   dnl Do this by hand instead of AC_DEFINE so we can use -U to avoid warnings.
394   DEFS="$DEFS -U__SIZE_TYPE__ -D__SIZE_TYPE__=unsigned"
395   (echo '#undef __SIZE_TYPE__';
396    echo '#define __SIZE_TYPE__ unsigned') >> confdefs.h
397   test -n "$verbose" && echo '  using unsigned int for size_t'
398 }
399 rm -f conftest*
400
401 AC_HEADER_EGREP(__gnuc_va_list, stdarg.h, [config_vars="$config_vars
402 stdarg.h = # The installed <stdarg.h> defines __gnuc_va_list."])
403
404 AC_COMPILE_CHECK([libc-friendly stddef.h],
405 [#define __need_size_t
406 #define __need_wchar_t
407 #include <stddef.h>
408 #define __need_NULL
409 #include <stddef.h>], [size_t size; wchar_t wchar;
410 #ifdef offsetof
411 #error stddef.h ignored __need_*
412 #endif
413 if (&size == NULL || &wchar == NULL) abort ();],
414 [config_vars="$config_vars
415 stddef.h = # The installed <stddef.h> seems to be libc-friendly."
416 test -n "$verbose" && echo '    installed stddef.h looks friendly'])
417
418 changequote(,)dnl The world is again safe for shell scripts.
419
420 echo 'checking for need to use -P to assemble .S files'
421 cat > conftest.S <<EOF
422 #include "confdefs.h"
423 /* Nothing whatsoever.  */
424 EOF
425 ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null || {
426   config_vars="$config_vars
427 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
428   test -n "$verbose" && echo '  using -P flag'
429 }
430 rm -f conftest*
431
432 # Iterate over all the sysdep directories we will use, running their
433 # configure fragments, and looking for a uname implementation.
434 uname=
435 for dir in $sysnames; do
436   if test -r $sysdep_dir/$dir/configure; then
437     echo running configure fragment for $dir
438     . $sysdep_dir/$dir/configure
439   fi
440   test ! "$uname" && \
441   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
442 done
443
444 # If we will use the generic uname implementation, we must figure out what
445 # it will say by examining the system, and write the results in config-name.h.
446 if [ "$uname" = generic ]; then
447
448   echo trying to guess OS release and version for uname
449
450   kernel_release=
451   kernel_version=
452
453   if [ ! "$release" -o ! "$version" ]; then
454     if [ -r /vmunix ]; then
455       kernel_id=`strings /vmunix | grep UNIX`
456     elif [ -r /dynix ]; then
457       kernel_id=`strings /dynix | grep DYNIX`
458     else
459       kernel_id=
460     fi
461     if [ "$kernel_id" ]; then
462       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
463       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
464     fi
465   fi
466
467   sysname=`echo $os | sed 's/[0-9.]*$//'`
468   if [ $sysname != $os ]; then
469     config_release=`echo $os | sed s/$sysname//`
470   fi
471
472   if [ "$release" ]; then
473     # All is well.
474     true
475   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
476          != x$config_release ]; then
477     # The configuration release is a substring of the kernel release.
478     release=$kernel_release
479   elif [ x$config_release != x ]; then
480     release=$config_release
481   elif [ x$kernel_release != x ]; then
482     release=$kernel_release
483   else
484     cat <<END
485 I don't know what release of $sysname you are using.  Please enter the
486 release number now.  This information is used only for the \`uname' function,
487 so it is not critical.
488 END
489     read release
490     if [ ! "$release" ]; then
491       release=unknown
492     fi
493   fi
494
495   if [ "$version" ]; then
496     # All is well.
497     true
498   elif [ ! "$kernel_version" ]; then
499     cat <<END
500 I don't know what version of $sysname $release you are using.  Please enter
501 the version number now.  This information is used only for the uname
502 function, so it is not critical.
503 END
504     read version
505     if [ ! "$version" ]; then
506       version=unknown
507     fi
508   else
509     version=$kernel_version
510   fi
511
512   cat > config-name.h <<END
513 /* This file was generated automatically by configure.  Do not edit.
514    This is used by the generic uname function.  */
515 #define UNAME_SYSNAME "${sysname}"
516 #define UNAME_RELEASE "${release}"
517 #define UNAME_VERSION "${version}"
518 #define UNAME_MACHINE "${config_machine}-${config_vendor}"
519 END
520
521   system_name="$sysname $release version $version on $vendor $machine"
522 else
523   # Not generic uname.  We don't need config-name.h at all.
524   system_name=$config
525 fi
526
527 if [ "$gnu_ld" ]; then
528   DEFS="$DEFS -DHAVE_GNU_LD"
529 fi
530 if [ "$gnu_as" ]; then
531   DEFS="$DEFS -DHAVE_GNU_AS"
532 fi
533
534 (
535   echo '# This file was generated automatically by configure.  Do not edit.'
536   echo '# Put configuration parameters in configparms instead.'
537   echo "config-machine = ${config_machine}"
538   echo "config-vendor = ${config_vendor}"
539   echo "config-os = ${config_os}"
540   echo "config-sysdirs = ${sysnames}"
541   if [ "$prefix" ]; then
542     echo "prefix = ${prefix}"
543   fi
544   if [ "$exec_prefix" ]; then
545     echo "exec_prefix = ${exec_prefix}"
546   fi
547   echo "config-defines = ${DEFS}"
548   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
549     eval "echo \"${var} = \${$var}\""
550   done
551   echo "$config_vars"
552 ) > config.make
553 echo "Wrote config.make in $PWD."
554
555 switches=
556 if [ "$release" ]; then
557   switches="$switches --os-release='$release'"
558 fi
559 if [ "$version" ]; then
560   switches="$switches --os-version='$version'"
561 fi
562
563 if [ $srcdir != . ]; then
564   if [ $srcdir = .. ]; then
565     cwd=`pwd`
566     objdir=`basename $cwd`
567   else
568     objdir=`pwd`
569   fi
570   cat > Makefile <<END
571 # This file was generated automatically by configure.  Do not edit.
572 srcdir = $srcdir
573
574 all .DEFAULT:
575         \$(MAKE) -C \$(srcdir) ARCH=\`pwd\` \$@
576 END
577
578 echo "Wrote Makefile in $PWD."
579 fi
580
581 cat > config.status <<END
582 #!/bin/sh
583 # This file was generated automatically by configure.  Do not edit.
584 # The GNU C library was configured in $PWD for
585 # $system_name as follows:
586 $0 $configure_args $switches \$*
587 END
588 chmod a+x config.status
589 echo "Wrote config.status in $PWD."
590
591 exit 0
592 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
593 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
594 dnl Local Variables:
595 dnl compile-command: "autoconf"
596 dnl End: