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