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