Formerly ../configure.in.~39~
[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 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 "$os" in
217 gnu*)
218   base_os=mach/hurd ;;
219 netbsd* | 386bsd*)
220   base_os=unix/bsd/bsd4.4 ;;
221 osf1* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
222   base_os=unix/bsd ;;
223 linux* | sysv* | isc* | esix* | sco* | minix*)
224   base_os=unix/sysv ;;
225 solaris[2-9]*)
226   base_os=unix/sysv/sysv4 ;;
227 esac
228
229 case "$os:$base_os" in
230 gnu* | linux* | bsd4.4* | *:bsd4.4)
231   gnu_ld=--with-gnu-ld
232   gnu_as=--with-gnu-as
233 esac
234
235 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
236 tail=$os
237 ostry=$os
238 while o=`echo $tail | sed 's/\.[^.]*$//'`; [ $o != $tail ]; do
239   ostry="$ostry /$o"
240   tail=$o
241 done  
242 o=`echo $tail | sed 's/[0-9]*$//'`
243 if [ $o != $tail ]; then
244   ostry="$ostry /$o"
245 fi
246
247 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
248 base=
249 tail=$base_os
250 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; [ "$b" ]; do
251   set $b
252   base="$base /$1"
253   tail="$2"
254 done
255
256 # Find what sysdep directories exist.
257 sysnames=
258 for b in $base ''; do
259   for v in /$vendor ''; do
260     for o in /$ostry ''; do
261       for m in /$machine ''; do
262         if [ -d $sysdep_dir$b$v$o$m ]; then
263           sysnames="$sysnames $b$v$o$m"
264           [ "$o" -o "$b" ] && os_used=t
265           [ "$m" ] && machine_used=t
266         fi
267       done
268     done
269   done
270 done
271
272 if [ ! "$os_used" -a "$os" != none ]; then
273   echo Operating system $os is not supported. >&2
274   exit 1
275 fi
276 if [ ! "$machine_used" -a "$machine" != none ]; then
277   echo The $machine is not supported. >&2
278   exit 1
279 fi
280
281 # We have now validated the configuration.
282
283 PWD=`pwd`
284 echo Configuring the GNU C library in $PWD
285 echo on `(hostname || uname -n) 2>/dev/null | sed 1q` for ${config}.
286
287 # Remove the leading slashes.
288 sysnames="`echo $sysnames | sed -e 's@^/@@' -e 's@ /@ @g'`"
289
290 # Prepend the machine's FPU directory unless --nfp.
291 if [ ! "$nfp" -a -d $sysdep_dir/$machine/fpu ]; then
292   sysnames="${machine}/fpu $sysnames"
293 fi
294
295 # Expand the list of system names into a full list of directories
296 # from each element's parent name and Implies file (if present).
297 set $sysnames
298 while [ $# -gt 0 ]; do
299   name=$1
300   shift
301
302   if [ -f $sysdep_dir/$name/Implies ]; then
303     # Collect more names from the `Implies' file (removing comments).
304     implied="`sed 's/#.*$//' < $sysdep_dir/$name/Implies`"
305   else
306     implied=
307   fi
308
309   # Add NAME to the list of names.
310   names="$names $name"
311
312   # Find the parent of NAME, using the empty string if it has none.
313   parent="`echo $name | sed -n -e '/\//!q' -e 's=/[^/]*$==p'`"
314
315   # Append the names implied by NAME, and NAME's parent (if it has one),
316   # to the list of names to be processed (the argument list).
317   sysnames="`echo $* $implied $parent`"
318   if [ "$sysnames" != "" ]; then
319     set $sysnames
320   fi
321 done
322
323 # Add the default directories.
324 names="$names generic stub"
325
326 # Now uniquize the list.
327 seen=
328 sysnames=
329 for name in $names; do
330   if echo "$seen" | fgrep -x $name >/dev/null; then
331     # Already in the list.
332     true;
333   else
334     # A new one.
335     if [ "$seen" = "" ]; then
336       seen="$name" sysnames="$name"
337     else
338       seen="$seen
339 $name"
340       sysnames="$sysnames $name"
341     fi
342   fi
343 done
344
345 echo Using system-dependent files from directories:
346 for dir in $sysnames; do echo " $dir"; done
347
348 changequote([,])dnl The world is now safe for m4, and unsafe for shell.
349 dnl Be sure to add each macro used here to aclocal.m4 (which see).
350 AC_PROG_INSTALL
351 AC_PROG_RANLIB
352
353 AC_PROG_CC
354 AC_PROG_CPP
355
356 echo checking for signed size_t type
357 echo '#include <stddef.h>
358 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
359 eval "$CPP conftest.c 2>/dev/null" \
360 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null \
361 || {
362   dnl Do this by hand instead of AC_DEFINE so we can use -U to avoid warnings.
363   DEFS="$DEFS -U__SIZE_TYPE__ -D__SIZE_TYPE__=unsigned"
364   (echo '#undef __SIZE_TYPE__';
365    echo '#define __SIZE_TYPE__ unsigned') >> confdefs.h
366   test -n "$verbose" && echo '  using unsigned int for size_t'
367 }
368 rm -f conftest*
369
370 AC_HEADER_EGREP(__gnuc_va_list, stdarg.h, [config_vars="$config_vars
371 stdarg.h = # The installed <stdarg.h> defines __gnuc_va_list."])
372
373 AC_COMPILE_CHECK([libc-friendly stddef.h],
374 [#define __need_size_t
375 #define __need_wchar_t
376 #include <stddef.h>
377 #define __need_NULL
378 #include <stddef.h>], [size_t size; wchar_t wchar;
379 #ifdef offsetof
380 #error stddef.h ignored __need_*
381 #endif
382 if (&size == NULL || &wchar == NULL) abort ();],
383 [config_vars="$config_vars
384 stddef.h = # The installed <stddef.h> seems to be libc-friendly."])
385
386 changequote(,)dnl The world is again safe for shell scripts.
387
388 # Iterate over all the sysdep directories we will use, running their
389 # configure fragments, and looking for a uname implementation.
390 uname=
391 for dir in $sysnames; do
392   if test -r $sysdep_dir/$dir/configure; then
393     echo running configure fragment for $dir
394     . $sysdep_dir/$dir/configure
395   fi
396   test ! "$uname" && \
397   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
398 done
399
400 # If we will use the generic uname implementation, we must figure out what
401 # it will say by examining the system, and write the results in config-name.h.
402 if [ "$uname" = generic ]; then
403
404   echo trying to guess OS release and version for uname
405
406   kernel_release=
407   kernel_version=
408
409   if [ ! "$release" -o ! "$version" ]; then
410     if [ -r /vmunix ]; then
411       kernel_id=`strings /vmunix | grep UNIX`
412     elif [ -r /dynix ]; then
413       kernel_id=`strings /dynix | grep DYNIX`
414     else
415       kernel_id=
416     fi
417     if [ "$kernel_id" ]; then
418       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
419       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
420     fi
421   fi
422
423   sysname=`echo $os | sed 's/[0-9.]*$//'`
424   if [ $sysname != $os ]; then
425     config_release=`echo $os | sed s/$sysname//`
426   fi
427
428   if [ "$release" ]; then
429     # All is well.
430     true
431   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
432          != x$config_release ]; then
433     # The configuration release is a substring of the kernel release.
434     release=$kernel_release
435   elif [ x$config_release != x ]; then
436     release=$config_release
437   elif [ x$kernel_release != x ]; then
438     release=$kernel_release
439   else
440     cat <<END
441 I don't know what release of $sysname you are using.  Please enter the
442 release number now.  This information is used only for the \`uname' function,
443 so it is not critical.
444 END
445     read release
446     if [ ! "$release" ]; then
447       release=unknown
448     fi
449   fi
450
451   if [ "$version" ]; then
452     # All is well.
453     true
454   elif [ ! "$kernel_version" ]; then
455     cat <<END
456 I don't know what version of $sysname $release you are using.  Please enter
457 the version number now.  This information is used only for the uname
458 function, so it is not critical.
459 END
460     read version
461     if [ ! "$version" ]; then
462       version=unknown
463     fi
464   else
465     version=$kernel_version
466   fi
467
468   cat > config-name.h <<END
469 /* This file was generated automatically by configure.  Do not edit.
470    This is used by the generic uname function.  */
471 #define UNAME_SYSNAME "${sysname}"
472 #define UNAME_RELEASE "${release}"
473 #define UNAME_VERSION "${version}"
474 #define UNAME_MACHINE "${config_machine}-${config_vendor}"
475 END
476
477   system_name="$sysname $release version $version on $vendor $machine"
478 else
479   # Not generic uname.  We don't need config-name.h at all.
480   system_name=$config
481 fi
482
483 if [ "$gnu_ld" ]; then
484   DEFS="$DEFS -DHAVE_GNU_LD"
485 fi
486 if [ "$gnu_as" ]; then
487   DEFS="$DEFS -DHAVE_GNU_AS"
488 fi
489
490 (
491   echo '# This file was generated automatically by configure.  Do not edit.'
492   echo '# Put configuration parameters in configparms instead.'
493   echo "config-machine = ${config_machine}"
494   echo "config-vendor = ${config_vendor}"
495   echo "config-os = ${config_os}"
496   echo "config-sysdirs = ${sysnames}"
497   if [ "$prefix" ]; then
498     echo "prefix = ${prefix}"
499   fi
500   if [ "$exec_prefix" ]; then
501     echo "exec_prefix = ${exec_prefix}"
502   fi
503   echo "config-defines = ${DEFS}"
504   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
505     eval "echo \"${var} = \${$var}\""
506   done
507   echo "$config_vars"
508 ) > config.make
509 echo "Wrote config.make in $PWD."
510
511 switches=
512 if [ "$release" ]; then
513   switches="$switches --os-release='$release'"
514 fi
515 if [ "$version" ]; then
516   switches="$switches --os-version='$version'"
517 fi
518
519 if [ $srcdir != . ]; then
520   if [ $srcdir = .. ]; then
521     cwd=`pwd`
522     objdir=`basename $cwd`
523   else
524     objdir=`pwd`
525   fi
526   cat > Makefile <<END
527 # This file was generated automatically by configure.  Do not edit.
528 srcdir = $srcdir
529
530 all .DEFAULT:
531         \$(MAKE) -C \$(srcdir) ARCH=\`pwd\` \$@
532 END
533
534 echo "Wrote Makefile in $PWD."
535 fi
536
537 cat > config.status <<END
538 #!/bin/sh
539 # This file was generated automatically by configure.  Do not edit.
540 # The GNU C library was configured in $PWD for
541 # $system_name as follows:
542 $0 $configure_args $switches \$*
543 END
544 chmod a+x config.status
545 echo "Wrote config.status in $PWD."
546
547 exit 0
548 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
549 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
550 dnl Local Variables:
551 dnl compile-command: "autoconf"
552 dnl End: