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