xref: /openbsd/gnu/usr.bin/binutils/configure.in (revision 092d8970)
1*092d8970Sniklas#! /bin/bash
22159047fSniklas##############################################################################
32159047fSniklas
42159047fSniklas## This file is a shell script fragment that supplies the information
52159047fSniklas## necessary to tailor a template configure script into the configure
62159047fSniklas## script appropriate for this directory.  For more information, check
72159047fSniklas## any existing configure script.
82159047fSniklas
92159047fSniklas## Be warned, there are two types of configure.in files.  There are those
102159047fSniklas## used by Autoconf, which are macros which are expanded into a configure
112159047fSniklas## script by autoconf.  The other sort, of which this is one, is executed
122159047fSniklas## by Cygnus configure.
132159047fSniklas
142159047fSniklas## For more information on these two systems, check out the documentation
152159047fSniklas## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi).
162159047fSniklas
172159047fSniklas##############################################################################
182159047fSniklas
192159047fSniklas### To add a new directory to the tree, first choose whether it is a target
202159047fSniklas### or a host dependent tool.  Then put it into the appropriate list
212159047fSniklas### (library or tools, host or target), doing a dependency sort.  For
222159047fSniklas### example, gdb requires that byacc (or bison) be built first, so it is in
232159047fSniklas### the ${host_tools} list after byacc and bison.
242159047fSniklas
252159047fSniklas
262159047fSniklas# these libraries are used by various programs built for the host environment
272159047fSniklas#
282159047fSniklashost_libs="mmalloc libiberty opcodes bfd readline gash tcl tk tclX"
292159047fSniklas
302159047fSniklasif [ "${enable_gdbgui}" = "yes" ] ; then
312159047fSniklas	host_libs="${host_libs} libgui"
322159047fSniklasfi
332159047fSniklas
342159047fSniklas# these tools are built for the host environment
352159047fSniklas#
36*092d8970Sniklashost_tools="texinfo byacc flex bison binutils ld gas gcc gdb make patch
372159047fSniklas	    prms send-pr gprof gdbtest tgas etc expect dejagnu sim
382159047fSniklas            m4 autoconf ispell grep diff rcs cvs fileutils shellutils
392159047fSniklas	    textutils wdiff find emacs emacs19 uudecode hello tar gzip indent
40*092d8970Sniklas	    recode release sed utils guile perl apache inet"
412159047fSniklas
422159047fSniklas
432159047fSniklas# these libraries are built for the target environment, and are built after
442159047fSniklas# the host libraries and the host tools (which may be a cross compiler)
452159047fSniklas#
46*092d8970Sniklastarget_libs="target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++"
472159047fSniklas
482159047fSniklas
492159047fSniklas# these tools are built using the target libs, and are intended to run only
502159047fSniklas# in the target environment
512159047fSniklas#
522159047fSniklas# note: any program that *uses* libraries that are in the "target_libs"
532159047fSniklas# list belongs in this list.  those programs are also very likely
542159047fSniklas# candidates for the "native_only" list which follows
552159047fSniklas#
562159047fSniklastarget_tools="target-examples target-groff"
572159047fSniklas
582159047fSniklas################################################################################
592159047fSniklas
602159047fSniklas## These two lists are of directories that are to be removed from the
612159047fSniklas## ${configdirs} list for either cross-compilations or for native-
622159047fSniklas## compilations.  For example, it doesn't make that much sense to
632159047fSniklas## cross-compile Emacs, nor is it terribly useful to compile target-libiberty in
642159047fSniklas## a native environment.
652159047fSniklas
662159047fSniklas# directories to be built in the native environment only
672159047fSniklas#
682159047fSniklasnative_only="autoconf cvs emacs emacs19 fileutils find grep gzip hello
692159047fSniklas	     indent ispell m4 rcs recode sed shellutils tar textutils gash
70*092d8970Sniklas	     uudecode wdiff gprof target-groff guile perl apache inet"
712159047fSniklas
722159047fSniklas# directories to be built in a cross environment only
732159047fSniklas#
742159047fSniklascross_only="target-libiberty target-libgloss target-newlib"
752159047fSniklas
762159047fSniklas## All tools belong in one of the four categories, and are assigned above
772159047fSniklas## We assign ${configdirs} this way to remove all embedded newlines.  This
782159047fSniklas## is important because configure will choke if they ever get through.
792159047fSniklas## ${configdirs} is directories we build using the host tools.
802159047fSniklas## ${target_configdirs} is directories we build using the target tools.
812159047fSniklas#
822159047fSniklasconfigdirs=`echo ${host_libs} ${host_tools}`
832159047fSniklastarget_configdirs=`echo ${target_libs} ${target_tools}`
842159047fSniklas
852159047fSniklas################################################################################
862159047fSniklas
872159047fSniklassrctrigger=move-if-change
882159047fSniklassrcname="gnu development package"
892159047fSniklas
902159047fSniklas# This gets set non-empty for some net releases of packages.
912159047fSniklasappdirs=""
922159047fSniklas
932159047fSniklas# per-host:
942159047fSniklas
952159047fSniklas# Work in distributions that contain no compiler tools, like Autoconf.
962159047fSniklasif [ -d ${srcdir}/config ]; then
972159047fSniklascase "${host}" in
982159047fSniklas  m68k-hp-hpux*)	  host_makefile_frag=config/mh-hp300 ;;
992159047fSniklas  m68k-apollo-sysv*)      host_makefile_frag=config/mh-apollo68 ;;
1002159047fSniklas  m68k-apollo-bsd*)       host_makefile_frag=config/mh-a68bsd ;;
101*092d8970Sniklas  m68k-*-linux*)	  host_makefile_frag=config/mh-linux ;;
1022159047fSniklas  m88k-dg-dgux*)	  host_makefile_frag=config/mh-dgux ;;
1032159047fSniklas  m88k-harris-cxux*)	  host_makefile_frag=config/mh-cxux ;;
1042159047fSniklas  m88k-motorola-sysv*)    host_makefile_frag=config/mh-delta88;;
1052159047fSniklas  mips*-dec-ultrix*)      host_makefile_frag=config/mh-decstation ;;
106*092d8970Sniklas  mips*-nec-sysv4*)	  host_makefile_frag=config/mh-necv4 ;;
1072159047fSniklas  mips*-sgi-irix[56]*)    host_makefile_frag=config/mh-irix5 ;;
1082159047fSniklas  mips*-sgi-irix4*)       host_makefile_frag=config/mh-irix4 ;;
1092159047fSniklas  mips*-sgi-irix3*)       host_makefile_frag=config/mh-sysv ;;
1102159047fSniklas  mips*-*-sysv4*)	  host_makefile_frag=config/mh-sysv4 ;;
1112159047fSniklas  mips*-*-sysv*)	  host_makefile_frag=config/mh-riscos ;;
1122159047fSniklas  i[345]86-ncr-sysv4.3)   host_makefile_frag=config/mh-ncrsvr43 ;;
1132159047fSniklas  i[345]86-ncr-sysv4*)    host_makefile_frag=config/mh-ncr3000 ;;
114*092d8970Sniklas  i[345]86-*-sco3.2v5*)   host_makefile_frag=config/mh-sysv ;;
1152159047fSniklas  i[345]86-*-sco*)        host_makefile_frag=config/mh-sco ;;
1162159047fSniklas  i[345]86-*-isc*)	  host_makefile_frag=config/mh-sysv ;;
1172159047fSniklas  i[345]86-*-linux*)      host_makefile_frag=config/mh-linux ;;
1182159047fSniklas  i[345]86-*-solaris2*)   host_makefile_frag=config/mh-sysv4 ;;
1192159047fSniklas  i[345]86-*-aix*)	  host_makefile_frag=config/mh-aix386 ;;
1202159047fSniklas  i[345]86-*-go32*)	  host_makefile_frag=config/mh-go32 ;;
1212159047fSniklas  vax-*-ultrix2*)         host_makefile_frag=config/mh-vaxult2 ;;
1222159047fSniklas  *-*-solaris2*)          host_makefile_frag=config/mh-solaris ;;
1232159047fSniklas  m68k-sun-sunos*)	  host_makefile_frag=config/mh-sun3 ;;
1242159047fSniklas  *-hp-hpux[78]*)         host_makefile_frag=config/mh-hpux8 ;;
1252159047fSniklas  *-hp-hpux*)             host_makefile_frag=config/mh-hpux ;;
1262159047fSniklas  *-*-hiux*)              host_makefile_frag=config/mh-hpux ;;
1272159047fSniklas  rs6000-*-lynxos*)	  host_makefile_frag=config/mh-lynxrs6k ;;
1282159047fSniklas  *-*-lynxos*)	  	  host_makefile_frag=config/mh-lynxos ;;
1292159047fSniklas  *-*-sysv4*)             host_makefile_frag=config/mh-sysv4 ;;
1302159047fSniklas  *-*-sysv*)              host_makefile_frag=config/mh-sysv ;;
1312159047fSniklasesac
1322159047fSniklasfi
1332159047fSniklas
134*092d8970Sniklas# If we aren't going to be using gcc, see if we can extract a definition
135*092d8970Sniklas# of CC from the fragment.
136*092d8970Sniklasif [ -z "${CC}" -a "${build}" = "${host}" ]; then
137*092d8970Sniklas  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
138*092d8970Sniklas  found=
139*092d8970Sniklas  for dir in $PATH; do
140*092d8970Sniklas    test -z "$dir" && dir=.
141*092d8970Sniklas    if test -f $dir/gcc; then
142*092d8970Sniklas      found=yes
143*092d8970Sniklas      break
144*092d8970Sniklas    fi
145*092d8970Sniklas  done
146*092d8970Sniklas  IFS="$save_ifs"
147*092d8970Sniklas  if [ -z "${found}" -a -n "${host_makefile_frag}" -a -f "${srcdir}/${host_makefile_frag}" ]; then
1482159047fSniklas    xx=`sed -n -e 's/^[ 	]*CC[ 	]*=[ 	]*\(.*\)$/\1/p' < ${srcdir}/${host_makefile_frag}`
1492159047fSniklas    if [ -n "${xx}" ] ; then
1502159047fSniklas      CC=$xx
1512159047fSniklas    fi
1522159047fSniklas  fi
1532159047fSniklasfi
1542159047fSniklas
1552159047fSniklas# We default to --with-shared on platforms where -fpic is meaningless.
1562159047fSniklas# Well, we don't yet, but we will.
1572159047fSniklasif false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
1582159047fSniklas  case "${target}" in
1592159047fSniklas    alpha-dec-osf*)	enable_shared=yes ;;
160*092d8970Sniklas    alpha-*-linux*)	enable_shared=yes ;;
1612159047fSniklas    mips-sgi-irix5*)	enable_shared=yes ;;
1622159047fSniklas    *)			enable_shared=no ;;
1632159047fSniklas  esac
1642159047fSniklasfi
1652159047fSniklas
166*092d8970Sniklascase "${enable_shared}" in
167*092d8970Sniklas  yes) shared=yes ;;
168*092d8970Sniklas  no) shared=no ;;
169*092d8970Sniklas  "") shared=no ;;
170*092d8970Sniklas  *) shared=yes ;;
171*092d8970Sniklasesac
172*092d8970Sniklas
173*092d8970Sniklasif [ x${shared} = xyes ]; then
1742159047fSniklas  waugh=
1752159047fSniklas  case "${host}" in
1762159047fSniklas    hppa*)		waugh=config/mh-papic ;;
1772159047fSniklas    i[345]86-*)		waugh=config/mh-x86pic ;;
178*092d8970Sniklas    sparc64-*)		waugh=config/mh-sparcpic ;;
1792159047fSniklas    *)			waugh=config/mh-${host_cpu}pic ;;
1802159047fSniklas  esac
1812159047fSniklas  if [ -f ${srcdir}/${waugh} ]; then
1822159047fSniklas    if [ -n "${host_makefile_frag}" ] ; then
1832159047fSniklas      cat ${srcdir}/${host_makefile_frag} > mh-frag
1842159047fSniklas      cat ${srcdir}/${waugh} >> mh-frag
1852159047fSniklas      host_makefile_frag=mh-frag
1862159047fSniklas    else
1872159047fSniklas      host_makefile_frag=${waugh}
1882159047fSniklas    fi
1892159047fSniklas  fi
1902159047fSniklasfi
1912159047fSniklas
1922159047fSniklas# per-target:
1932159047fSniklas
1942159047fSniklascase "${target}" in
1952159047fSniklas  v810*)		target_makefile_frag=config/mt-v810 ;;
1962159047fSniklas  i[345]86-*-netware*)  target_makefile_frag=config/mt-netware ;;
1972159047fSniklas  powerpc-*-netware*)   target_makefile_frag=config/mt-netware ;;
1982159047fSniklasesac
1992159047fSniklas
2002159047fSniklasskipdirs=
2012159047fSniklasgasdir=gas
2022159047fSniklasuse_gnu_ld=
2032159047fSniklasuse_gnu_as=
2042159047fSniklas
2052159047fSniklas# some tools are so dependent upon X11 that if we're not building with X,
2062159047fSniklas# it's not even worth trying to configure, much less build, that tool.
2072159047fSniklas
2082159047fSniklascase ${with_x} in
2092159047fSniklas  yes | "")  # the default value for this tree is that X11 is available
2102159047fSniklas	;;
2112159047fSniklas  no)
2122159047fSniklas	skipdirs="${skipdirs} tk gash"
2132159047fSniklas	;;
2142159047fSniklas  *)
2152159047fSniklas    	echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2
2162159047fSniklas    	;;
2172159047fSniklasesac
2182159047fSniklas
2192159047fSniklas# Some tools are only suitable for building in a "native" situation.
2202159047fSniklas# Those are added when we have a host==target configuration.  For cross
2212159047fSniklas# toolchains, we add some directories that should only be useful in a
2222159047fSniklas# cross-compiler.
2232159047fSniklas
2242159047fSniklasis_cross_compiler=
2252159047fSniklas
2262159047fSniklasif [ x"${host}" = x"${target}" ] ; then
2272159047fSniklas	# when doing a native toolchain, don't build the targets
2282159047fSniklas	# that are in the 'cross only' list
2292159047fSniklas	skipdirs="${skipdirs} ${cross_only}"
2302159047fSniklas	is_cross_compiler=no
2312159047fSniklas	target_subdir=.
2322159047fSniklaselse
2332159047fSniklas	# similarly, don't build the targets in the 'native only'
2342159047fSniklas	# list when building a cross compiler
2352159047fSniklas	skipdirs="${skipdirs} ${native_only}"
2362159047fSniklas	is_cross_compiler=yes
2372159047fSniklas	target_subdir=${target_alias}
2382159047fSniklas	if [ ! -d ${target_subdir} ] ; then
2392159047fSniklas	    if mkdir ${target_subdir} ; then true
2402159047fSniklas	    else
2412159047fSniklas		echo "'*** could not make ${PWD=`pwd`}/${target_subdir}" 1>&2
2422159047fSniklas                exit 1
2432159047fSniklas	    fi
2442159047fSniklas	fi
2452159047fSniklasfi
2462159047fSniklas
2472159047fSniklascopy_dirs=
2482159047fSniklas
2492159047fSniklas# Handle --with-headers=XXX.  The contents of the named directory are
2502159047fSniklas# copied to $(tooldir)/sys-include.
2512159047fSniklasif [ x"${with_headers}" != x ]; then
2522159047fSniklas  if [ x${is_cross_compiler} = xno ]; then
2532159047fSniklas    echo 1>&2 '***' --with-headers is only supported when cross compiling
2542159047fSniklas    exit 1
2552159047fSniklas  fi
2562159047fSniklas  case "${exec_prefixoption}" in
2572159047fSniklas  "") x=${prefix} ;;
2582159047fSniklas  *) x=${exec_prefix} ;;
2592159047fSniklas  esac
2602159047fSniklas  copy_dirs="${copy_dirs} ${with_headers} $x/${target_alias}/sys-include"
2612159047fSniklasfi
2622159047fSniklas
2632159047fSniklas# Handle --with-libs=XXX.  Multiple directories are permitted.  The
2642159047fSniklas# contents are copied to $(tooldir)/lib.
2652159047fSniklasif [ x"${with_libs}" != x ]; then
2662159047fSniklas  if [ x${is_cross_compiler} = xno ]; then
2672159047fSniklas    echo 1>&2 '***' --with-libs is only supported when cross compiling
2682159047fSniklas    exit 1
2692159047fSniklas  fi
2702159047fSniklas  # Copy the libraries in reverse order, so that files in the first named
2712159047fSniklas  # library override files in subsequent libraries.
2722159047fSniklas  case "${exec_prefixoption}" in
2732159047fSniklas  "") x=${prefix} ;;
2742159047fSniklas  *) x=${exec_prefix} ;;
2752159047fSniklas  esac
2762159047fSniklas  for l in ${with_libs}; do
2772159047fSniklas    copy_dirs="$l $x/${target_alias}/lib ${copy_dirs}"
2782159047fSniklas  done
2792159047fSniklasfi
2802159047fSniklas
2812159047fSniklas# If both --with-headers and --with-libs are specified, default to
2822159047fSniklas# --without-newlib.
2832159047fSniklasif [ x"${with_headers}" != x ] && [ x"${with_libs}" != x ]; then
2842159047fSniklas  if [ x"${with_newlib}" = x ]; then
2852159047fSniklas    with_newlib=no
2862159047fSniklas  fi
2872159047fSniklasfi
2882159047fSniklas
2892159047fSniklas# Recognize --with-newlib/--without-newlib.
2902159047fSniklasif [ x${with_newlib} = xno ]; then
2912159047fSniklas  skipdirs="${skipdirs} target-newlib"
2922159047fSniklaselif [ x${with_newlib} = xyes ]; then
2932159047fSniklas  skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
2942159047fSniklasfi
2952159047fSniklas
296*092d8970Sniklas# Default to using --with-stabs for certain targets.
297*092d8970Sniklasif [ x${with_stabs} = x ]; then
298*092d8970Sniklas  case "${target}" in
299*092d8970Sniklas  mips*-*-* | alpha*-*-osf* | i[345]86*-*-sysv4* | i[345]86*-*-unixware*)
300*092d8970Sniklas    with_stabs=yes;
301*092d8970Sniklas    withoptions="${withoptions} --with-stabs"
302*092d8970Sniklas    ;;
303*092d8970Sniklas  esac
304*092d8970Sniklasfi
305*092d8970Sniklas
3062159047fSniklas# Handle ${copy_dirs}
3072159047fSniklasset fnord ${copy_dirs}
3082159047fSniklasshift
3092159047fSniklaswhile [ $# != 0 ]; do
3102159047fSniklas  if [ -f $2/COPIED ] && [ x"`cat $2/COPIED`" = x"$1" ]; then
3112159047fSniklas    :
3122159047fSniklas  else
3132159047fSniklas    echo Copying $1 to $2
3142159047fSniklas
3152159047fSniklas    # Use the install script to create the directory and all required
3162159047fSniklas    # parent directories.
3172159047fSniklas    if [ -d $2 ]; then
3182159047fSniklas      :
3192159047fSniklas    else
3202159047fSniklas      echo >config.temp
3212159047fSniklas      ${srcdir}/install.sh -c -m 644 config.temp $2/COPIED
3222159047fSniklas    fi
3232159047fSniklas
3242159047fSniklas    # Copy the directory, assuming we have tar.
3252159047fSniklas    # FIXME: Should we use B in the second tar?  Not all systems support it.
3262159047fSniklas    (cd $1; tar -cf - .) | (cd $2; tar -xpf -)
3272159047fSniklas
3282159047fSniklas    # It is the responsibility of the user to correctly adjust all
3292159047fSniklas    # symlinks.  If somebody can figure out how to handle them correctly
3302159047fSniklas    # here, feel free to add the code.
3312159047fSniklas
3322159047fSniklas    echo $1 > $2/COPIED
3332159047fSniklas  fi
3342159047fSniklas  shift; shift
3352159047fSniklasdone
3362159047fSniklas
3372159047fSniklas# Configure extra directories which are host specific
3382159047fSniklas
3392159047fSniklascase "${host}" in
340*092d8970Sniklas	i[345]86-*-go32*)
3412159047fSniklas	  configdirs="$configdirs dosrel" ;;
3422159047fSniklasesac
3432159047fSniklas
3442159047fSniklas# Remove more programs from consideration, based on the host or
3452159047fSniklas# target this usually means that a port of the program doesn't
3462159047fSniklas# exist yet.
3472159047fSniklas
3482159047fSniklasnoconfigdirs=""
3492159047fSniklas
3502159047fSniklascase "${host}" in
3512159047fSniklas  i[345]86-*-vsta)
352*092d8970Sniklas    noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet"
3532159047fSniklas    ;;
3542159047fSniklas  i[345]86-*-go32)
355*092d8970Sniklas    noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet"
3562159047fSniklas	;;
357*092d8970Sniklas  *-*-cygwin32)
358*092d8970Sniklas     noconfigdirs="patch diff tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs guile perl apache inet"
359*092d8970Sniklas    ;;
360*092d8970Sniklas  ppc*-*-pe)
361*092d8970Sniklas     noconfigdirs="patch diff make tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs guile perl apache inet"
3622159047fSniklas    ;;
3632159047fSniklasesac
3642159047fSniklas
3652159047fSniklas
3662159047fSniklascase "${target}" in
3672159047fSniklas  *-*-netware)
368*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty target-libgloss"
3692159047fSniklas    ;;
370*092d8970Sniklas  *-*-vxworks*)
371*092d8970Sniklas    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
372*092d8970Sniklas    ;;
373*092d8970Sniklas  *-*-ose)
374*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libgloss"
3752159047fSniklas    ;;
3762159047fSniklas  alpha-dec-osf*)
3772159047fSniklas    # ld works, but does not support shared libraries.  emacs doesn't
3782159047fSniklas    # work.  newlib is not 64 bit ready.  I'm not sure about fileutils or grep.
379*092d8970Sniklas    # gas doesn't generate exception information.
380*092d8970Sniklas    noconfigdirs="$noconfigdirs gas ld emacs fileutils grep target-newlib target-libgloss"
3812159047fSniklas    ;;
3822159047fSniklas  alpha*-*-*)
3832159047fSniklas    # newlib is not 64 bit ready
384*092d8970Sniklas    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
385*092d8970Sniklas    ;;
386*092d8970Sniklas  arm-*-pe*)
387*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libgloss"
3882159047fSniklas    ;;
3892159047fSniklas  arm-*-riscix*)
390*092d8970Sniklas    noconfigdirs="$noconfigdirs ld target-libgloss"
3912159047fSniklas    ;;
3922159047fSniklas  h8300*-*-* | \
3932159047fSniklas  h8500-*-*)
394*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
3952159047fSniklas    ;;
3962159047fSniklas  hppa*-*-*elf* | \
3972159047fSniklas  hppa*-*-lites*)
3982159047fSniklas    # Do configure ld/binutils/gas for this case.
3992159047fSniklas    ;;
4002159047fSniklas  hppa*-*-*)
4012159047fSniklas    # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
4022159047fSniklas    # cc is gcc, and on any system a user should be able to link cc to
4032159047fSniklas    # whatever they want.  FIXME, emacs emacs19).
4042159047fSniklas    case "${CC}" in
4052159047fSniklas	"" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
4062159047fSniklas        *) ;;
4072159047fSniklas    esac
4082159047fSniklas    noconfigdirs="$noconfigdirs ld shellutils"
4092159047fSniklas    ;;
4102159047fSniklas  i[345]86-*-go32)
4112159047fSniklas    # but don't build gdb
4122159047fSniklas    noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
4132159047fSniklas    ;;
414*092d8970Sniklas  *-*-cygwin32)
415*092d8970Sniklas    target_configdirs="$target_configdirs target-winsup"
416*092d8970Sniklas    noconfigdirs="$noconfigdirs tcl tk expect target-libgloss"
4172159047fSniklas    # always build newlib.
4182159047fSniklas    skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
419*092d8970Sniklas
420*092d8970Sniklas    # Can't build gdb for cygwin32 if not native.
421*092d8970Sniklas    case "${host}:${build}" in
422*092d8970Sniklas      *-*-cygwin32 | *-*-cygwin32:*-*-cygwin32) ;; # keep gdb
423*092d8970Sniklas      *) noconfigdirs="$noconfigdirs gdb"
424*092d8970Sniklas    esac
4252159047fSniklas    ;;
4262159047fSniklas  i[345]86-*-pe)
427*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
428*092d8970Sniklas    ;;
429*092d8970Sniklas  i[345]86-*-sco3.2v5*)
430*092d8970Sniklas    # The linker does not yet know about weak symbols in COFF,
431*092d8970Sniklas    # and is not configured to handle mixed ELF and COFF.
432*092d8970Sniklas    noconfigdirs="$noconfigdirs gprof ld target-libgloss"
4332159047fSniklas    ;;
4342159047fSniklas  i[345]86-*-sco*)
435*092d8970Sniklas    noconfigdirs="$noconfigdirs gprof target-libgloss"
4362159047fSniklas    ;;
4372159047fSniklas  i[345]86-*-solaris2*)
4382159047fSniklas    # The linker does static linking correctly, but the Solaris C library
4392159047fSniklas    # has bugs such that some important functions won't work when statically
4402159047fSniklas    # linked.  (See man pages for getpwuid, for example.)
441*092d8970Sniklas    noconfigdirs="$noconfigdirs ld target-libgloss"
4422159047fSniklas    ;;
4432159047fSniklas  i[345]86-*-sysv4*)
4442159047fSniklas    # The SYSV4 C compiler doesn't handle Emacs correctly
4452159047fSniklas    case "${CC}" in
4462159047fSniklas	"" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
4472159047fSniklas        *) ;;
4482159047fSniklas    esac
4492159047fSniklas    # but that's okay since emacs doesn't work anyway
450*092d8970Sniklas    noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss"
4512159047fSniklas    ;;
4522159047fSniklas  powerpc-*-aix*)
4532159047fSniklas    # copied from rs6000-*-* entry
454*092d8970Sniklas    noconfigdirs="$noconfigdirs gprof cvs target-libgloss"
455*092d8970Sniklas    # This is needed until gcc and ld are fixed to work together.
456*092d8970Sniklas    use_gnu_ld=no
4572159047fSniklas    ;;
458*092d8970Sniklas  powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
459*092d8970Sniklas    target_configdirs="$target_configdirs target-winsup"
460*092d8970Sniklas    noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss"
461*092d8970Sniklas    # always build newlib.
462*092d8970Sniklas    skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
463*092d8970Sniklas    ;;
464*092d8970Sniklas    # This is temporary until we can link against shared libraries
465*092d8970Sniklas  powerpcle-*-solaris*)
466*092d8970Sniklas    noconfigdirs="$noconfigdirs gdb sim make tcl tk expect"
4672159047fSniklas    ;;
4682159047fSniklas  rs6000-*-lynxos*)
4692159047fSniklas    # The CVS server code doesn't work on the RS/6000
4702159047fSniklas    # Newlib makes problems for libg++ in crosses.
4712159047fSniklas    noconfigdirs="$noconfigdirs target-newlib gprof cvs"
4722159047fSniklas    ;;
473*092d8970Sniklas  rs6000-*-aix*)
474*092d8970Sniklas    noconfigdirs="$noconfigdirs gprof"
475*092d8970Sniklas    # This is needed until gcc and ld are fixed to work together.
476*092d8970Sniklas    use_gnu_ld=no
477*092d8970Sniklas    ;;
4782159047fSniklas  rs6000-*-*)
4792159047fSniklas    noconfigdirs="$noconfigdirs gprof"
4802159047fSniklas    ;;
4812159047fSniklas  m68k-apollo-*)
482*092d8970Sniklas    noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss"
4832159047fSniklas    ;;
4842159047fSniklas  mips*-*-irix5*)
4852159047fSniklas    # The GNU linker does not support shared libraries.
4862159047fSniklas    # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
487*092d8970Sniklas    noconfigdirs="$noconfigdirs ld gprof emacs target-libgloss"
4882159047fSniklas    ;;
4892159047fSniklas  mips*-dec-bsd*)
490*092d8970Sniklas    noconfigdirs="$noconfigdirs gprof target-libgloss"
4912159047fSniklas    ;;
4922159047fSniklas  mips*-*-bsd*)
493*092d8970Sniklas    noconfigdirs="$noconfigdirs gprof target-libgloss"
4942159047fSniklas    ;;
4952159047fSniklas  mips*-*-*)
4962159047fSniklas    noconfigdirs="$noconfigdirs gprof"
4972159047fSniklas    ;;
4982159047fSniklas  romp-*-*)
499*092d8970Sniklas    noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss"
5002159047fSniklas    ;;
5012159047fSniklas  sh-*-*)
5022159047fSniklas    case "${host}" in
5032159047fSniklas      i[345]86-*-vsta) ;; # don't add gprof back in
5042159047fSniklas      i[345]86-*-go32) ;; # don't add gprof back in
5052159047fSniklas      *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
5062159047fSniklas    esac
507*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libgloss"
5082159047fSniklas    ;;
5092159047fSniklas  sparc-*-sunos4*)
5102159047fSniklas    if [ x${is_cross_compiler} != xno ] ; then
511*092d8970Sniklas           noconfigdirs="$noconfigdirs gdb gdbtest target-newlib target-libgloss"
5122159047fSniklas    else
5132159047fSniklas           use_gnu_ld=no
5142159047fSniklas    fi
5152159047fSniklas    ;;
5162159047fSniklas  v810-*-*)
517*092d8970Sniklas    noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes target-libgloss"
5182159047fSniklas    ;;
5192159047fSniklas  vax-*-vms)
520*092d8970Sniklas    noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss"
5212159047fSniklas    ;;
5222159047fSniklas  vax-*-*)
523*092d8970Sniklas    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
5242159047fSniklas    ;;
5252159047fSniklas  *-*-lynxos*)
5262159047fSniklas    # Newlib makes problems for libg++ in crosses.
527*092d8970Sniklas    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
5282159047fSniklas    ;;
5292159047fSniklas  *-*-macos* | \
5302159047fSniklas  *-*-mpw*)
5312159047fSniklas    # Macs want a resource compiler.
5322159047fSniklas    configdirs="$configdirs grez"
5332159047fSniklas    ;;
5342159047fSniklasesac
5352159047fSniklas
536*092d8970Sniklas# targets that need a second pass
537*092d8970Sniklascase "${target}" in
538*092d8970Sniklas  *-gm-magic*)
539*092d8970Sniklas    noconfigdirs="$noconfigdirs target-libgloss"
540*092d8970Sniklas    ;;
541*092d8970Sniklasesac
542*092d8970Sniklas
543*092d8970Sniklas# If we aren't building newlib, then don't build libgloss, since libgloss
544*092d8970Sniklas# depends upon some newlib header files.
545*092d8970Sniklascase "${noconfigdirs}" in
546*092d8970Sniklas  *target-libgloss*) ;;
547*092d8970Sniklas  *target-newlib*) noconfigdirs="$noconfigdirs target-libgloss" ;;
548*092d8970Sniklasesac
549*092d8970Sniklas
5502159047fSniklas# If we are building a Canadian Cross, discard tools that can not be built
5512159047fSniklas# using a cross compiler.  FIXME: These tools should be fixed.
5522159047fSniklasif [ "${build}" != "${host}" ]; then
5532159047fSniklas  noconfigdirs="$noconfigdirs expect dejagnu make texinfo diff"
5542159047fSniklasfi
5552159047fSniklas
556*092d8970Sniklas# Make sure we don't let GNU ld be added if we didn't want it.
557*092d8970Sniklasif [ x$with_gnu_ld = xno ]; then
558*092d8970Sniklas  use_gnu_ld=no
559*092d8970Sniklas  noconfigdirs="$noconfigdirs ld"
560*092d8970Sniklasfi
561*092d8970Sniklas
562*092d8970Sniklas# Make sure we don't let GNU as be added if we didn't want it.
563*092d8970Sniklasif [ x$with_gnu_as = xno ]; then
564*092d8970Sniklas  use_gnu_as=no
565*092d8970Sniklas  noconfigdirs="$noconfigdirs gas"
566*092d8970Sniklasfi
567*092d8970Sniklas
5682159047fSniklas# Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
5692159047fSniklas# $target_configdirs.
5702159047fSniklas# If we have the source for $noconfigdirs entries, add them to $notsupp.
5712159047fSniklas
5722159047fSniklasnotsupp=""
5732159047fSniklasfor dir in . $skipdirs $noconfigdirs ; do
5742159047fSniklas  dirname=`echo $dir | sed -e s/target-//g`
5752159047fSniklas  if [ $dir != . ]  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
5762159047fSniklas    configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
5772159047fSniklas    if [ -r $srcdir/$dirname/configure ] \
5782159047fSniklas	|| [ -r $srcdir/$dirname/configure.in ]; then
5792159047fSniklas      if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
5802159047fSniklas	true
5812159047fSniklas      else
5822159047fSniklas	notsupp="$notsupp $dir"
5832159047fSniklas      fi
5842159047fSniklas    fi
5852159047fSniklas  fi
5862159047fSniklas  if [ $dir != . ]  && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
5872159047fSniklas    target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
5882159047fSniklas    if [ -r $srcdir/$dirname/configure ] \
5892159047fSniklas	|| [ -r $srcdir/$dirname/configure.in ]; then
5902159047fSniklas      if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
5912159047fSniklas	true
5922159047fSniklas      else
5932159047fSniklas	notsupp="$notsupp $dir"
5942159047fSniklas      fi
5952159047fSniklas    fi
5962159047fSniklas  fi
5972159047fSniklasdone
5982159047fSniklas
5992159047fSniklas# Sometimes the tools are distributed with libiberty but with no other
6002159047fSniklas# libraries.  In that case, we don't want to build target-libiberty.
6012159047fSniklasif [ -n "${target_configdirs}" ]; then
6022159047fSniklas  others=
6032159047fSniklas  for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
6042159047fSniklas    if [ "$i" != "libiberty" ]; then
6052159047fSniklas      if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then
6062159047fSniklas	others=yes;
6072159047fSniklas	break;
6082159047fSniklas      fi
6092159047fSniklas    fi
6102159047fSniklas  done
6112159047fSniklas  if [ -z "${others}" ]; then
6122159047fSniklas    target_configdirs=
6132159047fSniklas  fi
6142159047fSniklasfi
6152159047fSniklas
6162159047fSniklas# Deconfigure all subdirectories, in case we are changing the
6172159047fSniklas# configuration from one where a subdirectory is supported to one where it
6182159047fSniklas# is not.
6192159047fSniklasif [ -z "${norecursion}" -a -n "${configdirs}" ]; then
6202159047fSniklas  for i in `echo ${configdirs} | sed -e s/target-//g` ; do
6212159047fSniklas    rm -f $i/Makefile
6222159047fSniklas  done
6232159047fSniklasfi
6242159047fSniklasif [ -z "${norecursion}" -a -n "${target_configdirs}" ]; then
625*092d8970Sniklas  for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
6262159047fSniklas    rm -f ${target_subdir}/$i/Makefile
6272159047fSniklas  done
6282159047fSniklasfi
6292159047fSniklas
6302159047fSniklas# Produce a warning message for the subdirs we can't configure.
6312159047fSniklas# This isn't especially interesting in the Cygnus tree, but in the individual
6322159047fSniklas# FSF releases, it's important to let people know when their machine isn't
6332159047fSniklas# supported by the one or two programs in a package.
6342159047fSniklas
6352159047fSniklasif [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then
6362159047fSniklas  # If $appdirs is non-empty, at least one of those directories must still
6372159047fSniklas  # be configured, or we error out.  (E.g., if the gas release supports a
6382159047fSniklas  # specified target in some subdirs but not the gas subdir, we shouldn't
6392159047fSniklas  # pretend that all is well.)
6402159047fSniklas  if [ -n "$appdirs" ]; then
6412159047fSniklas    for dir in $appdirs ; do
6422159047fSniklas      if [ -r $dir/Makefile.in ]; then
6432159047fSniklas	if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
6442159047fSniklas	  appdirs=""
6452159047fSniklas	  break
6462159047fSniklas	fi
6472159047fSniklas	if echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
6482159047fSniklas	  appdirs=""
6492159047fSniklas	  break
6502159047fSniklas	fi
6512159047fSniklas      fi
6522159047fSniklas    done
6532159047fSniklas    if [ -n "$appdirs" ]; then
6542159047fSniklas      echo "*** This configuration is not supported by this package." 1>&2
6552159047fSniklas      exit 1
6562159047fSniklas    fi
6572159047fSniklas  fi
6582159047fSniklas  # Okay, some application will build, or we don't care to check.  Still
6592159047fSniklas  # notify of subdirs not getting built.
6602159047fSniklas  echo "*** This configuration is not supported in the following subdirectories:" 1>&2
6612159047fSniklas  echo "    ${notsupp}" 1>&2
6622159047fSniklas  echo "    (Any other directories should still work fine.)" 1>&2
6632159047fSniklasfi
6642159047fSniklas
6652159047fSniklas# Set with_gnu_as and with_gnu_ld as appropriate.
6662159047fSniklas#
6672159047fSniklas# This is done by determining whether or not the appropriate directory
6682159047fSniklas# is available, and by checking whether or not specific configurations
6692159047fSniklas# have requested that this magic not happen.
6702159047fSniklas#
6712159047fSniklas# The command line options always override the explicit settings in
6722159047fSniklas# configure.in, and the settings in configure.in override this magic.
6732159047fSniklas#
6742159047fSniklas# If the default for a toolchain is to use GNU as and ld, and you don't
6752159047fSniklas# want to do that, then you should use the --without-gnu-as and
6762159047fSniklas# --without-gnu-ld options for the configure script.
6772159047fSniklas
6782159047fSniklasif [ x${use_gnu_as} = x ] ; then
6792159047fSniklas  if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then
6802159047fSniklas    with_gnu_as=yes
6812159047fSniklas    withoptions="$withoptions --with-gnu-as"
6822159047fSniklas  fi
6832159047fSniklasfi
6842159047fSniklas
6852159047fSniklasif [ x${use_gnu_ld} = x ] ; then
6862159047fSniklas  if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then
6872159047fSniklas    with_gnu_ld=yes
6882159047fSniklas    withoptions="$withoptions --with-gnu-ld"
6892159047fSniklas  fi
6902159047fSniklasfi
6912159047fSniklas
692*092d8970Sniklasif [ x${shared} = xyes ]; then
6932159047fSniklas  case "${target}" in
6942159047fSniklas    hppa*)		target_makefile_frag=config/mt-papic ;;
6952159047fSniklas    i[345]86-*)		target_makefile_frag=config/mt-x86pic ;;
6962159047fSniklas    *)			target_makefile_frag=config/mt-${target_cpu}pic ;;
6972159047fSniklas  esac
6982159047fSniklasfi
6992159047fSniklas
7002159047fSniklas# post-target:
7012159047fSniklas
702*092d8970Sniklas# Make sure that the compiler is able to generate an executable.  If it
703*092d8970Sniklas# can't, we are probably in trouble.  We don't care whether we can run the
704*092d8970Sniklas# executable--we might be using a cross compiler--we only care whether it
705*092d8970Sniklas# can be created.  At this point the main configure script has set CC.
706*092d8970Sniklasecho "int main () { return 0; }" > conftest.c
707*092d8970Sniklas${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
708*092d8970Sniklasif [ $? = 0 ] && [ -s conftest ]; then
709*092d8970Sniklas  :
710*092d8970Sniklaselse
711*092d8970Sniklas  echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
712*092d8970Sniklas  echo 1>&2 "*** You must set the environment variable CC to a working compiler."
713*092d8970Sniklas  rm -f conftest*
714*092d8970Sniklas  exit 1
715*092d8970Sniklasfi
716*092d8970Sniklasrm -f conftest*
717*092d8970Sniklas
718*092d8970Sniklas# The Solaris /usr/ucb/cc compiler does not appear to work.
719*092d8970Sniklascase "${host}" in
720*092d8970Sniklas  sparc-sun-solaris2*)
721*092d8970Sniklas      CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`"
722*092d8970Sniklas      if [ "`/usr/bin/which $CCBASE`" = "/usr/ucb/cc" ] ; then
723*092d8970Sniklas          could_use=
724*092d8970Sniklas          [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin"
725*092d8970Sniklas          if [ -d /opt/cygnus/bin ] ; then
726*092d8970Sniklas              if [ "$could_use" = "" ] ; then
727*092d8970Sniklas                  could_use="/opt/cygnus/bin"
728*092d8970Sniklas              else
729*092d8970Sniklas                  could_use="$could_use or /opt/cygnus/bin"
730*092d8970Sniklas              fi
731*092d8970Sniklas          fi
732*092d8970Sniklas        if [ "$could_use" = "" ] ; then
733*092d8970Sniklas            echo "Warning: compilation may fail because you're using"
734*092d8970Sniklas            echo "/usr/ucb/cc.  You should change your PATH or CC "
735*092d8970Sniklas            echo "variable and rerun configure."
736*092d8970Sniklas        else
737*092d8970Sniklas            echo "Warning: compilation may fail because you're using"
738*092d8970Sniklas            echo "/usr/ucb/cc, when you should use the C compiler from"
739*092d8970Sniklas            echo "$could_use.  You should change your"
740*092d8970Sniklas            echo "PATH or CC variable and rerun configure."
741*092d8970Sniklas        fi
742*092d8970Sniklas      fi
743*092d8970Sniklas  ;;
744*092d8970Sniklasesac
745*092d8970Sniklas
746*092d8970Sniklas# If --enable-shared was set, we must set LD_LIBRARY_PATH so that the
747*092d8970Sniklas# binutils tools will find libbfd.so.
748*092d8970Sniklasif [ "${shared}" = "yes" ]; then
749*092d8970Sniklas  sed -e 's/^SET_LIB_PATH[ 	]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \
750*092d8970Sniklas      Makefile > Makefile.tem
751*092d8970Sniklas  rm -f Makefile
752*092d8970Sniklas  mv -f Makefile.tem Makefile
753*092d8970Sniklas
754*092d8970Sniklas  case "${host}" in
755*092d8970Sniklas  *-*-hpux*)
756*092d8970Sniklas    sed -e 's/RPATH_ENVVAR[ 	]*=.*$/RPATH_ENVVAR = SHLIB_PATH/' \
757*092d8970Sniklas	Makefile > Makefile.tem
758*092d8970Sniklas    rm -f Makefile
759*092d8970Sniklas    mv -f Makefile.tem Makefile
760*092d8970Sniklas    ;;
761*092d8970Sniklas  esac
762*092d8970Sniklasfi
763*092d8970Sniklas
7642159047fSniklas# Record target_configdirs and the configure arguments in Makefile.
7652159047fSniklastarget_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
7662159047fSniklastargargs=`echo "${arguments}" | \
767*092d8970Sniklas	sed -e 's/--norecursion//' \
768*092d8970Sniklas	    -e 's/--cache[a-z-]*=[^ 	]*//' \
769*092d8970Sniklas	    -e 's/--ho[a-z-]*=[^ 	]*//' \
770*092d8970Sniklas	    -e 's/--ta[a-z-]*=[^ 	]*//'`
771*092d8970Sniklas
772*092d8970Sniklas# Passing a --with-cross-host argument lets the target libraries know
773*092d8970Sniklas# whether they are being built with a cross-compiler or being built
774*092d8970Sniklas# native.  However, it would be better to use other mechanisms to make the
775*092d8970Sniklas# sorts of decisions they want to make on this basis.  Please consider
776*092d8970Sniklas# this option to be deprecated.  FIXME.
777*092d8970Sniklasif [ x${is_cross_compiler} = xyes ]; then
778*092d8970Sniklas  targargs="--with-cross-host=${host_alias} ${targargs}"
779*092d8970Sniklasfi
780*092d8970Sniklas
781*092d8970Sniklastargargs="--host=${target_alias} ${targargs}"
7822159047fSniklassed -e "s:^TARGET_CONFIGDIRS[ 	]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
7832159047fSniklas    -e "s%^CONFIG_ARGUMENTS[ 	]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
7842159047fSniklas    -e "s%^TARGET_SUBDIR[ 	]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
7852159047fSniklas       Makefile > Makefile.tem
7862159047fSniklasrm -f Makefile
7872159047fSniklasmv -f Makefile.tem Makefile
7882159047fSniklas
7892159047fSniklas#
7902159047fSniklas# Local Variables:
7912159047fSniklas# fill-column: 131
7922159047fSniklas# End:
7932159047fSniklas#
794