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