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