Formerly ../configure.in.~27~
[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 lose=
46 for arg in $*; do
47   if [ x$next != x ]; then
48     eval "$next = \$arg"
49     next=
50   else
51     case $arg in
52      -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
53         srcdir=`echo $arg | sed 's/-*s[a-z]*=//'`
54         ;;
55      -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
56         next=srcdir
57         ;;
58      -target | --target | --targe | --targ | --tar | --ta | --t)
59         next=target
60         ;;
61      -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
62         target=`echo $arg | sed 's/-*t[a-z]*=//'`
63         ;; 
64
65      -with-gnu-ld | --with-gnu-ld | --with-gnu-l)
66         gnu_ld=--with-gnu-ld
67         ;;
68
69      -gas | --gas | --ga | --g | -with-gnu-as | --with-gnu-as | -with-gnu-a)
70         gnu_as=--with-gnu-as
71         ;;
72
73      -nfp | --nfp | --nf | --n)
74         nfp=--nfp
75         ;;
76
77      -with-* | --with-*)
78        ;; # ignored
79
80      -x | --x)
81        ;; # ignored
82
83      -os-release=* | -os-releas=* | -os-relea=* | -os-rele=* | -os-rel=* \
84      | -os-re=* | -os-r=* | --os-release=* | --os-releas=* | --os-relea=* \
85      | --os-rele=* | --os-rel=* | --os-re=* | --os-r=*)
86        release=`echo $arg | sed 's/-*os-r[a-z]*=//'`
87        ;;
88      -os-release | -os-releas | -os-relea | -os-rele | -os-rel \
89      | -os-re | -os-r | --os-release | --os-releas | --os-relea \
90      | --os-rele | --os-rel | --os-re | --os-r)
91        next=release
92        ;;
93
94      -os-version=* | -os-versio=* | -os-versi=* | -os-vers=* | -os-ver=* \
95      | -os-ver=* | -os-ve=* | -os-v=* | --os-version=* | --os-versio=* \
96      | --os-versi=* | --os-vers=* | --os-ver=* | --os-ver=* | --os-ve=* \
97      | --os-v=*)
98        version=`echo $arg | sed 's/-*os-v[a-z]*=//'`
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 | --os-v)
103        next=version
104        ;;
105
106      # For backward compatibility, also recognize exact --exec_prefix.
107      -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
108         exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'`
109         ;;
110      -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
111         next=exec_prefix
112         ;;
113
114      -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
115         prefix=`echo $arg | sed 's/[-a-z_]*=//'`
116         ;;
117      -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
118         next=prefix
119         ;;
120
121      -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v)
122        # Autoconf-generated code below will test this.
123        verbose=yes
124        ;;
125
126      -*)
127         echo "Invalid option \`$arg'" 1>&2
128         lose=yes
129         ;;
130      *)
131         if [ ! "$target" ]; then
132           target=$arg
133         else
134           lose=yes
135         fi
136         ;;
137     esac
138   fi
139 done
140
141 # NEXT will be set iff we have seen an option that wants an arg, but no arg.
142 if [ "$next" ]; then
143   echo "$0: the \`--${next}' option requires an argument" >&2
144   lose=yes
145 fi
146
147 dnl This deals with setting srcdir if it needs to be set.
148 changequote([,])
149 AC_PREPARE(features.h)
150 changequote(,)
151
152 if [ ! "$target" ]; then
153   target=`$srcdir/config.guess`
154   test -n "$target" && echo "No target given; guessing target is ${target}."
155 fi
156
157 if [ "$lose" = yes -o ! "$target" ]; then
158   echo "\
159 Usage: $prog [--srcdir=DIR] [--prefix=DIR] [--exec-prefix=DIR]
160              [--nfp] [--with-gnu-ld] [--with-gnu-as] TARGET" >&2
161   if [ -r config.status ]; then
162     cat config.status >&2
163   fi
164   exit 1
165 fi
166
167 # Canonicalize the configuration name.
168 config=`$srcdir/config.sub $target`
169 if [ ! "$config" ]; then
170   # config.sub has written an error message.
171   exit 1
172 fi
173
174 sysdep_dir=$srcdir/sysdeps
175
176 # machine-vendor-os
177 eval "`echo $config | \
178        sed 's/^\(.*\)-\(.*\)-\(.*\)$/machine=\1 vendor=\2 os=\3/'`"
179
180 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
181 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
182
183 case "$os" in
184 gnu*)
185   os=mach/hurd ;;
186 sunos* | ultrix* | newsos* | dynix* | bsd*)
187   base_os=unix/bsd ;;
188 linux* | sysv* | isc* | esix* | sco* | minix*)
189   base_os=unix/sysv ;;
190 solaris[2-9]*)
191   base_os=unix/sysv/sysv4 ;;
192 esac
193
194 case "$os" in
195 gnu* | linux* | bsd4.4)
196   gnu_ld=--with-gnu-ld
197   gnu_as=--with-gnu-as
198 esac
199
200 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
201 tail=$os
202 ostry=$os
203 while o=`echo $tail | sed 's/\.[^.]*$//'`; [ $o != $tail ]; do
204   ostry="$ostry /$o"
205   tail=$o
206 done  
207 o=`echo $tail | sed 's/[0-9]*$//'`
208 if [ $o != $tail ]; then
209   ostry="$ostry /$o"
210 fi
211
212 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
213 base=
214 tail=$base_os
215 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; [ "$b" ]; do
216   set $b
217   base="$base /$1"
218   tail="$2"
219 done
220
221 # Find what sysdep directories exist.
222 sysnames=
223 for b in $base ''; do
224   for v in /$vendor ''; do
225     for o in /$ostry ''; do
226       for m in /$machine ''; do
227         if [ -d $sysdep_dir$b$v$o$m ]; then
228           sysnames="$sysnames $b$v$o$m"
229           [ "$o" -o "$b" ] && os_used=t
230           [ "$m" ] && machine_used=t
231         fi
232       done
233     done
234   done
235 done
236
237 if [ ! "$os_used" -a "$os" != none ]; then
238   echo Operating system $os is not supported. >&2
239   exit 1
240 fi
241 if [ ! "$machine_used" -a "$machine" != none ]; then
242   echo The $machine is not supported. >&2
243   exit 1
244 fi
245
246 # We have now validated the configuration.
247
248 PWD=`pwd`
249 echo Configuring the GNU C library in $PWD
250 echo on `(hostname || uname -n) 2>/dev/null | sed 1q` for ${config}.
251
252 # Remove the leading slashes.
253 sysnames="`echo $sysnames | sed -e 's@^/@@' -e 's@ /@ @g'`"
254
255 # Prepend the machine's FPU directory unless --nfp.
256 if [ ! "$nfp" -a -d $sysdep_dir/$machine/fpu ]; then
257   sysnames="${machine}/fpu $sysnames"
258 fi
259
260 # Expand the list of system names into a full list of directories
261 # from each element's parent name and Implies file (if present).
262 set $sysnames
263 while [ $# -gt 0 ]; do
264   name=$1
265   shift
266
267   if [ -f $sysdep_dir/$name/Implies ]; then
268     # Collect more names from the `Implies' file (removing comments).
269     implied="`sed 's/#.*$//' < $sysdep_dir/$name/Implies`"
270   else
271     implied=
272   fi
273
274   # Add NAME to the list of names.
275   names="$names $name"
276
277   # Find the parent of NAME, using the empty string if it has none.
278   parent="`echo $name | sed -n -e '/\//!q' -e 's=/[^/]*$==p'`"
279
280   # Append the names implied by NAME, and NAME's parent (if it has one),
281   # to the list of names to be processed (the argument list).
282   sysnames="`echo $* $implied $parent`"
283   if [ "$sysnames" != "" ]; then
284     set $sysnames
285   fi
286 done
287
288 # Add the default directories.
289 names="$names generic stub"
290
291 # Now uniquize the list.
292 seen=
293 sysnames=
294 for name in $names; do
295   if echo "$seen" | fgrep -x $name >/dev/null; then
296     # Already in the list.
297     true;
298   else
299     # A new one.
300     if [ "$seen" = "" ]; then
301       seen="$name" sysnames="$name"
302     else
303       seen="$seen
304 $name"
305       sysnames="$sysnames $name"
306     fi
307   fi
308 done
309
310 echo Using system-dependent files from directories:
311 for dir in $sysnames; do echo " $dir"; done
312
313 # This will get text that should go into config.make.
314 config_vars=
315
316 changequote([,])dnl The world is now safe for m4, and unsafe for shell.
317 dnl Be sure to add each macro used here to aclocal.m4 (which see).
318 AC_PROG_INSTALL
319 AC_PROG_RANLIB
320
321 AC_PROG_CC
322 AC_PROG_CPP
323
324 echo checking for signed size_t type
325 echo '#include <stddef.h>
326 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
327 eval "$CPP conftest.c 2>/dev/null" \
328 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null \
329 || AC_DEFINE(__SIZE_TYPE__, unsigned)
330 rm -f conftest*
331
332 AC_HEADER_EGREP(__gnuc_va_list, stdarg.h, [config_vars="$config_vars
333 stdarg.h = # The installed <stdarg.h> defines __gnuc_va_list."])
334
335 AC_COMPILE_CHECK([libc-friendly stddef.h],
336 [#define __need_size_t
337 #define __need_wchar_t
338 #include <stddef.h>
339 #define __need_NULL
340 #include <stddef.h>], [size_t size; wchar_t wchar;
341 #ifdef offsetof
342 #error stddef.h ignored __need_*
343 #endif
344 if (&size == NULL || &wchar == NULL) abort ();],
345 [config_vars="$config_vars
346 stddef.h = # The installed <stddef.h> seems to be libc-friendly."])
347
348 changequote(,)dnl The world is again safe for shell scripts.
349
350 # Iterate over all the sysdep directories we will use, running their
351 # configure fragments, and looking for a uname implementation.
352 uname=
353 for dir in $sysnames; do
354   if test -r $sysdep_dir/$dir/configure; then
355     echo running configure fragment for $dir
356     . $sysdep_dir/$dir/configure
357   fi
358   test ! "$uname" && \
359   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
360 done
361
362 # If we will use the generic uname implementation, we must figure out what
363 # it will say by examining the system, and write the results in config-name.h.
364 if [ "$uname" = generic ]; then
365
366   echo trying to guess OS release and version for uname
367
368   kernel_release=
369   kernel_version=
370
371   if [ ! "$release" -o ! "$version" ]; then
372     if [ -r /vmunix ]; then
373       kernel_id=`strings /vmunix | grep UNIX`
374     elif [ -r /dynix ]; then
375       kernel_id=`strings /dynix | grep DYNIX`
376     else
377       kernel_id=
378     fi
379     if [ "$kernel_id" ]; then
380       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
381       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
382     fi
383   fi
384
385   sysname=`echo $os | sed 's/[0-9.]*$//'`
386   if [ $sysname != $os ]; then
387     config_release=`echo $os | sed s/$sysname//`
388   fi
389
390   if [ "$release" ]; then
391     # All is well.
392     true
393   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
394          != x$config_release ]; then
395     # The configuration release is a substring of the kernel release.
396     release=$kernel_release
397   elif [ x$config_release != x ]; then
398     release=$config_release
399   elif [ x$kernel_release != x ]; then
400     release=$kernel_release
401   else
402     cat <<END
403 I don't know what release of $sysname you are using.  Please enter the
404 release number now.  This information is used only for the \`uname' function,
405 so it is not critical.
406 END
407     read release
408     if [ ! "$release" ]; then
409       release=unknown
410     fi
411   fi
412
413   if [ "$version" ]; then
414     # All is well.
415     true
416   elif [ ! "$kernel_version" ]; then
417     cat <<END
418 I don't know what version of $sysname $release you are using.  Please enter
419 the version number now.  This information is used only for the uname
420 function, so it is not critical.
421 END
422     read version
423     if [ ! "$version" ]; then
424       version=unknown
425     fi
426   else
427     version=$kernel_version
428   fi
429
430   cat > config-name.h <<END
431 /* This file was generated automatically by configure.  Do not edit.
432    This is used by the generic uname function.  */
433 #define UNAME_SYSNAME "${sysname}"
434 #define UNAME_RELEASE "${release}"
435 #define UNAME_VERSION "${version}"
436 #define UNAME_MACHINE "${machine}-${vendor}"
437 END
438
439   system_name="$sysname $release version $version on $vendor $machine"
440 else
441   # Not generic uname.  We don't need config-name.h at all.
442   system_name=$config
443 fi
444
445 if [ "$gnu_ld" ]; then
446   DEFS="$DEFS -DHAVE_GNU_LD"
447 fi
448 if [ "$gnu_as" ]; then
449   DEFS="$DEFS -DHAVE_GNU_AS"
450 fi
451
452 (
453   echo '# This file was generated automatically by configure.  Do not edit.'
454   echo '# Put configuration parameters in configparms instead.'
455   echo "config-machine = ${machine}"
456   echo "config-vendor = ${vendor}"
457   echo "config-os = ${os}"
458   echo "config-sysdirs = ${sysnames}"
459   if [ "$prefix" ]; then
460     echo "prefix = ${prefix}"
461   fi
462   if [ "$exec_prefix" ]; then
463     echo "exec_prefix = ${exec_prefix}"
464   fi
465   echo "config-defines = ${DEFS}"
466   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
467     eval "echo \"${var} = \${$var}\""
468   done
469   echo "$config_vars"
470 ) > config.make
471 echo "Wrote config.make in $PWD."
472
473 switches=
474 if [ "$gnu_as" ]; then
475   switches="$switches --with-gnu-as"
476 fi
477 if [ "$gnu_ld" ]; then
478   switches="$switches --with-gnu-ld"
479 fi
480 if [ "$exec_prefix" ]; then
481   switches="$switches --exec_prefix=$exec_prefix"
482 fi
483 if [ "$prefix" ]; then
484   switches="$switches --prefix=$prefix"
485 fi
486 if [ "$release" ]; then
487   switches="$switches --os-release='$release'"
488 fi
489 if [ "$version" ]; then
490   switches="$switches --os-version='$version'"
491 fi
492
493 if [ $srcdir != . ]; then
494   if [ $srcdir = .. ]; then
495     cwd=`pwd`
496     objdir=`basename $cwd`
497   else
498     objdir=`pwd`
499   fi
500   cat > Makefile <<END
501 # This file was generated automatically by configure.  Do not edit.
502 srcdir = $srcdir
503
504 all .DEFAULT:
505         \$(MAKE) -C \$(srcdir) ARCH=$objdir \$@
506 END
507
508 echo "Wrote Makefile in $PWD."
509 fi
510
511 cat > config.status <<END
512 #!/bin/sh
513 # This file was generated automatically by configure.  Do not edit.
514 # The GNU C library was configured in $PWD for
515 # $system_name as follows:
516 $0 $config --srcdir=$srcdir $switches
517 END
518 chmod a+x config.status
519 echo "Wrote config.status in $PWD."
520
521 exit 0
522 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
523 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
524 dnl Local Variables:
525 dnl compile-command: "m4 /gd/gnu/autoconf/acgeneral.m4 /gd/gnu/autoconf/acspecific.m4 configure.in > configure && chmod a+x configure"
526 dnl End: