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