6301b33f3223413fb6ee4c25a7fbe5d45154e03f
[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
8 # Copyright (C) 1991, 1992 Free Software Foundation, Inc.
9 # This file is part of the GNU C Library.
10
11 # The GNU C Library is free software; you can redistribute it and/or
12 # modify it under the terms of the GNU Library General Public License as
13 # published by the Free Software Foundation; either version 2 of the
14 # License, or (at your option) any later version.
15
16 # The GNU C Library is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19 # Library General Public License for more details.
20
21 # You should have received a copy of the GNU Library General Public
22 # License along with the GNU C Library; see the file COPYING.LIB.  If
23 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
24 # Cambridge, MA 02139, USA.
25
26 #
27 #       Configure the GNU C Library.
28 #
29
30 prog="`basename $0`"
31
32 if [ $# -eq 0 -a "${ARCH-${machine}}" != "" ]; then
33   set "${ARCH-${machine}}"
34 fi
35
36 # All the standard GNU configure options are accepted but only
37 # --nfp, --with-gnu-ld, and --with-gnu-as are meaningful.
38 nfp=
39 gnu_ld=
40 gnu_as=
41 version=
42 release=
43 prefix=
44 exec_prefix=
45
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        ;; # ignored
80
81      -x | --x)
82        ;; # ignored
83
84      -os-release=* | -os-releas=* | -os-relea=* | -os-rele=* | -os-rel=* \
85      | -os-re=* | -os-r=* | --os-release=* | --os-releas=* | --os-relea=* \
86      | --os-rele=* | --os-rel=* | --os-re=* | --os-r=*)
87        release=`echo $arg | sed 's/-*os-r[a-z]*=//'`
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        next=release
93        ;;
94
95      -os-version=* | -os-versio=* | -os-versi=* | -os-vers=* | -os-ver=* \
96      | -os-ver=* | -os-ve=* | -os-v=* | --os-version=* | --os-versio=* \
97      | --os-versi=* | --os-vers=* | --os-ver=* | --os-ver=* | --os-ve=* \
98      | --os-v=*)
99        version=`echo $arg | sed 's/-*os-v[a-z]*=//'`
100        ;;
101      -os-version | -os-versio | -os-versi | -os-vers | -os-ver \
102      | -os-ver | -os-ve | -os-v |--os-version | --os-versio \
103      | --os-versi | --os-vers | --os-ver | --os-ver | --os-ve | --os-v)
104        next=version
105        ;;
106
107      -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_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      -*)
122         echo "Invalid option \`$arg'" 1>&2
123         lose=yes
124         ;;
125      *)
126         if [ ! "$target" ]; then
127           target=$arg
128         else
129           lose=yes
130         fi
131         ;;
132     esac
133   fi
134 done
135
136 # NEXT will be set iff we have seen an option that wants an arg, but no arg.
137 if [ "$next" ]; then
138   echo "$0: the \`--${next}' option requires an argument" >&2
139   lose=yes
140 fi
141
142 if [ x$lose = yes -o ! "$target" ]; then
143   echo "Usage: $prog [--srcdir=DIR] [--nfp] [--with-gnu-ld] TARGET" >&2
144   if [ -r config.status ]; then
145     cat config.status >&2
146   fi
147   exit 1
148 fi
149
150 dnl This deals with setting srcdir if it needs to be set.
151 changequote([,])
152 AC_PREPARE(features.h)
153 changequote(,)
154
155 # Canonicalize the configuration name.
156 config=`$srcdir/config.sub $target`
157 if [ ! "$config" ]; then
158   # config.sub has written an error message.
159   exit 1
160 fi
161
162 sysdep_dir=$srcdir/sysdeps
163
164 # machine-vendor-os
165 eval "`echo $config | \
166        sed 's/^\(.*\)-\(.*\)-\(.*\)$/machine=\1 vendor=\2 os=\3/'`"
167
168 case "$os" in
169 gnu*)
170   os=mach/hurd ;;
171 sunos* | ultrix* | newsos* | dynix | bsd*)
172   base_os=unix/bsd ;;
173 linux* | sysv* | isc* | esix*)
174   base_os=unix/sysv ;;
175 esac
176
177 case "$os" in
178 gnu* | linux*)
179   gnu_ld=--with-gnu-ld
180   gnu_as=--with-gnu-as
181 esac
182
183 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
184 tail=$os
185 ostry=$os
186 while o=`echo $tail | sed 's/\.[^.]*$//'`; [ $o != $tail ]; do
187   ostry="$ostry /$o"
188   tail=$o
189 done  
190 o=`echo $tail | sed 's/[0-9]*$//'`
191 if [ $o != $tail ]; then
192   ostry="$ostry /$o"
193 fi
194
195 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
196 base=
197 tail=$base_os
198 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; [ "$b" ]; do
199   set $b
200   base="$base /$1"
201   tail="$2"
202 done
203
204 # Find what sysdep directories exist.
205 sysnames=
206 for b in $base ''; do
207   for v in /$vendor ''; do
208     for o in /$ostry ''; do
209       for m in /$machine ''; do
210         if [ -d $sysdep_dir$b$v$o$m ]; then
211           sysnames="$sysnames $b$v$o$m"
212           [ "$o" -o "$b" ] && os_used=t
213           [ "$m" ] && machine_used=t
214         fi
215       done
216     done
217   done
218 done
219
220 if [ ! "$os_used" -a "$os" != none ]; then
221   echo Operating system $os is not supported. >&2
222   exit 1
223 fi
224 if [ ! "$machine_used" -a "$machine" != none ]; then
225   echo The $machine is not supported. >&2
226   exit 1
227 fi
228
229 # Uniquize the list.
230 seen=
231 for name in $sysnames; do
232   if echo "$seen" | fgrep -x $name >/dev/null; then
233     # Already in the list.
234     true;
235   else
236     # A new one.
237     if [ "$seen" = "" ]; then
238       seen="$name"
239     else
240       seen="$seen
241 $name"
242     fi
243   fi
244 done
245 sysnames="$seen"
246
247 # We have now validated the configuration.
248
249 changequote([,])
250 AC_PROG_INSTALL
251 AC_PROG_RANLIB
252
253 # Find out what this system calls `sys_siglist'.
254 AC_HAVE_FUNCS(sys_siglist _sys_siglist)
255
256 # Find out the name of the table the system's <ctype.h> uses for character
257 # classification.  This is used by sysdeps/unix/common/glue-ctype.c.
258 AC_HAVE_FUNCS(_ctype_ __ctype_ __ctype _ctype__)
259 changequote(,)
260
261 sysnames="`echo $sysnames | sed -e 's@^/@@' -e 's@ /@ @g'`"
262
263 if [ ! "$nfp" -a -d $sysdep_dir/$machine/fpu ]; then
264   sysnames="${machine}/fpu $sysnames"
265 fi
266
267 rm -f sysdirs
268 echo $sysnames > Sysnames
269
270 cat - Sysnames <<END
271 Configuring the GNU C Library for \`${config}'.
272 Using system-dependent files from directories:
273 END
274
275 export sysdep_dir
276 for dir in `$srcdir/find-sysdirs < Sysnames`; do
277   if [ -r $sysdep_dir/$dir/uname.c -o -r $sysdep_dir/$dir/uname.S ]; then
278     uname=$dir
279     break
280   fi
281 done
282 if [ $uname = generic ]; then
283   if [ ! "$release" -o ! "$version" ] && [ -r /vmunix ]; then
284     kernel_id=`strings /vmunix | grep UNIX`
285     kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
286     kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
287   else
288     kernel_release=
289     kernel_version=
290   fi
291
292   sysname=`echo $os | sed 's/[0-9.]*$//'`
293   if [ $sysname != $os ]; then
294     config_release=`echo $os | sed s/$sysname//`
295   fi
296
297   if [ "$release" ]; then
298     # All is well.
299     true
300   elif [ x`echo "$config_release" | sed "s/^$kernel_release//"` \
301        != x$config_release ]; then
302     # The configuration release is a substring of the kernel release.
303     release=$kernel_release
304   elif [ x$config_release != x ]; then
305     release=$config_release
306   elif [ x$kernel_release != x ]; then
307     release=$kernel_release
308   else
309     cat <<END
310 I don't know what release of $sysname you are using.  Please enter the
311 release number now.  This information is used only for the \`uname' function,
312 so it is not critical.
313 END
314     read release
315     if [ ! "$release" ]; then
316       release=unknown
317     fi
318   fi
319
320   if [ "$version" ]; then
321     # All is well.
322     true
323   elif [ ! "$kernel_version" ]; then
324     cat <<END
325 I don't know what version of $sysname $release you are using.  Please enter
326 the version number now.  This information is used only for the uname
327 function, so it is not critical.
328 END
329     read version
330     if [ ! "$version" ]; then
331       version=unknown
332     fi
333   else
334     version=$kernel_version
335   fi
336
337   cat > config-name.h <<END
338 /* This file was generated automatically by configure.  Do not edit.
339    This is used by the generic uname function.  */
340 #define UNAME_SYSNAME "${sysname}"
341 #define UNAME_RELEASE "${release}"
342 #define UNAME_VERSION "${version}"
343 #define UNAME_MACHINE "${machine}-${vendor}"
344 END
345
346   system_name="$sysname $release version $version on $vendor $machine"
347 else
348   # Not generic uname.  We don't need config-name.h at all.
349   system_name=$config
350 fi
351
352 if [ "$gnu_ld" ]; then
353   DEFS="$DEFS -DHAVE_GNU_LD"
354 fi
355 if [ "$gnu_as" ]; then
356   DEFS="$DEFS -DHAVE_GNU_AS"
357 fi
358
359 (
360   echo '# This file was generated automatically by configure.  Do not edit.'
361   echo '# Put configuration parameters in configparms instead.'
362   echo "config-machine = ${machine}"
363   echo "config-vendor = ${vendor}"
364   echo "config-os = ${os}"
365   if [ "$prefix" ]; then
366     echo "prefix = ${prefix}"
367   fi
368   if [ "$exec_prefix" ]; then
369     echo "exec_prefix = ${exec_prefix}"
370   fi
371   echo "config-defines = ${DEFS}"
372 ) > config.make
373
374 switches=
375 if [ "$gnu_as" ]; then
376   switches="$switches --with-gnu-as"
377 fi
378 if [ "$gnu_ld" ]; then
379   switches="$switches --with-gnu-ld"
380 fi
381 if [ "$exec_prefix" ]; then
382   switches="$switches --exec_prefix=$exec_prefix"
383 fi
384 if [ "$prefix" ]; then
385   switches="$switches --prefix=$prefix"
386 fi
387 if [ "$release" ]; then
388   switches="$switches --os-release='$release'"
389 fi
390 if [ "$version" ]; then
391   switches="$switches --os-version='$version'"
392 fi
393
394 cat > config.status <<END
395 #!/bin/sh
396 # This file was generated automatically by configure.  Do not edit.
397 # The GNU C library was configured in `pwd` for
398 # $system_name as follows:
399 $0 $config --srcdir=$srcdir $switches
400 END
401
402 if [ $srcdir != . ]; then
403   if [ $srcdir = .. ]; then
404     cwd=`pwd`
405     objdir=`basename $cwd`
406   else
407     objdir=`pwd`
408   fi
409   cat > Makefile <<END
410 # This file was generated automatically by configure.  Do not edit.
411 srcdir = $srcdir
412
413 all .DEFAULT:
414         \$(MAKE) -C \$(srcdir) ARCH=$objdir \$@
415 END
416
417 echo "# Wrote Makefile in `pwd`." >> config.status
418 fi
419 chmod a+x config.status
420
421 exit 0
422 dnl This gets rid of the random stuff autoconf has stuffed in weird places.
423 divert(-1)dnl AC_This is here so I can search for `AC_' to find the frobs.