OSDN Git Service

* config/mh-go32: Delete.
[pf3gnuchains/gcc-fork.git] / configure.in
1 #! /bin/bash
2 ##############################################################################
3
4 ## This file is a shell script fragment that supplies the information
5 ## necessary to tailor a template configure script into the configure
6 ## script appropriate for this directory.  For more information, check
7 ## any existing configure script.  
8
9 ## Be warned, there are two types of configure.in files.  There are those
10 ## used by Autoconf, which are macros which are expanded into a configure
11 ## script by autoconf.  The other sort, of which this is one, is executed
12 ## by Cygnus configure.  
13
14 ## For more information on these two systems, check out the documentation
15 ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi).  
16
17 #   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 1999 Free Software Foundation, Inc.
18 #
19 # This file is free software; you can redistribute it and/or modify it
20 # under the terms of the GNU General Public License as published by
21 # the Free Software Foundation; either version 2 of the License, or
22 # (at your option) any later version.
23 #
24 # This program is distributed in the hope that it will be useful, but
25 # WITHOUT ANY WARRANTY; without even the implied warranty of
26 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
27 # General Public License for more details.
28 #
29 # You should have received a copy of the GNU General Public License
30 # along with this program; if not, write to the Free Software
31 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
32
33 ##############################################################################
34
35 ### To add a new directory to the tree, first choose whether it is a target
36 ### or a host dependent tool.  Then put it into the appropriate list
37 ### (library or tools, host or target), doing a dependency sort.  For
38 ### example, gdb requires that byacc (or bison) be built first, so it is in
39 ### the ${host_tools} list after byacc and bison.  
40
41
42 # these libraries are used by various programs built for the host environment
43 #
44 host_libs="intl mmalloc libiberty opcodes bfd readline gash db tcl tk tclX itcl tix libgui"
45
46 if [ "${enable_gdbgui}" = "yes" ] ; then
47         host_libs="${host_libs} libgui"
48 fi
49
50 # these tools are built for the host environment
51 # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
52 # know that we are building the simulator.
53 host_tools="texinfo byacc flex bison binutils ld gas gcc sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find emacs emacs19 uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext"
54
55
56 # these libraries are built for the target environment, and are built after
57 # the host libraries and the host tools (which may be a cross compiler)
58 #
59 target_libs="target-libiberty \
60                 target-libgloss \
61                 target-newlib \
62                 target-libio \
63                 target-librx \
64                 target-libstdc++ \
65                 target-libg++ \
66                 target-libf2c \
67                 target-libchill \
68                 target-libobjc"
69
70 # these tools are built using the target libs, and are intended to run only
71 # in the target environment
72 #
73 # note: any program that *uses* libraries that are in the "target_libs"
74 # list belongs in this list.  those programs are also very likely
75 # candidates for the "native_only" list which follows
76 #
77 target_tools="target-examples target-groff target-gperf"
78
79 ################################################################################
80
81 ## These two lists are of directories that are to be removed from the
82 ## ${configdirs} list for either cross-compilations or for native-
83 ## compilations.  For example, it doesn't make that much sense to
84 ## cross-compile Emacs, nor is it terribly useful to compile target-libiberty in
85 ## a native environment.  
86
87 # directories to be built in the native environment only
88 #
89 # This must be a single line because of the way it is searched by grep in
90 # the code below.
91 native_only="autoconf automake libtool cvssrc emacs emacs19 fileutils find gawk gettext grep gzip hello indent ispell m4 rcs recode sed shellutils tar textutils gash uudecode wdiff gprof target-groff guile perl apache inet time ash bash bzip2 prms snavigator gnuserv target-gperf"
92
93 # directories to be built in a cross environment only
94 #
95 cross_only="target-libgloss target-newlib target-cygmon target-opcodes target-libstub"
96
97 ## All tools belong in one of the four categories, and are assigned above
98 ## We assign ${configdirs} this way to remove all embedded newlines.  This
99 ## is important because configure will choke if they ever get through.
100 ## ${configdirs} is directories we build using the host tools.
101 ## ${target_configdirs} is directories we build using the target tools.
102 #
103 configdirs=`echo ${host_libs} ${host_tools}`
104 target_configdirs=`echo ${target_libs} ${target_tools}`
105
106 ################################################################################
107
108 srctrigger=move-if-change
109 srcname="gnu development package"
110
111 # This gets set non-empty for some net releases of packages.
112 appdirs=""
113
114 # per-host:
115
116 # Work in distributions that contain no compiler tools, like Autoconf.
117 if [ -d ${srcdir}/config ]; then
118 case "${host}" in
119   m68k-hp-hpux*)
120     host_makefile_frag="${host_makefile_frag} config/mh-hp300"
121     ;;
122   m68k-apollo-sysv*)
123     host_makefile_frag="${host_makefile_frag} config/mh-apollo68"
124     ;;
125   m68k-apollo-bsd*)
126     host_makefile_frag="${host_makefile_frag} config/mh-a68bsd"
127     ;;
128   m88k-dg-dgux*)
129     host_makefile_frag="${host_makefile_frag} config/mh-dgux"
130     ;;
131   m88k-harris-cxux*)
132     host_makefile_frag="${host_makefile_frag} config/mh-cxux"
133     ;;
134   m88k-motorola-sysv*)
135     host_makefile_frag="${host_makefile_frag} config/mh-delta88"
136     ;;
137   mips*-dec-ultrix*)
138     host_makefile_frag="${host_makefile_frag} config/mh-decstation"
139     ;;
140   mips*-nec-sysv4*)
141     host_makefile_frag="${host_makefile_frag} config/mh-necv4"
142     ;;
143   mips*-sgi-irix6*)
144     host_makefile_frag="${host_makefile_frag} config/mh-irix6"
145     ;;
146   mips*-sgi-irix5*)
147     host_makefile_frag="${host_makefile_frag} config/mh-irix5"
148     ;;
149   mips*-sgi-irix4*)
150     host_makefile_frag="${host_makefile_frag} config/mh-irix4"
151     ;;
152   mips*-sgi-irix3*)
153     host_makefile_frag="${host_makefile_frag} config/mh-sysv"
154     ;;
155   mips*-*-sysv4*)
156     host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
157     ;;
158   mips*-*-sysv*)
159     host_makefile_frag="${host_makefile_frag} config/mh-riscos"
160     ;;
161   i[3456]86-*-sysv5*)
162     host_makefile_frag="${host_makefile_frag} config/mh-sysv5"
163     ;;
164   i[3456]86-*-dgux*)
165     host_makefile_frag="${host_makefile_frag} config/mh-dgux386"
166     ;;
167   i[3456]86-ncr-sysv4.3*)
168     host_makefile_frag="${host_makefile_frag} config/mh-ncrsvr43"
169     ;;
170   i[3456]86-ncr-sysv4*)
171     host_makefile_frag="${host_makefile_frag} config/mh-ncr3000"
172     ;;
173   i[3456]86-*-sco3.2v5*)
174     host_makefile_frag="${host_makefile_frag} config/mh-sysv"
175     ;;
176   i[3456]86-*-sco*)
177     host_makefile_frag="${host_makefile_frag} config/mh-sco"
178     ;;
179   i[3456]86-*-udk*)
180     host_makefile_frag="${host_makefile_frag} config/mh-sysv5"
181     ;;
182   i[3456]86-*-isc*)
183     host_makefile_frag="${host_makefile_frag} config/mh-sysv"
184     ;;
185   i[3456]86-*-solaris2*)
186     host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
187     ;;
188   i[3456]86-*-aix*)
189     host_makefile_frag="${host_makefile_frag} config/mh-aix386"
190     ;;
191   i[3456]86-*-msdosdjgpp*)
192     host_makefile_frag="${host_makefile_frag} config/mh-djgpp"
193     ;;
194   *-cygwin32*)
195     host_makefile_frag="${host_makefile_frag} config/mh-cygwin"
196     ;;
197   *-mingw32*)
198     host_makefile_frag="${host_makefile_frag} config/mh-mingw32"
199     ;;
200   *-interix*)
201     host_makefile_frag="${host_makefile_frag} config/mh-interix"
202     ;;
203   *-windows*)
204     host_makefile_frag="${host_makefile_frag} config/mh-windows"
205     ;;
206   vax-*-ultrix2*)
207     host_makefile_frag="${host_makefile_frag} config/mh-vaxult2"
208     ;;
209   *-*-solaris2*)
210     host_makefile_frag="${host_makefile_frag} config/mh-solaris"
211     ;;
212   m68k-sun-sunos*)
213     host_makefile_frag="${host_makefile_frag} config/mh-sun3"
214     ;;
215   *-hp-hpux[78]*)
216     host_makefile_frag="${host_makefile_frag} config/mh-hpux8"
217     ;;
218   *-hp-hpux*)
219     host_makefile_frag="${host_makefile_frag} config/mh-hpux"
220     ;;
221   *-*-hiux*)
222     host_makefile_frag="${host_makefile_frag} config/mh-hpux"
223     ;;
224   rs6000-*-lynxos*)
225     host_makefile_frag="${host_makefile_frag} config/mh-lynxrs6k"
226     ;;
227   *-*-lynxos*)
228     host_makefile_frag="${host_makefile_frag} config/mh-lynxos"
229     ;;
230   *-*-aix4.[3456789]* | *-*-aix[56789].*)
231     host_makefile_frag="${host_makefile_frag} config/mh-aix43"
232     ;;
233   *-*-sysv4*)
234     host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
235     ;;
236   *-*-sysv*)
237     host_makefile_frag="${host_makefile_frag} config/mh-sysv"
238     ;;
239 esac
240 fi
241
242 # If we aren't going to be using gcc, see if we can extract a definition
243 # of CC from the fragment.
244 if [ -z "${CC}" ] && [ "${build}" = "${host}" ]; then
245   IFS="${IFS=   }"; save_ifs="$IFS"; IFS="${IFS}:"
246   found=
247   for dir in $PATH; do
248     test -z "$dir" && dir=.
249     if test -f $dir/gcc; then
250       found=yes
251       break
252     fi
253   done
254   IFS="$save_ifs"
255   if [ -z "${found}" ] && [ -n "${host_makefile_frag}" ] && [ -f "${srcdir}/${host_makefile_frag}" ]; then
256     xx=`sed -n -e 's/^[         ]*CC[   ]*=[    ]*\(.*\)$/\1/p' < ${srcdir}/${host_makefile_frag}`
257     if [ -n "${xx}" ] ; then
258       CC=$xx
259     fi
260   fi
261 fi
262
263 # We default to --with-shared on platforms where -fpic is meaningless.
264 # Well, we don't yet, but we will.
265 if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
266   case "${target}" in
267     alpha*-dec-osf*)    enable_shared=yes ;;
268     alpha*-*-linux*)    enable_shared=yes ;;
269     mips-sgi-irix5*)    enable_shared=yes ;;
270     *)                  enable_shared=no ;;
271   esac
272 fi
273
274 case "${enable_shared}" in
275   yes) shared=yes ;;
276   no) shared=no ;;
277   "") shared=no ;;
278   *) shared=yes ;;
279 esac
280
281 if [ x${shared} = xyes ]; then
282   case "${host}" in
283     alpha*-*-linux*)
284       host_makefile_frag="${host_makefile_frag} config/mh-elfalphapic"
285       ;;
286     arm*-*-*)
287       host_makefile_frag="${host_makefile_frag} config/mh-armpic"
288       ;;
289     hppa*-*-*)
290       host_makefile_frag="${host_makefile_frag} config/mh-papic"
291       ;;
292     i[3456]86-*-cygwin32*)
293       # We don't want -fPIC on cygwin32.
294       ;;
295     i[3456]86-*-*)
296       host_makefile_frag="${host_makefile_frag} config/mh-x86pic"
297       ;;
298     sparc64-*-*)
299       host_makefile_frag="${host_makefile_frag} config/mh-sparcpic"
300       ;;
301     powerpc*-*-aix*)
302       # We don't want -fPIC on AIX.
303       ;;
304     powerpc*-*-*)
305       host_makefile_frag="${host_makefile_frag} config/mh-ppcpic"
306       ;;
307     *-*-*)
308       if test -f ${srcdir}/config/mh-${host_cpu}pic; then
309         host_makefile_frag="${host_makefile_frag} config/mh-${host_cpu}pic"
310       fi
311       ;;
312   esac
313 fi
314
315 rm -f mh-frag
316 if [ -n "${host_makefile_frag}" ] ; then
317   for f in ${host_makefile_frag}
318   do
319     cat ${srcdir}/$f >> mh-frag
320   done
321   host_makefile_frag=mh-frag
322 fi
323
324 # per-target:
325
326 case "${target}" in
327   v810*)
328     target_makefile_frag="${target_makefile_frag} config/mt-v810"
329     ;;
330   i[3456]86-*-netware*)
331     target_makefile_frag="${target_makefile_frag} config/mt-netware"
332     ;;
333   powerpc-*-netware*)
334     target_makefile_frag="${target_makefile_frag} config/mt-netware"
335     ;;
336   *-*-linux-gnu)
337     target_makefile_frag="${target_makefile_frag} config/mt-linux"
338     ;;
339 esac
340
341 # If --enable-target-optspace always use -Os instead of -O2 to build
342 # the target libraries, similarly if it is not specified, use -Os
343 # on selected platforms.
344 case "${enable_target_optspace}:${target}" in
345   yes:*)
346     target_makefile_frag="${target_makefile_frag} config/mt-ospace"
347     ;;
348   :m32r-*)
349     target_makefile_frag="${target_makefile_frag} config/mt-ospace"
350     ;;
351   no:* | :*)
352     ;;
353   *)
354     echo "*** bad value \"${enable_target_optspace}\" for --enable-target-optspace flag; ignored" 1>&2
355     ;;
356 esac
357
358 skipdirs=
359 gasdir=gas
360 use_gnu_ld=
361 use_gnu_as=
362
363 # some tools are so dependent upon X11 that if we're not building with X, 
364 # it's not even worth trying to configure, much less build, that tool.
365
366 case ${with_x} in
367   yes | "")  # the default value for this tree is that X11 is available
368         ;;
369   no)
370         skipdirs="${skipdirs} tk libgui gash"
371         ;;
372   *)
373         echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2
374         ;;
375 esac
376
377 # Some tools are only suitable for building in a "native" situation.
378 # Those are added when we have a host==target configuration.  For cross
379 # toolchains, we add some directories that should only be useful in a
380 # cross-compiler.
381
382 is_cross_compiler=
383
384 if [ x"${host}" = x"${target}" ] ; then
385         # when doing a native toolchain, don't build the targets
386         # that are in the 'cross only' list
387         skipdirs="${skipdirs} ${cross_only}"
388         is_cross_compiler=no
389 else
390         # similarly, don't build the targets in the 'native only' 
391         # list when building a cross compiler
392         skipdirs="${skipdirs} ${native_only}"
393         is_cross_compiler=yes
394 fi      
395
396 # We always want to use the same name for this directory, so that dejagnu
397 # can reliably find it.
398 target_subdir=${target_alias}
399
400 if [ ! -d ${target_subdir} ] ; then
401   if mkdir ${target_subdir} ; then true
402   else
403     echo "'*** could not make ${PWD=`pwd`}/${target_subdir}" 1>&2
404     exit 1
405   fi
406 fi
407
408 copy_dirs=
409
410 # Handle --with-headers=XXX.  The contents of the named directory are
411 # copied to $(tooldir)/sys-include.
412 if [ x"${with_headers}" != x ]; then
413   if [ x${is_cross_compiler} = xno ]; then
414     echo 1>&2 '***' --with-headers is only supported when cross compiling
415     exit 1
416   fi
417   case "${exec_prefixoption}" in
418   "") x=${prefix} ;;
419   *) x=${exec_prefix} ;;
420   esac
421   copy_dirs="${copy_dirs} ${with_headers} $x/${target_alias}/sys-include"
422 fi
423
424 # Handle --with-libs=XXX.  Multiple directories are permitted.  The
425 # contents are copied to $(tooldir)/lib.
426 if [ x"${with_libs}" != x ]; then
427   if [ x${is_cross_compiler} = xno ]; then
428     echo 1>&2 '***' --with-libs is only supported when cross compiling
429     exit 1
430   fi
431   # Copy the libraries in reverse order, so that files in the first named
432   # library override files in subsequent libraries.
433   case "${exec_prefixoption}" in
434   "") x=${prefix} ;;
435   *) x=${exec_prefix} ;;
436   esac
437   for l in ${with_libs}; do
438     copy_dirs="$l $x/${target_alias}/lib ${copy_dirs}"
439   done
440 fi
441
442 # If both --with-headers and --with-libs are specified, default to
443 # --without-newlib.
444 if [ x"${with_headers}" != x ] && [ x"${with_libs}" != x ]; then
445   if [ x"${with_newlib}" = x ]; then
446     with_newlib=no
447   fi
448 fi
449
450 # Recognize --with-newlib/--without-newlib.
451 if [ x${with_newlib} = xno ]; then
452   skipdirs="${skipdirs} target-newlib"
453 elif [ x${with_newlib} = xyes ]; then
454   skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
455 fi
456
457 # Default to using --with-stabs for certain targets.
458 if [ x${with_stabs} = x ]; then
459   case "${target}" in
460   mips*-*-irix6*)
461     ;;
462   mips*-*-* | alpha*-*-osf*)
463     with_stabs=yes;
464     withoptions="${withoptions} --with-stabs"
465     ;;
466   esac
467 fi
468
469 # Handle ${copy_dirs}
470 set fnord ${copy_dirs}
471 shift
472 while [ $# != 0 ]; do
473   if [ -f $2/COPIED ] && [ x"`cat $2/COPIED`" = x"$1" ]; then
474     :
475   else
476     echo Copying $1 to $2
477
478     # Use the install script to create the directory and all required
479     # parent directories.
480     if [ -d $2 ]; then
481       :
482     else
483       echo >config.temp
484       ${srcdir}/install-sh -c -m 644 config.temp $2/COPIED
485     fi
486
487     # Copy the directory, assuming we have tar.
488     # FIXME: Should we use B in the second tar?  Not all systems support it.
489     (cd $1; tar -cf - .) | (cd $2; tar -xpf -)
490
491     # It is the responsibility of the user to correctly adjust all
492     # symlinks.  If somebody can figure out how to handle them correctly
493     # here, feel free to add the code.
494
495     echo $1 > $2/COPIED
496   fi
497   shift; shift
498 done
499
500 # Configure extra directories which are host specific
501
502 case "${host}" in
503         i[3456]86-*-go32*)
504           configdirs="$configdirs dosrel" ;;
505         i[3456]86-*-mingw32*)
506           configdirs="$configdirs dosrel" ;;
507         *-cygwin32*)
508           configdirs="$configdirs dosrel" ;;
509 esac
510
511 # Remove more programs from consideration, based on the host or 
512 # target this usually means that a port of the program doesn't
513 # exist yet.
514
515 noconfigdirs=""
516
517 case "${host}" in
518   i[3456]86-*-vsta)
519     noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv gettext"
520     ;;
521   i[3456]86-*-go32* | i[3456]86-*-msdosdjgpp*)
522     noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv gettext"
523         ;;
524   i[3456]86-*-mingw32*)
525     # noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv"
526      noconfigdirs="expect dejagnu cvs autoconf automake send-pr gprof rcs guile perl texinfo apache inet libtool"
527         ;;
528   *-*-cygwin32)
529      noconfigdirs="autoconf automake send-pr gprof rcs guile perl apache inet"
530     ;;
531   *-*-windows*)
532 # This is only used to build WinGDB...
533 # note that powerpc-eabi depends on sim configured before gdb.
534      configdirs="bfd libiberty opcodes readline sim gdb"
535      target_configdirs=
536     ;;
537   *-*-netbsd*)
538     noconfigdirs="rcs"
539     ;;
540   ppc*-*-pe)
541      noconfigdirs="patch diff make tk tcl expect dejagnu cvssrc autoconf automake texinfo bison send-pr gprof rcs guile perl apache inet itcl tix db snavigator gnuserv"
542     ;;
543 esac
544
545
546 case "${target}" in
547   *-*-netware)
548     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty target-libgloss"
549     ;;
550   *-*-rtems*)
551     noconfigdirs="$noconfigdirs target-libgloss"
552     ;;
553   *-*-vxworks*)
554     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
555     ;;
556   alpha*-dec-osf*)
557     # ld works, but does not support shared libraries.  emacs doesn't
558     # work.  newlib is not 64 bit ready.  I'm not sure about fileutils.
559     # gas doesn't generate exception information.
560     noconfigdirs="$noconfigdirs gas ld emacs fileutils target-newlib target-libgloss"
561     ;;
562   alpha*-*-*vms*)
563     noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
564     ;;
565   alpha*-*-linux*)
566     # newlib is not 64 bit ready
567     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
568     # linux has rx in libc
569     skipdirs="$skipdirs target-librx"
570     ;;
571   alpha*-*-*)
572     # newlib is not 64 bit ready
573     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
574     ;;
575   arc-*-*)
576     noconfigdirs="$noconfigdirs target-libgloss"
577     ;;
578   arm-*-pe*)
579     noconfigdirs="$noconfigdirs target-libgloss"
580     ;;
581   arm-*-coff*)
582     noconfigdirs="$noconfigdirs target-libgloss"
583     ;;
584   arm-*-elf*)
585     noconfigdirs="$noconfigdirs target-libgloss"
586     if [ x${is_cross_compiler} != xno ] ; then
587            target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon"
588     fi
589     ;;
590   arm-*-oabi*)
591     noconfigdirs="$noconfigdirs target-libgloss"
592     if [ x${is_cross_compiler} != xno ] ; then
593            target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon"
594     fi
595     ;;
596   c4x-*-*)
597     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
598     ;;
599   thumb-*-coff)
600     noconfigdirs="$noconfigdirs target-libgloss"
601     ;;
602   arm-*-riscix*)
603     noconfigdirs="$noconfigdirs ld target-libgloss"
604     ;;
605   d10v-*-*)
606     noconfigdirs="$noconfigdirs target-librx target-libg++ target-libstdc++ target-libio target-libgloss"
607     ;;
608   h8300*-*-* | \
609   h8500-*-*)
610     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
611     ;;
612   hppa*-*-*elf* | \
613   hppa*-*-lites*)
614     # Do configure ld/binutils/gas for this case.
615     ;;
616   hppa*-*-*)
617     # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
618     # cc is gcc, and on any system a user should be able to link cc to
619     # whatever they want.  FIXME, emacs emacs19).
620     case "${CC}" in
621         "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
622         *) ;;
623     esac
624     noconfigdirs="$noconfigdirs ld shellutils"
625     ;;
626   i[3456]86-*-go32* | i[3456]-*-msdosdjgpp*)
627     # but don't build gdb
628     noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
629     ;;
630   *-*-linux*)
631     # linux has rx in libc
632     skipdirs="$skipdirs target-librx"
633     ;;
634   i[3456]86-*-mingw32*)
635     target_configdirs="$target_configdirs target-mingw"
636     noconfigdirs="$noconfigdirs expect target-libgloss"
637
638     # Can't build gdb for mingw32 if not native.
639     case "${host}" in
640       i[3456]86-*-mingw32) ;; # keep gdb tcl tk expect etc.
641       *) noconfigdirs="$noconfigdirs gdb tcl tk expect itcl tix db snavigator gnuserv"
642          ;;
643     esac
644     ;;    
645   *-*-cygwin32*)
646     target_configdirs="$target_configdirs target-winsup"
647     noconfigdirs="$noconfigdirs target-gperf target-libgloss"
648     # always build newlib.
649     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
650
651     # Can't build gdb for cygwin32 if not native.
652     case "${host}" in
653       *-*-cygwin32*) ;; # keep gdb tcl tk expect etc.
654       *) noconfigdirs="$noconfigdirs gdb tcl tk expect itcl tix libgui db snavigator gnuserv"
655          ;;
656     esac
657     ;;    
658   i[3456]86-*-pe)
659     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
660     ;;
661   i[3456]86-*-sco3.2v5*)
662     # The linker does not yet know about weak symbols in COFF,
663     # and is not configured to handle mixed ELF and COFF.
664     noconfigdirs="$noconfigdirs ld target-libgloss"
665     ;;
666   i[3456]86-*-sco*)
667     noconfigdirs="$noconfigdirs gprof target-libgloss"
668     ;;
669   i[3456]86-*-solaris2*)
670     # The linker does static linking correctly, but the Solaris C library
671     # has bugs such that some important functions won't work when statically
672     # linked.  (See man pages for getpwuid, for example.)
673     noconfigdirs="$noconfigdirs ld target-libgloss"
674     ;;
675   i[3456]86-*-sysv4*)
676     # The SYSV4 C compiler doesn't handle Emacs correctly
677     case "${CC}" in
678         "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
679         *) ;;
680     esac
681     # but that's okay since emacs doesn't work anyway
682     noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss"
683     ;;
684   mn10200-*-*)
685     noconfigdirs="$noconfigdirs"
686     if [ x${is_cross_compiler} != xno ] ; then
687            target_configdirs="${target_configdirs} target-libstub target-cygmon"
688     fi
689     ;;
690   mn10300-*-*)
691     noconfigdirs="$noconfigdirs"
692     if [ x${is_cross_compiler} != xno ] ; then
693            target_configdirs="${target_configdirs} target-libstub target-cygmon"
694     fi
695     ;;
696   powerpc-*-aix*)
697     # copied from rs6000-*-* entry
698     noconfigdirs="$noconfigdirs gprof cvssrc target-libgloss"
699     # This is needed until gcc and ld are fixed to work together.
700     use_gnu_ld=no
701     ;;
702   powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
703     target_configdirs="$target_configdirs target-winsup"
704     noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss itcl tix db snavigator gnuserv"
705     # always build newlib.
706     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
707     ;;
708     # This is temporary until we can link against shared libraries
709   powerpcle-*-solaris*)
710     noconfigdirs="$noconfigdirs gdb sim make tcl tk expect itcl tix db snavigator gnuserv"
711     ;;
712   rs6000-*-lynxos*)
713     # The CVS server code doesn't work on the RS/6000
714     # Newlib makes problems for libg++ in crosses.
715     noconfigdirs="$noconfigdirs target-newlib gprof cvssrc"
716     ;;
717   rs6000-*-aix*)
718     noconfigdirs="$noconfigdirs gprof"
719     # This is needed until gcc and ld are fixed to work together.
720     use_gnu_ld=no
721     ;;
722   rs6000-*-*)
723     noconfigdirs="$noconfigdirs gprof"
724     ;;
725   m68k-apollo-*)
726     noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss"
727     ;;
728   mips*-*-irix5*)
729     # The GNU linker does not support shared libraries.
730     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
731     noconfigdirs="$noconfigdirs ld gprof emacs target-libgloss"
732     ;;
733   mips*-*-irix6*)
734     # The GNU assembler and linker do not support IRIX 6.
735     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
736     noconfigdirs="$noconfigdirs ld gas gprof emacs target-libgloss"
737     ;;
738   mips*-dec-bsd*)
739     noconfigdirs="$noconfigdirs gprof target-libgloss"
740     ;;
741   mips*-*-bsd*)
742     noconfigdirs="$noconfigdirs gprof target-libgloss"
743     ;;
744   mipstx39-*-*)
745     noconfigdirs="$noconfigdirs gprof"   # same as generic mips
746     target_configdirs="${target_configdirs} target-libstub target-cygmon"
747    ;;
748   mips*-*-*)
749     noconfigdirs="$noconfigdirs gprof"
750     ;;
751   romp-*-*)
752     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss"
753     ;;
754   sh-*-*)
755     case "${host}" in
756       i[3456]86-*-vsta) ;; # don't add gprof back in
757       i[3456]86-*-go32*) ;; # don't add gprof back in
758       i[3456]86-*-msdosdjgpp*) ;; # don't add gprof back in
759       *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
760     esac
761     noconfigdirs="$noconfigdirs target-libgloss"
762     ;;
763   sparc-*-elf*)
764     if [ x${is_cross_compiler} != xno ] ; then
765            target_configdirs="${target_configdirs} target-libstub target-cygmon"
766     fi
767     ;;
768   sparc64-*-elf*)
769     if [ x${is_cross_compiler} != xno ] ; then
770            target_configdirs="${target_configdirs} target-libstub target-cygmon"
771     fi
772     ;;
773   sparclite-*-aout*)
774     if [ x${is_cross_compiler} != xno ] ; then
775            target_configdirs="${target_configdirs} target-libstub target-cygmon"
776     fi
777     ;;
778   sparc-*-sunos4*)
779     if [ x${is_cross_compiler} != xno ] ; then
780            noconfigdirs="$noconfigdirs gdb gdbtest target-newlib target-libgloss"
781     else
782            use_gnu_ld=no
783     fi
784     ;;
785   v810-*-*)
786     noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes target-libgloss"
787     ;;
788   v850-*-*)
789     noconfigdirs="$noconfigdirs target-libgloss"
790     ;;
791   vax-*-vms)
792     noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss"
793     ;;
794   vax-*-*)
795     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
796     ;;
797   *-*-lynxos*)
798     # Newlib makes problems for libg++ in crosses.
799     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
800     ;; 
801   *-*-macos* | \
802   *-*-mpw*)
803     # Macs want a resource compiler.
804     configdirs="$configdirs grez"
805     ;;    
806 esac
807
808 # If we aren't building newlib, then don't build libgloss, since libgloss
809 # depends upon some newlib header files.
810 case "${noconfigdirs}" in
811   *target-libgloss*) ;;
812   *target-newlib*) noconfigdirs="$noconfigdirs target-libgloss" ;;
813 esac
814
815 # Make sure we don't let GNU ld be added if we didn't want it.
816 if [ x$with_gnu_ld = xno ]; then
817   use_gnu_ld=no
818   noconfigdirs="$noconfigdirs ld"
819 fi
820
821 # Make sure we don't let GNU as be added if we didn't want it.
822 if [ x$with_gnu_as = xno ]; then
823   use_gnu_as=no
824   noconfigdirs="$noconfigdirs gas"
825 fi
826
827 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
828 # $target_configdirs.
829 # If we have the source for $noconfigdirs entries, add them to $notsupp.
830
831 notsupp=""
832 for dir in . $skipdirs $noconfigdirs ; do
833   dirname=`echo $dir | sed -e s/target-//g`
834   if [ $dir != . ]  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
835     configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
836     if [ -r $srcdir/$dirname/configure ] \
837         || [ -r $srcdir/$dirname/configure.in ]; then
838       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
839         true
840       else
841         notsupp="$notsupp $dir"
842       fi
843     fi
844   fi
845   if [ $dir != . ]  && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
846     target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
847     if [ -r $srcdir/$dirname/configure ] \
848         || [ -r $srcdir/$dirname/configure.in ]; then
849       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
850         true
851       else
852         notsupp="$notsupp $dir"
853       fi
854     fi
855   fi
856 done
857
858 # Sometimes the tools are distributed with libiberty but with no other
859 # libraries.  In that case, we don't want to build target-libiberty.
860 if [ -n "${target_configdirs}" ]; then
861   others=
862   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
863     if [ "$i" != "libiberty" ]; then
864       if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then
865         others=yes;
866         break;
867       fi
868     fi
869   done
870   if [ -z "${others}" ]; then
871     target_configdirs=
872   fi
873 fi
874
875 # Deconfigure all subdirectories, in case we are changing the
876 # configuration from one where a subdirectory is supported to one where it
877 # is not.
878 if [ -z "${norecursion}" ] && [ -n "${configdirs}" ]; then
879   for i in `echo ${configdirs} | sed -e s/target-//g` ; do
880     rm -f $i/Makefile
881   done
882 fi
883 if [ -z "${norecursion}" ] && [ -n "${target_configdirs}" ]; then
884   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
885     rm -f ${target_subdir}/$i/Makefile
886   done
887 fi
888
889 # Produce a warning message for the subdirs we can't configure.
890 # This isn't especially interesting in the Cygnus tree, but in the individual
891 # FSF releases, it's important to let people know when their machine isn't
892 # supported by the one or two programs in a package.
893
894 if [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then
895   # If $appdirs is non-empty, at least one of those directories must still
896   # be configured, or we error out.  (E.g., if the gas release supports a
897   # specified target in some subdirs but not the gas subdir, we shouldn't
898   # pretend that all is well.)
899   if [ -n "$appdirs" ]; then
900     for dir in $appdirs ; do
901       if [ -r $dir/Makefile.in ]; then
902         if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
903           appdirs=""
904           break
905         fi
906         if echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
907           appdirs=""
908           break
909         fi
910       fi
911     done
912     if [ -n "$appdirs" ]; then
913       echo "*** This configuration is not supported by this package." 1>&2
914       exit 1
915     fi
916   fi
917   # Okay, some application will build, or we don't care to check.  Still
918   # notify of subdirs not getting built.
919   echo "*** This configuration is not supported in the following subdirectories:" 1>&2
920   echo "    ${notsupp}" 1>&2
921   echo "    (Any other directories should still work fine.)" 1>&2
922 fi
923
924 # Set with_gnu_as and with_gnu_ld as appropriate.
925 #
926 # This is done by determining whether or not the appropriate directory
927 # is available, and by checking whether or not specific configurations
928 # have requested that this magic not happen.
929
930 # The command line options always override the explicit settings in 
931 # configure.in, and the settings in configure.in override this magic.
932 #
933 # If the default for a toolchain is to use GNU as and ld, and you don't 
934 # want to do that, then you should use the --without-gnu-as and
935 # --without-gnu-ld options for the configure script.
936
937 if [ x${use_gnu_as} = x ] ; then
938   if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then
939     with_gnu_as=yes
940     withoptions="$withoptions --with-gnu-as"
941   fi
942 fi
943
944 if [ x${use_gnu_ld} = x ] ; then
945   if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then
946     with_gnu_ld=yes
947     withoptions="$withoptions --with-gnu-ld"
948   fi
949 fi
950
951 # If using newlib, add --with-newlib to the withoptions so that gcc/configure
952 # can detect this case.
953
954 if [ x${with_newlib} != xno ] && echo " ${target_configdirs} " | grep " target-newlib " > /dev/null 2>&1 && [ -d ${srcdir}/newlib ] ; then
955   with_newlib=yes
956   withoptions="$withoptions --with-newlib"
957 fi
958
959 if [ x${shared} = xyes ]; then
960   case "${target}" in
961     hppa*)
962       target_makefile_frag="${target_makefile_frag} config/mt-papic"
963       ;;
964     i[3456]86-*)
965       target_makefile_frag="${target_makefile_frag} config/mt-x86pic"
966       ;;
967     powerpc*-*)
968       target_makefile_frag="${target_makefile_frag} config/mt-ppcpic"
969       ;;
970     alpha*-*-linux*)
971       target_makefile_frag="${target_makefile_frag} config/mt-elfalphapic"
972       ;;
973     *)
974       if test -f ${srcdir}/config/mt-${target_cpu}pic; then
975         target_makefile_frag="${target_makefile_frag} config/mt-${target_cpu}pic"
976       fi
977       ;;
978   esac
979 fi
980
981 rm -f mt-frag
982 if [ -n "${target_makefile_frag}" ] ; then
983   for f in ${target_makefile_frag}
984   do
985     cat ${srcdir}/$f >> mt-frag
986   done
987   target_makefile_frag=mt-frag
988 fi
989
990 # post-target:
991
992 # Make sure that the compiler is able to generate an executable.  If it
993 # can't, we are probably in trouble.  We don't care whether we can run the
994 # executable--we might be using a cross compiler--we only care whether it
995 # can be created.  At this point the main configure script has set CC.
996 echo "int main () { return 0; }" > conftest.c
997 ${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
998 if [ $? = 0 ] && [ -s conftest -o -s conftest.exe ]; then
999   :
1000 else
1001   echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
1002   echo 1>&2 "*** You must set the environment variable CC to a working compiler."
1003   rm -f conftest*
1004   exit 1
1005 fi
1006 rm -f conftest*
1007
1008 # The Solaris /usr/ucb/cc compiler does not appear to work.
1009 case "${host}" in
1010   sparc-sun-solaris2*)
1011       CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`"
1012       if [ "`/usr/bin/which $CCBASE`" = "/usr/ucb/cc" ] ; then
1013           could_use=
1014           [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin"
1015           if [ -d /opt/cygnus/bin ] ; then
1016               if [ "$could_use" = "" ] ; then
1017                   could_use="/opt/cygnus/bin"
1018               else
1019                   could_use="$could_use or /opt/cygnus/bin"
1020               fi
1021           fi
1022         if [ "$could_use" = "" ] ; then
1023             echo "Warning: compilation may fail because you're using"
1024             echo "/usr/ucb/cc.  You should change your PATH or CC "
1025             echo "variable and rerun configure."
1026         else
1027             echo "Warning: compilation may fail because you're using"
1028             echo "/usr/ucb/cc, when you should use the C compiler from"
1029             echo "$could_use.  You should change your"
1030             echo "PATH or CC variable and rerun configure."
1031         fi
1032       fi
1033   ;;
1034 esac
1035
1036 # If --enable-shared was set, we must set LD_LIBRARY_PATH so that the
1037 # binutils tools will find libbfd.so.
1038 if [ "${shared}" = "yes" ]; then
1039   sed -e 's/^SET_LIB_PATH[      ]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \
1040       Makefile > Makefile.tem
1041   rm -f Makefile
1042   mv -f Makefile.tem Makefile
1043
1044   case "${host}" in
1045   *-*-hpux*)
1046     sed -e 's/^RPATH_ENVVAR[    ]*=.*$/RPATH_ENVVAR = SHLIB_PATH/' \
1047         Makefile > Makefile.tem
1048     rm -f Makefile
1049     mv -f Makefile.tem Makefile
1050     ;;
1051   esac
1052 fi
1053
1054 # Record target_configdirs and the configure arguments in Makefile.
1055 target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
1056 targargs=`echo "${arguments}" | \
1057         sed -e 's/--no[^        ]*//' \
1058             -e 's/--cache[a-z-]*=[^     ]*//' \
1059             -e 's/--ho[a-z-]*=[^        ]*//' \
1060             -e 's/--bu[a-z-]*=[^        ]*//' \
1061             -e 's/--ta[a-z-]*=[^        ]*//'`
1062
1063 # Passing a --with-cross-host argument lets the target libraries know
1064 # whether they are being built with a cross-compiler or being built
1065 # native.  However, it would be better to use other mechanisms to make the
1066 # sorts of decisions they want to make on this basis.  Please consider
1067 # this option to be deprecated.  FIXME.
1068 if [ x${is_cross_compiler} = xyes ]; then
1069   targargs="--with-cross-host=${host_alias} ${targargs}"
1070 fi
1071
1072 # Default to --enable-multilib.
1073 if [ x${enable_multilib} = x ]; then
1074   targargs="--enable-multilib ${targargs}"
1075 fi
1076
1077 # Pass --with-newlib if appropriate.  Note that target_configdirs has
1078 # changed from the earlier setting of with_newlib.
1079 if [ x${with_newlib} != xno ] && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && [ -d ${srcdir}/newlib ] ; then
1080   targargs="--with-newlib ${targargs}"
1081 fi
1082
1083 targargs="--host=${target_alias} --build=${build_alias} ${targargs}"
1084 sed -e "s:^TARGET_CONFIGDIRS[   ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
1085     -e "s%^CONFIG_ARGUMENTS[    ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
1086     -e "s%^TARGET_SUBDIR[       ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
1087        Makefile > Makefile.tem
1088 rm -f Makefile
1089 mv -f Makefile.tem Makefile
1090
1091 #
1092 # Local Variables:
1093 # fill-column: 131
1094 # End:
1095 #