2004-09-03 Andrew Cagney <cagney@gnu.org>
[platform/upstream/binutils.git] / gdb / configure.in
index 812e6bb..02a0945 100644 (file)
@@ -1,5 +1,5 @@
 dnl Autoconf configure script for GDB, the GNU debugger.
 dnl Autoconf configure script for GDB, the GNU debugger.
-dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001
+dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 dnl Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
 dnl Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
@@ -26,6 +26,7 @@ AC_CONFIG_HEADER(config.h:config.in)
 AM_MAINTAINER_MODE
 
 AC_PROG_CC
 AM_MAINTAINER_MODE
 
 AC_PROG_CC
+AC_GNU_SOURCE
 AC_AIX
 AC_ISC_POSIX
 AM_PROG_CC_STDC
 AC_AIX
 AC_ISC_POSIX
 AM_PROG_CC_STDC
@@ -33,108 +34,520 @@ AM_PROG_CC_STDC
 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
 AC_CANONICAL_SYSTEM
 
 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
 AC_CANONICAL_SYSTEM
 
-dnl gdb doesn't use gettext, but bfd does.  We call this to ensure we
-dnl link with the correct libraries.
-ALL_LINGUAS=
-CY_GNU_GETTEXT
+# FIXME: kettenis/20030102: The AC_PROG_RANLIB from Autoconf 2.13
+# doesn't support cross-compilation, but the one from Autoconf 2.5x
+# does.  Override RANLIB here (i.e. before running AC_PROG_RANLIB) to
+# deal with the lossage.  Note that CY_GNU_GETTEXT currently calls
+# AC_PROG_RANLIB.  This can be removed when we switch to Autoconf
+# 2.5x.
+AC_CHECK_TOOL(RANLIB, ranlib, :)
 
 
-dnl List of object files added by configure.
+dnl List of object files and targets accumulated by configure.
 
 CONFIG_OBS=
 
 CONFIG_OBS=
-CONFIG_LIB_OBS=
 CONFIG_DEPS=
 CONFIG_SRCS=
 CONFIG_DEPS=
 CONFIG_SRCS=
-CONFIG_INITS=
 ENABLE_CFLAGS=
 ENABLE_CFLAGS=
+
 CONFIG_ALL=
 CONFIG_CLEAN=
 CONFIG_INSTALL=
 CONFIG_UNINSTALL=
 
 CONFIG_ALL=
 CONFIG_CLEAN=
 CONFIG_INSTALL=
 CONFIG_UNINSTALL=
 
-configdirs="doc testsuite"
+dnl Set up for gettext.  PACKAGE is used when we call bindtextdomain.
 
 
-AC_ARG_ENABLE(multi-ice,
-[  --enable-multi-ice            Build the multi-ice-gdb-server],
-[case "${enableval}" in
-    yes ) enable_multi_ice="yes" ;;
-    no)  enable_multi_ice="no" ;;
-    *) AC_MSG_ERROR(Bad value for --enable-multi-ice: ${enableval}) ;;
-  esac
-])
+CY_GNU_GETTEXT
 
 
-if test "${enable_multi_ice}" = "yes"; then
-  configdirs="${configdirs} multi-ice"
+localedir='${datadir}/locale'
+AC_SUBST(localedir)
+
+if test "x$POSUB" != x; then
+
+  dnl Lifted from GCC's config/gettext.m4.
+  AC_MSG_CHECKING(for catalogs to be installed)
+  # Look for .po and .gmo files in the source directory.
+  CATALOGS=  AC_SUBST(CATALOGS)
+  XLINGUAS=
+  for cat in $srcdir/po/*.gmo $srcdir/po/*.po; do
+    # If there aren't any .gmo files the shell will give us the
+    # literal string "../path/to/srcdir/po/*.gmo" which has to be
+    # weeded out.
+    case "$cat" in *\**)
+      continue;;
+    esac
+    # The quadruple backslash is collapsed to a double backslash
+    # by the backticks, then collapsed again by the double quotes,
+    # leaving us with one backslash in the sed expression (right
+    # before the dot that mustn't act as a wildcard).
+    cat=`echo $cat | sed -e "s!$srcdir/!!" -e "s!\\\\.po!.gmo!"`
+    lang=`echo $cat | sed -e 's!po/!!' -e "s!\\\\.gmo!!"`
+    # The user is allowed to set LINGUAS to a list of languages to
+    # install catalogs for.  If it's empty that means "all of them."
+    if test "x$LINGUAS" = x; then
+      CATALOGS="$CATALOGS $cat"
+      XLINGUAS="$XLINGUAS $lang"
+    else
+      case "$LINGUAS" in *$lang*)
+        CATALOGS="$CATALOGS $cat"
+        XLINGUAS="$XLINGUAS $lang"
+        ;;
+      esac
+    fi
+  done
+  LINGUAS="$XLINGUAS"
+  AC_MSG_RESULT($LINGUAS)
+
+   CONFIG_ALL="$CONFIG_ALL all-po"
+   CONFIG_CLEAN="$CONFIG_CLEAN clean-po"                  
+   CONFIG_INSTALL="$CONFIG_INSTALL install-po"
+   CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-po"
 fi
 
 fi
 
-dnl
-changequote(,)dnl
+PACKAGE=gdb
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package. ])
+AC_SUBST(PACKAGE)
 
 
-. ${srcdir}/configure.host
+debugdir=${libdir}/debug
+        
+AC_ARG_WITH(separate-debug-dir,
+[  --with-separate-debug-dir=path   Look for global separate debug info in this path [LIBDIR/debug]],
+[debugdir="${withval}"])
+       
+AC_DEFINE_DIR(DEBUGDIR, debugdir,
+              [Global directory for separate debug files. ])
+#AC_DEFINE_UNQUOTED(DEBUGDIR, "$debugdir"),
 
 
-. ${srcdir}/configure.tgt
+AC_CONFIG_SUBDIRS(doc testsuite)
+configdirs=
 
 
-targ=${target} ; . ${srcdir}/../bfd/config.bfd
+. $srcdir/configure.host
 
 
-dnl
-changequote([,])dnl
+. $srcdir/configure.tgt
+
+# Fetch the default architecture and default target vector from BFD.
+targ=$target; . $srcdir/../bfd/config.bfd
+
+# We only want the first architecture, so strip off the others if
+# there is more than one.
+targ_archs=`echo $targ_archs | sed 's/ .*//'`
+
+if test "x$targ_archs" != x; then
+  AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, $targ_archs,
+    [Define to BFD's default architecture. ])
+fi
+if test "x$targ_defvec" != x; then
+  AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, $targ_defvec,
+    [Define to BFD's default target vector. ])
+fi
+
+AC_ARG_PROGRAM
+
+# The CLI cannot be disabled yet, but may be in the future.
+
+# Enable CLI.
+AC_ARG_ENABLE(gdbcli,
+[  --disable-gdbcli        disable command-line interface (CLI)],
+  [case $enableval in
+    yes)
+      ;;
+    no)
+      AC_MSG_ERROR([the command-line interface cannot be disabled yet]) ;;
+    *)
+      AC_MSG_ERROR([bad value $enableval for --enable-gdbcli]) ;;
+  esac],
+  [enable_gdbcli=yes])
+if test x"$enable_gdbcli" = xyes; then
+  if test -d $srcdir/cli; then
+    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_CLI_OBS)"
+    CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_CLI_DEPS)"
+    CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_CLI_SRCS)"
+    ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_CLI_CFLAGS)"
+  fi
+fi
+
+# Enable MI.
+AC_ARG_ENABLE(gdbmi,
+[  --disable-gdbmi         disable machine-interface (MI)],
+  [case $enableval in
+    yes | no)
+      ;;
+    *)
+      AC_MSG_ERROR([bad value $enableval for --enable-gdbmi]) ;;
+  esac],
+  [enable_gdbmi=yes])
+if test x"$enable_gdbmi" = xyes; then
+  if test -d $srcdir/mi; then
+    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_MI_OBS)"
+    CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_MI_DEPS)"
+    CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_MI_SRCS)"
+    ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_MI_CFLAGS)"
+  fi
+fi
 
 
-dnl use BFD to determine the default architecture and byte order
-dnl (bfd_vec->byteorder provides the latter).
-targ=${target}
-. ${srcdir}/../bfd/config.bfd
+# Enable TUI.
+AC_ARG_ENABLE(tui,
+[  --enable-tui            enable full-screen terminal user interface (TUI)],
+  [case $enableval in
+    yes | no)
+      ;;
+    *)
+      AC_MSG_ERROR([bad value $enableval for --enable-tui]) ;;
+  esac],enable_tui=yes)
+if test x"$enable_tui" = xyes; then
+  if test -d $srcdir/tui; then
+    if test "$ac_cv_search_initscr" != no -a "$ac_cv_search_wborder" != no; then
+      CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)"
+      CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)"
+      CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_TUI_SRCS)"
+      CONFIG_INITS="$CONFIG_INITS \$(SUBDIR_TUI_INITS)"
+      ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_TUI_CFLAGS)"
+      CONFIG_ALL="${CONFIG_ALL} all-tui"
+      CONFIG_CLEAN="${CONFIG_CLEAN} clean-tui"
+      CONFIG_INSTALL="${CONFIG_INSTALL} install-tui"
+      CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-tui"
+    fi
+  fi
+fi
 
 
-dnl We only want the first arch, if there is more than one.
-targ_archs=`echo ${targ_archs} | sed -e 's/ .*//;'`
+# Enable gdbtk.
+AC_ARG_ENABLE(gdbtk,
+[  --enable-gdbtk          enable gdbtk graphical user interface (GUI)],
+  [case $enableval in
+    yes | no)
+      ;;
+    *)
+      AC_MSG_ERROR([bad value $enableval for --enable-gdbtk]) ;;
+  esac],
+  [if test -d $srcdir/gdbtk; then
+    enable_gdbtk=yes
+  else
+    enable_gdbtk=no
+  fi])
+# We unconditionally disable gdbtk tests on selected platforms.
+case $host_os in
+  go32* | windows*)
+    AC_MSG_WARN([gdbtk isn't supported on $host; disabling])
+    enable_gdbtk=no ;;
+esac
 
 
-if test x"${targ_archs}" != x ; then
-    AC_DEFINE_UNQUOTED(DEFAULT_BFD_ARCH, ${targ_archs})
+# Libunwind support.
+AC_ARG_WITH(libunwind,
+[  --with-libunwind            Use libunwind frame unwinding support],
+[case "${withval}" in
+  yes)  enable_libunwind=yes ;;
+  no)   enable_libunwind=no ;;
+  *)    AC_MSG_ERROR(bad value ${withval} for GDB with-libunwind option) ;;
+esac],[
+  AC_CHECK_HEADERS(libunwind.h)
+  AC_CHECK_HEADERS(libunwind-ia64.h)
+  if test x"$ac_cv_header_libunwind_h" = xyes -a x"$ac_cv_header_libunwind_ia64_h" = xyes; then
+    enable_libunwind=yes;
+  fi
+])
+   
+if test x"$enable_libunwind" = xyes; then
+  AC_CHECK_HEADERS(libunwind.h)
+  AC_CHECK_HEADERS(libunwind-ia64.h)
+  AC_DEFINE(HAVE_LIBUNWIND, 1)
+  CONFIG_OBS="$CONFIG_OBS libunwind-frame.o"
+  CONFIG_DEPS="$CONFIG_DEPS libunwind-frame.o"
+  CONFIG_SRCS="$CONFIG_SRCS libunwind-frame.c"
+fi
+
+# Profiling support.
+AC_ARG_ENABLE(profiling,
+[  --enable-profiling      enable profiling of GDB],
+  [case $enableval in
+    yes | no)
+      ;;
+    *)
+      AC_MSG_ERROR([bad value $enableval for --enable-profile]) ;;
+  esac],
+ [enable_profiling=no])
+
+AC_CHECK_FUNCS(monstartup _mcleanup)
+AC_CACHE_CHECK([for _etext], ac_cv_var__etext,
+[AC_TRY_LINK(
+[#include <stdlib.h>
+extern char _etext;
+],
+[free (&_etext);], ac_cv_var__etext=yes, ac_cv_var__etext=no)])
+if test $ac_cv_var__etext = yes; then
+  AC_DEFINE(HAVE__ETEXT, 1,
+            [Define to 1 if your system has the _etext variable. ])
 fi
 fi
-if test x"${targ_defvec}" != x ; then
-    AC_DEFINE_UNQUOTED(DEFAULT_BFD_VEC, ${targ_defvec})
+if test "$enable_profiling" = yes ; then
+  if test $ac_cv_func_monstartup = no || test $ac_cv_func__mcleanup = no; then
+    AC_MSG_ERROR(--enable-profiling requires monstartup and _mcleanup)
+  fi
+  PROFILE_CFLAGS=-pg
+  OLD_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $PROFILE_CFLAGS"
+
+  AC_CACHE_CHECK([whether $CC supports -pg], ac_cv_cc_supports_pg,
+    [AC_TRY_COMPILE([], [int x;], ac_cv_cc_supports_pg=yes,
+     ac_cv_cc_supports_pg=no)])
+
+  if test $ac_cv_cc_supports_pg = no; then
+    AC_MSG_ERROR(--enable-profiling requires a compiler which supports -pg)
+  fi
+
+  CFLAGS="$OLD_CFLAGS"
 fi
 
 fi
 
+# --------------------- #
+# Checks for programs.  #
+# --------------------- #
+
 AC_PROG_AWK
 AC_PROG_INSTALL
 AC_PROG_AWK
 AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_RANLIB
+AC_PROG_YACC
+
 AC_CHECK_TOOL(AR, ar)
 AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
 AC_CHECK_TOOL(DLLTOOL, dlltool)
 AC_CHECK_TOOL(WINDRES, windres)
 AC_CHECK_TOOL(DLLTOOL, dlltool)
 AC_CHECK_TOOL(WINDRES, windres)
-AC_PROG_YACC
 
 
-dnl MiG is needed for the Hurd.
+# Needed for GNU/Hurd.
 AC_CHECK_TOOL(MIG, mig)
 
 AC_CHECK_TOOL(MIG, mig)
 
-AC_ARG_PROGRAM
+# ---------------------- #
+# Checks for libraries.  #
+# ---------------------- #
 
 
-AC_TYPE_SIGNAL
+# We might need to link with -lm; most simulators need it.
+AC_CHECK_LIB(m, main)
 
 
-AC_HEADER_STDC
+# We need to link with -lw to get `wctype' on Solaris before Solaris
+# 2.6.  Solaris 2.6 and beyond have this function in libc, and have a
+# libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1
+# is known to have this problem).  Therefore we avoid libw if we can.
+AC_CHECK_FUNC(wctype, [],
+  [AC_CHECK_LIB(w, wctype)])
+
+# Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
+AC_SEARCH_LIBS(gethostbyname, nsl)
+
+# Some systems (e.g. Solaris) have `socketpair' in libsocket.
+AC_SEARCH_LIBS(socketpair, socket)
+
+# Since GDB uses Readline, we need termcap functionality, so we need
+# to find a library that provides that.  When GDB is configured with
+# the TUI, we need full curses functionality.
+
+case $host_os in
+  cygwin*)
+    if test -d $srcdir/libtermcap; then
+      LIBS="../libtermcap/libtermcap.a $LIBS"
+      ac_cv_search_tgetent="../libtermcap/libtermcap.a"
+    fi ;;
+  go32* | *djgpp*)
+    ac_cv_search_tgetent="none required"
+    ;;
+  aix*)
+    # Readline prefers curses over termcap on AIX.
+    # ??? Why?
+    AC_SEARCH_LIBS(tgetent, [tinfo ncurses curses termcap])
+    ;;
+esac
+
+# Note: We used to check for libtermlib and libterminfo too, but
+# Readline doesn't, so I think we're safe with leaving them out.
+AC_SEARCH_LIBS(tgetent, [termcap tinfo ncurses Hcurses curses])
 
 
-dnl Solaris 7 needs _MSE_INT_H defined to avoid a clash between <widec.h>
-dnl and <wchar.h> that causes AC_CHECK_HEADERS to think <curses.h> doesn't
-dnl exist.
-
-case $host_os in solaris2.7 | solaris2.8) case "$GCC" in yes)
-    AC_DEFINE(_MSE_INT_H)
-esac; esac
-
-AC_CHECK_HEADERS(ctype.h endian.h nlist.h link.h thread_db.h proc_service.h \
-       memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
-       string.h sys/procfs.h sys/ptrace.h sys/reg.h stdint.h \
-       term.h termio.h termios.h unistd.h wait.h sys/wait.h \
-       wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \
-       time.h sys/file.h sys/ioctl.h sys/user.h sys/fault.h sys/syscall.h \
-       dirent.h sys/ndir.h sys/dir.h ndir.h \
-       curses.h ncurses.h \
-       poll.h sys/poll.h)
+if test "$ac_cv_search_tgetent" = no; then
+  AC_MSG_ERROR([no termcap library found])
+fi
+
+# FIXME: kettenis/20030102: We seem to prefer HP curses (Hcurses) over
+# Xcurses on HP-UX; see the `-D__HP_CURSES' in the relevant host
+# Makefile fragments.  That's why we need to have `Hcurses' before
+# `curses'.  I don't see why we should use HP curses if a more
+# standard curses is available, except that according to HP's
+# documentation one needs to compile `-D_XOPEN_SOURCE_EXTENDED' on
+# HP-UX 10.10 and 10.20.
+
+# FIXME: ncurses does not work on native alphaev68-dec-osf5.1,
+# and probably other platforms.  AC_SEARCH_LIBS finds the library
+# in a place such as /usr/local/lib/libncurses.a, but does not
+# do anything to look for the matching include files.
+# -- chastain 2004-05-01
+
+AC_SEARCH_LIBS(initscr, [ncurses Hcurses cursesX curses pdcurses], [],
+  [AC_MSG_WARN([no curses library found])])
+
+# Check whether the wborder function is provided by the curses
+# library detected above.  In certain implementations such as
+# the HP/UX Hcurses for instance, this function is provided by an
+# additional library.  So if we did not find this function inside
+# the curses library, try some alternate libraries we know might
+# provide it.
+AC_SEARCH_LIBS(wborder, [cur_colr], [],
+    [AC_MSG_WARN([wborder function not found, tui will be disabled])])
+
+# ------------------------- #
+# Checks for header files.  #
+# ------------------------- #
+
+AC_HEADER_DIRENT
 AC_HEADER_STAT
 AC_HEADER_STAT
+AC_HEADER_STDC
+AC_CHECK_HEADERS(link.h)
+AC_CHECK_HEADERS(machine/reg.h)
+AC_CHECK_HEADERS(nlist.h)
+AC_CHECK_HEADERS(poll.h sys/poll.h)
+AC_CHECK_HEADERS(proc_service.h thread_db.h gnu/libc-version.h)
+AC_CHECK_HEADERS(stddef.h)
+AC_CHECK_HEADERS(stdlib.h)
+AC_CHECK_HEADERS(stdint.h)
+AC_CHECK_HEADERS(string.h memory.h strings.h)
+AC_CHECK_HEADERS(sys/fault.h)
+AC_CHECK_HEADERS(sys/file.h)
+AC_CHECK_HEADERS(sys/filio.h)
+AC_CHECK_HEADERS(sys/ioctl.h)
+AC_CHECK_HEADERS(sys/param.h)
+AC_CHECK_HEADERS(sys/proc.h)
+AC_CHECK_HEADERS(sys/procfs.h)
+AC_CHECK_HEADERS(sys/ptrace.h ptrace.h)
+AC_CHECK_HEADERS(sys/reg.h sys/debugreg.h)
+AC_CHECK_HEADERS(sys/select.h)
+AC_CHECK_HEADERS(sys/syscall.h)
+AC_CHECK_HEADERS(sys/types.h)
+AC_CHECK_HEADERS(sys/user.h)
+AC_CHECK_HEADERS(sys/wait.h wait.h)
+AC_CHECK_HEADERS(termios.h termio.h sgtty.h)
+AC_CHECK_HEADERS(unistd.h)
+
+# On Solaris 2.[789], we need to define _MSE_INT_H to avoid a clash
+# between <widec.h> and <wchar.h> that would cause AC_CHECK_HEADERS to
+# think that we don't have <curses.h> if we're using GCC.
+case $host_os in
+  solaris2.[[789]])
+    if test "$GCC" = yes; then
+      AC_DEFINE(_MSE_INT_H, 1,
+        [[Define to 1 to avoid a clash between <widec.h> and <wchar.h> on
+   Solaris 2.[789] when using GCC. ]])
+    fi ;;
+esac
+AC_CHECK_HEADERS(curses.h cursesX.h ncurses.h ncurses/ncurses.h term.h)
+
+# FIXME: kettenis/20030102: In most cases we include these
+# unconditionally, so what's the point in checking these?
+AC_CHECK_HEADERS(ctype.h time.h)
+
+dnl Check for struct stat with an st_blocks member
+AC_MSG_CHECKING(for member st_blocks in struct stat)
+AC_CACHE_VAL(gdb_cv_have_struct_stat_with_st_blocks_member,
+  [AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/stat.h>],
+                  [struct stat st; (void) st.st_blocks;],
+                  gdb_cv_have_struct_stat_with_st_blocks_member=yes,
+                  gdb_cv_have_struct_stat_with_st_blocks_member=no)])
+AC_MSG_RESULT($gdb_cv_have_struct_stat_with_st_blocks_member)
+if test $gdb_cv_have_struct_stat_with_st_blocks_member = yes; then
+  AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
+fi
+
+# ------------------------- #
+# Checks for declarations.  #
+# ------------------------- #
+
+gcc_AC_CHECK_DECLS(getopt)
+
+# ------------------ #
+# Checks for types.  #
+# ------------------ #
+
+AC_TYPE_SIGNAL
+
+# ------------------------------------- #
+# Checks for compiler characteristics.  #
+# ------------------------------------- #
 
 AC_C_CONST
 
 AC_C_CONST
+AC_C_INLINE
+
+# ------------------------------ #
+# Checks for library functions.  #
+# ------------------------------ #
 
 
-AC_CHECK_FUNCS(bcopy btowc bzero isascii poll sbrk setpgid setpgrp \
-       sigaction sigprocmask sigsetmask)
 AC_FUNC_ALLOCA
 AC_FUNC_ALLOCA
+AC_FUNC_MMAP
 AC_FUNC_VFORK
 AC_FUNC_VFORK
+AC_CHECK_FUNCS(canonicalize_file_name realpath)
+AC_CHECK_FUNCS(poll)
+AC_CHECK_FUNCS(pread64)
+AC_CHECK_FUNCS(sbrk)
+AC_CHECK_FUNCS(setpgid setpgrp)
+AC_CHECK_FUNCS(sigaction sigprocmask sigsetmask)
+AC_CHECK_FUNCS(socketpair)
+AC_CHECK_FUNCS(syscall)
+AC_CHECK_FUNCS(ttrace)
+
+# Check the return and argument types of ptrace.  No canned test for
+# this, so roll our own.
+gdb_ptrace_headers='
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_PTRACE_H
+# include <sys/ptrace.h>
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+'
+# There is no point in checking if we don't have a prototype.
+gcc_AC_CHECK_DECLS(ptrace, , [
+  : ${gdb_cv_func_ptrace_ret='int'}
+  : ${gdb_cv_func_ptrace_args='int,int,long,long'}
+], $gdb_ptrace_headers)
+# Check return type.
+AC_CACHE_CHECK([return type of ptrace], gdb_cv_func_ptrace_ret,
+  AC_TRY_COMPILE($gdb_ptrace_headers,
+    [extern int ptrace ();],
+    gdb_cv_func_ptrace_ret='int',
+    gdb_cv_func_ptrace_ret='long'))
+AC_DEFINE_UNQUOTED(PTRACE_TYPE_RET, $gdb_cv_func_ptrace_ret,
+  [Define as the return type of ptrace.])
+# Check argument types.
+AC_CACHE_CHECK([types of arguments for ptrace], gdb_cv_func_ptrace_args, [
+for gdb_arg1 in 'int' 'long'; do
+ for gdb_arg2 in 'pid_t' 'int' 'long'; do
+  for gdb_arg3 in 'int *' 'caddr_t' 'int' 'long'; do
+   for gdb_arg4 in 'int' 'long'; do
+     AC_TRY_COMPILE($gdb_ptrace_headers, [
+extern $gdb_cv_func_ptrace_ret
+  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4);
+], [gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4";
+    break 4;])
+    for gdb_arg5 in 'int *' 'int' 'long'; do
+     AC_TRY_COMPILE($gdb_ptrace_headers, [
+extern $gdb_cv_func_ptrace_ret
+  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4, $gdb_arg5);
+], [
+gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4,$gdb_arg5";
+    break 5;])
+    done
+   done
+  done
+ done
+done
+# Provide a safe default value.
+: ${gdb_cv_func_ptrace_args='int,int,long,long'}
+])
+ac_save_IFS=$IFS; IFS=','
+set dummy `echo "$gdb_cv_func_ptrace_args" | sed 's/\*/\*/g'`
+IFS=$ac_save_IFS
+shift
+AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG3, $[3],
+  [Define to the type of arg 3 for ptrace.])
+if test -n "$[5]"; then
+  AC_DEFINE_UNQUOTED(PTRACE_TYPE_ARG5, $[5],
+    [Define to the type of arg 5 for ptrace.])
+fi
+
 dnl AC_FUNC_SETPGRP does not work when cross compiling
 dnl Instead, assume we will have a prototype for setpgrp if cross compiling.
 if test "$cross_compiling" = no; then
 dnl AC_FUNC_SETPGRP does not work when cross compiling
 dnl Instead, assume we will have a prototype for setpgrp if cross compiling.
 if test "$cross_compiling" = no; then
@@ -165,6 +578,67 @@ if test $gdb_cv_func_sigsetjmp = yes; then
   AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
 fi
 
   AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
 fi
 
+# Assume we'll default to using the included libiberty regex.
+gdb_use_included_regex=yes
+
+# However, if the system regex is GNU regex, then default to *not*
+# using the included regex.
+AC_CACHE_CHECK(
+  [for GNU regex],
+  [gdb_cv_have_gnu_regex],
+  [AC_TRY_COMPILE(
+    [#include <gnu-versions.h>],
+    [#define REGEX_INTERFACE_VERSION 1
+#if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION
+# error "Version mismatch"
+#endif],
+    gdb_cv_have_gnu_regex=yes,
+    gdb_cv_have_gnu_regex=no)])
+if test $gdb_cv_have_gnu_regex = yes; then
+  gdb_use_included_regex=no
+fi
+
+AC_ARG_WITH(included-regex,
+  [  --without-included-regex don't use included regex; this is the default
+                          on systems with version 2 of the GNU C library
+                          (use with caution on other system)],
+  gdb_with_regex=$withval,
+  gdb_with_regex=$gdb_use_included_regex)
+if test "$gdb_with_regex" = yes; then
+  AC_DEFINE(USE_INCLUDED_REGEX, 1,
+    [Define to 1 if the regex included in libiberty should be used.])
+fi
+
+# See if <sys/proc.h> defines `struct thread' with a td_pcb member.
+AC_CACHE_CHECK([for td_pcb in struct thread], gdb_cv_struct_thread_td_pcb,
+[AC_TRY_COMPILE([#include <sys/param.h>
+#include <sys/proc.h>], [struct thread td; td.td_pcb;],
+gdb_cv_struct_thread_td_pcb=yes, gdb_cv_struct_thread_td_pcb=no)])
+if test $gdb_cv_struct_thread_td_pcb = yes; then
+  AC_DEFINE(HAVE_STRUCT_THREAD_TD_PCB, 1,
+            [Define to 1 if your system has td_pcb in struct thread.])
+fi
+
+# See if <sys/lwp.h> defines `struct lwp`.
+AC_CACHE_CHECK([for struct lwp], gdb_cv_struct_lwp,
+[AC_TRY_COMPILE([#include <sys/param.h>
+#include <sys/lwp.h>], [struct lwp l;],
+gdb_cv_struct_lwp=yes, gdb_cv_struct_lwp=no)])
+if test $gdb_cv_struct_lwp = yes; then
+  AC_DEFINE(HAVE_STRUCT_LWP, 1,
+            [Define to 1 if your system has struct lwp.])
+fi
+
+# See if <machine/reg.h> degines `struct reg'.
+AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <machine/reg.h>], [struct reg r;],
+gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)])
+if test $gdb_cv_struct_reg = yes; then
+  AC_DEFINE(HAVE_STRUCT_REG, 1,
+            [Define to 1 if your system has struct reg in <machine/reg.h>.])
+fi
+
 # See if <machine/reg.h> supports the %fs and %gs i386 segment registers.
 # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
 AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs,
 # See if <machine/reg.h> supports the %fs and %gs i386 segment registers.
 # Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
 AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs,
@@ -217,10 +691,30 @@ if test $gdb_cv_have_pt_getdbregs = yes; then
   AC_DEFINE(HAVE_PT_GETDBREGS)
 fi
 
   AC_DEFINE(HAVE_PT_GETDBREGS)
 fi
 
+# See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
+AC_MSG_CHECKING(for PT_GETXMMREGS)
+AC_CACHE_VAL(gdb_cv_have_pt_getxmmregs,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/ptrace.h>],
+               [PT_GETXMMREGS;],
+               [gdb_cv_have_pt_getxmmregs=yes],
+               [gdb_cv_have_pt_getxmmregs=no])])
+AC_MSG_RESULT($gdb_cv_have_pt_getxmmregs)
+if test $gdb_cv_have_pt_getxmmregs = yes; then
+  AC_DEFINE(HAVE_PT_GETXMMREGS)
+fi
 
 
-AC_CHECK_LIB(socket, socketpair)
-AC_CHECK_FUNCS(socketpair)
-
+# See if stdint.h provides the uintptr_t type.
+# Autoconf 2.5X has an improved AC_CHECK_TYPE which will simplify this.
+AC_CACHE_CHECK([for uintptr_t in stdint.h], gdb_cv_have_uintptr_t,
+  [AC_TRY_COMPILE(
+    [#include <stdint.h>],
+    [uintptr_t foo = 0;],
+    gdb_cv_have_uintptr_t=yes,
+    gdb_cv_have_uintptr_t=no)])
+if test $gdb_cv_have_uintptr_t = yes; then
+  AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if <stdint.h> provides the uintptr_t type.])
+fi
 
 BFD_NEED_DECLARATION(malloc)
 BFD_NEED_DECLARATION(realloc)
 
 BFD_NEED_DECLARATION(malloc)
 BFD_NEED_DECLARATION(realloc)
@@ -228,7 +722,7 @@ BFD_NEED_DECLARATION(free)
 BFD_NEED_DECLARATION(strerror)
 BFD_NEED_DECLARATION(strdup)
 BFD_NEED_DECLARATION(strstr)
 BFD_NEED_DECLARATION(strerror)
 BFD_NEED_DECLARATION(strdup)
 BFD_NEED_DECLARATION(strstr)
-
+BFD_NEED_DECLARATION(canonicalize_file_name)
 
 # The following save_state_t checkery is only necessary for HPUX 
 # versions earlier than 10.20.  When those fade from memory, this 
 
 # The following save_state_t checkery is only necessary for HPUX 
 # versions earlier than 10.20.  When those fade from memory, this 
@@ -263,12 +757,16 @@ if test "${target}" = "${host}"; then
   ia64-*-aix*)
       AC_DEFINE(NEW_PROC_API)
       ;;
   ia64-*-aix*)
       AC_DEFINE(NEW_PROC_API)
       ;;
-  *-*-unixware* | *-*-sysv4.2* | *-*-sysv5*)
+  *-*-unixware* | *-*-sysv4.2* | *-*-sysv5* | *-*-interix* )
       AC_DEFINE(NEW_PROC_API)
       ;;
       AC_DEFINE(NEW_PROC_API)
       ;;
-  *-*-solaris2.[[678]])
+  *-*-solaris2.[[6789]])
       AC_DEFINE(NEW_PROC_API)
       ;;
       AC_DEFINE(NEW_PROC_API)
       ;;
+  mips-sgi-irix5*)
+      # Work around <sys/proc.h> needing _KMEMUSER problem on IRIX 5.
+      AC_DEFINE([_KMEMUSER], 1)
+      ;;
   esac
 fi
 
   esac
 fi
 
@@ -294,7 +792,7 @@ if test "$ac_cv_header_sys_procfs_h" = yes; then
   dnl For Linux/i386, glibc 2.1.3 was released with a bogus
   dnl prfpregset_t type (it's a typedef for the pointer to a struct
   dnl instead of the struct itself).  We detect this here, and work
   dnl For Linux/i386, glibc 2.1.3 was released with a bogus
   dnl prfpregset_t type (it's a typedef for the pointer to a struct
   dnl instead of the struct itself).  We detect this here, and work
-  dnl around it in lin-thread.c.
+  dnl around it in gdb_proc_service.h.
 
   if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
     AC_MSG_CHECKING(whether prfpregset_t type is broken)
 
   if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
     AC_MSG_CHECKING(whether prfpregset_t type is broken)
@@ -395,19 +893,10 @@ if test ${host} = ${target} ; then
   AC_MSG_RESULT($gdb_cv_have_struct_link_map32)
   if test $gdb_cv_have_struct_link_map32 = yes; then
     AC_DEFINE(HAVE_STRUCT_LINK_MAP32)
   AC_MSG_RESULT($gdb_cv_have_struct_link_map32)
   if test $gdb_cv_have_struct_link_map32 = yes; then
     AC_DEFINE(HAVE_STRUCT_LINK_MAP32)
+    AC_DEFINE(_SYSCALL32)
   fi
 fi
 
   fi
 fi
 
-dnl See if host has libm.  This is usually needed by simulators.
-AC_CHECK_LIB(m, main)
-
-dnl Solaris puts wctype in /usr/lib/libw.a before Solaris 2.6.
-dnl
-dnl A bug in GNU ld 2.9.1 causes a problem if we link in -lw 
-dnl under Solaris 2.6 because it is some funky empty library.
-dnl So only link in libw if we have to.
-AC_CHECK_LIB(c, wctype,: ,AC_CHECK_LIB(w, wctype))
-
 dnl See if compiler supports "long long" type.
 
 AC_MSG_CHECKING(for long long support in compiler)
 dnl See if compiler supports "long long" type.
 
 AC_MSG_CHECKING(for long long support in compiler)
@@ -496,14 +985,30 @@ if test $gdb_cv_scanf_has_long_double = yes; then
 fi
 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
 
 fi
 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
 
-AC_FUNC_MMAP
+case ${host_os} in
+aix*)
+  AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
+    SAVE_LDFLAGS=$LDFLAGS
+
+    case $GCC in
+    yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
+    *) gdb_cv_bigtoc=-bbigtoc ;;
+    esac
 
 
-dnl See if thread_db library is around for Solaris thread debugging.  Note that
-dnl we must explicitly test for version 1 of the library because version 0
-dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
+    LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
+    AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
+    LDFLAGS="${SAVE_LDFLAGS}"
+  ])
+  CONFIG_LDFLAGS="${CONFIG_LDFLAGS} ${gdb_cv_bigtoc}"
+  ;;
+esac
 
 
-dnl Note that we only want this if we are both native (host == target), and
-dnl not doing a canadian cross build (build == host).
+
+dnl For certain native configurations, we need to check whether thread
+dnl support can be built in or not.
+dnl
+dnl Note that we only want this if we are both native (host == target),
+dnl and not doing a canadian cross build (build == host).
 
 if test ${build} = ${host} -a ${host} = ${target} ; then
    case ${host_os} in
 
 if test ${build} = ${host} -a ${host} = ${target} ; then
    case ${host_os} in
@@ -513,7 +1018,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
          if test "$GCC" = "yes" ; then
             AC_MSG_RESULT(yes)
             AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
          if test "$GCC" = "yes" ; then
             AC_MSG_RESULT(yes)
             AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
-            CONFIG_LIB_OBS="${CONFIG_LIB_OBS} hpux-thread.o"
+            CONFIG_OBS="${CONFIG_OBS} hpux-thread.o"
             CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
          else
             AC_MSG_RESULT(no (suppressed because you are not using GCC))
             CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
          else
             AC_MSG_RESULT(no (suppressed because you are not using GCC))
@@ -523,11 +1028,15 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
       fi
       ;;
    solaris*)
       fi
       ;;
    solaris*)
+      # See if thread_db library is around for Solaris thread debugging.
+      # Note that we must explicitly test for version 1 of the library
+      # because version 0 (present on Solaris 2.4 or earlier) doesn't have
+      # the same API.
       AC_MSG_CHECKING(for Solaris thread debugging library)
       if test -f /usr/lib/libthread_db.so.1 ; then
          AC_MSG_RESULT(yes)
          AC_DEFINE(HAVE_THREAD_DB_LIB)
       AC_MSG_CHECKING(for Solaris thread debugging library)
       if test -f /usr/lib/libthread_db.so.1 ; then
          AC_MSG_RESULT(yes)
          AC_DEFINE(HAVE_THREAD_DB_LIB)
-         CONFIG_LIB_OBS="${CONFIG_LIB_OBS} sol-thread.o"
+         CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
          CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
          AC_CHECK_LIB(dl, dlopen)
          if test "$GCC" = "yes" ; then
          CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
          AC_CHECK_LIB(dl, dlopen)
          if test "$GCC" = "yes" ; then
@@ -562,147 +1071,105 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
          AC_MSG_RESULT(no)
       fi
       ;;
          AC_MSG_RESULT(no)
       fi
       ;;
+   aix*)
+      AC_MSG_CHECKING(for AiX thread debugging library)
+      AC_CACHE_VAL(gdb_cv_have_aix_thread_debug,
+                   [AC_TRY_COMPILE([#include <sys/pthdebug.h>],
+                                   [#ifndef PTHDB_VERSION_3
+                                    #error
+                                    #endif],
+                                   gdb_cv_have_aix_thread_debug=yes,
+                                   gdb_cv_have_aix_thread_debug=no)])
+      AC_MSG_RESULT($gdb_cv_have_aix_thread_debug)
+      if test $gdb_cv_have_aix_thread_debug = yes; then
+         CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
+         CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
+         CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -lpthdebug"
+      fi
+      ;;
    esac
    AC_SUBST(CONFIG_LDFLAGS)
 fi
 
    esac
    AC_SUBST(CONFIG_LDFLAGS)
 fi
 
-dnl The CLI cannot be disabled yet, but may be in the future  
+dnl See if we have a thread_db header file that has TD_NOTALLOC.
+if test "x$ac_cv_header_thread_db_h" = "xyes"; then
+   AC_CACHE_CHECK([whether <thread_db.h> has TD_NOTALLOC],
+                  gdb_cv_thread_db_h_has_td_notalloc,
+     AC_TRY_COMPILE(
+       [#include <thread_db.h>],
+       [int i = TD_NOTALLOC;],
+       gdb_cv_thread_db_h_has_td_notalloc=yes,
+       gdb_cv_thread_db_h_has_td_notalloc=no
+     )
+   )
+fi
+if test "x$gdb_cv_thread_db_h_has_td_notalloc" = "xyes"; then
+  AC_DEFINE(THREAD_DB_HAS_TD_NOTALLOC, 1,
+            [Define if <thread_db.h> has the TD_NOTALLOC error code.])
+fi
 
 
-dnl Handle CLI sub-directory configury.
-AC_ARG_ENABLE(gdbcli,
-[  --enable-gdbcli            Enable GDB-CLI interface],
-[
-  case "${enableval}" in
-    yes) enable_gdbcli=yes ;;
-    "") enable_gdbcli=yes ;;
-    no) 
-      AC_MSG_ERROR(The CLI cannot be disabled yet)
-    ;;
-    *)
-      AC_MSG_ERROR(Bad value for --enable-gdbcli: ${enableval})
-    ;;
-  esac
-],
-[enable_gdbcli=yes])
-case ${enable_gdbcli} in
-  "yes" )
-    if test -d "${srcdir}/cli" ; then
-      CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_CLI_OBS)"
-      CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_CLI_DEPS)"
-      CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_CLI_SRCS)"
-      CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_CLI_INITS)"
-      ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_CLI_CFLAGS)"
-      CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_CLI_ALL)"
-      CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_CLI_CLEAN)"
-      CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_CLI_INSTALL)"
-      CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_CLI_UNINSTALL)"
-    fi
-    ;;
-esac
+dnl See if we have a sys/syscall header file that has __NR_tkill.
+if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then
+   AC_CACHE_CHECK([whether <sys/syscall.h> has __NR_tkill],
+                  gdb_cv_sys_syscall_h_has_tkill,
+     AC_TRY_COMPILE(
+       [#include <sys/syscall.h>],
+       [int i = __NR_tkill;],
+       gdb_cv_sys_syscall_h_has_tkill=yes,
+       gdb_cv_sys_syscall_h_has_tkill=no
+     )
+   )
+fi
+dnl See if we can issue tkill syscall.
+if test "x$gdb_cv_sys_syscall_h_has_tkill" = "xyes" && test "x$ac_cv_func_syscall" = "xyes"; then
+  AC_DEFINE(HAVE_TKILL_SYSCALL, 1,
+            [Define if we can use the tkill syscall.])
+fi
 
 dnl Handle optional features that can be enabled.
 
 
 dnl Handle optional features that can be enabled.
 
-dnl Handle MI sub-directory configury.
-AC_ARG_ENABLE(gdbmi,
-[  --enable-gdbmi            Enable GDB-MI interface],
+AC_ARG_WITH(sysroot,
+[  --with-sysroot[=DIR] Search for usr/lib et al within DIR.],
 [
 [
-  case "${enable_gdbmi}" in
-    yes | no) ;;
-    "")  enable_gdbmi=yes ;;
-    *)
-      AC_MSG_ERROR(Bad value for --enable-gdbmi: ${enableval})
-    ;;
-  esac
-],
-[enable_gdbmi=yes])
-case ${enable_gdbmi} in
-  "yes" )
-    if test -d "${srcdir}/mi" ; then
-      CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_MI_OBS)"
-      CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_MI_DEPS)"
-      CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_MI_SRCS)"
-      CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_MI_INITS)"
-      ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_MI_CFLAGS)"
-      CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_MI_ALL)"
-      CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_MI_CLEAN)"
-      CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_MI_INSTALL)"
-      CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_MI_UNINSTALL)"
-    fi
-    ;;
-esac
-
-# Configure UI_OUT by default (before 5.2 it can be disabled)
-# It must be configured if gdbmi is configured
+ case ${with_sysroot} in
+ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
+ *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+ esac
 
 
-UIOUT_CFLAGS=
-AC_SUBST(UIOUT_CFLAGS)
+ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
 
 
-AC_ARG_WITH(uiout,
-[  --with-uiout          Use new uiout functions instead of *printf's],
-[case "${withval}" in
-  yes)  want_uiout=true ;;
-  no)   if test $enable_gdbmi = yes; then
-          AC_MSG_ERROR(uiout is needed for MI and cannot be disabled)
-        else
-           want_uiout=false
-        fi ;;
-  *)    AC_MSG_ERROR(bad value ${withval} for GDB with-uiout option) ;;
-esac],
-[want_uiout=true])dnl
-
-if test $want_uiout = true; then
-   UIOUT_CFLAGS="-DUI_OUT=1"
-fi
-
-AC_ARG_ENABLE(tui,
-[  --enable-tui            Enable full-screen terminal user interface],
-[
-  case "${enable_tui}" in
-    yes | no) ;;
-    "")  enable_tui=yes ;;
-    *)
-      AC_MSG_ERROR(Bad value for --enable-tui: ${enableval})
-    ;;
-  esac
+ if test "x$exec_prefix" = xNONE; then
+  if test "x$prefix" = xNONE; then
+   test_prefix=/usr/local
+  else
+   test_prefix=$prefix
+  fi
+ else
+  test_prefix=$exec_prefix
+ fi
+ case ${TARGET_SYSTEM_ROOT} in
+ "${test_prefix}"|"${test_prefix}/"*|\
+ '${exec_prefix}'|'${exec_prefix}/'*)
+   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
+   TARGET_SYSTEM_ROOT_DEFINE="$t"
+   ;;
+ esac
+], [
+ TARGET_SYSTEM_ROOT=
+ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"'
 ])
 ])
-case ${enable_tui} in
-  "yes" )
-    if test -d "${srcdir}/tui" ; then
-      CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_TUI_OBS)"
-      CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_TUI_DEPS)"
-      CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_TUI_SRCS)"
-      CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_TUI_INITS)"
-      ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_TUI_CFLAGS)"
-      CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_TUI_ALL)"
-      CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_TUI_CLEAN)"
-      CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_TUI_INSTALL)"
-      CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_TUI_UNINSTALL)"
-    fi
-    ;;
-esac
-
-AC_ARG_ENABLE(netrom,
-[  --enable-netrom         Enable NetROM support],
-[case "${enableval}" in
-yes)   enable_netrom=yes ;;
-no)    enable_netrom=no ;;
-*)     AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
-esac])
-
-if test "${enable_netrom}" = "yes"; then
-       CONFIG_LIB_OBS="${CONFIG_LIB_OBS} remote-nrom.o" 
-        CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
-fi
-
+AC_SUBST(TARGET_SYSTEM_ROOT)
+AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
 
 # NOTE: Don't add -Wall or -Wunused, they both include
 # -Wunused-parameter which reports bogus warnings.
 # NOTE: If you add to this list, remember to update
 # gdb/doc/gdbint.texinfo.
 build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
 
 # NOTE: Don't add -Wall or -Wunused, they both include
 # -Wunused-parameter which reports bogus warnings.
 # NOTE: If you add to this list, remember to update
 # gdb/doc/gdbint.texinfo.
 build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
--Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
+-Wformat -Wparentheses -Wpointer-arith -Wuninitialized -Wformat-nonliteral \
+-Wunused-label -Wunused-function"
 # Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
 # Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
-# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
+# -Wunused-function -Wunused-variable -Wunused-value
 # -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
 # -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
 # -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
 # -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
 # -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
 # -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
@@ -757,58 +1224,6 @@ fi
 AC_SUBST(WARN_CFLAGS)
 AC_SUBST(WERROR_CFLAGS)
 
 AC_SUBST(WARN_CFLAGS)
 AC_SUBST(WERROR_CFLAGS)
 
-MMALLOC_CFLAGS=
-MMALLOC=
-AC_SUBST(MMALLOC_CFLAGS)
-AC_SUBST(MMALLOC)
-
-AC_ARG_WITH(mmalloc,
-[  --with-mmalloc          Use memory mapped malloc package],
-[case "${withval}" in
-  yes)  want_mmalloc=true ;;
-  no)   want_mmalloc=false;;
-  *)    AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
-esac],[want_mmalloc=false])dnl
-
-if test x$want_mmalloc = xtrue; then
-   AC_DEFINE(USE_MMALLOC)
-   AC_DEFINE(MMCHECK_FORCE)
-   MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
-   MMALLOC='../mmalloc/libmmalloc.a'
-fi
-
-AC_ARG_WITH(included-regex,
-[  --with-included-regex          Use included regex],
-[case "${withval}" in
-  yes)  want_included_regex=true ;;
-  no)   want_included_regex=false;;
-  *)    AC_MSG_ERROR(bad value ${withval} for GDB with-included-regex option) ;;
-esac],[want_included_regex=true])dnl
-
-if test $want_included_regex = false; then
-  AC_MSG_CHECKING(for GNU regex)
-  AC_CACHE_VAL(gdb_cv_have_gnu_regex,
-[AC_TRY_COMPILE([#include <gnu-versions.h>
-#include <sys/types.h>
-#include <regex.h>],
-[#if !defined _GNU_REGEX_INTERFACE_VERSION || !defined __GLIBC__ || __GLIBC__ < 2
-#error No valid GNU regex.
-#endif
-],
-               [gdb_cv_have_gnu_regex=yes],
-               [gdb_cv_have_gnu_regex=no])])
-  AC_MSG_RESULT($gdb_cv_have_gnu_regex)
-  if test $gdb_cv_have_gnu_regex = no; then
-       want_included_regex=true
-  fi
-fi
-
-if test x${want_included_regex} = xtrue; then
-    REGEX="gnu-regex.o"
-    AC_DEFINE(USE_INCLUDED_REGEX)
-fi
-AC_SUBST(REGEX)
-
 # In the Cygwin environment, we need some additional flags.
 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
 [AC_EGREP_CPP(lose, [
 # In the Cygwin environment, we need some additional flags.
 AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
 [AC_EGREP_CPP(lose, [
@@ -825,30 +1240,6 @@ case ${host} in
 esac
 AC_SUBST(SER_HARDWIRE)
 
 esac
 AC_SUBST(SER_HARDWIRE)
 
-
-dnl Figure out which term library to use.
-if test x$gdb_host = xgo32; then
-  TERM_LIB=
-else
-if test x$gdb_cv_os_cygwin = xyes; then
-  TERM_LIB='`if test -r ../libtermcap/libtermcap.a; then echo ../libtermcap/libtermcap.a; else echo -ltermcap; fi`'
-else
-  TERM_LIB=
-  AC_CHECK_LIB(ncurses, tgetent, TERM_LIB=-lncurses,
-    AC_CHECK_LIB(Hcurses, tgetent, TERM_LIB=-lHcurses,
-      AC_CHECK_LIB(termlib, tgetent, TERM_LIB=-ltermlib,
-        AC_CHECK_LIB(termcap, tgetent, TERM_LIB=-ltermcap,
-         AC_CHECK_LIB(curses, tgetent, TERM_LIB=-lcurses,
-           AC_CHECK_LIB(terminfo, tgetent, TERM_LIB=-lterminfo))))))
-
-  if test "x$TERM_LIB" = x
-  then
-    AC_MSG_ERROR(Could not find a term library, e.g. termcap or termlib!)
-  fi
-fi
-fi
-AC_SUBST(TERM_LIB)
-
 # libreadline needs libuser32.a in a cygwin environment
 WIN32LIBS=
 if test x$gdb_cv_os_cygwin = xyes; then
 # libreadline needs libuser32.a in a cygwin environment
 WIN32LIBS=
 if test x$gdb_cv_os_cygwin = xyes; then
@@ -865,78 +1256,18 @@ GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
 AC_SUBST(LIBGUI)
 AC_SUBST(GUI_CFLAGS_X)
 
 AC_SUBST(LIBGUI)
 AC_SUBST(GUI_CFLAGS_X)
 
-AC_ARG_WITH(cpu,
-[  --with-cpu=CPU          Set the default CPU variant to debug],
-[case "${target}" in
-  powerpc-* | powerpcle-* )
-    ## It would be nice to keep this table in sync with the one in
-    ## gcc/configure.
-    case "${with_cpu}" in
-      ppc-uisa | rs6000 | 403 | 403GC | 505 | 860 | 601 | 602 | 603 \
-      | 604 | 750 )
-        ## Those are all handled in variants in rs6000-tdep.c, so they're fine.
-      ;;
-      common | power | power2 | rios | rios1 | rios2 | rsc | rsc1 ) 
-        ## These are all RS6000 variants, as far as GDB is concerned.
-        with_cpu=rs6000
-      ;;
-      603e | ec603e )
-        with_cpu=603
-      ;;
-      604e )
-       with_cpu=604
-      ;;
-      * )
-        AC_MSG_WARN(GDB: unknown --with-cpu value: \`${with_cpu}'; using \`ppc-uisa'.)
-       with_cpu=ppc-uisa
-      ;;
-    esac
-  ;;
-  * )
-    AC_MSG_WARN(GDB may ignore the --with-cpu flag for ${target} targets)
-  ;;
-esac
-AC_DEFINE_UNQUOTED(TARGET_CPU_DEFAULT, "${with_cpu}")
-],)
-
-
-AC_ARG_ENABLE(gdbtk,
-[  --enable-gdbtk          Enable GDBTK GUI front end],
-[case "${enableval}" in
-    yes)
-       case "$host" in
-       *go32*)
-           AC_MSG_WARN([GDB does not support GDBtk on host ${host}.  GDBtk will be disabled.])
-           enable_gdbtk=no ;;
-       *windows*)
-           AC_MSG_WARN([GDB does not support GDBtk on host ${host}.  GDBtk will be disabled.])
-           enable_gdbtk=no ;;
-       *)
-           enable_gdbtk=yes ;;
-       esac ;;
-    no)
-       enable_gdbtk=no  ;;
-    *)
-       AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
-esac],
-[
-# Default is on for everything but go32 and Cygwin
-case "$host" in
-    *go32* | *windows*)
-       ;;
-    *)
-       if test -d "${srcdir}/gdbtk" ; then
-            enable_gdbtk=yes
-       fi
-       ;;
-esac
-])
-
 WIN32LDAPP=
 AC_SUBST(WIN32LIBS)
 AC_SUBST(WIN32LDAPP)
 
 WIN32LDAPP=
 AC_SUBST(WIN32LIBS)
 AC_SUBST(WIN32LDAPP)
 
-configdir="unix"
+case "${host}" in
+*-*-cygwin*)
+    configdir="win"
+    ;;
+*)
+    configdir="unix"
+    ;;
+esac
 
 GDBTKLIBS=
 if test "${enable_gdbtk}" = "yes"; then
 
 GDBTKLIBS=
 if test "${enable_gdbtk}" = "yes"; then
@@ -955,14 +1286,7 @@ if test "${enable_gdbtk}" = "yes"; then
 
        # now look for Tcl library stuff
 
 
        # now look for Tcl library stuff
 
-       case "${host}" in
-       *-*-cygwin*)
-           tcldir=../tcl/win/
-           ;;
-       *)
-           tcldir=../tcl/unix/
-           ;;
-       esac
+       tcldir="../tcl/${configdir}/"
 
        TCL_DEPS="${tcldir}${TCL_LIB_FILE}"
 
 
        TCL_DEPS="${tcldir}${TCL_LIB_FILE}"
 
@@ -974,19 +1298,11 @@ if test "${enable_gdbtk}" = "yes"; then
           CY_AC_PATH_TKH
           CY_AC_PATH_ITCLH
           CY_AC_PATH_ITKH
           CY_AC_PATH_TKH
           CY_AC_PATH_ITCLH
           CY_AC_PATH_ITKH
-          CY_AC_PATH_TIXH
 
 
           # now look for Tk library stuff
 
 
 
           # now look for Tk library stuff
 
-          case "${host}" in
-          *-*-cygwin*)
-              tkdir=../tk/win/
-              ;;
-          *)
-              tkdir=../tk/unix/
-              ;;
-          esac
+          tkdir="../tk/${configdir}/"
 
           TK_DEPS="${tkdir}${TK_LIB_FILE}"
 
 
           TK_DEPS="${tkdir}${TK_LIB_FILE}"
 
@@ -1010,14 +1326,6 @@ if test "${enable_gdbtk}" = "yes"; then
             ITK_DEPS="${ITK_LIB_FULL_PATH}"
            fi
 
             ITK_DEPS="${ITK_LIB_FULL_PATH}"
            fi
 
-          # now look for Tix library stuff
-          CY_AC_PATH_TIXCONFIG
-           if test -z "${no_tix}"; then
-             CY_AC_LOAD_TIXCONFIG
-            TIXLIB="${TIX_BUILD_LIB_SPEC}"
-            TIX_DEPS="${TIX_BUILD_LOCATION}/${TIX_LIB_FILE}"
-           fi
-
            ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
           # Tcl/Tk 8.1 require -fwritable strings.  I don't
            # know whether 8.2 will or not, but I bet it will.
            ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
           # Tcl/Tk 8.1 require -fwritable strings.  I don't
            # know whether 8.2 will or not, but I bet it will.
@@ -1030,7 +1338,7 @@ if test "${enable_gdbtk}" = "yes"; then
            fi
 
           # Include some libraries that Tcl and Tk want.
            fi
 
           # Include some libraries that Tcl and Tk want.
-          TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
+          TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
           # Yes, the ordering seems wrong here.  But it isn't.
           # TK_LIBS is the list of libraries that need to be linked
           # after Tcl/Tk.  Note that this isn't put into LIBS.  If it
           # Yes, the ordering seems wrong here.  But it isn't.
           # TK_LIBS is the list of libraries that need to be linked
           # after Tcl/Tk.  Note that this isn't put into LIBS.  If it
@@ -1041,11 +1349,10 @@ if test "${enable_gdbtk}" = "yes"; then
            CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
            CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
            CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
            CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
            CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
            CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
-           CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_GDBTK_INITS)"
-          CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_GDBTK_ALL)"
-          CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_GDBTK_CLEAN)"
-          CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_GDBTK_INSTALL)"
-          CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_GDBTK_UNINSTALL)"
+          CONFIG_ALL="${CONFIG_ALL} all-gdbtk"
+          CONFIG_CLEAN="${CONFIG_CLEAN} clean-gdbtk"
+          CONFIG_INSTALL="${CONFIG_INSTALL} install-gdbtk"
+          CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-gdbtk"
 
           if test x$gdb_cv_os_cygwin = xyes; then
              WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
 
           if test x$gdb_cv_os_cygwin = xyes; then
              WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
@@ -1054,6 +1361,8 @@ if test "${enable_gdbtk}" = "yes"; then
           fi
        fi
     fi
           fi
        fi
     fi
+
+    configdirs="${configdirs} gdbtk"
 fi
 
 AC_SUBST(X_CFLAGS)
 fi
 
 AC_SUBST(X_CFLAGS)
@@ -1065,8 +1374,6 @@ AC_SUBST(ITCLLIB)
 AC_SUBST(ITCL_DEPS)
 AC_SUBST(ITKLIB)
 AC_SUBST(ITK_DEPS)
 AC_SUBST(ITCL_DEPS)
 AC_SUBST(ITKLIB)
 AC_SUBST(ITK_DEPS)
-AC_SUBST(TIXLIB)
-AC_SUBST(TIX_DEPS)
 AC_SUBST(GDBTKLIBS)
 AC_SUBST(GDBTK_CFLAGS)
 AC_SUBST(GDBTK_SRC_DIR)
 AC_SUBST(GDBTKLIBS)
 AC_SUBST(GDBTK_CFLAGS)
 AC_SUBST(GDBTK_SRC_DIR)
@@ -1108,77 +1415,20 @@ AC_SUBST(IGNORE_SIM)
 AC_SUBST(IGNORE_SIM_OBS)
 
 AC_SUBST(ENABLE_CFLAGS)
 AC_SUBST(IGNORE_SIM_OBS)
 
 AC_SUBST(ENABLE_CFLAGS)
+AC_SUBST(PROFILE_CFLAGS)
 
 AC_SUBST(CONFIG_OBS)
 
 AC_SUBST(CONFIG_OBS)
-AC_SUBST(CONFIG_LIB_OBS)
 AC_SUBST(CONFIG_DEPS)
 AC_SUBST(CONFIG_SRCS)
 AC_SUBST(CONFIG_DEPS)
 AC_SUBST(CONFIG_SRCS)
-AC_SUBST(CONFIG_INITS)
 AC_SUBST(CONFIG_ALL)
 AC_SUBST(CONFIG_CLEAN)
 AC_SUBST(CONFIG_INSTALL)
 AC_SUBST(CONFIG_UNINSTALL)
 
 AC_SUBST(CONFIG_ALL)
 AC_SUBST(CONFIG_CLEAN)
 AC_SUBST(CONFIG_INSTALL)
 AC_SUBST(CONFIG_UNINSTALL)
 
-# Begin stuff to support --enable-shared
-AC_ARG_ENABLE(shared,
-[  --enable-shared         Use shared libraries],
-[case "${enableval}" in
-  yes) shared=true ;;
-  no)  shared=false ;;
-  *) shared=true ;;
-esac])dnl
-
-HLDFLAGS=
-HLDENV=
-# If we have shared libraries, try to set rpath reasonably.
-if test "${shared}" = "true"; then
-  case "${host}" in
-  *-*-hpux*)
-    HLDFLAGS='-Wl,+s,+b,$(libdir)'
-    ;;
-  *-*-irix5* | *-*-irix6*)
-    HLDFLAGS='-Wl,-rpath,$(libdir)'
-    ;;
-  *-*-linux*aout*)
-    ;;
-  *-*-linux* | *-pc-linux-gnu*)
-    HLDFLAGS='-Wl,-rpath,$(libdir)'
-    ;;
-  *-*-solaris*)
-    HLDFLAGS='-R $(libdir)'
-    ;;
-  *-*-sysv4*)
-    HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;'
-    ;;
-  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 grep 'some text already loaded' 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(HLDENV)
-# End stuff to support --enable-shared
+# List of host floatformats.
+AC_DEFINE_UNQUOTED(GDB_HOST_FLOAT_FORMAT,$gdb_host_float_format,[Host float floatformat])
+AC_DEFINE_UNQUOTED(GDB_HOST_DOUBLE_FORMAT,$gdb_host_double_format,[Host double floatformat])
+AC_DEFINE_UNQUOTED(GDB_HOST_LONG_DOUBLE_FORMAT,$gdb_host_long_double_format,[Host long double floatformat])
 
 # target_subdir is used by the testsuite to find the target libraries.
 target_subdir=
 
 # target_subdir is used by the testsuite to find the target libraries.
 target_subdir=
@@ -1190,7 +1440,14 @@ AC_SUBST(target_subdir)
 frags=
 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
 if test ! -f ${host_makefile_frag}; then
 frags=
 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
 if test ! -f ${host_makefile_frag}; then
-AC_MSG_ERROR("*** Gdb does not support host ${host}")
+    # When building a native debuger the .mh file containing things
+    # like NATDEPFILES is needed.  Cross debuggers don't need .mh
+    # since it no longer contains anything useful.
+    if test "${target}" = "${host}"; then
+       AC_MSG_ERROR("*** Gdb does not support native target ${host}")
+    else
+       host_makefile_frag=/dev/null
+    fi
 fi
 frags="$frags $host_makefile_frag"
 
 fi
 frags="$frags $host_makefile_frag"
 
@@ -1213,57 +1470,44 @@ targetfile=`sed -n '
 s/TM_FILE[     ]*=[    ]*\([^  ]*\)/\1/p
 ' ${target_makefile_frag}`
 
 s/TM_FILE[     ]*=[    ]*\([^  ]*\)/\1/p
 ' ${target_makefile_frag}`
 
-GDB_MULTI_ARCH=`sed -n '
-s/GDB_MULTI_ARCH[      ]*=[    ]*\([^  ]*\)[   ]*/\1/p
-' ${target_makefile_frag}`
-
-# these really aren't orthogonal true/false values of the same condition,
-# but shells are slow enough that I like to reuse the test conditions
-# whenever possible
 if test "${target}" = "${host}"; then
 if test "${target}" = "${host}"; then
+# We pick this up from the host configuration file (.mh) because we
+# do not have a native configuration Makefile fragment.
 nativefile=`sed -n '
 s/NAT_FILE[    ]*=[    ]*\([^  ]*\)/\1/p
 ' ${host_makefile_frag}`
 nativefile=`sed -n '
 s/NAT_FILE[    ]*=[    ]*\([^  ]*\)/\1/p
 ' ${host_makefile_frag}`
-# else
-# GDBserver is only useful in a "native" environment
-# configdirs=`echo $configdirs | sed 's/gdbserver//'`
 fi
 changequote([,])
 
 fi
 changequote([,])
 
-# New targets should just set gdb_multi_arch=yes in configure.tgt.
-# Old targets being converted can either do that or set GDB_MULTI_ARCH
-# in the target specific makefile frag.  Eventually gdb_multi_arch=yes
-# will be the default.
-if test x"${GDB_MULTI_ARCH}" = x ; then
-    case "${gdb_multi_arch}" in
-    yes ) GDB_MULTI_ARCH=GDB_MULTI_ARCH_PURE ;;
-    no ) GDB_MULTI_ARCH=0 ;;
-    0|1|2 ) GDB_MULTI_ARCH=${gdb_multi_arch} ;;
-    esac
-fi
-if test x"${GDB_MULTI_ARCH}" != x ; then
-    AC_DEFINE_UNQUOTED(GDB_MULTI_ARCH, ${GDB_MULTI_ARCH})
+if test x"${gdb_osabi}" != x ; then
+    AC_DEFINE_UNQUOTED(GDB_OSABI_DEFAULT, $gdb_osabi,
+                      [Define to the default OS ABI for this configuration.])
 fi
 fi
-# Warn the user when they use an old practice
-case "${GDB_MULTI_ARCH}" in
-    "" ) ;;
-    0 | GDB_MULTI_ARCH_PARTIAL | 1 | GDB_MULTI_ARCH_TM | 2 )
-       AC_MSG_WARN("GDB: Target is not pure multi-arch") ;;
-    GDB_MULTI_ARCH_PURE )
-       if test x"${targetfile}" != x ; then
-           AC_MSG_WARN("GDB: Ignoring TM_FILE in ${target_makefile_frag}")
-           targetfile=""
-       fi ;;
-    *)  AC_MSG_ERROR("GDB: Unknown GDB_MULTI_ARCH value ${GDB_MULTI_ARCH}");;
-esac
 
 
+# Enable multi-ice-gdb-server.
+AC_ARG_ENABLE(multi-ice,
+[  --enable-multi-ice      build the multi-ice-gdb-server],
+  [case $enableval in
+    yes | no)
+      ;;
+    *) AC_MSG_ERROR([bad value $enableval for --enable-multi-ice]) ;;
+  esac])
+if test "x$enable_multi_ice" = xyes; then
+  configdirs="$configdirs multi-ice"
+fi
 
 
-SUBDIRS="doc testsuite nlm"
-if test "${enable_multi_ice}" = "yes"; then
-  SUBDIRS="${SUBDIRS} multi-ice"
+# We only build gdbserver automatically if host and target are the same.
+if test "x$target" = "x$host"; then
+  AC_MSG_CHECKING(whether gdbserver is supported on this host)
+  if test "x$build_gdbserver" = xyes; then
+    configdirs="$configdirs gdbserver"
+    AC_MSG_RESULT(yes)
+  else
+    AC_MSG_RESULT(no)
+  fi
 fi
 
 fi
 
-AC_SUBST(SUBDIRS)
+AC_CONFIG_SUBDIRS($configdirs)
 
 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
 # (NAT_FILE) is not set in config/*/*.m[ht] files, we link to an empty
 
 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
 # (NAT_FILE) is not set in config/*/*.m[ht] files, we link to an empty
@@ -1276,10 +1520,13 @@ rm -f xm.h
 xm_h=""
 if test "${hostfile}" != ""; then
     xm_h=xm.h
 xm_h=""
 if test "${hostfile}" != ""; then
     xm_h=xm.h
-    GDB_XM_FILE="config/${gdb_host_cpu}/${hostfile}"
+    case "${hostfile}" in
+      xm-*.h ) GDB_XM_FILE="config/${gdb_host_cpu}/${hostfile}" ;;
+      * ) GDB_XM_FILE="${hostfile}"
+    esac
     files="${files} ${GDB_XM_FILE}"
     links="${links} xm.h"
     files="${files} ${GDB_XM_FILE}"
     links="${links} xm.h"
-    AC_DEFINE_UNQUOTED(GDB_XM_FILE, ${GDB_XM_FILE})
+    AC_DEFINE_UNQUOTED(GDB_XM_FILE, "${GDB_XM_FILE}")
 fi
 AC_SUBST(xm_h)
 
 fi
 AC_SUBST(xm_h)
 
@@ -1287,10 +1534,13 @@ rm -f tm.h
 tm_h=""
 if test "${targetfile}" != ""; then
     tm_h=tm.h
 tm_h=""
 if test "${targetfile}" != ""; then
     tm_h=tm.h
-    GDB_TM_FILE="config/${gdb_target_cpu}/${targetfile}"
+    case "${targetfile}" in
+      tm-*.h ) GDB_TM_FILE="config/${gdb_target_cpu}/${targetfile}" ;;
+      * ) GDB_TM_FILE="${targetfile}"
+    esac
     files="${files} ${GDB_TM_FILE}"
     links="${links} tm.h"
     files="${files} ${GDB_TM_FILE}"
     links="${links} tm.h"
-    AC_DEFINE_UNQUOTED(GDB_TM_FILE, ${GDB_TM_FILE})
+    AC_DEFINE_UNQUOTED(GDB_TM_FILE, "${GDB_TM_FILE}")
 fi
 AC_SUBST(tm_h)
 
 fi
 AC_SUBST(tm_h)
 
@@ -1298,29 +1548,44 @@ rm -f nm.h
 nm_h=""
 if test "${nativefile}" != ""; then
     nm_h=nm.h
 nm_h=""
 if test "${nativefile}" != ""; then
     nm_h=nm.h
-    GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}"
+    case "${nativefile}" in
+      nm-*.h ) GDB_NM_FILE="config/${gdb_host_cpu}/${nativefile}" ;;
+      * ) GDB_NM_FILE="${nativefile}"
+    esac
     files="${files} ${GDB_NM_FILE}"
     links="${links} nm.h"
     files="${files} ${GDB_NM_FILE}"
     links="${links} nm.h"
-    AC_DEFINE_UNQUOTED(GDB_NM_FILE, ${GDB_NM_FILE})
+    AC_DEFINE_UNQUOTED(GDB_NM_FILE, "${GDB_NM_FILE}")
 fi
 AC_SUBST(nm_h)
 
 fi
 AC_SUBST(nm_h)
 
-AC_PROG_LN_S
-
 AC_LINK_FILES($files, $links)
 
 dnl Check for exe extension set on certain hosts (e.g. Win32)
 AC_EXEEXT
 
 AC_LINK_FILES($files, $links)
 
 dnl Check for exe extension set on certain hosts (e.g. Win32)
 AC_EXEEXT
 
-AC_CONFIG_SUBDIRS($configdirs)
+dnl  Detect the character set used by this host.
+
+dnl  At the moment, we just assume it's ISO-8859-1 (which is a
+dnl  superset of ASCII containing the characters needed for French,
+dnl  German, Spanish, Italian, and possibly others), but if were
+dnl  *were* to support any host character sets other than ISO-8859-1,
+dnl  here's where we'd detect it.
+AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "ISO-8859-1",
+          [Define to be a string naming the default host character set.])
+
+AM_ICONV
+
 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
 [
 dnl Autoconf doesn't provide a mechanism for modifying definitions 
 dnl provided by makefile fragments.
 dnl
 if test "${nativefile}" = ""; then
 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
 [
 dnl Autoconf doesn't provide a mechanism for modifying definitions 
 dnl provided by makefile fragments.
 dnl
 if test "${nativefile}" = ""; then
-sed -e '/^NATDEPFILES[[        ]]*=[[  ]]*/s//# NATDEPFILES=/' \
-       < Makefile > Makefile.tem
+        < Makefile \
+        sed -e '/^NATDEPFILES[[        ]]*=.*\\$/,/[[^\\]]$/s/^/# /' \
+            -e '/^NATDEPFILES[[        ]]*=/s/^/# /' \
+        | sed -e '/^\(NATDEPFILES[[    ]]*[[+]]=[[     ]]*\)/s//# \1/' \
+       > Makefile.tem
 mv -f Makefile.tem Makefile
 fi
 
 mv -f Makefile.tem Makefile
 fi