OSDN Git Service

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