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