]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gas/configure.in
* config/sh/tm-sh.h (BELIEVE_PCC_PROMOTION): Define, so that
[thirdparty/binutils-gdb.git] / gas / configure.in
index b9e02a37fb3d468d219b30d79290d87c03ec6b38..ae6ad9770feb217fdb60dc41ee992d303ffa2455 100644 (file)
@@ -4,9 +4,16 @@ dnl And be careful when changing it!  If you must add tests with square
 dnl brackets, be sure changequote invocations surround it.
 dnl
 dnl
-AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al
-AC_INIT(as.h)dnl
-dnl
+dnl v2.5 needed for --bindir et al
+AC_PREREQ(2.13)
+AC_INIT(as.h)
+
+AC_CANONICAL_SYSTEM
+
+AM_INIT_AUTOMAKE(gas, 2.9.4)
+
+AM_PROG_LIBTOOL
+
 user_bfd_gas=
 AC_ARG_ENABLE(bfd-assembler,
 [  --enable-bfd-assembler  use BFD back end for writing object files],
@@ -23,32 +30,28 @@ AC_ARG_ENABLE(targets,
   no)      enable_targets= ;;
   *)       enable_targets=$enableval ;;
 esac])dnl
-AC_ARG_ENABLE(shared,
-[  --enable-shared         build shared BFD library],
+AC_ARG_ENABLE(commonbfdlib,
+[  --enable-commonbfdlib   build shared BFD/opcodes/libiberty library],
 [case "${enableval}" in
-  yes) shared=true shared_bfd=true shared_opcodes=true ;;
-  no)  shared=false ;;
-  *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;;
-  *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;;
-  *bfd*) shared=true shared_bfd=true ;;
-  *opcodes*) shared=true shared_opcodes=true ;;
-  *) shared=false ;;
+  yes) commonbfdlib=true ;;
+  no)  commonbfdlib=false ;;
+  *)   AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
 esac])dnl
 
-# Generate a header file -- gets more post-processing by Makefile later.
-AC_CONFIG_HEADER(conf)
+using_cgen=no
 
-dnl For recursion to work right, this must be an absolute pathname.
-AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
-AC_CANONICAL_SYSTEM
-AC_ARG_PROGRAM
+# Generate a header file
+AM_CONFIG_HEADER(config.h:config.in)
 
 te_file=generic
 
+# Makefile target for installing gas in $(tooldir)/bin.
+install_tooldir=install-exec-tooldir
+
 canon_targets=""
 if test -n "$enable_targets" ; then
   for t in `echo $enable_targets | sed 's/,/ /g'`; do
-    result=`$ac_config_sub $t 2>/dev/null`
+    result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null`
     if test -n "$result" ; then
       canon_targets="$canon_targets $result"
 #    else
@@ -63,27 +66,42 @@ emulations=""
 
 for this_target in $target $canon_targets ; do
 
-    eval `echo $this_target | sed 's/^\(.*\)-\(.*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
+changequote(,)dnl
+    eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
+changequote([,])dnl
 
     # check for architecture variants
+    arch=
+    endian=
     case ${cpu} in
+      alpha*)          cpu_type=alpha ;;
       armeb)           cpu_type=arm endian=big ;;
       arm*)            cpu_type=arm endian=little ;;
+      strongarm*)      cpu_type=arm endian=little ;;
+      thumb*)          cpu_type=arm endian=little ;;
       hppa*)           cpu_type=hppa ;;
 changequote(,)dnl
       i[456]86)                cpu_type=i386 ;;
       m680[012346]0)   cpu_type=m68k ;;
+changequote([,])dnl
       m68008)          cpu_type=m68k ;;
       m683??)          cpu_type=m68k ;;
-changequote([,])dnl
+      m5200)           cpu_type=m68k ;;
       m8*)             cpu_type=m88k ;;
-      mips*el)         cpu_type=mips endian=little;;
+      mips*el)         cpu_type=mips endian=little ;;
+# start-sanitize-r5900
+      mips*5900*)       cpu_type=mips endian=little ;;
+# end-sanitize-r5900
       mips*)           cpu_type=mips endian=big ;;
       powerpcle*)      cpu_type=ppc endian=little ;;
       powerpc*)                cpu_type=ppc endian=big ;;
       rs6000*)         cpu_type=ppc ;;
-      sparc64)         cpu_type=sparc want_sparc_v9=true ;;
-      sparc*)          cpu_type=sparc ;;
+      sparclite*)      cpu_type=sparc arch=sparclite ;;
+      sparclet*)       cpu_type=sparc arch=sparclet ;;
+      sparc64*)                cpu_type=sparc arch=v9-64 ;;
+      sparc86x*)       cpu_type=sparc arch=sparc86x  ;;
+      sparc*)          cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
+      v850*)           cpu_type=v850 ;;
       *)               cpu_type=${cpu} ;;
     esac
 
@@ -93,7 +111,6 @@ changequote([,])dnl
       continue
     fi
 
-    targ=${cpu_type}
     generic_target=${cpu_type}-$vendor-$os
     dev=no
     bfd_gas=no
@@ -101,185 +118,202 @@ changequote([,])dnl
 
     # assign object format
     case ${generic_target} in
-      a29k-*-coff)          fmt=coff targ=ebmon29k ;;
-      a29k-amd-udi)         fmt=coff targ=ebmon29k ;;
-      a29k-amd-ebmon)       fmt=coff targ=ebmon29k ;;
-      a29k-nyu-sym1)        fmt=coff targ=ebmon29k ;;
+      a29k-*-coff)          fmt=coff ;;
+      a29k-amd-udi)         fmt=coff ;;
+      a29k-amd-ebmon)       fmt=coff ;;
+      a29k-nyu-sym1)        fmt=coff ;;
       a29k-*-vxworks*)      fmt=coff ;;
 
-      alpha-*-netware*)     fmt=ecoff ;;
-      alpha-*-osf*)         fmt=ecoff ;;
-      alpha-*-linuxecoff*)  fmt=ecoff ;;
-      alpha-*-linux*)       fmt=elf em=linux ;;
+      alpha*-*-*vms*)      fmt=evax ;;
+      alpha*-*-netware*)    fmt=ecoff ;;
+      alpha*-*-openbsd*)    fmt=ecoff ;;
+      alpha*-*-osf*)        fmt=ecoff ;;
+      alpha*-*-linuxecoff*) fmt=ecoff ;;
+      alpha*-*-linux-gnu*)  fmt=elf em=linux ;;
+      alpha*-*-netbsd*)     fmt=elf em=nbsd ;;
 
-# start-sanitize-arc
       arc-*-elf*)           fmt=elf bfd_gas=yes ;;
-# end-sanitize-arc
 
-      arm-*-riscix*)       fmt=aout targ=arm-lit em=riscix ;;
-      arm-*-aout)          fmt=aout
-                           case "$endian" in
-                             big)      targ=arm-big ;;
-                             *)        targ=arm-lit ;;
-                           esac
-                           ;;
-      arm-*-coff)           fmt=coff ;;
+      arm-*-riscix*)       fmt=aout em=riscix ;;
+      arm-*-aout)          fmt=aout ;;
+      arm-*-coff | thumb-*-coff)           fmt=coff ;;
+      arm-*-elf | thumb-*-elf)              fmt=elf ;;
+      arm-*-oabi | thumb-*-oabi)           fmt=elf ;;
       arm-*-riscix*)        fmt=aout ;;
-      arm-*-pe)             fmt=coff targ=armcoff em=pe ;;
+      arm-*-pe | thumb-*-pe)               fmt=coff em=pe ;;
 
-# start-sanitize-d10v
-      d10v-*-elf*)           fmt=elf bfd_gas=yes ;;
-# end-sanitize-d10v
+      d10v-*-*)                    fmt=elf bfd_gas=yes ;;
+      d30v-*-*)                    fmt=elf bfd_gas=yes ;;
+
+# start-sanitize-sky
+      dvp-*-*)             fmt=elf bfd_gas=yes install_tooldir= ;;
+# end-sanitize-sky
+
+      fr30-*-*)                    fmt=elf bfd_gas=yes ;;
 
       hppa-*-*elf*)         fmt=elf em=hppa ;;
       hppa-*-lites*)        fmt=elf em=hppa ;;
       hppa-*-osf*)          fmt=som em=hppa ;;
+      hppa-*-rtems*)        fmt=elf em=hppa ;;
       hppa-*-hpux*)         fmt=som em=hppa ;;
+      hppa-*-mpeix*)        fmt=som em=hppa ;;
       hppa-*-bsd*)          fmt=som em=hppa ;;
       hppa-*-hiux*)         fmt=som em=hppa ;;
 
       h8300-*-coff)         fmt=coff ;;
 
-      i386-ibm-aix*)        fmt=coff targ=i386coff
-                            em=i386aix ;;
+      i386-ibm-aix*)        fmt=coff em=i386aix ;;
+      i386-sequent-bsd*)    fmt=aout em=dynix bfd_gas=yes ;;
+dnl start-sanitize-beos
+      i386-*-beospe*)       fmt=coff em=pe bfd_gas=yes ;;
+      i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
+dnl end-sanitize-beos
       i386-*-bsd*)          fmt=aout em=386bsd ;;
       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
       i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
+      i386-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes;;
       i386-*-linux*aout* | i386-*-linuxoldld)   fmt=aout em=linux ;;
-      i386-*-linux*coff*)   fmt=coff em=linux
-                            targ=i386coff ;;
-      i386-*-linux*)        fmt=elf em=linux ;;
-      i386-*-lynxos*)       fmt=coff targ=i386coff
-                            em=lynx ;;
-      i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*)
-                           fmt=elf ;;
-      i386-*-sco*elf*)      fmt=elf targ=sco5 ;;
-      i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
-                           fmt=coff targ=i386coff ;;
+      i386-*-linux*coff*)   fmt=coff em=linux ;;
+      i386-*-linux-gnu*)    fmt=elf em=linux bfd_gas=yes ;;
+      i386-*-lynxos*)       fmt=coff em=lynx ;;
+      i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
+                           fmt=elf bfd_gas=yes ;;
+      i386-*-freebsdelf*)   fmt=elf bfd_gas=yes ;;
+      i386-*-freebsd*)      fmt=aout em=386bsd ;;
+      i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
+                          fmt=coff ;;
+      i386-*-sco3.2v5*)      fmt=elf
+                           if test ${this_target} = $target; then
+                               AC_DEFINE(SCO_ELF)
+                           fi
+                           ;;
+      i386-*-sco3.2*)       fmt=coff ;;
       i386-*-vsta)          fmt=aout ;;
-      i386-*-go32)          fmt=coff targ=i386coff ;;
-      i386-*-rtems*)        fmt=coff targ=i386coff ;;
+      i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
+                           fmt=coff em=go32;;
+      i386-*-rtems*)        fmt=coff ;;
       i386-*-gnu*)          fmt=elf ;;
       i386-*-mach*)
                            fmt=aout em=mach bfd_gas=yes ;;
       i386-*-msdos*)        fmt=aout ;;
       i386-*-moss*)        fmt=elf ;;
-      i386-*-pe)            fmt=coff targ=i386coff em=pe ;;
-      i386-*-cygwin32)      fmt=coff targ=i386coff em=pe ;;
-      i386-*-*nt)           fmt=coff targ=i386coff em=pe ;;
+      i386-*-pe)            fmt=coff em=pe ;;
+      i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
+      i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
+      i386-*-*nt*)          fmt=coff em=pe ;;
       i960-*-bout)          fmt=bout ;;
-      i960-*-coff)          fmt=coff em=ic960 targ=ic960coff ;;
-      i960-*-rtems*)        fmt=coff em=ic960 targ=ic960coff ;;
+      i960-*-coff)          fmt=coff em=ic960 ;;
+      i960-*-rtems*)        fmt=coff em=ic960 ;;
       i960-*-nindy*)        fmt=bout ;;
       i960-*-vxworks4*)     fmt=bout ;;
       i960-*-vxworks5.0)    fmt=bout ;;
-      i960-*-vxworks5.*)    fmt=coff em=ic960 targ=ic960coff ;;
+      i960-*-vxworks5.*)    fmt=coff em=ic960 ;;
       i960-*-vxworks*)      fmt=bout ;;
 
+      m32r-*-*)                    fmt=elf bfd_gas=yes ;;
+
       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
                            fmt=aout em=sun3 ;;
-      m68k-motorola-sysv*)  fmt=coff targ=m68kcoff em=delta ;;
-      m68k-bull-sysv3*)     fmt=coff targ=m68kcoff em=dpx2 ;;
-      m68k-apollo-*)        fmt=coff targ=apollo em=apollo ;;
-      m68k-*-sysv4 | m68k-*-elf) # must be before -sysv*
-                           fmt=elf ;;
+      m68k-motorola-sysv*)  fmt=coff em=delta ;;
+      m68k-bull-sysv3*)     fmt=coff em=dpx2 ;;
+      m68k-apollo-*)        fmt=coff em=apollo ;;
+      m68k-*-sysv4*) # must be before -sysv*
+                           fmt=elf em=svr4 ;;
+      m68k-*-elf*)         fmt=elf ;;
       m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
-                           fmt=coff targ=m68kcoff ;;
+                           fmt=coff ;;
       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
       m68k-*-linux*aout*)   fmt=aout em=linux ;;
-      m68k-*-linux*)       fmt=elf em=linux ;;
-      m68k-*-lynxos*)       fmt=coff targ=m68kcoff
-                            em=lynx ;;
+      m68k-*-linux-gnu*)    fmt=elf em=linux ;;
+      m68k-*-gnu*)         fmt=elf ;;
+      m68k-*-lynxos*)       fmt=coff em=lynx ;;
       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
-      m68k-apple-aux*)      fmt=coff targ=m68kcoff em=aux ;;
+      m68k-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
+      m68k-apple-aux*)      fmt=coff em=aux ;;
       m68k-*-psos*)         fmt=elf em=psos;;
 
-      m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;;
-      m88k-*-coff*)         fmt=coff targ=m88kcoff ;;
+      m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
+      m88k-*-coff*)         fmt=coff ;;
 
       # don't change em like *-*-bsd does
-      mips-dec-netbsd*)            fmt=elf targ=mips-lit endian=little ;;
-      mips-dec-bsd*)        fmt=aout targ=mips-lit ;;
-      mips-sony-bsd*)       fmt=ecoff targ=mips-big ;;
+      mips-dec-netbsd*)            fmt=elf endian=little ;;
+      mips-dec-openbsd*)    fmt=elf endian=little ;;
+      mips-dec-bsd*)        fmt=aout endian=little ;;
+      mips-sony-bsd*)       fmt=ecoff ;;
       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
-      mips-*-ultrix*)       fmt=ecoff targ=mips-lit endian=little ;;
-      mips-*-osf*)          fmt=ecoff targ=mips-lit endian=little ;;
-      mips-*-ecoff*)        fmt=ecoff 
-                           case "$endian" in
-                           big) targ=mips-big ;;
-                           *)   targ=mips-lit ;;
-                           esac
-                           ;;
-      mips-*-ecoff*)        fmt=ecoff targ=mips-big ;;
-      mips-*-gnu*)          fmt=aout
-                           case "$endian" in
-                           big) targ=mips-big ;;
-                           *)   targ=mips-lit ;;
-                           esac
-                           ;;
-      mips-*-irix5*)        fmt=elf targ=mips-big ;;
-      mips-*-irix*)         fmt=ecoff targ=mips-big ;;
-      mips-*-riscos*)       fmt=ecoff targ=mips-big ;;
-      mips-*-sysv*)         fmt=ecoff targ=mips-big ;;
-      mips-*-elf*)          fmt=elf 
-                           case "$endian" in
-                           big) targ=mips-big ;;
-                           *)   targ=mips-lit ;;
-                           esac
-                           ;;
-      ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
-                           fmt=coff em=pe 
-                           case "$endian" in
-                           big) targ=ppc-big ;;
-                           *)   targ=ppc-lit ;;
-                           esac
-                            ;;
+      mips-*-ultrix*)       fmt=ecoff endian=little ;;
+      mips-*-osf*)          fmt=ecoff endian=little ;;
+      mips-*-ecoff*)        fmt=ecoff ;;
+      mips-*-ecoff*)        fmt=ecoff ;;
+      mips-*-irix6*)       fmt=elf ;;
+      mips-*-irix5*)        fmt=elf ;;
+      mips-*-irix*)         fmt=ecoff ;;
+      mips-*-lnews*)        fmt=ecoff em=lnews ;;
+      mips-*-riscos*)       fmt=ecoff ;;
+      mips-*-sysv*)         fmt=ecoff ;;
+      mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
+                           fmt=elf ;;
+      mn10200-*-*)         fmt=elf bfd_gas=yes ;;
+      mn10300-*-*)         fmt=elf bfd_gas=yes ;;
+      ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
+                           fmt=coff em=pe ;;
       ppc-*-aix*)           fmt=coff ;;
-      ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
-                           fmt=elf
-                           case "$endian" in
-                           big)  targ=ppc-big ;;
-                           *)    targ=ppc-lit ;;
-                           esac
-                           ;;
-      ppc-*-linux*)        fmt=elf
+      ppc-*-beos*)          fmt=coff ;;
+      ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
+                           fmt=elf ;;
+      ppc-*-linux-gnu*)            fmt=elf
                            case "$endian" in
-                           big)  targ=ppc-big ;;
-                           *)    AC_MSG_ERROR(Linux must be configured big endian) ;;
+                           big)  ;;
+                           *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
                            esac
                            ;;
       ppc-*-solaris*)      fmt=elf
-                           case "$endian" in
-                           big)  AC_MSG_ERROR(Solaris must be configured little endian) ;;
-                           *)    targ=ppc-sol ;;
-                           esac
-                           ;;
-      ppc-*-rtems*)
-                           fmt=elf
-                           case "$endian" in
-                           big)  targ=ppc-big ;;
-                           *)    targ=ppc-lit ;;
-                           esac
+                           if test ${this_target} = $target; then
+                               AC_DEFINE(TARGET_SOLARIS_COMMENT)
+                           fi
+                           if test x${endian} = xbig; then
+                               AC_MSG_ERROR(Solaris must be configured little endian)
+                           fi
                            ;;
+      ppc-*-rtems*)        fmt=elf ;;
       ppc-*-macos* | ppc-*-mpw*)
                            fmt=coff em=macos ;;
       ppc-*-netware*)       fmt=elf em=ppcnw ;;
 
-      sh-*-coff)            fmt=coff ;;
+      sh-*-elf*)           fmt=elf ;;
+      sh-*-coff*)           fmt=coff ;;
+      sh-*-rtems*)         fmt=coff ;;
 
       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
       ns32k-pc532-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
+      ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
 
       sparc-*-rtems*)       fmt=aout ;;
       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
       sparc-*-aout | sparc*-*-vxworks*)
-                           fmt=aout ;;
+                           fmt=aout em=sparcaout ;;
       sparc-*-coff)         fmt=coff ;;
+      sparc-*-linux*aout*)  fmt=aout em=linux ;;
+      sparc-*-linux-gnu*)   fmt=elf em=linux ;;
       sparc-*-lynxos*)      fmt=coff em=lynx ;;
       sparc-fujitsu-none)   fmt=aout ;;
-      sparc-*-elf | sparc-*-solaris*)
+      sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
                            fmt=elf ;;
-      sparc-*-netbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
+      sparc-*-netbsd*)      fmt=aout em=nbsd ;;
+      sparc-*-openbsd*)     fmt=aout em=nbsd ;;
+
+      strongarm-*-coff)     fmt=coff ;;
+      strongarm-*-elf)      fmt=elf ;;
+
+      tic30-*-*aout*)      fmt=aout bfd_gas=yes ;;
+      tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
+# start-sanitize-tic80
+      tic80-*-*)           fmt=coff ;;
+# end-sanitize-tic80
+
+      v850-*-*)                    fmt=elf bfd_gas=yes ;;
+      v850e-*-*)           fmt=elf bfd_gas=yes ;;
+      v850ea-*-*)          fmt=elf bfd_gas=yes ;;
 
       vax-*-bsd* | vax-*-ultrix*)
                            fmt=aout ;;
@@ -306,8 +340,16 @@ changequote([,])dnl
       *-*-netware)          fmt=elf ;;
     esac
 
+    if test ${this_target} = $target ; then
+      if test x${endian} = xbig; then
+       AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 1)
+      elif test x${endian} = xlittle; then
+       AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 0)
+      fi
+    fi
+
     case ${cpu_type}-${fmt} in
-      alpha-*) bfd_gas=yes ;;
+      alpha*-*)        bfd_gas=yes ;;
       arm-*)   bfd_gas=yes ;;
     # not yet
     # i386-aout)       bfd_gas=preferred ;;
@@ -315,6 +357,7 @@ changequote([,])dnl
       ns32k-*) bfd_gas=yes ;;
       ppc-*)   bfd_gas=yes ;;
       sparc-*) bfd_gas=yes ;;
+      strongarm-*)     bfd_gas=yes ;;
       *-elf)   bfd_gas=yes ;;
       *-ecoff) bfd_gas=yes ;;
       *-som)   bfd_gas=yes ;;
@@ -323,12 +366,19 @@ changequote([,])dnl
 
 # Other random stuff.
 
-    # do we need the opcodes library?
+    # Do we need the opcodes library?
     case ${cpu_type} in
-      vax | i386)
+      vax | i386 | tic30)
        ;;
+
       *)
        need_opcodes=yes
+
+       case "${enable_shared}" in
+       yes) shared_opcodes=true ;;
+       *opcodes*) shared_opcodes=true ;;
+       *) shared_opcodes=false ;;
+       esac
        if test "${shared_opcodes}" = "true"; then
          # A shared libopcodes must be linked against libbfd.
          need_bfd=yes
@@ -336,27 +386,58 @@ changequote([,])dnl
        ;;
     esac
 
-    test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9)
-
-    case ${cpu}-${vendor}-${os} in
-      sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;;
-    esac
-
+    # Any other special object files needed ?
     case ${cpu_type} in
+      fr30 | m32r)
+       using_cgen=yes
+       ;;
+
       m68k)
        case ${extra_objects} in
        *m68k-parse.o*) ;;
        *) extra_objects="$extra_objects m68k-parse.o" ;;
        esac
        ;;
+
+      mips)
+       echo ${extra_objects} | grep -s "itbl-parse.o" 
+       if test $? -ne 0 ; then
+         extra_objects="$extra_objects itbl-parse.o"
+       fi
+
+       echo ${extra_objects} | grep -s "itbl-lex.o" 
+       if test $? -ne 0 ; then
+         extra_objects="$extra_objects itbl-lex.o"
+       fi
+
+       echo ${extra_objects} | grep -s "itbl-ops.o" 
+       if test $? -ne 0 ; then
+         extra_objects="$extra_objects itbl-ops.o"
+       fi
+       ;;
+
+      sparc)
+       if test $this_target = $target ; then
+         AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}")
+       fi
+       ;;
+
+      *)
+       ;;
     esac
 
+    if test $using_cgen = yes ; then
+       case "x${extra_objects}" in
+       *cgen.o*) ;;
+       *) extra_objects="$extra_objects cgen.o" ;;
+       esac
+    fi
+
 # See if we really can support this configuration with the emulation code.
 
     if test $this_target = $target ; then
       primary_bfd_gas=$bfd_gas
       obj_format=$fmt
-      gas_target=$targ
       te_file=$em
 
       if test $bfd_gas = no ; then
@@ -372,6 +453,11 @@ changequote([,])dnl
 
     case ${generic_target}-${fmt} in
       mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
+      mips-*-linux-gnu*-*) case "$endian" in
+                       big)    emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
+                       *)      emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
+                       esac ;;
+      mips-*-lnews*-ecoff) ;;
       mips-*-*-ecoff)  case "$endian" in
                        big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
                        *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
@@ -379,6 +465,10 @@ changequote([,])dnl
       mips-*-*-elf)    case "$endian" in
                        big)    emulation="mipsbelf mipslelf mipself" ;;
                        *)      emulation="mipslelf mipsbelf mipself" ;;
+      # Uncommenting the next line will turn on support for i386 COFF
+      # in any i386 ELF configuration.  This probably doesn't work
+      # correctly.
+      # i386-*-*-elf)  emulation="i386coff i386elf" ;;
                        esac ;;
     esac
 
@@ -398,6 +488,16 @@ case "${obj_format}" in
   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
 esac
 
+# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
+cgen_cpu_prefix=""
+if test $using_cgen = yes ; then
+  case ${target_cpu} in
+    *) cgen_cpu_prefix=${target_cpu} ;;
+  esac
+  AC_SUBST(cgen_cpu_prefix)
+  AC_DEFINE(USING_CGEN)
+fi
+
 dnl
 dnl Make sure the desired support files exist.
 dnl
@@ -410,14 +510,6 @@ if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
 fi
 
-# and target makefile frag
-
-target_frag=${srcdir}/config/${gas_target}.mt
-if test ! -r ${target_frag}; then
-  target_frag=/dev/null # ick! but subst_file can't be conditionalized
-fi
-AC_SUBST_FILE(target_frag)
-
 case ${user_bfd_gas}-${primary_bfd_gas} in
   yes-yes | no-no)
     # We didn't override user's choice.
@@ -473,6 +565,10 @@ for em in . $emulations ; do
        fmt=elf   file=mipself ;;
     mipsbecoff | mipslecoff)
        fmt=ecoff file=mipsecoff ;;
+    i386coff)
+       fmt=coff  file=i386coff ;;
+    i386elf)
+       fmt=elf   file=i386elf ;;
   esac
   formats="$formats $fmt"
   emfiles="$emfiles e-$file.o"
@@ -508,13 +604,6 @@ AC_SUBST(extra_objects)
 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
 
-files="config/tc-${target_cpu_type}.c config/tc-${target_cpu_type}.h \
-       config/obj-${obj_format}.h config/obj-${obj_format}.c \
-       config/te-${te_file}.h config/atof-${atof}.c \
-       $extra_files"
-links="targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c \
-       $extra_links"
-
 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
   yes-*-coff)  need_bfd=yes ;;
   no-*-coff)   need_bfd=yes
@@ -531,11 +620,11 @@ esac
 
 AC_SUBST(target_cpu_type)
 AC_SUBST(obj_format)
+AC_SUBST(te_file)
+AC_SUBST(install_tooldir)
 AC_SUBST(atof)
 dnl AC_SUBST(emulation)
 
-AC_LINK_FILES($files, $links)
-
 case "${primary_bfd_gas}" in
   yes) AC_DEFINE(BFD_ASSEMBLER)
        need_bfd=yes ;;
@@ -544,68 +633,20 @@ esac
 # do we need the opcodes library?
 case "${need_opcodes}" in
 yes)
-  OPCODES_DEP=../opcodes/libopcodes.a
-  OPCODES_LIB='-L../opcodes -lopcodes'
-
-  # We need to handle some special cases for shared libraries.
-  case "${host}" in
-  *-*-sunos*)
-    # On SunOS, we must link against the name we are going to install,
-    # not -lbfd, since SunOS does not support SONAME.
-    if test "${shared_opcodes}" = "true"; then
-      OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`'
-    fi
-    ;;
-  alpha*-*-osf*)
-    # On Alpha OSF/1, the native linker searches all the -L
-    # directories for any LIB.so files, and only then searches for any
-    # LIB.a files.  That means that if there is an installed
-    # libbfd.so, but this build is not done with --enable-shared, the
-    # link will wind up being against the install libbfd.so rather
-    # than the newly built libbfd.  To avoid this, we must explicitly
-    # link against libbfd.a when --enable-shared is not used.
-    if test "${shared_opcodes}" != "true"; then
-      OPCODES_LIB='../opcodes/libopcodes.a'
-    fi
-    ;;
-  esac
+  OPCODES_LIB=../opcodes/libopcodes.la
   ;;
 esac
-AC_SUBST(OPCODES_DEP)
-AC_SUBST(OPCODES_LIB)
 
 case "${need_bfd}" in
 yes)
-  BFDDEP=../bfd/libbfd.a
-  BFDLIB='-L../bfd -lbfd'
+  BFDLIB=../bfd/libbfd.la
   ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
-
-  # We need to handle some special cases for shared libraries
-  case "${host}" in
-  *-*-sunos*)
-    # On SunOS, we must link against the name we are going to install,
-    # not -lbfd, since SunOS does not support SONAME.
-    if test "${shared_bfd}" = "true"; then
-      BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
-    fi
-    ;;
-  alpha*-*-osf*)
-    # On Alpha OSF/1, the native linker searches all the -L
-    # directories for any LIB.so files, and only then searches for any
-    # LIB.a files.  That means that if there is an installed
-    # libbfd.so, but this build is not done with --enable-shared, the
-    # link will wind up being against the install libbfd.so rather
-    # than the newly built libbfd.  To avoid this, we must explicitly
-    # link against libbfd.a when --enable-shared is not used.
-    if test "${shared_bfd}" != "true"; then
-      BFDLIB='../bfd/libbfd.a'
-    fi
-    ;;
-  esac
   ;;
 esac
-AC_SUBST(BFDDEP)
+
 AC_SUBST(BFDLIB)
+AC_SUBST(OPCODES_LIB)
+
 AC_SUBST(ALL_OBJ_DEPS)
 
 AC_DEFINE_UNQUOTED(TARGET_ALIAS,       "${target_alias}")
@@ -615,7 +656,15 @@ AC_DEFINE_UNQUOTED(TARGET_VENDOR,  "${target_vendor}")
 AC_DEFINE_UNQUOTED(TARGET_OS,          "${target_os}")
 
 AC_PROG_CC
-AC_PROG_INSTALL
+
+AC_PROG_YACC
+AM_PROG_LEX
+
+ALL_LINGUAS=
+CY_GNU_GETTEXT
+
+AM_MAINTAINER_MODE
+AC_EXEEXT
 
 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
 
@@ -655,6 +704,10 @@ gas_test_headers="
 #endif
 #ifdef HAVE_STRING_H
 #include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
 #endif
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -663,8 +716,10 @@ gas_test_headers="
 #include <unistd.h>
 #endif
 "
+GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
+GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
 
 # Does errno.h declare errno, or do we have to add a separate declaration
 # for it?
@@ -674,52 +729,26 @@ GAS_CHECK_DECL_NEEDED(errno, f, int f, [
 #endif
 ])
 
-HLDFLAGS=
-RPATH_ENVVAR=LD_LIBRARY_PATH
-# If we have shared libraries, try to set rpath reasonably.
-if test "${shared}" = "true"; then
-  case "${host}" in
-  *-*-hpux*)
-    HLDFLAGS='-Wl,+s,+b,$(libdir)'
-    RPATH_ENVVAR=SHLIB_PATH
-    ;;
-  *-*-irix5*)
-    HLDFLAGS='-Wl,-rpath,$(libdir)'
-    ;;
-  *-*-linux*aout*)
-    ;;
-  *-*-linux*)
-    HLDFLAGS='-Wl,-rpath,$(libdir)'
-    ;;
-  *-*-sysv4* | *-*-solaris*)
-    HLDFLAGS='-R $(libdir)'
-    ;;
-  esac
-fi
-
-# On SunOS, if the linker supports the -rpath option, use it to
-# prevent ../bfd and ../opcodes from being included in the run time
-# search path.
-case "${host}" in
-  *-*-sunos*)
-    echo 'main () { }' > conftest.c
-    ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
-    if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
-      :
-    elif grep 'No such file' conftest.t >/dev/null 2>&1; then
-      :
-    elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
-      :
-    elif test "${shared}" = "true"; then
-      HLDFLAGS='-Wl,-rpath=$(libdir)'
-    else
-      HLDFLAGS='-Wl,-rpath='
-    fi
-    rm -f conftest.t conftest.c conftest
-    ;;
-esac
-AC_SUBST(HLDFLAGS)
-AC_SUBST(RPATH_ENVVAR)
-
 dnl This must come last.
-AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)
+
+dnl We used to make symlinks to files in the source directory, but now
+dnl we just use the right name for .c files, and create .h files in
+dnl the build directory which include the right .h file.  Make sure
+dnl the old symlinks don't exist, so that a reconfigure in an existing
+dnl directory behaves reasonably.
+
+AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in po/Makefile.in:po/Make-in,
+[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
+ echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
+ echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
+ echo '#include "te-'"${te_file}"'.h"' > targ-env.h
+ echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
+ if test "x$cgen_cpu_prefix" != x ; then
+   echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
+ fi
+
+ sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
+[target_cpu_type=${target_cpu_type}
+ cgen_cpu_prefix=${cgen_cpu_prefix}
+ obj_format=${obj_format}
+ te_file=${te_file}])