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