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