Add support for ARM's Thumb instruction set.
[platform/upstream/gcc.git] / configure.in
index e251e85..21c0b4b 100644 (file)
@@ -14,7 +14,7 @@
 ## For more information on these two systems, check out the documentation
 ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi).  
 
-#   Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -55,7 +55,7 @@ host_tools="texinfo byacc flex bison binutils ld gas gcc sim gdb make patch prms
 # these libraries are built for the target environment, and are built after
 # the host libraries and the host tools (which may be a cross compiler)
 #
-target_libs="target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++"
+target_libs="target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++ target-libf2c"
 
 
 # these tools are built using the target libs, and are intended to run only
@@ -107,42 +107,117 @@ appdirs=""
 # Work in distributions that contain no compiler tools, like Autoconf.
 if [ -d ${srcdir}/config ]; then
 case "${host}" in
-  m68k-hp-hpux*)         host_makefile_frag=config/mh-hp300 ;;
-  m68k-apollo-sysv*)      host_makefile_frag=config/mh-apollo68 ;;
-  m68k-apollo-bsd*)       host_makefile_frag=config/mh-a68bsd ;;
-  m88k-dg-dgux*)         host_makefile_frag=config/mh-dgux ;;
-  m88k-harris-cxux*)     host_makefile_frag=config/mh-cxux ;;
-  m88k-motorola-sysv*)    host_makefile_frag=config/mh-delta88;;
-  mips*-dec-ultrix*)      host_makefile_frag=config/mh-decstation ;;
-  mips*-nec-sysv4*)      host_makefile_frag=config/mh-necv4 ;;
-  mips*-sgi-irix6*)      host_makefile_frag=config/mh-irix6 ;;
-  mips*-sgi-irix5*)      host_makefile_frag=config/mh-irix5 ;;
-  mips*-sgi-irix4*)       host_makefile_frag=config/mh-irix4 ;;
-  mips*-sgi-irix3*)       host_makefile_frag=config/mh-sysv ;;
-  mips*-*-sysv4*)        host_makefile_frag=config/mh-sysv4 ;;
-  mips*-*-sysv*)         host_makefile_frag=config/mh-riscos ;;
-  i[3456]86-*-dgux*)     host_makefile_frag=config/mh-dgux386 ;;
-  i[3456]86-ncr-sysv4.3)  host_makefile_frag=config/mh-ncrsvr43 ;;
-  i[3456]86-ncr-sysv4*)   host_makefile_frag=config/mh-ncr3000 ;;
-  i[3456]86-*-sco3.2v5*)  host_makefile_frag=config/mh-sysv ;;
-  i[3456]86-*-sco*)       host_makefile_frag=config/mh-sco ;;
-  i[3456]86-*-isc*)      host_makefile_frag=config/mh-sysv ;;
-  i[3456]86-*-solaris2*)  host_makefile_frag=config/mh-sysv4 ;;
-  i[3456]86-*-aix*)      host_makefile_frag=config/mh-aix386 ;;
-  i[3456]86-*-go32*)     host_makefile_frag=config/mh-go32 ;;
-  i[3456]86-*-msdosdjgpp*) host_makefile_frag=config/mh-go32 ;;
-  *-cygwin32*)           host_makefile_frag=config/mh-cygwin32 ;;
-  *-windows*)            host_makefile_frag=config/mh-windows ;;
-  vax-*-ultrix2*)         host_makefile_frag=config/mh-vaxult2 ;;
-  *-*-solaris2*)          host_makefile_frag=config/mh-solaris ;;
-  m68k-sun-sunos*)       host_makefile_frag=config/mh-sun3 ;;
-  *-hp-hpux[78]*)         host_makefile_frag=config/mh-hpux8 ;;
-  *-hp-hpux*)             host_makefile_frag=config/mh-hpux ;;
-  *-*-hiux*)              host_makefile_frag=config/mh-hpux ;;
-  rs6000-*-lynxos*)      host_makefile_frag=config/mh-lynxrs6k ;;
-  *-*-lynxos*)           host_makefile_frag=config/mh-lynxos ;;
-  *-*-sysv4*)             host_makefile_frag=config/mh-sysv4 ;;
-  *-*-sysv*)              host_makefile_frag=config/mh-sysv ;;
+  m68k-hp-hpux*)
+    host_makefile_frag="${host_makefile_frag} config/mh-hp300"
+    ;;
+  m68k-apollo-sysv*)
+    host_makefile_frag="${host_makefile_frag} config/mh-apollo68"
+    ;;
+  m68k-apollo-bsd*)
+    host_makefile_frag="${host_makefile_frag} config/mh-a68bsd"
+    ;;
+  m88k-dg-dgux*)
+    host_makefile_frag="${host_makefile_frag} config/mh-dgux"
+    ;;
+  m88k-harris-cxux*)
+    host_makefile_frag="${host_makefile_frag} config/mh-cxux"
+    ;;
+  m88k-motorola-sysv*)
+    host_makefile_frag="${host_makefile_frag} config/mh-delta88"
+    ;;
+  mips*-dec-ultrix*)
+    host_makefile_frag="${host_makefile_frag} config/mh-decstation"
+    ;;
+  mips*-nec-sysv4*)
+    host_makefile_frag="${host_makefile_frag} config/mh-necv4"
+    ;;
+  mips*-sgi-irix6*)
+    host_makefile_frag="${host_makefile_frag} config/mh-irix6"
+    ;;
+  mips*-sgi-irix5*)
+    host_makefile_frag="${host_makefile_frag} config/mh-irix5"
+    ;;
+  mips*-sgi-irix4*)
+    host_makefile_frag="${host_makefile_frag} config/mh-irix4"
+    ;;
+  mips*-sgi-irix3*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv"
+    ;;
+  mips*-*-sysv4*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
+    ;;
+  mips*-*-sysv*)
+    host_makefile_frag="${host_makefile_frag} config/mh-riscos"
+    ;;
+  i[3456]86-*-dgux*)
+    host_makefile_frag="${host_makefile_frag} config/mh-dgux386"
+    ;;
+  i[3456]86-ncr-sysv4.3*)
+    host_makefile_frag="${host_makefile_frag} config/mh-ncrsvr43"
+    ;;
+  i[3456]86-ncr-sysv4*)
+    host_makefile_frag="${host_makefile_frag} config/mh-ncr3000"
+    ;;
+  i[3456]86-*-sco3.2v5*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv"
+    ;;
+  i[3456]86-*-sco*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sco"
+    ;;
+  i[3456]86-*-isc*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv"
+    ;;
+  i[3456]86-*-solaris2*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
+    ;;
+  i[3456]86-*-aix*)
+    host_makefile_frag="${host_makefile_frag} config/mh-aix386"
+    ;;
+  i[3456]86-*-go32*)
+    host_makefile_frag="${host_makefile_frag} config/mh-go32"
+    ;;
+  i[3456]86-*-msdosdjgpp*)
+    host_makefile_frag="${host_makefile_frag} config/mh-go32"
+    ;;
+  *-cygwin32*)
+    host_makefile_frag="${host_makefile_frag} config/mh-cygwin32"
+    ;;
+  *-mingw32*)
+    host_makefile_frag="${host_makefile_frag} config/mh-mingw32"
+    ;;
+  *-windows*)
+    host_makefile_frag="${host_makefile_frag} config/mh-windows"
+    ;;
+  vax-*-ultrix2*)
+    host_makefile_frag="${host_makefile_frag} config/mh-vaxult2"
+    ;;
+  *-*-solaris2*)
+    host_makefile_frag="${host_makefile_frag} config/mh-solaris"
+    ;;
+  m68k-sun-sunos*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sun3"
+    ;;
+  *-hp-hpux[78]*)
+    host_makefile_frag="${host_makefile_frag} config/mh-hpux8"
+    ;;
+  *-hp-hpux*)
+    host_makefile_frag="${host_makefile_frag} config/mh-hpux"
+    ;;
+  *-*-hiux*)
+    host_makefile_frag="${host_makefile_frag} config/mh-hpux"
+    ;;
+  rs6000-*-lynxos*)
+    host_makefile_frag="${host_makefile_frag} config/mh-lynxrs6k"
+    ;;
+  *-*-lynxos*)
+    host_makefile_frag="${host_makefile_frag} config/mh-lynxos"
+    ;;
+  *-*-sysv4*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
+    ;;
+  *-*-sysv*)
+    host_makefile_frag="${host_makefile_frag} config/mh-sysv"
+    ;;
 esac
 fi
 
@@ -171,8 +246,8 @@ fi
 # Well, we don't yet, but we will.
 if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
   case "${target}" in
-    alpha-dec-osf*)    enable_shared=yes ;;
-    alpha-*-linux*)    enable_shared=yes ;;
+    alpha*-dec-osf*)   enable_shared=yes ;;
+    alpha*-*-linux*)   enable_shared=yes ;;
     mips-sgi-irix5*)   enable_shared=yes ;;
     *)                 enable_shared=no ;;
   esac
@@ -186,31 +261,54 @@ case "${enable_shared}" in
 esac
 
 if [ x${shared} = xyes ]; then
-  waugh=
   case "${host}" in
-    hppa*)             waugh=config/mh-papic ;;
-    i[3456]86-*)       waugh=config/mh-x86pic ;;
-    sparc64-*)         waugh=config/mh-sparcpic ;;
-    powerpc*-*)                waugh=config/mh-ppcpic ;;
-    *)                 waugh=config/mh-${host_cpu}pic ;;
+    hppa*)
+      host_makefile_frag="${host_makefile_frag} config/mh-papic"
+      ;;
+    i[3456]86-*)
+      host_makefile_frag="${host_makefile_frag} config/mh-x86pic"
+      ;;
+    sparc64-*)
+      host_makefile_frag="${host_makefile_frag} config/mh-sparcpic"
+      ;;
+    powerpc*-*)
+      host_makefile_frag="${host_makefile_frag} config/mh-ppcpic"
+      ;;
+    alpha*-*-linux*)
+      host_makefile_frag="${host_makefile_frag} config/mh-elfalphapic"
+      ;;
+    *)
+      if test -f ${srcdir}/config/mh-${host_cpu}pic; then
+        host_makefile_frag="${host_makefile_frag} config/mh-${host_cpu}pic"
+      fi
+      ;;
   esac
-  if [ -f ${srcdir}/${waugh} ]; then
-    if [ -n "${host_makefile_frag}" ] ; then
-      cat ${srcdir}/${host_makefile_frag} > mh-frag
-      cat ${srcdir}/${waugh} >> mh-frag
-      host_makefile_frag=mh-frag
-    else
-      host_makefile_frag=${waugh}
-    fi
-  fi
+fi
+
+rm -f mh-frag
+if [ -n "${host_makefile_frag}" ] ; then
+  for f in ${host_makefile_frag}
+  do
+    cat ${srcdir}/$f >> mh-frag
+  done
+  host_makefile_frag=mh-frag
 fi
 
 # per-target:
 
 case "${target}" in
-  v810*)               target_makefile_frag=config/mt-v810 ;;
-  i[3456]86-*-netware*) target_makefile_frag=config/mt-netware ;;
-  powerpc-*-netware*)   target_makefile_frag=config/mt-netware ;;
+  v810*)
+    target_makefile_frag="${target_makefile_frag} config/mt-v810"
+    ;;
+  i[3456]86-*-netware*)
+    target_makefile_frag="${target_makefile_frag} config/mt-netware"
+    ;;
+  powerpc-*-netware*)
+    target_makefile_frag="${target_makefile_frag} config/mt-netware"
+    ;;
+  *-*-linux-gnu)
+    target_makefile_frag="${target_makefile_frag} config/mt-linux"
+    ;;
 esac
 
 skipdirs=
@@ -244,12 +342,12 @@ if [ x"${host}" = x"${target}" ] ; then
        # that are in the 'cross only' list
        skipdirs="${skipdirs} ${cross_only}"
        is_cross_compiler=no
-       target_subdir=.
-       case "${host}" in
-          # We need multilib support for irix6, to get libiberty built
-         #  properly for o32 and n32.
-          mips-sgi-irix6*) target_subdir=${host} ;;
-       esac
+       # Default to --enable-multilib.  See similar code below.
+       if [ x${enable_multilib} = xno ]; then
+         target_subdir=.
+       else
+         target_subdir=libraries
+       fi
 else
        # similarly, don't build the targets in the 'native only' 
        # list when building a cross compiler
@@ -363,6 +461,8 @@ done
 case "${host}" in
        i[3456]86-*-go32*)
          configdirs="$configdirs dosrel" ;;
+       i[3456]86-*-mingw32*)
+         configdirs="$configdirs dosrel" ;;
        *-cygwin32*)
          configdirs="$configdirs dosrel" ;;
 esac
@@ -380,6 +480,10 @@ case "${host}" in
   i[3456]86-*-go32* | i[3456]86-*-msdosdjgpp*)
     noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db sn gnuserv"
        ;;
+  i[3456]86-*-mingw32*)
+    # noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db sn gnuserv"
+     noconfigdirs="expect dejagnu cvs autoconf automake send-pr gprof rcs guile perl texinfo apache inet"
+       ;;
   *-*-cygwin32)
      noconfigdirs="expect dejagnu cvs autoconf automake bison send-pr gprof rcs guile perl texinfo apache inet"
     ;;
@@ -399,10 +503,13 @@ case "${target}" in
   *-*-netware)
     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty target-libgloss"
     ;;
+  *-*-rtems*)
+    noconfigdirs="$noconfigdirs target-libgloss"
+    ;;
   *-*-vxworks*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
-  alpha-dec-osf*)
+  alpha*-dec-osf*)
     # ld works, but does not support shared libraries.  emacs doesn't
     # work.  newlib is not 64 bit ready.  I'm not sure about fileutils.
     # gas doesn't generate exception information.
@@ -411,6 +518,12 @@ case "${target}" in
   alpha*-*-*vms*)
     noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
     ;;
+  alpha*-*-linux*)
+    # newlib is not 64 bit ready
+    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+    # linux has rx in libc
+    skipdirs="$skipdirs target-librx"
+    ;;
   alpha*-*-*)
     # newlib is not 64 bit ready
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
@@ -427,6 +540,9 @@ case "${target}" in
   arm-*-riscix*)
     noconfigdirs="$noconfigdirs ld target-libgloss"
     ;;
+  thumb-*-coff)
+    noconfigdirs="$noconfigdirs target-libgloss"
+    ;;
   d10v-*-*)
     noconfigdirs="$noconfigdirs target-librx target-libg++ target-libstdc++ target-libio target-libgloss"
     ;;
@@ -435,8 +551,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
     ;;
   hppa*-*-*elf* | \
-  hppa*-*-lites* | \
-  hppa*-*-rtems* )
+  hppa*-*-lites*)
     # Do configure ld/binutils/gas for this case.
     ;;
   hppa*-*-*)
@@ -453,6 +568,21 @@ case "${target}" in
     # but don't build gdb
     noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
     ;;
+  *-*-linux*)
+    # linux has rx in libc
+    skipdirs="$skipdirs target-librx"
+    ;;
+  i[3456]86-*-mingw32*)
+    target_configdirs="$target_configdirs target-mingw"
+    noconfigdirs="$noconfigdirs expect target-libgloss"
+
+    # Can't build gdb for cygwin32 if not native.
+    case "${host}" in
+      i[3456]86-*-mingw32) ;; # keep gdb tcl tk expect etc.
+      *) noconfigdirs="$noconfigdirs gdb tcl tk expect itcl tix db sn gnuserv"
+         ;;
+    esac
+    ;;    
   *-*-cygwin32)
     target_configdirs="$target_configdirs target-winsup"
     noconfigdirs="$noconfigdirs expect target-libgloss"
@@ -754,13 +884,35 @@ fi
 
 if [ x${shared} = xyes ]; then
   case "${target}" in
-    hppa*)             target_makefile_frag=config/mt-papic ;;
-    i[3456]86-*)       target_makefile_frag=config/mt-x86pic ;;
-    powerpc*-*)                target_makefile_frag=config/mt-ppcpic ;;
-    *)                 target_makefile_frag=config/mt-${target_cpu}pic ;;
+    hppa*)
+      target_makefile_frag="${target_makefile_frag} config/mt-papic"
+      ;;
+    i[3456]86-*)
+      target_makefile_frag="${target_makefile_frag} config/mt-x86pic"
+      ;;
+    powerpc*-*)
+      target_makefile_frag="${target_makefile_frag} config/mt-ppcpic"
+      ;;
+    alpha*-*-linux*)
+      target_makefile_frag="${target_makefile_frag} config/mt-elfalphapic"
+      ;;
+    *)
+      if test -f ${srcdir}/config/mt-${target_cpu}pic; then
+        target_makefile_frag="${target_makefile_frag} config/mt-${target_cpu}pic"
+      fi
+      ;;
   esac
 fi
 
+rm -f mt-frag
+if [ -n "${target_makefile_frag}" ] ; then
+  for f in ${target_makefile_frag}
+  do
+    cat ${srcdir}/$f >> mt-frag
+  done
+  target_makefile_frag=mt-frag
+fi
+
 # post-target:
 
 # Make sure that the compiler is able to generate an executable.  If it
@@ -825,10 +977,10 @@ if [ "${shared}" = "yes" ]; then
   esac
 fi
 
-# If we are building for a cygwin32 host, then set INSTALL_PROGRAM_ARGS to
+# If we are building for a win32 host, then set INSTALL_PROGRAM_ARGS to
 # -x.  This will cause programs to be installed with .exe extensions.
 case "${host}" in
-*-*-cygwin32*)
+*-*-cygwin32* | i[3456]86-*-mingw32)
     sed -e 's/^INSTALL_PROGRAM_ARGS[   ]*=.*$/INSTALL_PROGRAM_ARGS = -x/' \
        Makefile > Makefile.tem
     rm -f Makefile