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