A
[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   *-*-netbsd*)
506     noconfigdirs="rcs"
507     ;;
508   ppc*-*-pe)
509      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"
510 # start-sanitize-ide
511      noconfigdirs="$noconfigdirs libide vmake jstools"
512 # end-sanitize-ide
513     ;;
514 esac
515
516
517 case "${target}" in
518   *-*-netware)
519     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty target-libgloss"
520     ;;
521   *-*-rtems*)
522     noconfigdirs="$noconfigdirs target-libgloss"
523     ;;
524   *-*-vxworks*)
525     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
526     ;;
527   alpha-dec-osf*)
528     # ld works, but does not support shared libraries.  emacs doesn't
529     # work.  newlib is not 64 bit ready.  I'm not sure about fileutils.
530     # gas doesn't generate exception information.
531     noconfigdirs="$noconfigdirs gas ld emacs fileutils target-newlib target-libgloss"
532     ;;
533   alpha*-*-*vms*)
534     noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
535     ;;
536   alpha-*-linux*)
537     # newlib is not 64 bit ready
538     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
539     # linux has rx in libc
540     skipdirs="$skipdirs target-librx"
541     ;;
542   alpha*-*-*)
543     # newlib is not 64 bit ready
544     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
545     ;;
546   arc-*-*)
547     noconfigdirs="$noconfigdirs target-libgloss"
548     ;;
549   arm-*-pe*)
550     noconfigdirs="$noconfigdirs target-libgloss"
551     ;;
552   arm-*-coff*)
553     noconfigdirs="$noconfigdirs target-libgloss"
554     ;;
555   thumb-*-coff) # CYGNUS LOCAL nickc/thumb
556     noconfigdirs="$noconfigdirs target-libgloss"
557     ;;
558   arm-*-riscix*)
559     noconfigdirs="$noconfigdirs ld target-libgloss"
560     ;;
561   d10v-*-*)
562     noconfigdirs="$noconfigdirs target-librx target-libg++ target-libstdc++ target-libio target-libgloss"
563     ;;
564 # start-sanitize-d30v
565   d30v-*-*)
566     ;;
567 # end-sanitize-d30v
568   h8300*-*-* | \
569   h8500-*-*)
570     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
571     ;;
572   hppa*-*-*elf* | \
573   hppa*-*-lites*)
574     # Do configure ld/binutils/gas for this case.
575     ;;
576   hppa*-*-*)
577     # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
578     # cc is gcc, and on any system a user should be able to link cc to
579     # whatever they want.  FIXME, emacs emacs19).
580     case "${CC}" in
581         "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
582         *) ;;
583     esac
584     noconfigdirs="$noconfigdirs ld shellutils"
585     ;;
586   i[3456]86-*-go32* | i[3456]-*-msdosdjgpp*)
587     # but don't build gdb
588     noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
589     ;;
590   *-*-cygwin32)
591     target_configdirs="$target_configdirs target-winsup"
592     noconfigdirs="$noconfigdirs expect target-libgloss"
593     # always build newlib.
594     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
595
596     # Can't build gdb for cygwin32 if not native.
597     case "${host}" in
598       *-*-cygwin32) ;; # keep gdb tcl tk expect etc.
599       *) noconfigdirs="$noconfigdirs gdb tcl tk expect itcl tix db sn gnuserv"
600 # start-sanitize-ide
601          noconfigdirs="$noconfigdirs libide vmake jstools"
602 # end-sanitize-ide
603          ;;
604     esac
605     ;;    
606   i[3456]86-*-pe)
607     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
608     ;;
609   i[3456]86-*-sco3.2v5*)
610     # The linker does not yet know about weak symbols in COFF,
611     # and is not configured to handle mixed ELF and COFF.
612     noconfigdirs="$noconfigdirs gprof ld target-libgloss"
613     ;;
614   i[3456]86-*-sco*)
615     noconfigdirs="$noconfigdirs gprof target-libgloss"
616     ;;
617   i[3456]86-*-solaris2*)
618     # The linker does static linking correctly, but the Solaris C library
619     # has bugs such that some important functions won't work when statically
620     # linked.  (See man pages for getpwuid, for example.)
621     noconfigdirs="$noconfigdirs ld target-libgloss"
622     ;;
623   i[3456]86-*-sysv4*)
624     # The SYSV4 C compiler doesn't handle Emacs correctly
625     case "${CC}" in
626         "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
627         *) ;;
628     esac
629     # but that's okay since emacs doesn't work anyway
630     noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss"
631     ;;
632   mn10200-*-*)
633     noconfigdirs="$noconfigdirs target-libgloss"
634     ;;
635   mn10300-*-*)
636     noconfigdirs="$noconfigdirs target-libgloss"
637     ;;
638   powerpc-*-aix*)
639     # copied from rs6000-*-* entry
640     noconfigdirs="$noconfigdirs gprof cvssrc target-libgloss"
641     # This is needed until gcc and ld are fixed to work together.
642     use_gnu_ld=no
643     ;;
644   powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
645     target_configdirs="$target_configdirs target-winsup"
646     noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss itcl tix db sn gnuserv"
647 # start-sanitize-ide
648     noconfigdirs="$noconfigdirs libide vmake jstools"
649 # end-sanitize-ide
650     # always build newlib.
651     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
652     ;;
653     # This is temporary until we can link against shared libraries
654   powerpcle-*-solaris*)
655     noconfigdirs="$noconfigdirs gdb sim make tcl tk expect itcl tix db sn gnuserv"
656 # start-sanitize-ide
657     noconfigdirs="$noconfigdirs libide vmake jstools"
658 # end-sanitize-ide
659     ;;
660   rs6000-*-lynxos*)
661     # The CVS server code doesn't work on the RS/6000
662     # Newlib makes problems for libg++ in crosses.
663     noconfigdirs="$noconfigdirs target-newlib gprof cvssrc"
664     ;;
665   rs6000-*-aix*)
666     noconfigdirs="$noconfigdirs gprof"
667     # This is needed until gcc and ld are fixed to work together.
668     use_gnu_ld=no
669     ;;
670   rs6000-*-*)
671     noconfigdirs="$noconfigdirs gprof"
672     ;;
673   m68k-apollo-*)
674     noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss"
675     ;;
676   mips*-*-irix5*)
677     # The GNU linker does not support shared libraries.
678     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
679     noconfigdirs="$noconfigdirs ld gprof emacs target-libgloss"
680     ;;
681   mips*-*-irix6*)
682     # The GNU assembler and linker do not support IRIX 6.
683     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
684     noconfigdirs="$noconfigdirs ld gas gprof emacs target-libgloss"
685     ;;
686   mips*-dec-bsd*)
687     noconfigdirs="$noconfigdirs gprof target-libgloss"
688     ;;
689   mips*-*-bsd*)
690     noconfigdirs="$noconfigdirs gprof target-libgloss"
691     ;;
692   mips*-*-*)
693     noconfigdirs="$noconfigdirs gprof"
694     ;;
695   romp-*-*)
696     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss"
697     ;;
698   sh-*-*)
699     case "${host}" in
700       i[3456]86-*-vsta) ;; # don't add gprof back in
701       i[3456]86-*-go32*) ;; # don't add gprof back in
702       i[3456]86-*-msdosdjgpp*) ;; # don't add gprof back in
703       *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
704     esac
705     noconfigdirs="$noconfigdirs target-libgloss"
706     ;;
707   sparc-*-elf*)
708     if [ x${is_cross_compiler} != xno ] ; then
709            target_configdirs="${target_configdirs} target-cygmon"
710     fi
711     ;;
712   sparclite-*-aout*)
713     if [ x${is_cross_compiler} != xno ] ; then
714            target_configdirs="${target_configdirs} target-cygmon"
715     fi
716     ;;
717   sparc-*-sunos4*)
718     if [ x${is_cross_compiler} != xno ] ; then
719            noconfigdirs="$noconfigdirs gdb gdbtest target-newlib target-libgloss"
720     else
721            use_gnu_ld=no
722     fi
723     ;;
724 # start-sanitize-sky
725   txvu-*-elf*)
726     noconfigdirs="$noconfigdirs gcc gdb"
727     noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty"
728     noconfigdirs="$noconfigdirs target-librx target-libg++ target-libstdc++ target-libio"
729     ;;
730 # end-sanitize-sky
731   v810-*-*)
732     noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes target-libgloss"
733     ;;
734   v850-*-*)
735     noconfigdirs="$noconfigdirs target-libgloss"
736     ;;
737 # start-sanitize-v850e
738   v850e-*-*)
739     noconfigdirs="$noconfigdirs target-libgloss"
740     ;;
741   v850ea-*-*)
742     noconfigdirs="$noconfigdirs target-libgloss"
743     ;;
744 # end-sanitize-v850e
745   vax-*-vms)
746     noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss"
747     ;;
748   vax-*-*)
749     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
750     ;;
751   *-*-lynxos*)
752     # Newlib makes problems for libg++ in crosses.
753     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
754     ;; 
755   *-*-macos* | \
756   *-*-mpw*)
757     # Macs want a resource compiler.
758     configdirs="$configdirs grez"
759     ;;    
760 esac
761
762 # If we aren't building newlib, then don't build libgloss, since libgloss
763 # depends upon some newlib header files.
764 case "${noconfigdirs}" in
765   *target-libgloss*) ;;
766   *target-newlib*) noconfigdirs="$noconfigdirs target-libgloss" ;;
767 esac
768
769 # If we are building a Canadian Cross, discard tools that can not be built
770 # using a cross compiler.  FIXME: These tools should be fixed.
771 if [ "${build}" != "${host}" ]; then
772   noconfigdirs="$noconfigdirs expect dejagnu"
773 fi
774
775 # Make sure we don't let GNU ld be added if we didn't want it.
776 if [ x$with_gnu_ld = xno ]; then
777   use_gnu_ld=no
778   noconfigdirs="$noconfigdirs ld"
779 fi
780
781 # Make sure we don't let GNU as be added if we didn't want it.
782 if [ x$with_gnu_as = xno ]; then
783   use_gnu_as=no
784   noconfigdirs="$noconfigdirs gas"
785 fi
786
787 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
788 # $target_configdirs.
789 # If we have the source for $noconfigdirs entries, add them to $notsupp.
790
791 notsupp=""
792 for dir in . $skipdirs $noconfigdirs ; do
793   dirname=`echo $dir | sed -e s/target-//g`
794   if [ $dir != . ]  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
795     configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
796     if [ -r $srcdir/$dirname/configure ] \
797         || [ -r $srcdir/$dirname/configure.in ]; then
798       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
799         true
800       else
801         notsupp="$notsupp $dir"
802       fi
803     fi
804   fi
805   if [ $dir != . ]  && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
806     target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
807     if [ -r $srcdir/$dirname/configure ] \
808         || [ -r $srcdir/$dirname/configure.in ]; then
809       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
810         true
811       else
812         notsupp="$notsupp $dir"
813       fi
814     fi
815   fi
816 done
817
818 # Sometimes the tools are distributed with libiberty but with no other
819 # libraries.  In that case, we don't want to build target-libiberty.
820 if [ -n "${target_configdirs}" ]; then
821   others=
822   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
823     if [ "$i" != "libiberty" ]; then
824       if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then
825         others=yes;
826         break;
827       fi
828     fi
829   done
830   if [ -z "${others}" ]; then
831     target_configdirs=
832   fi
833 fi
834
835 # Deconfigure all subdirectories, in case we are changing the
836 # configuration from one where a subdirectory is supported to one where it
837 # is not.
838 if [ -z "${norecursion}" -a -n "${configdirs}" ]; then
839   for i in `echo ${configdirs} | sed -e s/target-//g` ; do
840     rm -f $i/Makefile
841   done
842 fi
843 if [ -z "${norecursion}" -a -n "${target_configdirs}" ]; then
844   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
845     rm -f ${target_subdir}/$i/Makefile
846   done
847 fi
848
849 # Produce a warning message for the subdirs we can't configure.
850 # This isn't especially interesting in the Cygnus tree, but in the individual
851 # FSF releases, it's important to let people know when their machine isn't
852 # supported by the one or two programs in a package.
853
854 if [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then
855   # If $appdirs is non-empty, at least one of those directories must still
856   # be configured, or we error out.  (E.g., if the gas release supports a
857   # specified target in some subdirs but not the gas subdir, we shouldn't
858   # pretend that all is well.)
859   if [ -n "$appdirs" ]; then
860     for dir in $appdirs ; do
861       if [ -r $dir/Makefile.in ]; then
862         if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
863           appdirs=""
864           break
865         fi
866         if echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
867           appdirs=""
868           break
869         fi
870       fi
871     done
872     if [ -n "$appdirs" ]; then
873       echo "*** This configuration is not supported by this package." 1>&2
874       exit 1
875     fi
876   fi
877   # Okay, some application will build, or we don't care to check.  Still
878   # notify of subdirs not getting built.
879   echo "*** This configuration is not supported in the following subdirectories:" 1>&2
880   echo "    ${notsupp}" 1>&2
881   echo "    (Any other directories should still work fine.)" 1>&2
882 fi
883
884 # Set with_gnu_as and with_gnu_ld as appropriate.
885 #
886 # This is done by determining whether or not the appropriate directory
887 # is available, and by checking whether or not specific configurations
888 # have requested that this magic not happen.
889
890 # The command line options always override the explicit settings in 
891 # configure.in, and the settings in configure.in override this magic.
892 #
893 # If the default for a toolchain is to use GNU as and ld, and you don't 
894 # want to do that, then you should use the --without-gnu-as and
895 # --without-gnu-ld options for the configure script.
896
897 if [ x${use_gnu_as} = x ] ; then
898   if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then
899     with_gnu_as=yes
900     withoptions="$withoptions --with-gnu-as"
901   fi
902 fi
903
904 if [ x${use_gnu_ld} = x ] ; then
905   if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then
906     with_gnu_ld=yes
907     withoptions="$withoptions --with-gnu-ld"
908   fi
909 fi
910
911 # If using newlib, add --with-newlib to the withoptions so that gcc/configure
912 # can detect this case.
913
914 if [ x${with_newlib} != xno ] && echo " ${target_configdirs} " | grep " target-newlib " > /dev/null 2>&1 && [ -d ${srcdir}/newlib ] ; then
915   with_newlib=yes
916   withoptions="$withoptions --with-newlib"
917 fi
918
919 if [ x${shared} = xyes ]; then
920   case "${target}" in
921     hppa*)
922       target_makefile_frag="${target_makefile_frag} config/mt-papic"
923       ;;
924     i[3456]86-*)
925       target_makefile_frag="${target_makefile_frag} config/mt-x86pic"
926       ;;
927     powerpc*-*)
928       target_makefile_frag="${target_makefile_frag} config/mt-ppcpic"
929       ;;
930     alpha-*-linux*)
931       target_makefile_frag="${target_makefile_frag} config/mt-elfalphapic"
932       ;;
933     *)
934       target_makefile_frag="${target_makefile_frag} config/mt-${target_cpu}pic"
935       ;;
936   esac
937 fi
938
939 rm -f mt-frag
940 if [ -n "${target_makefile_frag}" ] ; then
941   for f in ${target_makefile_frag}
942   do
943     cat ${srcdir}/$f >> mt-frag
944   done
945   target_makefile_frag=mt-frag
946 fi
947
948 # post-target:
949
950 # Make sure that the compiler is able to generate an executable.  If it
951 # can't, we are probably in trouble.  We don't care whether we can run the
952 # executable--we might be using a cross compiler--we only care whether it
953 # can be created.  At this point the main configure script has set CC.
954 echo "int main () { return 0; }" > conftest.c
955 ${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
956 if [ $? = 0 ] && [ -s conftest ]; then
957   :
958 else
959   echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
960   echo 1>&2 "*** You must set the environment variable CC to a working compiler."
961   rm -f conftest*
962   exit 1
963 fi
964 rm -f conftest*
965
966 # The Solaris /usr/ucb/cc compiler does not appear to work.
967 case "${host}" in
968   sparc-sun-solaris2*)
969       CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`"
970       if [ "`/usr/bin/which $CCBASE`" = "/usr/ucb/cc" ] ; then
971           could_use=
972           [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin"
973           if [ -d /opt/cygnus/bin ] ; then
974               if [ "$could_use" = "" ] ; then
975                   could_use="/opt/cygnus/bin"
976               else
977                   could_use="$could_use or /opt/cygnus/bin"
978               fi
979           fi
980         if [ "$could_use" = "" ] ; then
981             echo "Warning: compilation may fail because you're using"
982             echo "/usr/ucb/cc.  You should change your PATH or CC "
983             echo "variable and rerun configure."
984         else
985             echo "Warning: compilation may fail because you're using"
986             echo "/usr/ucb/cc, when you should use the C compiler from"
987             echo "$could_use.  You should change your"
988             echo "PATH or CC variable and rerun configure."
989         fi
990       fi
991   ;;
992 esac
993
994 # If --enable-shared was set, we must set LD_LIBRARY_PATH so that the
995 # binutils tools will find libbfd.so.
996 if [ "${shared}" = "yes" ]; then
997   sed -e 's/^SET_LIB_PATH[      ]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \
998       Makefile > Makefile.tem
999   rm -f Makefile
1000   mv -f Makefile.tem Makefile
1001
1002   case "${host}" in
1003   *-*-hpux*)
1004     sed -e 's/RPATH_ENVVAR[     ]*=.*$/RPATH_ENVVAR = SHLIB_PATH/' \
1005         Makefile > Makefile.tem
1006     rm -f Makefile
1007     mv -f Makefile.tem Makefile
1008     ;;
1009   esac
1010 fi
1011
1012 # If we are building for a cygwin32 host, then set INSTALL_PROGRAM_ARGS to
1013 # -x.  This will cause programs to be installed with .exe extensions.
1014 case "${host}" in
1015 *-*-cygwin32*)
1016     sed -e 's/^INSTALL_PROGRAM_ARGS[    ]*=.*$/INSTALL_PROGRAM_ARGS = -x/' \
1017         Makefile > Makefile.tem
1018     rm -f Makefile
1019     mv -f Makefile.tem Makefile
1020     ;;
1021 esac
1022
1023 # Record target_configdirs and the configure arguments in Makefile.
1024 target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
1025 targargs=`echo "${arguments}" | \
1026         sed -e 's/--norecursion//' \
1027             -e 's/--cache[a-z-]*=[^     ]*//' \
1028             -e 's/--ho[a-z-]*=[^        ]*//' \
1029             -e 's/--bu[a-z-]*=[^        ]*//' \
1030             -e 's/--ta[a-z-]*=[^        ]*//'`
1031
1032 # Passing a --with-cross-host argument lets the target libraries know
1033 # whether they are being built with a cross-compiler or being built
1034 # native.  However, it would be better to use other mechanisms to make the
1035 # sorts of decisions they want to make on this basis.  Please consider
1036 # this option to be deprecated.  FIXME.
1037 if [ x${is_cross_compiler} = xyes ]; then
1038   targargs="--with-cross-host=${host_alias} ${targargs}"
1039 fi
1040
1041 # Default to --enable-multilib.
1042 if [ x${enable_multilib} = x ]; then
1043   targargs="--enable-multilib ${targargs}"
1044 fi
1045
1046 targargs="--host=${target_alias} --build=${build_alias} ${targargs}"
1047 sed -e "s:^TARGET_CONFIGDIRS[   ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
1048     -e "s%^CONFIG_ARGUMENTS[    ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
1049     -e "s%^TARGET_SUBDIR[       ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
1050        Makefile > Makefile.tem
1051 rm -f Makefile
1052 mv -f Makefile.tem Makefile
1053
1054 #
1055 # Local Variables:
1056 # fill-column: 131
1057 # End:
1058 #