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