Formerly ../configure.in.~43~
[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
417 changequote(,)dnl The world is again safe for shell scripts.
418
419 # Iterate over all the sysdep directories we will use, running their
420 # configure fragments, and looking for a uname implementation.
421 uname=
422 for dir in $sysnames; do
423   if test -r $sysdep_dir/$dir/configure; then
424     echo running configure fragment for $dir
425     . $sysdep_dir/$dir/configure
426   fi
427   test ! "$uname" && \
428   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
429 done
430
431 # If we will use the generic uname implementation, we must figure out what
432 # it will say by examining the system, and write the results in config-name.h.
433 if [ "$uname" = generic ]; then
434
435   echo trying to guess OS release and version for uname
436
437   kernel_release=
438   kernel_version=
439
440   if [ ! "$release" -o ! "$version" ]; then
441     if [ -r /vmunix ]; then
442       kernel_id=`strings /vmunix | grep UNIX`
443     elif [ -r /dynix ]; then
444       kernel_id=`strings /dynix | grep DYNIX`
445     else
446       kernel_id=
447     fi
448     if [ "$kernel_id" ]; then
449       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
450       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
451     fi
452   fi
453
454   sysname=`echo $os | sed 's/[0-9.]*$//'`
455   if [ $sysname != $os ]; then
456     config_release=`echo $os | sed s/$sysname//`
457   fi
458
459   if [ "$release" ]; then
460     # All is well.
461     true
462   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
463          != x$config_release ]; then
464     # The configuration release is a substring of the kernel release.
465     release=$kernel_release
466   elif [ x$config_release != x ]; then
467     release=$config_release
468   elif [ x$kernel_release != x ]; then
469     release=$kernel_release
470   else
471     cat <<END
472 I don't know what release of $sysname you are using.  Please enter the
473 release number now.  This information is used only for the \`uname' function,
474 so it is not critical.
475 END
476     read release
477     if [ ! "$release" ]; then
478       release=unknown
479     fi
480   fi
481
482   if [ "$version" ]; then
483     # All is well.
484     true
485   elif [ ! "$kernel_version" ]; then
486     cat <<END
487 I don't know what version of $sysname $release you are using.  Please enter
488 the version number now.  This information is used only for the uname
489 function, so it is not critical.
490 END
491     read version
492     if [ ! "$version" ]; then
493       version=unknown
494     fi
495   else
496     version=$kernel_version
497   fi
498
499   cat > config-name.h <<END
500 /* This file was generated automatically by configure.  Do not edit.
501    This is used by the generic uname function.  */
502 #define UNAME_SYSNAME "${sysname}"
503 #define UNAME_RELEASE "${release}"
504 #define UNAME_VERSION "${version}"
505 #define UNAME_MACHINE "${config_machine}-${config_vendor}"
506 END
507
508   system_name="$sysname $release version $version on $vendor $machine"
509 else
510   # Not generic uname.  We don't need config-name.h at all.
511   system_name=$config
512 fi
513
514 if [ "$gnu_ld" ]; then
515   DEFS="$DEFS -DHAVE_GNU_LD"
516 fi
517 if [ "$gnu_as" ]; then
518   DEFS="$DEFS -DHAVE_GNU_AS"
519 fi
520
521 (
522   echo '# This file was generated automatically by configure.  Do not edit.'
523   echo '# Put configuration parameters in configparms instead.'
524   echo "config-machine = ${config_machine}"
525   echo "config-vendor = ${config_vendor}"
526   echo "config-os = ${config_os}"
527   echo "config-sysdirs = ${sysnames}"
528   if [ "$prefix" ]; then
529     echo "prefix = ${prefix}"
530   fi
531   if [ "$exec_prefix" ]; then
532     echo "exec_prefix = ${exec_prefix}"
533   fi
534   echo "config-defines = ${DEFS}"
535   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
536     eval "echo \"${var} = \${$var}\""
537   done
538   echo "$config_vars"
539 ) > config.make
540 echo "Wrote config.make in $PWD."
541
542 switches=
543 if [ "$release" ]; then
544   switches="$switches --os-release='$release'"
545 fi
546 if [ "$version" ]; then
547   switches="$switches --os-version='$version'"
548 fi
549
550 if [ $srcdir != . ]; then
551   if [ $srcdir = .. ]; then
552     cwd=`pwd`
553     objdir=`basename $cwd`
554   else
555     objdir=`pwd`
556   fi
557   cat > Makefile <<END
558 # This file was generated automatically by configure.  Do not edit.
559 srcdir = $srcdir
560
561 all .DEFAULT:
562         \$(MAKE) -C \$(srcdir) ARCH=\`pwd\` \$@
563 END
564
565 echo "Wrote Makefile in $PWD."
566 fi
567
568 cat > config.status <<END
569 #!/bin/sh
570 # This file was generated automatically by configure.  Do not edit.
571 # The GNU C library was configured in $PWD for
572 # $system_name as follows:
573 $0 $configure_args $switches \$*
574 END
575 chmod a+x config.status
576 echo "Wrote config.status in $PWD."
577
578 exit 0
579 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
580 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
581 dnl Local Variables:
582 dnl compile-command: "autoconf"
583 dnl End: