Formerly ../configure.in.~41~
[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/mc68020 ;;
223 mc680?0)
224   machine=m68k/$machine ;;
225 m88k)
226   machine=m88k/mc88100 ;;
227 mc88???)
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 AC_PROG_INSTALL
379 AC_PROG_RANLIB
380
381 AC_PROG_CC
382 AC_PROG_CPP
383
384 echo checking for signed size_t type
385 echo '#include <stddef.h>
386 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
387 eval "$CPP conftest.c 2>/dev/null" \
388 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null \
389 || {
390   dnl Do this by hand instead of AC_DEFINE so we can use -U to avoid warnings.
391   DEFS="$DEFS -U__SIZE_TYPE__ -D__SIZE_TYPE__=unsigned"
392   (echo '#undef __SIZE_TYPE__';
393    echo '#define __SIZE_TYPE__ unsigned') >> confdefs.h
394   test -n "$verbose" && echo '  using unsigned int for size_t'
395 }
396 rm -f conftest*
397
398 AC_HEADER_EGREP(__gnuc_va_list, stdarg.h, [config_vars="$config_vars
399 stdarg.h = # The installed <stdarg.h> defines __gnuc_va_list."])
400
401 AC_COMPILE_CHECK([libc-friendly stddef.h],
402 [#define __need_size_t
403 #define __need_wchar_t
404 #include <stddef.h>
405 #define __need_NULL
406 #include <stddef.h>], [size_t size; wchar_t wchar;
407 #ifdef offsetof
408 #error stddef.h ignored __need_*
409 #endif
410 if (&size == NULL || &wchar == NULL) abort ();],
411 [config_vars="$config_vars
412 stddef.h = # The installed <stddef.h> seems to be libc-friendly."])
413
414 changequote(,)dnl The world is again safe for shell scripts.
415
416 # Iterate over all the sysdep directories we will use, running their
417 # configure fragments, and looking for a uname implementation.
418 uname=
419 for dir in $sysnames; do
420   if test -r $sysdep_dir/$dir/configure; then
421     echo running configure fragment for $dir
422     . $sysdep_dir/$dir/configure
423   fi
424   test ! "$uname" && \
425   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
426 done
427
428 # If we will use the generic uname implementation, we must figure out what
429 # it will say by examining the system, and write the results in config-name.h.
430 if [ "$uname" = generic ]; then
431
432   echo trying to guess OS release and version for uname
433
434   kernel_release=
435   kernel_version=
436
437   if [ ! "$release" -o ! "$version" ]; then
438     if [ -r /vmunix ]; then
439       kernel_id=`strings /vmunix | grep UNIX`
440     elif [ -r /dynix ]; then
441       kernel_id=`strings /dynix | grep DYNIX`
442     else
443       kernel_id=
444     fi
445     if [ "$kernel_id" ]; then
446       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
447       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
448     fi
449   fi
450
451   sysname=`echo $os | sed 's/[0-9.]*$//'`
452   if [ $sysname != $os ]; then
453     config_release=`echo $os | sed s/$sysname//`
454   fi
455
456   if [ "$release" ]; then
457     # All is well.
458     true
459   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
460          != x$config_release ]; then
461     # The configuration release is a substring of the kernel release.
462     release=$kernel_release
463   elif [ x$config_release != x ]; then
464     release=$config_release
465   elif [ x$kernel_release != x ]; then
466     release=$kernel_release
467   else
468     cat <<END
469 I don't know what release of $sysname you are using.  Please enter the
470 release number now.  This information is used only for the \`uname' function,
471 so it is not critical.
472 END
473     read release
474     if [ ! "$release" ]; then
475       release=unknown
476     fi
477   fi
478
479   if [ "$version" ]; then
480     # All is well.
481     true
482   elif [ ! "$kernel_version" ]; then
483     cat <<END
484 I don't know what version of $sysname $release you are using.  Please enter
485 the version number now.  This information is used only for the uname
486 function, so it is not critical.
487 END
488     read version
489     if [ ! "$version" ]; then
490       version=unknown
491     fi
492   else
493     version=$kernel_version
494   fi
495
496   cat > config-name.h <<END
497 /* This file was generated automatically by configure.  Do not edit.
498    This is used by the generic uname function.  */
499 #define UNAME_SYSNAME "${sysname}"
500 #define UNAME_RELEASE "${release}"
501 #define UNAME_VERSION "${version}"
502 #define UNAME_MACHINE "${config_machine}-${config_vendor}"
503 END
504
505   system_name="$sysname $release version $version on $vendor $machine"
506 else
507   # Not generic uname.  We don't need config-name.h at all.
508   system_name=$config
509 fi
510
511 if [ "$gnu_ld" ]; then
512   DEFS="$DEFS -DHAVE_GNU_LD"
513 fi
514 if [ "$gnu_as" ]; then
515   DEFS="$DEFS -DHAVE_GNU_AS"
516 fi
517
518 (
519   echo '# This file was generated automatically by configure.  Do not edit.'
520   echo '# Put configuration parameters in configparms instead.'
521   echo "config-machine = ${config_machine}"
522   echo "config-vendor = ${config_vendor}"
523   echo "config-os = ${config_os}"
524   echo "config-sysdirs = ${sysnames}"
525   if [ "$prefix" ]; then
526     echo "prefix = ${prefix}"
527   fi
528   if [ "$exec_prefix" ]; then
529     echo "exec_prefix = ${exec_prefix}"
530   fi
531   echo "config-defines = ${DEFS}"
532   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
533     eval "echo \"${var} = \${$var}\""
534   done
535   echo "$config_vars"
536 ) > config.make
537 echo "Wrote config.make in $PWD."
538
539 switches=
540 if [ "$release" ]; then
541   switches="$switches --os-release='$release'"
542 fi
543 if [ "$version" ]; then
544   switches="$switches --os-version='$version'"
545 fi
546
547 if [ $srcdir != . ]; then
548   if [ $srcdir = .. ]; then
549     cwd=`pwd`
550     objdir=`basename $cwd`
551   else
552     objdir=`pwd`
553   fi
554   cat > Makefile <<END
555 # This file was generated automatically by configure.  Do not edit.
556 srcdir = $srcdir
557
558 all .DEFAULT:
559         \$(MAKE) -C \$(srcdir) ARCH=\`pwd\` \$@
560 END
561
562 echo "Wrote Makefile in $PWD."
563 fi
564
565 cat > config.status <<END
566 #!/bin/sh
567 # This file was generated automatically by configure.  Do not edit.
568 # The GNU C library was configured in $PWD for
569 # $system_name as follows:
570 $0 $configure_args $switches \$*
571 END
572 chmod a+x config.status
573 echo "Wrote config.status in $PWD."
574
575 exit 0
576 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
577 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
578 dnl Local Variables:
579 dnl compile-command: "autoconf"
580 dnl End: