OSDN Git Service

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