Formerly ../configure.in.~37~
[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 || {
351   # Do this by hand instead of AC_DEFINE so we can use -U to avoid warnings.
352   DEFS="$DEFS -U__SIZE_TYPE__ -D__SIZE_TYPE__=unsigned"
353   (echo '#undef __SIZE_TYPE__';
354    echo '#define __SIZE_TYPE__ unsigned') >> confdefs.h
355   test -n "$verbose" && echo '  using unsigned int for size_t'
356 }
357 rm -f conftest*
358
359 AC_HEADER_EGREP(__gnuc_va_list, stdarg.h, [config_vars="$config_vars
360 stdarg.h = # The installed <stdarg.h> defines __gnuc_va_list."])
361
362 AC_COMPILE_CHECK([libc-friendly stddef.h],
363 [#define __need_size_t
364 #define __need_wchar_t
365 #include <stddef.h>
366 #define __need_NULL
367 #include <stddef.h>], [size_t size; wchar_t wchar;
368 #ifdef offsetof
369 #error stddef.h ignored __need_*
370 #endif
371 if (&size == NULL || &wchar == NULL) abort ();],
372 [config_vars="$config_vars
373 stddef.h = # The installed <stddef.h> seems to be libc-friendly."])
374
375 changequote(,)dnl The world is again safe for shell scripts.
376
377 # Iterate over all the sysdep directories we will use, running their
378 # configure fragments, and looking for a uname implementation.
379 uname=
380 for dir in $sysnames; do
381   if test -r $sysdep_dir/$dir/configure; then
382     echo running configure fragment for $dir
383     . $sysdep_dir/$dir/configure
384   fi
385   test ! "$uname" && \
386   test -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S && uname=$dir
387 done
388
389 # If we will use the generic uname implementation, we must figure out what
390 # it will say by examining the system, and write the results in config-name.h.
391 if [ "$uname" = generic ]; then
392
393   echo trying to guess OS release and version for uname
394
395   kernel_release=
396   kernel_version=
397
398   if [ ! "$release" -o ! "$version" ]; then
399     if [ -r /vmunix ]; then
400       kernel_id=`strings /vmunix | grep UNIX`
401     elif [ -r /dynix ]; then
402       kernel_id=`strings /dynix | grep DYNIX`
403     else
404       kernel_id=
405     fi
406     if [ "$kernel_id" ]; then
407       kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
408       kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
409     fi
410   fi
411
412   sysname=`echo $os | sed 's/[0-9.]*$//'`
413   if [ $sysname != $os ]; then
414     config_release=`echo $os | sed s/$sysname//`
415   fi
416
417   if [ "$release" ]; then
418     # All is well.
419     true
420   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
421          != x$config_release ]; then
422     # The configuration release is a substring of the kernel release.
423     release=$kernel_release
424   elif [ x$config_release != x ]; then
425     release=$config_release
426   elif [ x$kernel_release != x ]; then
427     release=$kernel_release
428   else
429     cat <<END
430 I don't know what release of $sysname you are using.  Please enter the
431 release number now.  This information is used only for the \`uname' function,
432 so it is not critical.
433 END
434     read release
435     if [ ! "$release" ]; then
436       release=unknown
437     fi
438   fi
439
440   if [ "$version" ]; then
441     # All is well.
442     true
443   elif [ ! "$kernel_version" ]; then
444     cat <<END
445 I don't know what version of $sysname $release you are using.  Please enter
446 the version number now.  This information is used only for the uname
447 function, so it is not critical.
448 END
449     read version
450     if [ ! "$version" ]; then
451       version=unknown
452     fi
453   else
454     version=$kernel_version
455   fi
456
457   cat > config-name.h <<END
458 /* This file was generated automatically by configure.  Do not edit.
459    This is used by the generic uname function.  */
460 #define UNAME_SYSNAME "${sysname}"
461 #define UNAME_RELEASE "${release}"
462 #define UNAME_VERSION "${version}"
463 #define UNAME_MACHINE "${config_machine}-${config_vendor}"
464 END
465
466   system_name="$sysname $release version $version on $vendor $machine"
467 else
468   # Not generic uname.  We don't need config-name.h at all.
469   system_name=$config
470 fi
471
472 if [ "$gnu_ld" ]; then
473   DEFS="$DEFS -DHAVE_GNU_LD"
474 fi
475 if [ "$gnu_as" ]; then
476   DEFS="$DEFS -DHAVE_GNU_AS"
477 fi
478
479 (
480   echo '# This file was generated automatically by configure.  Do not edit.'
481   echo '# Put configuration parameters in configparms instead.'
482   echo "config-machine = ${config_machine}"
483   echo "config-vendor = ${config_vendor}"
484   echo "config-os = ${config_os}"
485   echo "config-sysdirs = ${sysnames}"
486   if [ "$prefix" ]; then
487     echo "prefix = ${prefix}"
488   fi
489   if [ "$exec_prefix" ]; then
490     echo "exec_prefix = ${exec_prefix}"
491   fi
492   echo "config-defines = ${DEFS}"
493   for var in INSTALL INSTALL_PROGRAM INSTALL_DATA RANLIB; do
494     eval "echo \"${var} = \${$var}\""
495   done
496   echo "$config_vars"
497 ) > config.make
498 echo "Wrote config.make in $PWD."
499
500 switches=
501 if [ "$release" ]; then
502   switches="$switches --os-release='$release'"
503 fi
504 if [ "$version" ]; then
505   switches="$switches --os-version='$version'"
506 fi
507
508 if [ $srcdir != . ]; then
509   if [ $srcdir = .. ]; then
510     cwd=`pwd`
511     objdir=`basename $cwd`
512   else
513     objdir=`pwd`
514   fi
515   cat > Makefile <<END
516 # This file was generated automatically by configure.  Do not edit.
517 srcdir = $srcdir
518
519 all .DEFAULT:
520         \$(MAKE) -C \$(srcdir) ARCH=\`pwd\` \$@
521 END
522
523 echo "Wrote Makefile in $PWD."
524 fi
525
526 cat > config.status <<END
527 #!/bin/sh
528 # This file was generated automatically by configure.  Do not edit.
529 # The GNU C library was configured in $PWD for
530 # $system_name as follows:
531 $0 $configure_args $switches
532 END
533 chmod a+x config.status
534 echo "Wrote config.status in $PWD."
535
536 exit 0
537 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
538 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.
539 dnl Local Variables:
540 dnl compile-command: "m4 /gd/gnu/autoconf/acgeneral.m4 /gd/gnu/autoconf/acspecific.m4 configure.in > configure && chmod a+x configure"
541 dnl End: