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