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