Formerly ../configure.in.~47~
[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* | irix4*)
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     for x in $implied; do
334       test -d $sysdep_dir/$x || echo "Warning: $name implies nonexistent $x">&2
335     done
336   else
337     implied=
338   fi
339
340   # Add NAME to the list of names.
341   names="$names $name"
342
343   # Find the parent of NAME, using the empty string if it has none.
344   parent="`echo $name | sed -n -e '/\//!q' -e 's=/[^/]*$==p'`"
345
346   # Append the names implied by NAME, and NAME's parent (if it has one),
347   # to the list of names to be processed (the argument list).
348   sysnames="`echo $* $implied $parent`"
349   if [ "$sysnames" != "" ]; then
350     set $sysnames
351   fi
352 done
353
354 # Add the default directories.
355 names="$names generic stub"
356
357 # Now uniquize the list.
358 seen=
359 sysnames=
360 for name in $names; do
361   if echo "$seen" | fgrep -x $name >/dev/null; then
362     # Already in the list.
363     true;
364   else
365     # A new one.
366     if [ "$seen" = "" ]; then
367       seen="$name" sysnames="$name"
368     else
369       seen="$seen
370 $name"
371       sysnames="$sysnames $name"
372     fi
373   fi
374 done
375
376 echo Using system-dependent files from directories:
377 for dir in $sysnames; do echo " $dir"; done
378
379 changequote([,])dnl The world is now safe for m4, and unsafe for shell.
380 dnl Be sure to add each macro used here to aclocal.m4 (which see).
381
382 dnl Without this hack, AC_PROG_INSTALL will expand ${srcdir} in the name.
383 define([AC_PROG_INSTALL_INSTALL_SH], ['$(..)install.sh -c'])
384 AC_PROG_INSTALL
385 AC_PROG_RANLIB
386
387 AC_PROG_CC
388 AC_PROG_CPP
389
390 echo checking for signed size_t type
391 echo '#include <stddef.h>
392 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
393 eval "$CPP conftest.c 2>/dev/null" \
394 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null \
395 || {
396   dnl Do this by hand instead of AC_DEFINE so we can use -U to avoid warnings.
397   DEFS="$DEFS -U__SIZE_TYPE__ -D__SIZE_TYPE__=unsigned"
398   (echo '#undef __SIZE_TYPE__';
399    echo '#define __SIZE_TYPE__ unsigned') >> confdefs.h
400   test -n "$verbose" && echo '  using unsigned int for size_t'
401 }
402 rm -f conftest*
403
404 AC_HEADER_EGREP(__gnuc_va_list, stdarg.h, [config_vars="$config_vars
405 stdarg.h = # The installed <stdarg.h> defines __gnuc_va_list."])
406
407 AC_COMPILE_CHECK([libc-friendly stddef.h],
408 [#define __need_size_t
409 #define __need_wchar_t
410 #include <stddef.h>
411 #define __need_NULL
412 #include <stddef.h>], [size_t size; wchar_t wchar;
413 #ifdef offsetof
414 #error stddef.h ignored __need_*
415 #endif
416 if (&size == NULL || &wchar == NULL) abort ();],
417 [config_vars="$config_vars
418 stddef.h = # The installed <stddef.h> seems to be libc-friendly."
419 test -n "$verbose" && echo '    installed stddef.h looks friendly'])
420
421 changequote(,)dnl The world is again safe for shell scripts.
422
423 echo 'checking for need to use -P to assemble .S files'
424 cat > conftest.S <<EOF
425 #include "confdefs.h"
426 /* Nothing whatsoever.  */
427 EOF
428 ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null || {
429   config_vars="$config_vars
430 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
431   test -n "$verbose" && echo '  using -P flag'
432 }
433 rm -f conftest*
434
435 # Iterate over all the sysdep directories we will use, running their
436 # configure fragments, and looking for a uname implementation.
437 uname=
438 for dir in $sysnames; do
439   if test -r $sysdep_dir/$dir/configure; then
440     echo running configure fragment for $dir
441     . $sysdep_dir/$dir/configure
442   fi
443   test ! "$uname" && \
444   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
445 done
446
447 # If we will use the generic uname implementation, we must figure out what
448 # it will say by examining the system, and write the results in config-name.h.
449 if [ "$uname" = generic ]; then
450
451   echo trying to guess OS release and version for uname
452
453   kernel_release=
454   kernel_version=
455
456   if [ ! "$release" -o ! "$version" ]; then
457     if [ -r /vmunix ]; then
458       kernel_id=`strings /vmunix | grep UNIX`
459     elif [ -r /dynix ]; then
460       kernel_id=`strings /dynix | grep DYNIX`
461     else
462       kernel_id=
463     fi
464     if [ "$kernel_id" ]; then
465       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
466       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
467     fi
468   fi
469
470   sysname=`echo $os | sed 's/[0-9.]*$//'`
471   if [ $sysname != $os ]; then
472     config_release=`echo $os | sed s/$sysname//`
473   fi
474
475   if [ "$release" ]; then
476     # All is well.
477     true
478   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
479          != x$config_release ]; then
480     # The configuration release is a substring of the kernel release.
481     release=$kernel_release
482   elif [ x$config_release != x ]; then
483     release=$config_release
484   elif [ x$kernel_release != x ]; then
485     release=$kernel_release
486   else
487     cat <<END
488 I don't know what release of $sysname you are using.  Please enter the
489 release number now.  This information is used only for the \`uname' function,
490 so it is not critical.
491 END
492     read release
493     if [ ! "$release" ]; then
494       release=unknown
495     fi
496   fi
497
498   if [ "$version" ]; then
499     # All is well.
500     true
501   elif [ ! "$kernel_version" ]; then
502     cat <<END
503 I don't know what version of $sysname $release you are using.  Please enter
504 the version number now.  This information is used only for the uname
505 function, so it is not critical.
506 END
507     read version
508     if [ ! "$version" ]; then
509       version=unknown
510     fi
511   else
512     version=$kernel_version
513   fi
514
515   cat > config-name.h <<END
516 /* This file was generated automatically by configure.  Do not edit.
517    This is used by the generic uname function.  */
518 #define UNAME_SYSNAME "${sysname}"
519 #define UNAME_RELEASE "${release}"
520 #define UNAME_VERSION "${version}"
521 #define UNAME_MACHINE "${config_machine}-${config_vendor}"
522 END
523
524   system_name="$sysname $release version $version on $vendor $machine"
525 else
526   # Not generic uname.  We don't need config-name.h at all.
527   system_name=$config
528 fi
529
530 if [ "$gnu_ld" ]; then
531   DEFS="$DEFS -DHAVE_GNU_LD"
532 fi
533 if [ "$gnu_as" ]; then
534   DEFS="$DEFS -DHAVE_GNU_AS"
535 fi
536
537 (
538   echo '# This file was generated automatically by configure.  Do not edit.'
539   echo '# Put configuration parameters in configparms instead.'
540   echo "config-machine = ${config_machine}"
541   echo "config-vendor = ${config_vendor}"
542   echo "config-os = ${config_os}"
543   echo "config-sysdirs = ${sysnames}"
544   if [ "$prefix" ]; then
545     echo "prefix = ${prefix}"
546   fi
547   if [ "$exec_prefix" ]; then
548     echo "exec_prefix = ${exec_prefix}"
549   fi
550   echo "config-defines = ${DEFS}"
551   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
552     eval "echo \"${var} = \${$var}\""
553   done
554   echo "$config_vars"
555 ) > config.make
556 echo "Wrote config.make in $PWD."
557
558 switches=
559 if [ "$release" ]; then
560   switches="$switches --os-release='$release'"
561 fi
562 if [ "$version" ]; then
563   switches="$switches --os-version='$version'"
564 fi
565
566 if [ $srcdir != . ]; then
567   if [ $srcdir = .. ]; then
568     cwd=`pwd`
569     objdir=`basename $cwd`
570   else
571     objdir=`pwd`
572   fi
573   cat > Makefile <<END
574 # This file was generated automatically by configure.  Do not edit.
575 srcdir = $srcdir
576
577 all .DEFAULT:
578         \$(MAKE) -C \$(srcdir) objdir=\`pwd\` \$@
579 END
580
581 echo "Wrote Makefile in $PWD."
582 fi
583
584 cat > config.status <<END
585 #!/bin/sh
586 # This file was generated automatically by configure.  Do not edit.
587 # The GNU C library was configured in $PWD for
588 # $system_name as follows:
589 $0 $configure_args $switches \$*
590 END
591 chmod a+x config.status
592 echo "Wrote config.status in $PWD."
593
594 exit 0
595 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
596 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
597 dnl Local Variables:
598 dnl compile-command: "autoconf"
599 dnl End: