2004-04-02  Andrew Cagney  <cagney@redhat.com>

	* src-release (DEVO_SUPPORT): Delete MPW files.

2004-02-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/7087
	* Makefile.tpl: Guard XFOO sed statements better.
	* Makefile.tpl: Add dependency for configure-target-libada.
	* Makefile.in: Regenerate (incidentally fixes broken
	commit when libada-branch was merged).

2004-02-28  Andrew Cagney  <cagney@redhat.com>

	* src-release (CVS_NAMES): Define.
	(do-tar, do-tar): Prune $(CVS_NAMES).

2004-02-23  Andrew Cagney  <cagney@redhat.com>

	* texinfo/texinfo.tex: Update from version 2003-02-03.16 to
	2004-02-19.09.

2004-02-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/11932
	* mkinstalldirs, install-sh: Import from automake CVS HEAD.

2004-02-19  Andrew Cagney  <cagney@redhat.com>

	* config.guess: Update from version 2003-06-12 to 2004-02-16.
	* config.sub: Update from version 2003-06-13 to 2004-02-16.

2004-02-11  David Edelsohn  <edelsohn@gnu.org>

	* configure.in (powerpc-*-aix*): Add target-libada to noconfigdirs.
	(rs6000-*-aix*): Same.
	* configure: Regenerate.

2004-02-11  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.in (host): Add in missing $noconfigdirs to defines.
	* configure: Regenerate.

2004-02-10  Arnaud Charlet  <charlet@act-europe.fr>,
	    Nathanael Nerode  <neroden@gcc.gnu.org>

	PR ada/6637, PR ada/5911
        Merge with libada-branch:
	* configure.in, Makefile.tpl, Makefile.def: Add target-libada,
	with appropriate dependencies. Add --enable-libada configure switch.
	* configure, Makefile.in: Regenerate.

2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in: Don't pass --with-stabs on IRIX 5 either.
	* configure: Regenerate.

2004-02-02  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Update Red Hat license to 2004.
	
2004-01-23  DJ Delorie  <dj@redhat.com>

	* Makefile.def (target_modules) [libiberty]: Don't stage.
	* Makefile.in: Rebuilt.

2004-01-23  Jeff Johnston  <jjohnstn@redhat.com>
	
	* COPYING.NEWLIB: Update to include copyrights for new
	iconv code.

2004-01-15  Andrew Cagney  <cagney@redhat.com>

	* src-release: Update copyright year.
	(do-proto-toplev): Configure using i686-pc-linux-gnu.
	(NEWLIB_SUPPORT_DIRS): Delete macro.
	(newlib.tar.bz2): Delete rule.

2004-01-14  Loren J. Rittle <ljrittle@acm.org>

	* Makefile.def (target_modules) [libtermcap, libiberty, zlib]: Stage.
	* Makefile.tpl (configure-target-[+module+]): Support stage.
	* Makefile.in: Rebuilt.

2003-01-14  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* gettext.m4: Quote names of macros to be defined by AC_DEFUN
	throughout.

2004-01-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Use ./config.cache, not config.cache.
	* configure: Regenerate.
	* Makefile.tpl: Special-casing not needed for GCC any more.
	* Makefile.in: Regenerate.

	* configure.in: Don't share a cache file for host dirs.
	* configure: Regenerate.

	* config-ml.in: Don't mess with the cache file.

2004-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Make GCC use a separate config.cache.
	* Makefile.in: Regenerate.

	PR bootstrap/11932, PR bootstrap/11933
	(I don't know if it will fix either of them, but it relates
	to them.)
	* configure.in: Don't use shared config.cache for target
	directories.
	* configure: Regenerate.

2003-12-31  Roger Sayle  <roger@eyesopen.com>

	* configure.in (ia64*-*-hpux*): Disable building java libraries.
	* configure: Regenerated.

2003-12-21  Bernardo Innocenti  <bernie@develer.com>
 
 	* configure.in (*-*-uclinux): Exclude newlib, libgloss and rda.
 	* configure: Regenerated.

2003-12-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	Port change over from GCC:
	2003-11-20  Kelley Cook  <kcook@gcc.gnu.org>
	* Makefile.tpl (BASE_FLAGS_TO_PASS): Pass along CONFIG_SHELL.
	(configure-build-[+module+], configure-[+module+]): Likewise.
	(configure-target-[+module+], configure-gcc, config.status): Likewise.
	* Makefile.in: Regenerate.

2003-12-08  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* configure.in (raw_libstdcxx_flags): Remove the leading space.
	* configure: Regenerate.

2003-11-27  Jeff Johnston  <jjohnstn@redhat.com>

        * COPYING.NEWLIB: Add license info for long long routines added to
	stdlib.

2003-11-14  Arnaud Charlet  <charlet@act-europe.fr>

	* Makefile.tpl (EXTRA_GCC_FLAGS): Pass BOOT_ADAFLAGS.
	* Makefile.in: Regenerate.

2003-10-20  Phil Edwards  <phil@codesourcery.com>

	* configure.in (*-*-vxworks):  Add target-libiberty to noconfdirs.
	* configure:  Regenerate.

2003-10-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Make GCC_FLAGS_TO_PASS a superset of
	HOST_FLAGS_TO_PASS.
	* Makefile.in: Regenerate.

2003-10-05  Mohan Embar  <gnustuff@thisiscool.com>

	* configure.in: Allow explicit specification of CFLAGS_FOR_BUILD.
	* configure: Rebuilt
	* Makefile.tpl: Use CFLAGS_FOR_BUILD computed by configure
	* Makefile.in: Rebuilt

2003-10-03  H.J. Lu  <hongjiu.lu@intel.com>

	* ltconfig (sys_lib_search_path_spec): Fix a typo for HPUX.

2003-10-01  Phil Edwards  <pme@gcc.gnu.org>

	* config-ml.in:  Use ac_configure_args directly instead of
	ml_arguments.  Only set ml_norecursion if --no[-]recursion is
	actually seen.

2003-10-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config-ml.in: Propagate INSTALL variables.

2003-09-21  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Pass a computed --program-transform-name
	to subconfigures.
	* configure: Regenerated.

2003-09-20  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Don't pass down obsolete ENQUIRE variable.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Don't pass (unused) DLLTOOL or WINDRES to gcc.
	* Makefile.in: Regenerate.

2003-09-17  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in (TOPLEVEL_CONFIGURE_ARGUMENTS, baseargs): Fix
	quoting.
	* configure: Regenerated.

2003-09-12  Michael Chastain  <mec@shout.net>

	Fix PR gdb/857.
	* src-release (do-proto-topleve): Remove junk files
	intl/config.cache, intl/config.status,
	intl/config.h, intl/stamp-h.

2003-09-14  Andrew Cagney  <cagney@redhat.com>

	* src-release (dejagnu.tar): New target.
	(dejagnu.tar.bz2): Recursively call "gdb-taz" rule.
	(do-djunpack): Use $(PACKAGE) for the package name.

2003-09-04  DJ Delorie  <dj@redhat.com>

	* configure: Regenerate.

2003-09-04  Robert Millan  <robertmh@gnu.org>

	* configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu triplet.
	
2003-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Ensure arguments to sed are properly spaced.
	* configure: Regenerate.

2003-08-28  Daniel Jacobowitz  <drow@mvista.com>

	Merge from gcc:
	2003-07-20  Phil Edwards  <pme@gcc.gnu.org>
	* install-sh:  Update to newer upstream versions (associated with
	aclocal 1.7).
	* missing:  Likewise, plus $1Help2man -> $1 typo fix.

2003-08-27  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Set RAW_CXX_FOR_TARGET if unset.
	* configure: Regenerated.

2003-08-23  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in:  Use newline instead of semicolon when assuming
	shell arguments in a for loop.
	* configure:  Regenerated.

2003-08-20  Geoffrey Keating  <geoffk@apple.com>

	PR 8180
	* configure.in: When testing with_libs and with_headers, treat
	'no' as unset.  Based on a patch by Dan Kegel <dank@kegel.com>.
	* configure: Regenerate.
	
	* configure.in (TOPLEVEL_CONFIGURE_ARGUMENTS): Quote properly for
	make, shell, etc.
	(baseargs): Likewise.
	* configure: Regenerate.

2003-08-19  Geoffrey Keating  <geoffk@apple.com>

	* configure.in: Disable libgcj for darwin not on powerpc.
	* configure: Rebuild.

2003-08-15  Michael Chastain  <mec@shout.net>

	* src-release (do-proto-toplev): Remove junk files
	dejagnu/example/calc/config.status,
	dejagnu/example/calc/config.log.

2003-08-14  Alexandre Duret-Lutz  <adl@gnu.org>

	* config-ml.in, symlink-tree: Add license.

2003-08-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	Merge from gcc:

	2003-08-01  Matt Kraai  <kraai@alumni.cmu.edu>
	* Makefile.tpl (check, check-c++): Express dependencies using
	dependencies rather than commands.
	* Makefile.in: Regenerate.

	2003-07-31  Geoffrey Keating  <geoffk@apple.com>
	* Makefile.tpl (libsubdir): Use gcc instead of gcc-lib.
	* Makefile.in: Update.

2003-08-01  Andrew Cagney  <cagney@redhat.com>

	* configure.in (noconfigdirs): Do not add GDB when m32r-*-*.
	* configure: Ditto.

2003-07-30  Andreas Tobler  <a.tobler@schweiz.ch>

	* configure.in: Enable libgcj for darwin.
	* configure: Rebuild.

2003-07-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* mkinstalldirs: Import autoconf 2.57 / automake 1.7 version.

2003-07-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Use 'mkinstalldirs' rather than 'mkdir' when
	creating target and build subdirs to build all parent dirs as needed.
	* Makefile.in: Rebuild.
	* configure.in: Don't build dirs explicitly here.
	* configure: Rebuild.

2003-07-22  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.tpl (all-make): Depend on intl.
	* Makefile.in: Rebuilt.

2003-07-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.if: Remove unused libc_interface determination.

2003-07-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in: Regenerate, correctly this time.

2003-07-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Set INSTALL and friends using autoconf.  Remove
	unused INSTALL_PROGRAM_ARGS.
	* configure.in: Use AC_PROG_INSTALL.
	* Makefile.in: Regenerate.
	* configure: Regenerate.

2003-07-10  Alexandre Oliva  <aoliva@redhat.com>

	* configure: Rebuilt.
	2001-09-26  Alexandre Oliva  <aoliva@redhat.com>
	* configure.in (noconfigdirs) [am33_2.0-*-linux*]: Don't build
	newlib nor libgloss.
	Wed May  9 10:07:19 2001  Alexandre Oliva  <aoliva@redhat.com>
	* configure.in (am33_2.0-*-linux*): Added.

2003-07-09  Bob Wilson  <bob.wilson@acm.org>

	* configure.in: Add ${libgcj} to noconfigdirs for xtensa-*-* targets.
	* configure: Regenerate.

2003-07-06  H.J. Lu <hongjiu.lu@intel.com>

	* config-ml.in: Replace PWD with PWD_COMMAND.
	* Makefile.tpl: Likewise.
	* Makefile.in: Regenerated.

2003-06-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Clean up config-lang.in handling.  Delete
	useless assignment to "subdirs".
	* configure: Regenerate.

2003-06-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Rename 'target_libs' to 'target_libraries'.
	Remove useless reference to 'target_libs'.
	* configure: Regenerate.

2003-06-23  Keith Seitz  <kseitz@sources.redhat.com>

	* Makefile.tpl: Add maybe-configure-itcl to configure-gdb.
	* Makefile.in: Regenerate.

2003-06-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.def: Introduce flags_to_pass.
	* Makefile.tpl: Generate BASE_FLAGS_TO_PASS using it.
	* Makefile.in: Regenerate.

2003-06-23  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (noconfigdirs) <cris-*-*>: Disable target-newlib
	and target-libgloss.
	<d30v-*-*, fr30-*-*, i960-*-*, m32r-*-*>: Disable gdb.
	<h8300*-*-*>: Disable libf2c and ${libgcj}.
	* configure: Regenerate.

2003-06-17  Benjamin Kosnik  <bkoz@redhat.com>

	* configure.in: Update testsuite_flags to new location.
	* configure. Regenerate.
	
2003-06-18  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Remove BUILD_CC stuff.
	* Makefile.in: Regenerate.

2003-06-14  H.J. Lu <hongjiu.lu@intel.com>
 
	* config.guess: Update to 2003-06-12 version.
	* config.sub: Update to 2003-06-13 version.

2003-06-12  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* MAINTAINERS: Add myself as MIPS co-maintainer.

2003-06-12  H.J. Lu <hongjiu.lu@intel.com>
 
	* config.guess: Update to 2003-06-06 version.
	* config.sub: Update to 2003-06-06 version.

2003-06-11  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in: Don't pass --with-stabs for mips*-sgi-irix6*o32.
	* configure. Regenerate.

2003-06-10  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Disable serial configure by default.
	* configure: Regenerate.
	* Makefile.tpl: Abolish .NOTPARALLEL.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Replace {build,host,target}_canonical by
	{build,host,target}.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Fix stupid pasto.
	* Makefile.in: Regenerate.

2003-06-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Remove bogus conditional.
	* Makefile.in: Regenerate.

2003-06-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Make 'recursive targets' using autogen rather
	than shell loop.  Remove duplicate 'clean' targets and false
	comments.
	* Makefile.def: Add systematic dependencies to 'recursive' targets.
	Add systematic method of specifying missing targets in subdirs.
	Add copyright boilerplate.
	* Makefile.in: Regenerate.
	* configure.in: Add 'recursive targets' to maybe list.
	* configure: Regenerate.

	* Makefile.tpl: Rename [+target+] to [+make_target+].
	* Makefile.def: Rename 'target' to 'make_target'.

2003-05-30  Nick Clifton  <nickc@redhat.com>

	* README-maintainer-mode: Update URL for locating blessed config
	tools.

2003-05-29  Robert Millan  <rmh@debian.org>

	* ltconfig: Import this patch and modify for use with current
	version of ltconfig:

	2003-05-21  Bruno Haible  <bruno@clisp.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Add support for
	GNU/FreeBSD.

2003-05-28  DJ Delorie  <dj@redhat.com>

	* Makefile.tpl: Make maybe-check-gcc .PHONY.
	* Makefile.in: Regenerate.

2003-05-28  Jeff Johnston  <jjohnstn@redhat.com>

        * COPYING.NEWLIB: Add license info for newlib/libc/sys/linux/stdlib.

2003-05-21  DJ Delorie  <dj@redhat.com>
	
	* Makefile.tpl (configure-target-libiberty): Depend only on gcc, not
	newlib or libgloss.
	* Makefile.in: Regenerate.

2003-05-21  DJ Delorie  <dj@redhat.com>

	* Makefile.tpl: Add missing empty maybe-check-gcc target.
	* Makefile.in: Regenerate.

2003-05-20  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* configure.in: Use curly braces in the definition of tooldir.
	* configure: Regenerate.

2003-05-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Switch more things to use maybe dependencies.
	* Makefile.tpl: Switch more things to use maybe dependencies.  
	Factor out common code from autogen IF statements.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

2003-05-14  Kelley Cook  <kelleycook@wideopenwest.com>

	* configure.in: Accept i[3456789]86 for machine type.
	* configure: Regenerate.

2003-05-18  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Switch more things to use maybe dependencies.
	Rearrange a little.  Use GCC_TOPLEV_SUBDIRS.
	* configure: Regenerate.
	* Makefile.tpl: Switch more things to use maybe dependencies.
	* Makefile.in: Regenerate.

2003-05-16  Andreas Schwab  <schwab@suse.de>

	* Makefile.tpl (install-opcodes): Define.
	* Makefile.in: Rebuild.

2003-05-13  Andreas Jaeger  <aj@suse.de>

	* config.guess: Update to 2003-05-09 version.
	* config.sub: Update to 2003-05-09 version.

2003-05-13  Michael Eager <eager@mvista.com>

	* configure.in: Correct sed script so that options in quotes are not
	deleted.
	* configure: Rebuild.

2003-05-12  Corinna Vinschen  <corinna@vinschen.de>

	* configure.in (FLAGS_FOR_TARGET): Remove $$s/newlib/libc/sys/cygwin
	and $$s/newlib/libc/sys/cygwin32 include paths.
	* configure: Ditto.

2003-05-05  H.J. Lu <hjl@gnu.org>

	* config-ml.in: Restored from gcc repository.

2003-05-02  Chris Demetriou  <cgd@broadcom.com>

        * Makefile.tpl: Require "makeinfo" from texinfo 4.2 or later.
        * Makefile.in: Regenerate.

2003-04-27  Daniel Jacobowitz  <drow@mvista.com>

	* src-release (DEVO_SUPPORT): Add src-release, Makefile.tpl,
	and Makefile.def.

2003-04-27  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.tpl: Clean $(BUILD_SUBDIR).
	* Makefile.in: Regenerated.

2003-04-18  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* Makefile.tpl (MAKEINFOFLAGS): Default to --split-size=5000000.
	* Makefile.in: Regenerate.

2003-04-18  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (powerpc64*-*-linux*): Remove.
	* configure: Rebuilt.

2003-04-17  Phil Edwards  <pme@gcc.gnu.org>

	* Makefile.tpl (GCC_STRAP_TARGETS):  New variable containing all the
	previous bootstrap targets, plus bubblestrap, quickstrap, cleanstrap,
	and restrap.
	* Makefile.in:  Regenerate.

2003-04-16  Richard Earnshaw  <rearnsha@arm.com>

	* configure.in (arm-*-netbsdelf*): Enable building java libraries.
	* configure: Regenerated.

2003-04-11  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*.
	* */configure: Rebuilt.

2003-03-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES back down.
	* Makefile.in: Regenerate.

2003-03-14  Michael Chastain  <mec@shout.net>

	* Makefile.in: Regenerate with correct Makefile.def.

2003-03-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES up.  Delete unused
	Make macro.
	* Makefile.in: Regenerate.
	* configure.in: Clean up gxx_include_dir logic.
	* configure: Regenerate.

2003-03-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* configure.in (gxx_include_dir): Fix typo.
	* configure: Regenerated.

2003-03-06  Andrew Cagney  <cagney@redhat.com>

	* texinfo/texinfo.tex: Import version 2003-02-03.16.

2003-03-04  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Include $(build_tooldir)/sys-include in
	FLAGS_FOR_TARGET.
	* configure: Regenerated.

2003-03-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Reindent.
	* Makefile.in: Regenerate.
	* configure.in: Reindent.  Don't set unused variables.
	* configure: Regenerate.

	* Makefile.tpl: Always pass down RANLIB.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Don't set unused enable_shared, enable_threads macros.
	* Makefile.in: Regenerate.
	* configure.in: Remove unused logic relating to --enable-shared
	and --enable-threads.  Remove bogus comments.  Remove redundant
	noconfigdirs.
	* configure: Regenerate.

	* configure.in: Replace ${libstdcxx_version} by its value.
	Remove reference to mh-dgux.
	* configure: Regenerate.

2003-02-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Rearrange.
	* Makefile.in: Regenerate.

2003-02-25  Nick Clifton  <nickc@redhat.com>

	* configure: Remove site-file supprot - it is obsolete.

2003-02-24  Uwe Stieber <uwe@wwws.de>

	* configure.in: Add support for kaOS as cross build target system.
	* configure: Regenerated.

2003-02-20  Sean McNeil  <sean@blue.mcneil.com>

	* Makefile.tpl: Add definition of CPPFLAGS to pass into
	configure-target-* as some target builds may require additional
	flags for preprocessor tests.
	* Makefile.in: Regenerated.

2003-02-19  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (LD): Append -melf* option to LD on IRIX with GNU ld.
	* ltconfig: Handle it.
	* ltcf-cxx.sh: Use with_gnu_ld passed as a shell variable instead of
	auto-detecting it.

2003-02-19  Alexandre Oliva  <aoliva@redhat.com>

	* ltcf-cxx.sh: Replace $linker_flags with $compiler_flags wherever
	it is used as argument to $CC.
	* ltcf-gcj.sh: Likewise.

2003-02-19  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Introduce --enable-maintainer-mode.
	* configure: Rebuilt.
	* Makefile.tpl (Makefile.in, configure): Enable dependencies only
	for maintainer mode.
	* Makefile.in: Rebuilt.

2003-02-19  Andrew Cagney <ac131313@redhat.com>

	* configure: Regenerate using autoconf 2.13.

2003-02-19  Alan Modra  <amodra@bigpond.net.au>

	* config.guess: Import latest version.
	* config.sub: Import latest version.

2003-02-18  Jason Merrill  <jason@redhat.com>

	* Makefile.tpl (check-c++): Allow parallelism.

2003-02-17  Andrew Cagney  <ac131313@redhat.com>

	* configure: Regenerate using autoconf 000227.

2003-02-15  Geoffrey Keating  <geoffk@apple.com>

	* configure.in (*-*-darwin*): Rename from powerpc*-*-darwin*,
	don't configure target-libobjc.
	* configure: Regenerate.

2003-02-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.tpl (RANLIB): Define.
	* Makefile.in: Regenerate.

2003-02-06  Keith R Seitz  <keiths@redhat.com>

	* Makefile.def: Remove "snavigator", "grep", and "db" modules.
	* Makefile.tpl: Remove "all-snavigator" and "all-grep".
	* Makefile.in: Regenerated.
	* configure.in: Remove all traces of snavigator, db, and grep.
	* configure: Regenerated.

2003-01-31  Frank Ch. Eigler  <fche@redhat.com>

	* Makefile.tpl (all-sid): Add libiberty/bfd/opcodes dependencies.
	* Makefile.in: Regenerated.

2003-01-30  Alexandre Oliva  <aoliva@redhat.com>

	* config.if: Copy from GCC.

2003-01-27  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in:  Revert 24Jan change.
	* configure:  Regenerate.

2003-01-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Revert previous change.
	* configure: Regenerate.

2003-01-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Make rda native-only.
	* configure: Regenerate.

2003-01-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Add missing \.
	* configure: Rebuilt.

2003-01-17  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (baseargs): Avoid using \| in sed regular
	expressions.
	* configure: Rebuilt.

2003-01-16  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (baseargs): Remove all supported forms of
	--cache-file, --srcdir, --host, --build and --target options
	from argument lists.
	* configure: Rebuilt.

2003-01-15  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (noconfigdirs): Don't skip gas on IRIX 6.
	* configure: Rebuilt.

2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Substitute TOPLEVEL_CONFIGURE_ARGUMENTS.
	* Makefile.tpl: Pass TOPLEVEL_CONFIGURE_ARGUMENTS to gcc.
	* Makefile.in: Regenerate.
	* configure: Regenerate.

2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.tpl (BASE_FLAGS_TO_PASS): Also pass DESTDIR.
	(install-info, dir.info): Prepend $(DESTDIR) to $(infodir).
	* Makefile.in: Regenerate.

2003-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Remove Makefile in build, host and target modules
	unless configure was run with --no-recursion.
	* configure: Rebuilt.

2003-01-08  Chris Demetriou  <cgd@broadcom.com>

	* config.guess: Update to 2003-01-03 version.
	* config.sub: Update to 2003-01-03 version.

2003-01-07  Christopher Faylor  <cgf@redhat.com>

	* configure: Regenerate with proper autoconf 2.13.

2003-01-07  Christopher Faylor  <cgf@redhat.com>

        * configure.in: Add AC_PREREQ for consistency.
        * configure: Regenerate.

2003-01-06  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (GDB_TK): Add tcl directories conditional on
	gdb/gdbtk directory being present.
	* configure: Regenerate.

2003-01-04 John David Anglin  <dave.anglin@nrc.ca>

	* configure.in (LD): Improve test for gcc.  Try to set LD to the ld used
	by gcc if LD is not defined and we are not doing a Canadian Cross.
	* configure: Rebuilt.

2003-01-01  Daniel Jacobowitz  <drow@mvista.com>

	* src-release (ETC_SUPPORT): Add fdl.texi and texi2pod.pl.

2002-12-31  Tom Tromey  <tromey@redhat.com>

	* Makefile.in: Rebuilt.
	* Makefile.def (target_modules) [libffi]: Allow installation.

2002-12-31  Andreas Schwab  <schwab@suse.de>

	* configure.in: Fix use of $program_transform_name.
	* configure: Regenerated.

2002-12-30  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in (baseargs): Don't remove first configure argument.
	* configure: Regenerated.

2002-12-29  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.tpl (local-distclean): Don't remove...
	(multilib.ts): ... this.  Moved into...
	(multilib.out): ... this.  Don't use sub-make.
	($(BUILD_SUBDIR)/[+module+]/Makefile, [+module+]/Makefile,
	$(TARGET_SUBDIR)/[+module+]/Makefile, gcc/Makefile): Moved into...
	(configure-build-[+module+], configure-[+module+],
	configure-target-[+module+], configure-gcc): ... these.  Test
	for Makefile existence.  Drop config.status from dependencies.
	* Makefile.in: Rebuilt.
	* configure.in: Move gcc-version-trigger to the end of
	ac_configure_args.  Add comments to maybedep.tmp and
	serdep.tmp.  Introduce --disable-serial-configure.  Remove
	nonopt from baseargs, matching and removing corresponding
	whitespace while at it.
	* configure: Rebuilt.

2002-12-28  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (host_configargs): Replace reference to
	no-longer-defined buildopts with --build=${build_alias}.
	* configure: Rebuilt.

2002-12-28  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.tpl ($(NOTPARALLEL)): Move to the end.  Bring uses of
	program_transform_name to standard idiom.
	(AUTOGEN, AUTOCONF): Define.
	(Makefile.in): Use $(AUTOGEN).
	(Makefile): Depend on config.status, and use autoconf-style rule to
	build it.  Move original commands to...
	(config.status): ... this new target.
	(configure): Add $(srcdir).  Depend on config/acx.m4.  Use
	$(AUTOCONF).
	* Makefile.in: Rebuilt.

2002-12-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Fix dramatic bustage due to change in
	program_transform_name.
	* Makefile.in: Regenerate.

	* configure.in: Remove unnecessary PATH setting.
	* configure: Regnerate.

	* configure.in: Don't default to unprefixed tools unless
	the native tools will work.
	* configure: Regenerate.

	* configure.in: Convert to autoconf script.  Blow away lots
	of now-redundant Makefile fragments.
	* configure: Generate using Autoconf.
	* Makefile.tpl: Rewrite to reflect autoconfiscation.
	* Makefile.in: Regenerate.

2002-12-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure: Remove unneeded 'export's.  Make CC_FOR_TARGET,
	CXX_FOR_TARGET, GCJ_FOR_TARGET substituted in configure.in only.

	* ChangeLog: Move a couple of entries from here to winsup/cygwin,
	where they belong.

2002-12-24  Andreas Schwab  <schwab@suse.de>

	* Makefile.tpl (multilib.out): Fix missing space.
	* Makefile.in: Regenerate.

2002-12-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Use shared multilib.out.  Use move-if-change for it.
	Convert (cd foo; make) to (cd foo && make).  Clean up multilib.out.
	* Makefile.in: Regenerate.
	* configure.in: Remove unnecessary leftovers.

2002-12-21  Geoffrey Keating  <geoffk@apple.com>

	* configure.in (extra_ranlibflags_for_target): New variable.
	(*-*-darwin): Add -c to ranlib commands.
	* configure (tooldir): Handle extra_ranlibflags_for_target.

2002-12-20  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Updated.
	* COPYING.LIBGLOSS: Ditto.

2002-12-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Revert HJL's change.
	* Makefile.in: Regenerated.
	* configure.in: Put build_prefix before $(BUILD_SUBDIR) here, and
	always.

2002-12-19  Andreas Schwab  <schwab@suse.de>

	* Makefile.tpl, configure.in: Substitute libstdcxx_incdir.
	* Makefile.in: Regenerate.

2002-12-18  H.J. Lu <hjl@gnu.org>

	* Makefile.tpl: Add @build_prefix@ before $(BUILD_SUBDIR).
	* Makefile.in: Regenerated.

	* configure.in (build_prefix): New. Substitute.

2002-12-18  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Don't let real targets depend on phony targets.
	* Makefile.in: Regenerate.

	* Makefile.tpl (do-info): Depend on maybe-all-texinfo, not all-texinfo.
	* Makefile.in: Regenerate.

2002-12-16  Jason Merrill  <jason@redhat.com>

	* Makefile.tpl (all-gcc): Use 'make quickstrap' if there was a
	previous 'make bootstrap'.
	* Makefile.in: Regenerate.

2002-12-17  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (noconfigdirs) [mmix-*-*]: Disable libgloss and gdb.

2002-12-13  Jason Merrill  <jason@redhat.com>

	* Makefile.tpl (check-gcc-c++): Renamed from check-c++.  Don't run
	library tests.
	(check-c++): Just depend on it and check-target-libstdc++-v3.
	* Makefile.in: Regenerate.

2002-12-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in, Makefile.tpl, Makefile.def: Remove tclX.
	* Makefile.in: Regenerate.

2002-12-12  Jeff Johnston  <jjohnstn@redhat.com>

        * COPYING.NEWLIB: Update list of alternate Regent of California
        licenses and discuss official revoking of advertising clause.
        * COPYING.LIBGLOSS: Ditto.

2002-12-12  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.tpl (configure-target-rda): Depend on $(ALL_GCC_C).
	* Makefile.in: Rebuilt.

2002-12-10  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure: Fix bug put in by gremlins.

	* Makefile.tpl: Substitute more autoconfily.
	* configure: Substitute more autoconfily.
	* Makefile.in: Regenerate.

2002-12-08  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.tpl (all-sim): Depend on maybe-configure-gdb.
	* Makefile.in (all-sim): Ditto.

2002-12-06  DJ Delorie  <dj@redhat.com>

	* Makefile.tpl: Change configure dependencies to not have real
	targets depend on phony targets.

2002-12-05  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Revert unintentional change.

	* src-release: Configure host subdirs.

	* Makefile.tpl: Change dependency for */multilib.out so that
	it works when gcc isn't in the tree.

	* configure.in: Substitute more.
	* configure: Run subconfigures from the Makefile.
	* Makefile.tpl: Run subconfigures from the Makefile; add a few
	convenience targets.  Make sure gcc isn't rebuilt after bootstrap.

2002-12-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Add targets for configuring host subdirs in Makefile,
	and corresponding dependencies.
	* Makefile.in: Regenerate.

	* configure.in (host_tools): Order binutils, gas and ld for
	convenience in running the testsuites.

	* Makefile.tpl: Introduce rules to serialize subconfigure runs.
	* Makefile.in: Regenerate.
	* configure.in: Introduce rules to serialize subconfigure runs.

	* configure.in: Introduce BASE_CC_FOR_TARGET.
	* Makefile.tpl: Reorganize and comment.  Introduce HOST_CONFIGARGS.
	Realize configure-build-* targets.  Realize configure-target-* targets.
	* Makefile.in: Regenerate.

2002-12-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure: Move gcc_version_trigger stuff from here...
	* configure.in: ...to here.

	* configure.in: Separate subconfigure options added by this file from
	options given by the user.  Add machinery to put args for host
	subconfigures into the Makefile.

	* Makefile.tpl: Remove 'vault' targets.
	* Makefile.tpl: Reorder and comment dependencies.
	* Makefile.in: Regenerate.

2002-11-28  Geoffrey Keating  <geoffk@apple.com>

	* configure.in: Move host-specific darwin noconfigdirs into
	the host-specific section.

2002-12-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Restore bkorb's style patch, accidentally lost
	during replay.
	* Makefile.in: Regenerate.

	(finishing slow-motion replay)
	* configure: Remove skip-this-dir support.
	* Makefile.tpl: Remove skip-this-dir support.

	* Makefile.tpl: Remove leftover support for non-autoconfiscated
	subdirectories.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Strip out useless setting of 'dir'.
	* Makefile.in: Regenerate.

2002-12-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	(finishing slow-motion replay)
	* configure.in: Fix deeply stupid bug.

	* configure.in: Introduce RAW_CXX_FOR_TARGET and simplify embedded
	shell code in CXX_FOR_TARGET
	* Makefile.def: Introduce raw_cxx.
	* Makefile.tpl: Use raw_cxx to select between CXX_FOR_TARGET and
	RAW_CXX_FOR_TARGET.
	* Makefile.in: Regenerate.

2002-12-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	(finishing slow-motion replay)
	* Makefile.tpl: Remove unnecessary ifs.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Implement soft dependency machinery.  Maybe-ize
	dependencies.  Maybe-ize build-libiberty.  Create dummy install
	targets for 'no_install' modules.
	* configure: Move GDB_TK substitution to configure.in.  Move
	build_modules stuff to configure.in.
	* configure.in: Implement soft dependency machinery.  Maybe-ize
	GDB_TK, rearrange slightly.  Move build_modules stuff from configure.
	* Makefile.in: Regenerate.

2002-12-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	(continuing slow-motion replay)
	* Makefile.tpl: Make all-target, install-target behave similarly
	to all, install (only hitting configured targets).  Eliminate
	unused macro defintions.

	* Makefile.tpl: Add all-gcc: all-build-libiberty dependency when
	build != host.

	* Makefile.tpl: Add all-gcc: all-libiberty dependency.

	* ltcf-c.sh, ltcf-gcj.sh, Makefile.tpl: Correct BUILD/HOST confusion.

	* configure.in: Produce lists of subdir targets we're actually
	configuring.  Remove references to "dosrel".
	* Makefile.tpl: Let configure set which subdir targets are hit.
	Remove install-cross; clean up install; remove ALL.  Remove
	references to "dosrel".  Remove "EXTRA_TARGET_HOST" hackery.
	Autogenerate host module targets.  Remove empty dependency lines
	and redundant dependency; rearrange slightly.
	* Makefile.def: Add host-side libtermcap, utils.

	* Makefile.in: Regenerate.

2002-12-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	(Continuing slow-motion replay)
	* Makefile.def: Add list of recursive targets to autogenerate.
	Add build_modules.
	* Makefile.tpl: Autogenerate do-* targets.  Autogenerate *-target-*
	targets.  Autogenerate *-build-* targets.
	* Makefile.in: Regenerate.

2002-11-30  Nathanael Nerode  <neroden@gcc.gnu.org>

	(Continuing slow-motion replay)
	* configure: More autoconf-style substitutions.
	* Makefile.tpl: More autoconf-style substitutions.
	* Makefile.in: Regenerate.

2002-11-30  Nathanael Nerode  <neroden@gcc.gnu.org>

	(Continuing slow-motion replay)
	* configure: Substitute more variables in a more autoconf-friendly
	way.  Simplify slightly.
	* Makefile.tpl: Make more variables substitutable in an
	autoconf-friendly way.
	* Makefile.in: Regenerate.

2002-11-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	(Continuing slow-motion replay)
	* configure.in (v810*): Remove special setting of tools.

	* configure: Add support for extra required flags for ar or nm.
	* configure.in (aix4.3+): Use above support for target-specific
	issues, rather than using config/mt-aix43.

2002-11-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	(Starting slow-motion replay merge from gcc 3.4 b-i-b branch)
	* configure: Remove 'removing', which doesn't work.  Replace $subdir
	with . everywhere.  Replace $subdirs with ''.  Replace $makesrcdir
	with $srcdir.  Reformat indentation.  Substitute some variables
	formerly hard-coded in the Makefile for build=host.
	* Makefile.tpl: Autogenerate more; make more autoconf-friendly.
	* Makefile.def: Autogenerate more.
	* Makefile.in: Regenerate.

2002-11-13  Bruce Korb  <bkorb@gnu.org>

	* Makefile.tpl: syntactic cleanup

2002-11-04  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.def (host_modules): Add rda.
	* Makefile.in: Regenerate.
	* configure.in (target_tool): Add target-rda to list.

2002-10-25  Phil Edwards  <pme@gcc.gnu.org>

	* Makefile.tpl (bootstrap):  Add bubblestrap, quickstrap, cleanstrap,
	and restrap targets to this rule.
	* Makefile.in:  Regenerate.

2002-10-24  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (i[3456]86-*-linux*): Add check to disable
	${libgcj} for glibc1.

2002-10-07  Svein E. Seldal  <Svein.Seldal@solidas.com>

	* configure.in: Add tic4x target.

2002-10-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Make SET_LIB_PATH substitution more autoconfy.
	* Makefile.tpl: Make RPATH_ENVVAR substitution more autoconfy.
	* configure.in: Make SET_LIB_PATH substitution more autoconfy.
	* configure.in: Make RPATH_ENVVAR substitution more autoconfy.
	* Makefile.in: Regenerate.

2002-10-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Eliminate reference to all-gui, all-libproc.
	* Makefile.in: Regenerate.

	* Makefile.def: Remove order dependency comments.
	* Makefile.tpl: Add explicit install-install dependencies.
	* Makefile.in: Regenerate.

	* Makefile.tpl: Remove material now in src-release.  (Finally!)
	* Makefile.in: Regenerate.

	* configure: Restore my original patch by syncing with gcc version.

	* Bring following over from gcc:

2002-09-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* configure.in (s390*-*-linux*): Enable libgcj.

2002-10-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in: Regenerate.  This really ought to fix things. :sigh:

2002-10-02  Alan Modra  <amodra@bigpond.net.au>

	* configure: Move stray lines back to where they belong.

2002-10-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Insert configure-target target, for src-release.

	* configure: Finish reverting change which Andrew Cagney started
	reverting.  Should fix bustage.

	* src-release (BINUTILS_SUPPORT_DIRS): Add cpu directory.
	* src-release: New file.  Contains material for making net
	releases for gdb, binutils, et al., formerly in Makefile.in.

2002-09-30  Nick Clifton  <nickc@redhat.com>

	* cpu: New top level directory.  Intended to hold input files for
	CGEN which have FSF copyright assignment.
	* Makefile.in (BINUTILS_SUPPORT_DIRS): Add cpu directory.

2002-09-29  Andrew Cagney  <ac131313@redhat.com>

	Revert below (note that src does not contain Makefile.tpl):
	* Makefile.tpl: Make subsituted variables more autoconfy.
	* Makefile.in: Regenerate.

2002-09-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure: Revert accidentally applied changes.

	* Makefile.tpl: Make more autoconf-friendly.
	* Makefile.in: Regenerate.
	* configure: Make substitution more autoconf-like.

2002-09-28  Richard Earnshaw  <rearnsha@arm.com>

	* configure.in (arm-*-coff, strongarm-*-coff, xscale-*-coff): Use a
	single entry to handle all these.
	(arm-*-elf, strongarm-*-elf, xscale-*-elf): Likewise.  Also enable
	libjava on arm-*-elf.

2002-09-27  Geoffrey Keating  <geoffk@apple.com>

	* configure.in (powerpc-*-darwin*): Don't configure BFD, TK, or the
	things that depend on them.

2002-09-25  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Make subsituted variables more autoconfy.
	* Makefile.in: Regenerate.
	* configure: Make seds more autoconfy.

2002-09-25  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.tpl: Rewrite substituted lines to look autoconfy.
	* Makefile.in: Regenerate.
	* configure.in: Rewrite sed statements to look autoconfy.

	* Makefile.tpl: Autogenerate *-target-* lists, dependencies of
	all-target-foo on configure-target-foo.
	* Makefile.def: Ditto.
	* Makefile.in: Rebuild.

2002-09-22  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.def: New file.
	* Makefile.tpl: New file.
	* Makefile.in: Generate from Makefile.tpl with 'autogen Makefile.def'.

	* configure.in: Minor rearrangement.  Simplify tests.

2002-09-23  Jason Thorpe  <thorpej@wasabisystems.com>

	* configure.in (with_headers): Skip copy if value is "yes".
	(with_libs): Likewise.

2002-09-20  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in (*-*-netbsd*): Use noconfigdirs, not skipdirs.
	* configure.in (sh*-*-pe*): Ditto.
	* configure.in (mips*-*-pe*): Ditto.
	* configure.in (*arm-wince-pe): Ditto.

	* configure.in: Rearrange.

2002-09-12  Nick Clifton  <nickc@redhat.com>

	* Import these changes from the config master repository:

	2002-09-05  Svein E. Seldal  <Svein.Seldal@solidas.com>

		* config.sub: Add tic4x target.

	2002-09-03  Ben Elliston  <bje@redhat.com>

		* config.guess: Detect NSR-D machines for nsr-tandem-nsk.
		Reported by <Duncan_Stodart@insession.com>.

2002-09-10  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: More updates.

2002-09-09  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Update.

2002-08-23  Andrew Cagney  <ac131313@redhat.com>

	* texinfo/texinfo.tex: Import version 2002-06-04.06.

	* config.guess: Import version 2002-08-23.
	* config.sub: Import version 2002-08-22.

2002-08-20  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (GCC_FOR_TARGET): Prepend STAGE_CC_WRAPPER.
	* configure.in (CC_FOR_TARGET, GCJ_FOR_TARGET, CXX_FOR_TARGET,
	CXX_FOR_TARGET_FOR_RECURSIVE_MAKE): Likewise.

2002-08-06  Federico G. Schwindt <fgsch@olimpo.com.br>

	* configure.in (hppa*-*-openbsd*): Treat like hppa*-*-*elf*.

2002-08-04  H.J. Lu  (hjl@gnu.org)

	* configure.in (mips*-*-linux*): Don't skip target-libffi.

2002-07-31  Alan Modra  <amodra@bigpond.net.au>

	* configure.in: Move generic linux case to end.	 Copy generic
	linux noconfigdirs to mips*-*-linux* entry and new
	powerpc64*-*-linux* entry.  Add target-libffi for the latter.

2002-07-19  Chris Demetriou  <cgd@broadcom.com>

	* MAINTAINERS: Clarify on config.guess and config.sub, and add
	one instance of them which was missed to the list to update.

2002-07-16  Chris Demetriou  <cgd@broadcom.com>

	* config.guess: Update to 2002-07-09 version.
	* config.sub: Update to 2002-07-03 version.

2002-07-11  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Remove two redundant tests.

2002-07-11  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (mips*-*-irix6*o32): Enable stabs.

2002-07-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Don't build grez.
	* Makefile.in: Ditto.

	* Makefile.in: Remove references to bsp, cygmon, libstub.
	* configure.in: Ditto.

	* configure.in: Remove leftover reference to gdbtest.

2002-07-08  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in (gxx_include_dir):  Change to match versioned
	C++ headers if --enable-version-specific-runtime-libs is used.

2002-07-04  Steve Ellcey  <sje@cup.hp.com>

	* ltcf-cxx.sh (hpux*): Modify to support ia64-*-hpux*.

2002-07-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Make --without-x work.

2002-07-03  Nick Clifton  <nickc@cambridge.redhat.com>

	* contrib: New directory.  Created to contain a copy of the
	texi2pod.pl script so that it is in the same place as the version in
	the FSF GCC sources.

2002-07-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Rearrange target Makefile fragment collection.

	* Makefile.in: Don't try to build gdbtest, tgas, ispell, inet, or
	cvs[src].
	* configure.in: Ditto.

2002-07-01  Nathanael Nerode <neroden@gcc.gnu.org>

	* Makefile.in: Eliminate 'apache' targets.
	* configure.in: Eliminate 'apache' targets.

	* configure.in: Eliminate redundant tests.  Reorganize.

	* Makefile.in: Eliminate last reference to LIBGCC1_TEST.

	* config-ml.in: Eliminate references to Cygnus configure.

	* Makefile.in: Eliminate references to building emacs.

2002-07-01  Denis Chertykov  <denisc@overta.ru>

	* configure.in: Add support for ip2k.

2002-06-24  Ben Elliston  <bje@redhat.com>

	* configure.in (host_tools): Remove cgen.

	* Makefile.in (all-cgen): Remove; runs from its source directory.
	(check-cgen, install-cgen, clean-cgen): Likewise.
	(all-opcodes): No not depend on all-cgen.
	(all-sim): Likewise.

2002-06-22  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in: Fix AIX configury bug.

2002-06-19  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in: Replace ${topsrcdir} with ${srcdir}.

	* configure.in: Move definition of libstdcxx_flags right above
	usage, rather than way earlier.

	* configure.in: Pull definition of is_cross_compiler earlier.

	* configure.in: Rearrange a little.

	* configure.in: Remove references to librx.
	* Makefile.in: Remove references to librx.

2002-06-19  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in: Eliminate ${gasdir} variable.

2002-06-18  Dave Brolley  <brolley@redhat.com>

	* configure.in: Add support for frv.
	* config.sub: Add support for frv.

2002-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFLAGS_FOR_TARGET): Add -O2.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* configure.in (vax-*-netbsd*): Re-enable gas.

2002-05-31  Nathanael Nerode  <neroden@twcny.rr.com>

	* Makefile.in: Replace HOST_PREFIX, HOST_PREFIX_1 with BUILD_PREFIX,
	BUILD_PREFIX_1, to correct nomenclature.
	* configure: Likewise.

	* Makefile.in: Eliminate version-specific references to tcl8.1, tk8.1.
	* configure.in: Eliminate version-specific references to tcl8.1, tk8.1.

2002-05-31  Olaf Hering  <olh@suse.de>

	* config-ml.in: Propogate DESTDIR also.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* configure.in (vax-*-netbsd*): Don't build gas for this
	platform.

2002-05-28  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* configure.in (noconfigdirs): Don't compile libiberty, libstdcxx
	and libgcj for AVR.

2002-05-28  Nick Clifton  <nickc@cambridge.redhat.com>

	* config.sub: Add DLX target.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.guess: Update to 2002-05-22 version.
	* config.sub: Likewise.

2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in: Allow for PWDCMD to override hardcoded pwd.
	* config-ml.in: Likewise.
	* configure: Likewise.
	* configure.in: Likewise.

2002-05-13  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in: Simplify makefile fragment collection.

	* configure.in: Remove code to build emacs.

	* configure.in : Remove --srcdir argument from targargs and buildargs
	(it's always overridden in the Makefile anyway).  Rearrange a bit.

	* configure: Move some logic to configure.in.
	* configure.in: Move some logic from configure.

2002-05-07  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.LIBGLOSS: New file.

2002-05-07  Federico G. Schwindt <fgsch@olimpo.com.br>

	* Makefile.in: Honour DESTDIR.

2002-05-05  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (noconfigdirs): Don't disable libgcj on
	sparc64-*-solaris* and sparcv9-*-solaris*.

2002-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Revert 2002-04-18's patch; fixed in libjava.

2002-05-03  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* configure.in (FLAGS_FOR_TARGET): Do not add
	-B$$r/$(TARGET_SUBDIR)/newlib/ when compiling newlib natively
	on i[3456]86-*-linux*.

2002-05-01  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* configure.in (noconfigdirs): Replace [ ] with test.

	* configure.in (noconfigdirs): Do not add target-newlib if
	target == i[3456]86-*-linux*, and host == target.

2002-04-29  Mark Mitchell  <mark@codesourcery.com>

	* config.guess: Updated to 2002-04-26's version.
	* config.sub: Updated to 2002-04-26's version.

2002-04-29  Nathanael Nerode  <neroden@doctormoo.dyndns.org>

	* configure.in: delete reference to absent file

	* configure.in: replace '[' with 'test'

	* configure.in: Eliminate references to gash.
	* Makefile.in: Eliminate references to gash.

	* configure.in: remove useless references to 'pic' makefile fragments.

	* configure.in: (*-*-windows*) Finish removing.

	* configure.in: Eliminate redundant test for libgui.

2002-04-26  Joel Sherrill  <joel@OARcorp.com>

	* configure.in (h8300*-*-rtems*): Disable libf2c and libgcj.
	(sparc-*-elf*, sparc64-*-elf*): Disable libgcj.

2002-04-19  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in: remove references to dead files

2002-04-18  Tom Tromey  <tromey@redhat.com>

	* configure.in: Disallow configuring libgcj when it is already
	installed and we're using Solaris 2.8 linker.  Do enable libgcj on
	Solaris 2.8 by default.  For PR libgcj/6158.

2002-04-17  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in:  Move default CC setting out of config/mh-* fragments
	directly into here.

2002-04-17  Nathanael Nerode  <neroden@twcny.rr.com>

	* configure.in: don't even try to configure or make a subdirectory
	if there's no configure script for it.

2002-04-15  Mark Mitchell  <mark@codesourcery.com>

	* MAINTAINERS: Remove chill maintainers.
	* Makefile.in (CHILLFLAGS): Remove.
	(CHILL_LIB): Remove.
	(TARGET_CONFIGDIRS): Remove libchill.
	(CHILL_FOR_TARGET): Remove.
	(BASE_FLAGS_TO_PASS): Don't pass CHILLFLAGS, CHILL_FOR_TARGET, or
	CHILL_LIB.
	(CONFIGURE_TARGET_MODULES): Remove configure-target-libchill.
	(CHECK_TARGET_MODULES): Likewise.
	(INSTALL_TARGET_MODULES): Likewise.
	(CLEAN_TARGET_MODULES): Likewise.
	(configure-target-libchill): Remove.
	(all-target-libchill): Remove.
	* configure.in (target_libs): Remove target-libchill.
	Do not compute CHILL_FOR_TARGET.
	* libchill: Remove directory.

2002-04-15  DJ Delorie  <dj@redhat.com>

	* Makefile.in, configure.in, configure: Sync with gcc, entries
	follow...

2002-04-08  Tom Tromey  <tromey@redhat.com>

	* configure.in: Add FLAGS_FOR_TARGET to GCJ_FOR_TARGET.
	Fixes PR libgcj/6068.

2002-03-30  Krister Walfridsson  <cato@df.lth.se>

	* configure.in (i*86-*-netbsdelf*): Don't disable libgcj.

2002-03-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (alpha*-dec-osf*): Enable libgcj.

2002-03-24  Nick Clifton  <nickc@cambridge.redhat.com>

	Fix for: PR bootstrap/3591, target/5676
	* configure.in (mcore-pe): Disable the configuration of
	libstdc++-v3 since exceptions are not supported.

2002-03-20  Anthony Green  <green@redhat.com>

	* configure.in: Enable libgcj for xscale-elf target.

2002-02-28  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libstdcxx_flags): Don't add libstdc++-v3 flags for
	libjava.
	(CXX_FOR_TARGET): Explain why -shared-libgcc here.

2002-02-22  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (CXX_FOR_TARGET): Add -shared-libgcc for
	libstdc++-v3 and libjava.

2002-02-11  Adam Megacz <adam@xwt.org>

	* gcc/Makefile.in: Removed libstdc++-v3 dependancy for libjava and
	boehm-gc

2002-02-09  Alexandre Oliva  <aoliva@redhat.com>

	* config.guess: Updated to 2002-01-30's version.
	* config.sub: Updated to 2002-02-01's version.
	Contribute sh64-elf.
	2000-12-01  Alexandre Oliva  <aoliva@redhat.com>
	* configure.in: Added sh64-*-*.

2002-01-17  H.J. Lu <hjl@gnu.org>

	* Makefile.in (all-fastjar): Also depend on all-libiberty.
	(all-target-fastjar): Also depend on all-target-libiberty.

Wed Dec  5 07:33:45 2001  Douglas B. Rupp  <rupp@gnat.com>

	* configure, configure.in: Use temp file for long sed commands.

2001-11-14  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (noconfigdirs) [h8300*-*-*, h8500-*-*]: Disable
	libf2c.

2001-11-03  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (noconfigdirs) [mmix-*-*]: Disable libgcj.

2001-10-11  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in (noconfigdirs) [cris-*-*]: Disable libgcj.

2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure: Handle temporary files securely using mkdir.

2001-09-26  Will Cohen <wcohen@redhat.com>

	* configure.in (*-*-linux*): Disable configuration of target-newlib
	and target-libgloss.

2001-09-26  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (EXTRA_TARGET_FLAGS): Pass RANLIB_FOR_TARGET for
	RANLIB.

2001-08-11  Graham Stott  <grahams@redhat.com>

	* Makefile.in (check-c++): Add missing semicolon.

2001-07-25  Andrew Haley  <aph@cambridge.redhat.com>

	* configure.in (sh-*-linux*): New.

2001-07-12  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* configure.in (noconfigdirs): Don't compile libiberty, libstdcxx
	and libgcj on m68hc11/m68hc12.

2001-06-27  H.J. Lu  (hjl@gnu.org)

	* Makefile (CFLAGS_FOR_BUILD): New.
	(EXTRA_GCC_FLAGS): Add CFLAGS_FOR_BUILD.

2001-06-01  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in (libstdcxx_flags): Do not try to execute
	libstdc++-v3/testsuite_flags until it exists.

2001-05-18  Benjamin Kosnik  <bkoz@redhat.com>

	* configure.in (libstdcxx_flags): Remove reference to libstdc++.INC.

2001-05-09  Jeffrey Oldham  <oldham@codesourcery.com>

	* ltcf-cxx.sh: Add -nostdlib to IRIX 6 archive_cmds.

Mon Apr 23 09:15:03 2001  Anthony Green  <green@redhat.com>

	* configure.in: Move *-chorusos target case to the proper switch.
	Disable libgcj.

2001-04-13  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (STAGE1_CFLAGS): Pass down.

2001-04-13  Alan Modra  <amodra@one.net.au>

	* config.guess: Add hppa64-linux support.  Note for next import that
	this is already in the master file.
	* configure.in: Likewise.  Accept `parisc' alias for `hppa'.

2001-03-22  Colin Howell  <chowell@redhat.com>

	* Makefile.in (DO_X): Do not backslash single-quotes in
	backquotes (two places).

2001-03-18  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in (DO_X): Quote nested quotes.

2001-03-15  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in (DO_X): Use double quotes for quoting
	"RANLIB=$${RANLIB}".

2001-03-09  Nicola Pero <n.pero@mi.flashnet.it>

	* configure.in: Only use `lang_requires' for languages athat are
	actually enabled.

2001-03-07  Tom Tromey  <tromey@redhat.com>

	* configure.in: Allow config-lang.in to set `lang_requires' to list
	of other required languages.

2001-03-06  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: Remove RANLIB definition. Use RANLIB
	in RANLIB_FOR_TARGET, EXTRA_HOST_FLAGS, EXTRA_TARGET_FLAGS,
	EXTRA_GCC_FLAGS, $(DO_X) targets only when the RANLIB is set.

2001-02-28  Benjamin Kosnik  <bkoz@redhat.com>
	    Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (check-c++): Use tabs, not spaces.

2001-02-19  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.in (check-c++): New rule.

	* configure.in (target_libs): Remove libg++.
	(noconfigdirs): Remove libg++.
	(noconfigdirs): Same.
	(noconfigdirs): Same.
	(noconfigdirs): Same.

	* config-ml.in: Remove libg++ references.

	* Makefile.in (TARGET_CONFIGDIRS): Remove libio, libstdc++, libg++.
	(ALL_TARGET_MODULES): Same.
	(configure-target-libg++): Remove.
	(all-target-libg++): Remove.
	(configure-target-libio): Remove.
	(all-target-libio): Remove.
	(check-target-libio): Remove.
	(.PHONY): Remove.
	(libg++.tar.bz2): Remove.
	(all-target-cygmon): Remove libio.
	(all-target-libstdc++): Remove.
	(configure-target-libstdc++): Remove.
	(TARGET_LIB_PATH): Remove libstdc++.
	(ALL_GCC_CXX): Remove libstdc++.
	(all-target-gperf): Correct.

2001-02-15  Anthony Green  <green@redhat.com>

	* configure: Introduce GCJ_FOR_TARGET.
	* configure.in: Ditto.
	* Makefile.in: Ditto.

2001-02-08  Chandrakala Chavva <cchavva@redhat.com>

	* configure.in: for *-chorusos, don't config target-newlib and
	target-libgloss.

2001-02-04  Mark Mitchell  <mark@codesourcery.com>

	Remove V2 C++ library.
	* configure.in: Remove --enable-libstdcxx_v3 support.

2001-01-27  Richard Henderson  <rth@redhat.com>

	* configure.in (target_makefile_frag) [alpha*-*]: Use mt-alphaieee.

2001-01-26  Tom Tromey  <tromey@redhat.com>

	* configure.in: Allow libgcj to be built on Sparc Solaris.

2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* configure.in: Enable libgcj on several additional platforms.

2001-01-22  Bryce McKinlay  <bryce@albatross.co.nz>

	* configure.in: Enable libgcj for linux targets.

2001-01-09  Mike Stump  <mrs@wrs.com>

	* Makefile.in (CONFIGURE_TARGET_MODULES): Pass back configuration
	failures of subdirectories.

2001-01-02  Laurynas Biveinis  <lauras@softhome.net>

	* configure: handle DOS-style absolute paths.

2001-01-02  Laurynas Biveinis  <lauras@softhome.net>

	* configure.in: remove supported directories from $noconfigdirs for DJGPP.

2000-12-18  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.in (BASE_FLAGS_TO_PASS): Alphabetize.
	(libstdcxx_incdir): Pass down.
	* config.if: Remove expired bits for cxx_interface, add stub.
	(libstdcxx_incdir): Add variable for g++ include directory.
	* configure.in (gxx_include_dir): Use it.

2000-12-15  Andreas Jaeger  <aj@suse.de>

	* configure.in: Handle lang_dirs.

2000-12-13  Anthony Green  <green@redhat.com>

	* configure.in: Disable libgcj for any target not specifically
	listed.  Disable libgcj for x86 and Alpha Linux until compatible
	with g++ abi.

2000-12-13  Mike Stump  <mrs@wrs.com>

	* Makefile.in (local-distclean): Also remove fastjar.

2000-12-10  Anthony Green  <green@redhat.com>

	* configure.in: Define libgcj.  Disable libgcj target libraries for
	most targets.

2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* configure.in (target_libs): Revert 2000-12-08 patch.
	(noconfigdirs): Added target-libjava.

2000-12-09  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: handle DOS-style absolute paths.

2000-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in (TARGET_CONFIGDIRS): Wrong place. Removed note about
	libjava.
	* configure.in (target_libs): Removed `target-libjava'.

2000-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in (TARGET_CONFIGDIRS): Added note about libjava.
	(ALL_MODULES): Added fastjar.
	(NATIVE_CHECK_MODULES, INSTALL_MODULES, CLEAN_MODULES): Likewise.
	(all-target-libjava): all-fastjar replaces all-zip.
	(all-fastjar): Added.
	(configure-target-fastjar, all-target-fastjar): Likewise.
	* configure.in (host_tools): Added fastjar.

2000-12-07  Mike Stump  <mrs@wrs.com>

	* Makefile.in (local-distclean): Remove leftover built files.

2000-11-16  Fred Fish  <fnf@be.com>

	* configure.in (enable_libstdcxx_v3): Fix typo,
	libstd++ -> libstdc++.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure: Provide the original toplevel configure arguments
	(including $0) to subprocesses in the environment rather than
	through gcc/configargs.h.

2000-11-12  Mark Mitchell  <mark@codesourcery.com>

	* configure: Turn on libstdc++ V3 by default.

2000-10-16  Michael Meissner  <meissner@redhat.com>

	* configure (gcc/configargs.h): Only create if there is a build GCC
	directory created.

2000-10-05  Phil Edwards  <pme@gcc.gnu.org>

	* configure: Save configure arguments to gcc/configargs.h.

2000-10-04  Andris Pavenis  <pavenis@latnet.lv>

	* Makefile.in (bootstrap): avoid recursion if subdir missing
	(cross): ditto
	(do-proto-toplev): ditto

Wed Sep 13 11:11:29 2000  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Do not build byacc for hppa64.  Provide paths to the
	X11 libraries for hppa64.

2000-09-02  Anthony Green  <green@cygnus.com>

	* Makefile.in (all-gcc): Depend on all-zlib.
	(CLEAN_MODULES): Add clean-zlib.
	(ALL_MODULES): Add all-zlib.
	* configure.in (host_libs): Add zlib.

2000-08-25  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (FLAGS_FOR_TARGET): Use $target_configdirs and
	$targargs to tell whether newlib is going to be built.

	* configure.in [disable-libstdcxx-v3] (libstdcxx_flags): Search
	$$r/TARGET_SUBDIR/libio for _G_config.h.

2000-08-14  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in (libstdcxx_flags): Remove -isystem $$s/libio/stdio.

	* configure: Make enable_threads and enable_shared defaults
	explicit.  Substitute enable_threads into generated Makefiles.
	* configure.in: Accept *-*-linux* not just *-*-linux-gnu*.
	* libtool.m4: Accept *-*-linux* not just *-*-linux-gnu*.

2000-08-02  Manfred Hollstein  <manfredh@redhat.com>

	* configure.in: Re-enable all references to libg++ and librx.

2002-04-09  Loren James Rittle  <rittle@labs.mot.com>

	* configure.in: Add *-*-freebsd* configurations.

2002-04-07  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (do-tar-bz2): Delete rule.  Replace with ...
	(do-tar, do-bz2): New rules.
	(taz): Update.  Replace do-tar-bz2 with do-tar and do-bz2.
	(gdb-tar): New rule.
	(gdb-taz): Rewrite.  Use gdb-tar and do-bz2.
	(insight_dejagnu.tar): New rule.
	(insight.tar): New rule.
	(gdb+dejagnu.tar): New rule.
	(gdb.tar): New rule.

2002-04-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update dejagnu/

2002-03-16  Alexandre Oliva  <aoliva@redhat.com>

	* ltmain.sh (relink_command): Fix typo in previous change.

2002-03-15  Alexandre Oliva  <aoliva@redhat.com>

	* ltmain.sh (taglist): Initialized.  Don't let `CC' tag out of it.
	(relink_command): Added --tag flags.
	(mode=install): If relinking fails; error out.

2002-03-12  Richard Henderson  <rth@redhat.com>

	* Makefile.in (NOTPARALLEL): New.  Use it instead of explicit
	.NOTPARALLEL tag.
	(do-check): Rename from check.
	(check): Allow parallel check.

2002-03-11  Richard Henderson  <rth@redhat.com>

	* Makefile.in (.NOTPARALLEL): Add fake tag.

2002-03-07  H.J. Lu  (hjl@gnu.org)

	* configure.in: Enable gprof for mips*-*-linux*.

2002-02-28  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libstdcxx_flags): Don't add libstdc++-v3 flags for
	libjava.
	(CXX_FOR_TARGET): Add -shared-libgcc for libstdc++-v3 and libjava.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	* texinfo/texinfo.tex: Update to version 2002-02-14.08.

2002-02-23  Daniel Jacobowitz  <drow@mvista.com>

	* config.guess: Import from master sources, rev 1.232.
	* config.sub: Import from master sources, rev 1.246.

2002-02-23  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (MAKEINFO): Don't assume makeinfo will be built just
	because its Makefile is there; test for the executable instead.

2002-02-09  Alexandre Oliva  <aoliva@redhat.com>

	Contribute sh64-elf.
	2000-12-01  Alexandre Oliva  <aoliva@redhat.com>
	* configure.in: Added sh64-*-*.

2002-02-04  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Remove advertising clause from
	Berkeley and Red Hat licenses.

2002-02-01  Mo DeJong  <supermo@bayarea.net>

	* Makefile.in: Add all-tix to deps for all-snavigator
	so that tix is built when building snavigator.

2002-02-01  Ben Elliston  <bje@redhat.com>

	* config.guess: Import from master sources, rev 1.229.
	* config.sub: Import from master sources, rev 1.240.

2002-01-27  Daniel Jacobowitz  <drow@mvista.com>

	From Steve Ellcey <sje@cup.hp.com>:
	* libtool.m4 (HPUX_IA64_MODE): Set to 32 or 64 based on ABI.
	(lt_cv_deplibs_check_method, lt_cv_file_magic_cmd,
	lt_cv_file_magic_test_file): Set to appropriate values for HP-UX
	IA64.
	* ltcf-c.sh (archive_cmds, hardcode_*): Ditto.
	* ltconfig (shlibpath_*, dynamic_linker, library_names_spec,
	soname_spec, sys_lib_search_path_spec): Ditto.

2002-01-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* configure.in (*-*-netbsd*): New.  Skip target-newlib,
	target-libiberty, and target-libgloss.  Skip Java-related
	libraries if not supported for NetBSD on target CPU.

2002-01-23  Nick Clifton  <nickc@cambridge.redhat.com>

	* configure.in: Import StrongARM and XScale target_configdirs from
	FSF GCC version.

2002-01-16  H.J. Lu  (hjl@gnu.org)

	* config.guess: Import from master sources, rev 1.225.
	* config.sub: Import from master sources, rev 1.238.

	* MAINTAINERS: Updated notes on config.guess and config.sub.

2002-01-11  Steve Ellcey  <sje@cup.hp.com>

	* configure.in (ia64*-*-hpux*): New target for IA64 HP-UX,
	ld and gdb are not supported.

2002-01-07  Jeff Johnston  <jjohnstn@redhat.com>

	* Change reference to Cygnus Solutions to be Red Hat.

2002-01-07  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Update generic copyright date.

2002-01-07  Mark Salter  <msalter@redhat.com>

	* configure.in: Remove target-bsp and target-cygmon from arm builds.
	  Allow target-libgloss to be built for arm, strongarm, and xscale.

2002-01-03  Ben Elliston  <bje@redhat.com>

	* MAINTAINERS: Update URL for config.* scripts.

2001-12-18  Alan Modra  <amodra@bigpond.net.au>

	* config.sub: Import latest version.
	* config.guess: Likewise.

2001-12-13  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* configure.in (FLAGS_FOR_TARGET): Remove -nostdinc and -isystem
	options for i[3456]86-pc-linux* native builds.

2001-12-05  Laurent Guerby  <guerby@acm.org>

	* MAINTAINERS: gcc adopts symlink-tree, refer more to
	libiberty.

	Import this patch from gcc:

	2000-12-09  Laurynas Biveinis  <lauras@softhome.net>

	    * symlink-tree: handle DOS-style absolute paths.

2001-11-28  DJ Delorie <dj@redhat.com>
	    Zack Weinberg  <zack@codesourcery.com>

	When build != host, create libiberty for the build machine.

	* Makefile.in (TARGET_CONFIGARGS, BUILD_CONFIGARGS): Replace
	CONFIG_ARGUMENTS.
	(ALL_BUILD_MODULES_LIST, BUILD_CONFIGDIRS, BUILD_SUBDIR):
	New variables.
	(ALL_BUILD_MODULES, CONFIGURE_BUILD_MODULES): New variables
	and rules.
	(all.normal): Depend on ALL_BUILD_MODULES.
	(CONFIGURE_TARGET_MODULES rule): Use TARGET_CONFIGARGS.
	(all-build-libiberty): Depend on configure-build-libiberty.

	* configure: Calculate and substitute proper value for
	ALL_BUILD_MODULES.
	* configure.in: Create the build subdirectory.
	Calculate and substitute TARGET_CONFIGARGS (formerly
	CONFIG_ARGUMENTS); also BUILD_SUBDIR and BUILD_CONFIGARGS (new).

2001-11-26  Geoffrey Keating  <geoffk@redhat.com>

	* config.sub: Update to version 1.232 on subversion.

2001-11-20  Nick Clifton  <nickc@cambridge.redhat.com>

	* Makefile.in (do-proto-toplev): Use msgfmt to generate .gmo
	files from .po files for a distribution.

2001-11-19  Hans-Peter Nilsson  <hp@bitrange.com>

	* COPYING.NEWLIB: Mention preserved notice in specific parts.

2001-11-13  Jeff Holcomb  <jeffh@redhat.com>

	Merged from net gcc:
	2001-07-30  Jeff Sturm  <jsturm@one-pont.com>
	* ltcf-c.sh: Use $objext, not $ac_objext.
	2001-07-27  Mark Kettenis  <kettenis@gnu.org>
	* ltcf-cxx.sh: Add support for GNU.
	2001-07-22  Timothy Wall  <twall@redhat.com>
	* ltcf-c.sh: Don't disable shared libraries for AIX5/IA64.  Preserve
	default settings if using GNU tools with that configuration.
	* ltcf-cxx.sh: Ditto.
	* ltcf-gcj.sh: Ditto.
	2001-07-21  Michael Chastain  <chastain@redhat.com>
	* ltconfig: Set max_cmd_len to a maximum of 512Kb, as it seems some
	HPUX 11.0 systems have trouble with 1MB.  Mark as gcc-local.
	* ltmain.sh: Mark as gcc-local.

2001-11-13  Jeff Holcomb  <jeffh@redhat.com>

	* Makefile.in (all-bison): Revert 2001-10-24.
	Don't depend on texinfo.

2001-11-12  Hans-Peter Nilsson  <hp@bitrange.com>

	* COPYING.NEWLIB: Add BSD-style license/copyright blurb for my work.

2001-11-08  Phil Edwards  <pedwards@disaster.jaj.com>

	* configure.in (--enable-languages): Be more permissive about
	syntax.  Check for empty lists better.  Warn about $LANGUAGES.

2001-11-06  Hans-Peter Nilsson  <hp@bitrange.com>

	* Makefile.in (MAKEINFO): Use "missing" for makeinfo older than 4.0.

2001-10-24  Jeff Holcomb  <jeffh@redhat.com>

	Makefile.in (all-bison): Don't depend on texinfo.

2001-10-03  Alan Modra  <amodra@bigpond.net.au>

	* gettext.m4: Test po/POTFILES.in exists before trying to read.

2001-09-29  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (configure-target-gperf): Depend on $(ALL_GCC_CXX).

2001-09-28  Hans-Peter Nilsson  <hp@axis.com>

	* config.sub, config.guess: Import latest from subversions.

2001-09-21  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (AS_FOR_TARGET, LD_FOR_TARGET,
	DLLTOOL_FOR_TARGET, WINDRES_FOR_TARGET, AR_FOR_TARGET,
	RANLIB_FOR_TARGET, NM_FOR_TARGET): Don't use double quotes to
	avoid quotes nesting problems.
	(NATIVE_CHECK_MODULES): Ditto, just for consistency.
	(DO_X): Export only variables that are set.

2001-09-19  Ben Elliston  <bje@redhat.com>

	* configure.in (sparc-sun-solaris2*): Don't use /usr/bin/which on
	Solaris when testing for the /usr/ucb/cc compiler; it has incorrect
	semantics.  Use the shell built-in "type" command instead.

2001-09-15  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config.sub: Reverted the earlier change, this version is not the
	master file.

2001-09-14  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config.sub: Change machine triplets from mipsel*-* to mips*el-*.
	Add support for mips64.

2001-09-03  Jeff Holcomb  <jeffh@redhat.com>

	* configure.in: Enable libstdc++-v3 for h8300 targets.

2001-08-30  Eric Christopher  <echristo@redhat.com>
	    Jason Eckhardt  <jle@redhat.com>

	* config.sub: Add support for mipsisa32.

2001-08-30  Eric Christopher  <echristo@redhat.com>

	* config.sub, config.guess: Import latest from subversions.

2001-08-20  Alan Modra  <amodra@bigpond.net.au>

	* config.sub, config.guess: Import latest from subversions.

2001-07-26  DJ Delorie  <dj@redhat.com>

	* MAINTAINERS: Clarify libiberty merge rules and procedures.

2001-06-19  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.in: Revert 2001-06-17.
	(VER): If AM_INIT_AUTOMAKE uses BFD_VERSION, get version from bfd/.

2001-06-17  H.J. Lu <hjl@gnu.org>

	* Makefile.in (gas.tar.bz2): Pass TOOL=bfd PACKAGE=gas to make.
	(gas+binutils.tar.bz2): Likewise.
	(binutils.tar.bz2): Pass TOOL=bfd PACKAGE=binutils to make.

Fri Jun  8 11:14:02 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (VER): When present, extract the version number from
	the file version.in.

2001-06-08  Alexandre Oliva  <aoliva@redhat.com>, Jeff Sturm  <jsturm@one-point.com>

	* Makefile.in (AS_FOR_TARGET, LD_FOR_TARGET, NM_FOR_TARGET): If
	gcc/xgcc is built, use -print-prog-name to find out the program
	name to use.

2001-06-04  Mark Mitchell  <mark@codesourcery.com>

	* ltcf-c.sh (archive_cmds, archive_expsym_cmds) [solaris,
	with_gcc]: Use `gcc -shared' to build a shared library.

2001-06-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* ltcf-c.sh (archive_cmd) [hpux, with_gcc]: Use gcc to link shared
	archives.

2001-05-28  Simon Patarin <simon.patarin@inria.fr>

	* ltcf-cxx.sh (osf3/osf4/osf5): Support creation of C++  shared
	libraries when using g++ with native linker.

2001-05-28  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh: Upgrade to libtool 1.4a 1.641.2.256.

2001-05-24  Tom Rix <trix@redhat.com>

	* configure.in : enable ld for aix

2001-05-22  Alexandre Oliva  <aoliva@redhat.com>

	* ltcf-cxx.sh (allow_undefined_flag, no_undefined_flag)
	[aix4*|aix5*]: Prepend blank.

2001-05-20  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh,
	ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.254.  Rebuilt a number
	of subdir/configure scripts to use the new libtool.m4.

2001-05-14  H.J. Lu <hjl@gnu.org>

	* config.if (libc_interface): Set to -libc6.2- for cross
	compiling to Linux/glibc 2.2.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (noconfigdirs) [*-cygwin*, *-mingw*, *-beos]: Disable
	libgcj.

2001-04-26  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (noconfigdirs): Don't reset it from scratch in the
	target case; only append to it.

2001-04-26  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (noconfigdirs) [hppa*-*-*, mips*-*-irix6*,
	sparc-*-solaris2.8]: Disable ${libgcj}.

2001-04-25  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libgcj_saved): Copy from $libgcj.
	(libgcj): Zero out if --enable-libgcj; add to noconfigdirs is
	--disable-libgcj.

2001-04-20  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh, ltcf-cxx.sh: Upgraded to libtool 1.4a
	1.641.2.228.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh,
	ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.226.

2001-04-01  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, RECURSE_FLAGS):
	New macros.
	(bootstrap, cross): Use RECURSE_FLAGS.
	* configure.in: Subst CXX_FOR_TARGET_FOR_RECURSIVE_MAKE.

2001-03-27  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (CXX_FOR_TARGET): Use xgcc for libstdc++-v3.

2001-03-23  Nick Clifton  <nickc@redhat.com>

	* README-maintainer-mode: Add note about inability to use "make
	distclean" in maintainer mode.

2001-03-22  Alexandre Oliva  <aoliva@redhat.com>

	Re-installed:
	2001-01-02  Laurynas Biveinis  <lauras@softhome.net>
	* ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP.  Do not add
	'-DPIC' to ac_cv_prog_cc_pic for DJGPP.
	* ltcf-cxx.sh: Likewise.
	* ltcf-gcj.sh: Likewise.

2001-03-22  Philip Blundell  <philb@gnu.org>

	* config.sub, config.guess: Import latest from subversions.

2001-03-22  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh,
	ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.198.

2001-03-20  Michael Chastain  <chastain@redhat.com>

	* Makefile.in: all-m4 depends on all-texinfo.

2001-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (ALL_GCC, ALL_GCC_C, ALL_GCC_CXX): Set before use.

2001-02-22  Jeff Johnston <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Remove DJ Delorie's address because it is no
	longer valid.

2001-02-16  Nick Clifton  <nickc@redhat.com>

	* configure.in (noconfigdirs): Allow configuration of texinfo
	for Cygwin hosts.

2001-02-09  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* config.guess: Add linux target for S/390.
	* config.sub: Likewise.
	* configure.in: Likewise.

2001-02-06  Ben Elliston  <bje@redhat.com>

	* configure: Output host type to stdout, not stderr.

2001-02-04  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config.guess: Import from subversions.gnu.org (revision 1.181).
	* config.sub: Import from subversions.gnu.org (revision 1.199).

2001-01-30  Alan Modra  <alan@linuxcare.com.au>

	* config.guess: Handle hppa64-linux systems.

2001-01-27  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* ltcf-cxx.sh (ac_cv_prog_cc_pic_works, ac_cv_prog_cc_static_works):
	Don't unset, it's non-portable and no longer necessary, set to empty
	instead.

2001-01-27  Michael Sokolov  <msokolov@ivan.Harhan.ORG>,  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltconfig: Shell portability fix for the tagname validity check.

2001-01-27  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* ltcf-cxx.sh: Use parentheses around eval $ac_compile.

2001-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* ltcf-c.sh (ld_shlibs) [aix5*]: Disable on unknown CPU types.
	* ltcf-cxx.sh, ltcf-gcj.sh: Likewise.

2001-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* ltmain.sh (TAG disable-shared, TAG disable-static): Make sure we
	keep at least one of build_libtool_libs or build_old_libs set to
	yes.

2001-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* ltcf-gcj.sh (lt_simple_link_test_code): Remove stray `(0)'.
	* libtool.m4 (_AC_LIBTOOL_GCJ): Pass $CPPFLAGS on.

2000-11-07  Philip Blundell  <pb@futuretv.com>

	* Makefile.in (ETC_SUPPORT): Also add configbuild.* and configdev.*.

2000-11-03  Philip Blundell  <pb@futuretv.com>

	* Makefile.in (ETC_SUPPORT): Add configure.texi and associated info
	files.

2001-01-15  Jeff Johnston  <jjohnstn@redhat.com>

	* COPYING.NEWLIB: Put into source repository.

2001-01-15  Ben Elliston  <bje@redhat.com>

	* configure.in (host_tools): Add sid.
	Always configure cgen.
	* Makefile.in (all-sid): New target.
	(check-sid, clean-sid, install-sid): Likewise.

2001-01-07  Andreas Jaeger  <aj@suse.de>

	* config.sub, config.guess: Update from subversions.

2000-12-12  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Disable language-specific target libraries for
	languages that aren't enabled.

2000-11-24  Nick Clifton  <nickc@redhat.com>

	* configure.in (xscale-elf): Add target.
	(xscale-coff): Add target.
	(c4x, c5x, tic54x): Move after ARM targets.

2000-11-23  Alexandre Oliva  <aoliva@redhat.com>

	* ltcf-gcj.sh: Added file, required by 2000-11-18 merge.

2000-11-20  Ian Lance Taylor  <ian@zembu.com>

	* ltcf-cxx.sh: Added file, required by 2000-11-18 merge.

2000-11-18  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in: Merge with GCC and libgcj.
	(ALL_GCC_C, ALL_GCC_CXX): New macros.  Use them as dependencies of
	configure-target-<library> when their configure scripts need the C
	or C++ library to have already been built to work properly.
	(do_proto_toplev): Set them to an empty string.

2000-11-18  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (HOST_LIB_PATH, TARGET_LIB_PATH): New macros.
	(REALLY_SET_LIB_PATH): Use them.

2000-11-06  Christopher Faylor <cgf@cygnus.com>

	* config.sub: Add support for Sun Chorus

2000-11-02  Per Lundberg  <plundis@chaosdev.org>

	* config.sub: Add support for the *-storm-chaos OS.

2000-10-30  Stephane Carrez  <stcarrez@worldnet.fr>

	* configure.in (noconfigdirs): Don't compile some
	of the libraries for 68HC11 & 68hc12 targets.

2000-09-30  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh, libtool.m4: Updated from libtool
	multi-language branch, to work around Solaris' /bin/sh bug.  Rebuilt
	all affected `configure' scripts.

2000-09-25  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (DEVO_SUPPORT): Added gettext.m4, libtool.m4 and
	ltcf-c.sh.

2000-09-12  Philip Blundell  <philb@gnu.org>

	* config.sub, config.guess: Update from subversions.

2000-09-06  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (all-zlib): Added dummy target.

	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh: Updated from libtool
	multi-language branch.

2000-09-05  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (all-bootstrap): Added all-texinfo and all-zlib.
	(bootstrap*): Depend on all-bootstrap.

2000-09-02  Alexandre Oliva  <aoliva@redhat.com>, DJ Delorie  <dj@redhat.com>

	* configure.in (FLAGS_FOR_TARGET): Use -nostdinc even for Canadian
	crosses, but add gcc/include to the header search path for them.

2000-08-31  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig, ltmain.sh: Updated from libtool multi-language branch.
	* libtool.m4, ltcf-c.sh: Copied from libtool multi-language branch.
	* gettext.m4: New file, extracted from aclocal.m4.

2000-08-22  Alexandre Oliva  <aoliva@redhat.com>

	* config-ml.in (CC, CXX): Avoid trailing whitespace.
	(LD_LIBRARY_PATH, SHLIB_PATH): Adjust for multilibs and export to
	sub-configures.

2000-08-20  Doug Evans  <dje@casey.transmeta.com>

	* Makefile.in (ALL_MODULES): Add all-cgen.
	(CROSS_CHECK_MODULES,INSTALL_MODULES,CLEAN_MODULES): Similarily.
	(all-cgen): New target.
	(all-opcodes,all-sim): Depend on all-cgen.
	* configure.in (host_tools): Add cgen.
	Only configure cgen if --enable-cgen-maint.

2000-08-17  Alexandre Oliva  <aoliva@redhat.com>

	* config-ml.in (CC, CXX): Don't introduce a leading space.

2000-08-16  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libstdcxx_flags): Use
	libstdc++-v3/src/libstdc++.INC.

2000-08-15  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libstdcxx_flags): Use libstdc++-v3/src/INCLUDES.

2000-08-11  Jason Merrill  <jason@redhat.com>

	* configure.in (CC_FOR_TARGET, CHILL_FOR_TARGET,
	CXX_FOR_TARGET): Add -B$$r/gcc/ here.
	(FLAGS_FOR_TARGET): Not here.
	(CHILL_FOR_TARGET, CXX_FOR_TARGET): Don't check the list of languages.

2000-08-07  DJ Delorie  <dj@redhat.com>

	* configure.in (FLAGS_FOR_TARGET): invert test for xgcc, should mean
	"if we're also building gcc, and it's a gcc that will run on the
	build machine, we want to use its includes instead of the system's
	default includes".

2000-08-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libstdcxx_flags): Don't use `"'.

	* config-ml.in: Adjust multilib search paths to the
	appropriate multilib tree.

2000-08-02  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (CHILL_FOR_TARGET, CXX_FOR_TARGET): Convert blanks to
	commas in $LANGUAGES.

2000-08-01  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (qCXX_FOR_TARGET): Use echo instead of expr.

2000-07-31  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (qCXX_FOR_TARGET): Quote `&' characters in
	CXX_FOR_TARGET for sed.

2000-07-30  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (CC_FOR_TARGET, CHILL_FOR_TARGET, CXX_FOR_TARGET):
	Do not override if already set in the environment or in configure.
	Don't duplicate $(FLAGS_FOR_TARGET) if it already appears in them.
	(FLAGS_FOR_TARGET): Don't use host directories on Canadian crosses.

2000-07-27  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (FLAGS_FOR_TARGET): New macro.
	(GCC_FOR_TARGET): Use it.
	(CC_FOR_TARGET, CXX_FOR_TARGET, CHILL_FOR_TARGET): Now defined...
	* configure.in: ... here.
	(FLAGS_FOR_TARGET): Define.  Add ld build dir to -L path.
	(libstdcxx_flags): Define and append to CXX_FOR_TARGET.

2000-07-24  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (configure-target-libf2c): Depend on $(ALL_GCC).
	(configure-target-libchill, configure-target-libobjc): Likewise.

	* configure.in: Use the same cache file for all target libs.
	* config-ml.in: But different cache files per multilib variant.

2000-07-23  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* configure (topsrcdir): Don't use dirname.

2000-07-20  Jason Merrill  <jason@redhat.com>

	* configure.in: Remove all references to libg++ and librx.

	* configure, configure.in, Makefile.in: Unify gcc and binutils.

2000-07-20  Hans-Peter Nilsson  <hp@axis.com>

	* config.sub: Update to subversions version 2000-07-06.

2000-07-12  Andrew Haley  <aph@cygnus.com>

	* configure.in (host_makefile_frag): Use mh-ia64pic on IA-64 hosts.
	(target_makefile_frag): Use mt-ia64pic on IA-64 targets.

2000-07-07  Phil Edwards  <pme@sourceware.cygnus.com>

	* symlink-tree:  Check number of arguments.

2000-06-06  Andrew Cagney  <cagney@b1.cygnus.com>

	* texinfo/texinfo.tex: Update to version 2000-05-28.15.

2000-07-05  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (CXX_FOR_TARGET): Add libstdc++ to the library
	search path for a g++ extracted from the build tree.  This
	will allow link tests run by configure scripts in
	subdirectories to succeed.

2000-07-01  Koundinya K  <kk@ddeorg.soft.net>

	* ltconfig: Add support for mips-dde-sysv4.2MP

2000-06-28  Corinna Vinschen  <vinschen@cygnus.com>

	* ltconfig: Check for host_os beeing one of `cygwin', `mingw' or
	`os2'. Force ac_cv_exeext to be ".exe" in that case.

2000-06-19  Timothy Wall  <twall@cygnus.com>

	* configure.in (noconfigdirs): Set noconfigdirs for tic54x target.
	* config.sub: Add tic54x target.

2000-06-07  Phillip Thomas  <pthomas@suse.de>

	* README-maintainer-mode: New file: Contains notes on using
	--enable-maintainer-mode with binutils.

2000-05-29  Andrew Cagney  <cagney@b1.cygnus.com>

	* texinfo/texinfo.tex: Update. Version from makeinfo 4.0.

2000-05-30  Andrew Cagney  <cagney@b1.cygnus.com>

	* config.sub: Import CVS version 1.167 Tue May 30 09:00:07 2000.
	* config.guess: Import CVS version 1.148 Tue May 30 09:00:06 2000

20000-05-21  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (CC_FOR_TARGET): Make sure as/ld in the gcc
	directory are used if they exist. Make sure
	$(build_tooldir)/include is searched for header files,
	$(build_tooldir)/lib/ for library files.
	(GCC_FOR_TARGET): Likewise.
	(CXX_FOR_TARGET): Likewise.

2000-05-18  Jeffrey A Law  (law@cygnus.com)

	* configure.in (hppa*64*-*-*): Do build ld for this configuration.

2000-05-17  Alexandre Oliva  <aoliva@cygnus.com>

	* Makefile.in (configure-target-libiberty): Depend on
	configure-target-newlib.

2000-05-16  Alexandre Oliva  <aoliva@cygnus.com>

	* configure.in, Makefile.in: Merge all libffi-related
	configury stuff from the libgcj tree.

2000-05-16  Andrew Cagney  <cagney@b1.cygnus.com>

	Thu Apr 27 11:01:48 2000 Andrew Cagney <cagney@b1.cygnus.com>:
	* Makefile.in (do-tar-bz2, do-md5sum): Skip CVS directories.

2000-05-16  Andrew Cagney  <cagney@b1.cygnus.com>

	Wed Apr 26 17:03:53 2000 Andrew Cagney <cagney@b1.cygnus.com>:
	* Makefile.in (do-djunpack): New target. Update djunpack.bat with
	current version information.  Add to proto-toplev directory.
	(gdb-taz): Build do-djunpack.

2000-05-15  David Edelsohn  <edelsohn@gnu.org>

	* configure.in: Special case powerpc*-*-aix* target_makefile_frag.

2000-05-13 Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltmain.sh: Preserve in relink_command any environment
	variables that may affect the linker behavior.

2000-05-12  Jeffrey A Law  (law@cygnus.com)

	* config.sub (basic_machine): Recognize hppa64 as a valid cpu type.

2000-05-10  Jim Wilson  <wilson@cygnus.com>

	* configure.in (ia64*-*-elf*): Add gdb and friends to noconfigdirs.

2000-05-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* djunpack.bat: Change the Sed script to replace @V@ in fnchange.lst
	with the version name.

2000-05-01  Benjamin Kosnik  <bkoz@cygnus.com>

	* config.if: Tweak.

2000-04-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* djunpack.bat: New file.

2000-04-19  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (taz, gdb-taz, gas.tar.bz2, binutils.tar.bz2,
	gas+binutils.tar.bz2, libg++.tar.bz2, gnats.tar.bz2, gdb.tar.bz2,
	dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, insight.tar.bz2,
	insight+dejagnu.tar.bz2, newlib.tar.bz2): Pass MD5PROG to sub-make.

2000-04-16  Dave Pitts  <dpitts@cozx.com>

	* config.sub (case $basic_machine): Change default for "ibm-*"
	to "openedition".

2000-04-12  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (gdb-taz): New target.  GDB specific archive.
	(do-md5sum): New target.
	(MD5PROG): Define.
	(PACKAGE): Default to TOOL.
	(VER): Default to a shell script.
	(taz): Rewrite target.  Move real work to do-proto-toplev.  Include
	md5 checksum generation.
	(do-proto-toplev): New target. Create $(PACKAGE)-$(VER) link.
	(do-tar-bz2): Delete creation of $(PACKAGE)-$(VER) link.
	(gdb.tar.bz2, dejagnu.tar.bz2, gdb+dejagnu.tar.bz2,
	insight.tar.bz2): Use gdb-taz to create archive.

2000-04-07  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure (warn_cflags): Delete.

2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
	    Martin v. Loewis  <martin@loewis.home.cs.tu-berlin.de>

	* configure.in (enable_libstdcxx_v3): Add.
	(target_libs): Add bits here to switch between libstdc++-v2 and
	libstdc++-v3.
	* config.if: And this file too.
	* Makefile.in: Add libstdc++-v3 targets.

2000-04-05  Michael Meissner  <meissner@redhat.com>

	* config.sub (d30v): Add d30v as a basic machine type.

2000-03-29  Jason Merrill  <jason@casey.cygnus.com>

	* configure.in: -linux-gnu*, not -linux-gnu.

2000-03-03  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (taz): Set PACKAGE to TOOL when not defined.
	(do-tar-bz2): Replace TOOL with PACKAGE.
	(gdb.tar.bz2): Remove GDBTK from GDB package.
	(gdb+dejagnu.tar.bz2, insight.tar.bz2, insight+dejagnu.tar.bz2,
	dejagnu.tar.bz2): New packages.

2000-02-27  Andreas Jaeger  <aj@suse.de>

	* configure.in: Add entry for mips*-*-linux*, move catch all
	*-*-*linux* entry below this one.

2000-02-27  Ian Lance Taylor  <ian@zembu.com>

	* ltconfig, ltmain.sh: Update to libtool 1.3.4.

2000-02-24  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Support an OS of "wince".

2000-02-24  Andrew Cagney  <cagney@b1.cygnus.com>

	* config.guess, config.sub: Updated to match config's 2000-02-15
	version.

2000-02-23  Linas Vepstas <linas@linas.org>

	* config.sub: Add support for Linux/IBM 370.
	* configure.in: Likewise.

2000-02-22  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add mips-pe, sh-pe and arm-wince-pe targets.

2000-02-20  Christopher Faylor <cgf@cygnus.com>

	* config.guess: Guess "cygwin" rather than "cygwin32".

2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure (gcc_version): When setting, narrow search to
	lines containing `version_string'.

2000-02-15  Denis Chertykov  <denisc@overta.ru>

	* config.sub: Add support for avr target.

2000-02-01  Hans-Peter Nilsson  <hp@bitrange.com>

	* config.sub: Add mmix-knuth-mmixware.

2000-01-27  Christopher Faylor <cgf@redhat.com>

	* Makefile.in (CC_FOR_TARGET): Add new winsup directory
	structure stuff to -L library search.
	(CXX_FOR_TARGET): Ditto.
	(CROSS_CHECK_MODULES): Fix spelling mistake.

2000-01-24  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (CXX_FOR_TARGET): Use g++, not xgcc, to invoke
	the C++ compiler.

2000-01-12  Richard Henderson  <rth@cygnus.com>

	* configure.in: Don't build some bits for beos.

2000-01-12  Joel Sherrill (joel@OARcorp.com)

	* Makefile.in (CC_FOR_TARGET): Use newlib libraries as well
	as include files.

2000-01-06  Geoff Keating  <geoffk@cygnus.com>

	* configure.in: Use mt-aix43 to handle *_TARGET defs,
	not mh-aix43.

1999-12-14  Richard Henderson  <rth@cygnus.com>

	* config.guess (alpha-osf, alpha-linux): Detect ev67.
	* config.sub: Accept alphaev[78], alphaev8.

1999-12-03  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config.guess, config.sub: Update from autoconf.

Tue Nov 23 00:57:41 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config-ml.in (sparc*-*-*): Disable sparcv9 support if the
	necessary libraries are missing.

1999-10-25  Andreas Schwab  <schwab@suse.de>

	* configure: Fix quoting inside arguments of eval.

1999-10-21  Nick Clifton  <nickc@cygnus.com>

	* config-ml.in: Allow suppression of some ARM multilibs.

Tue Sep  7 23:33:57 1999  Linas Vepstas  <linas@linas.org>

	* config.guess: Add OS/390 match pattern.
	* config.sub: Add mvs, openedition targets.
	* configure.in (i370-ibm-opened*): New.

1999-09-04  Steve Chamberlain  <sac@pobox.com>

	* config.sub: Add support for configuring for pj.

1999-08-31  Nick Clifton  <nickc@cygnus.com>

	* config.sub (maybe_os): Add support for configuring for fr30.

1999-08-25  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Do not configure or build ld for AIX
	platforms.  ld is known to be broken on these platforms.

Wed Aug 25 01:12:25 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config-ml.in: Pass compiler flag corresponding to multidirs to
	subdir configures.

1999-08-09  Ian Lance Taylor  <ian@zembu.com>

	* Makefile.in (LDFLAGS): Define.

1999-08-08  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (i[3456]-*-mingw32*): Don't put gprof in
	noconfigdirs.
	(*-*-cygwin*): Likewise.

1999-08-08  Ian Lance Taylor  <ian@zembu.com>

	* mkdep: New file.
	* Makefile.in (GAS_SUPPORT_DIRS): Add mkdep.
	(BINUTILS_SUPPORT_DIRS): Add mkdep.

	From Eli Zaretskii <eliz@is.elta.co.il>:
	* configure (tmpfile): Change cONf$$ to cNf$$ to avoid an overly
	long file name when using DJGPP on MS-DOS.

Wed Aug  4 02:07:14 1999  Jeffrey A Law  (law@cygnus.com)

	* config.sub (vxworks case): Use os=-vxworks, not os=vxworks.

1999-07-30  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* Makefile.in (check-target-libio): Remove all-target-libstdc++
	dependency as this causes "make check" to globally "make all"

Tue Jun 22 23:45:18 1999  Tom Tromey  <tromey@cygnus.com>

	* configure.in (target_libs): Added target-zlib.
	* Makefile.in (ALL_TARGET_MODULES): Added zlib.
	(CONFIGURE_TARGET_MODULES): Likewise.
	(CHECK_TARGET_MODULES): Likewise.
	(INSTALL_TARGET_MODULES): Likewise.
	(CLEAN_TARGET_MODULES): Likewise.
	(configure-target-zlib): New target.
	(all-target-zlib): Likewise.
	(all-target-libjava): Depend on all-target-zlib.
	(configure-target-libjava): Depend on configure-target-zlib.

	* Makefile.in (configure-target-libjava): Depend on
	configure-target-newlib.
	(configure-target-boehm-gc): New target.
	(configure-target-qthreads): New target.

	* configure.in (target_libs): Added target-qthreads.
	* Makefile.in (ALL_TARGET_MODULES): Added qthreads.
	(CONFIGURE_TARGET_MODULES): Likewise.
	(CHECK_TARGET_MODULES): Likewise.
	(INSTALL_TARGET_MODULES): Likewise.
	(CLEAN_TARGET_MODULES): Likewise.
	(all-target-qthreads): New target.
	(configure-target-libjava): Depend on configure-target-qthreads.
	(all-target-libjava): Depend on all-target-qthreads.

	* Makefile.in (ALL_TARGET_MODULES): Added libjava, boehm-gc.
	(CONFIGURE_TARGET_MODULES): Likewise.
	(CHECK_TARGET_MODULES): Likewise.
	(INSTALL_TARGET_MODULES): Likewise.
	(CLEAN_TARGET_MODULES): Likewise.
	(all-target-libjava): New target.
	(all-target-boehm-gc): Likewise.
	* configure.in (target_libs): Added libjava, boehm-gc.

1999-07-22  Ian Lance Taylor  <ian@zembu.com>

	* Makefile.in (binutils.tar.bz2): Don't pass makeall.bat and
	configure.bat in SUPPORT_FILES.
	(gas+binutils.tar.bz2): Likewise.

	* makeall.bat: Remove; obsolete.

1999-07-21  Ian Lance Taylor  <ian@zembu.com>

	From Mark Elbrecht:
	* configure.bat: Remove; obsolete.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* configure: Add -W -Wall to the default CFLAGS when compiling with
	gcc.

Thu Jul  8 12:32:23 1999  John David Anglin <dave@hiauly1.hia.nrc.ca>

	* configure.in: Build ld, binutils & gas for hppa*-*-linux-gnu*.

1999-06-30  Mark Mitchell  <mark@codesourcery.com>

	* configure.in: Build ld on IRIX6.

1999-06-12  Ian Lance Taylor  <ian@zembu.com>

	* Makefile.in: Change distribution targets to use bzip2 instead of
	gzip.
	(TEXINFO_SUPPORT): Set to just texinfo/texinfo.tex.
	(taz): Don't use texinfo/gpl.texinfo or texinfo/lgpl.texinfo.

1999-06-04  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Add mcore target.

1999-05-30  Cort Dougan  <cort@cs.nmt.edu>

	* config.guess (ppc-*-linux-gnu): Also use ld emul elf32ppclinux.

1999-05-25  H.J. Lu  (hjl@gnu.org)

	* config.guess (dummy): Changed to $dummy.

1999-05-24  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Tidied up case statements.

1999-05-22  Ben Elliston  <bje@cygnus.com>

	* config.guess: Handle NEC UX/4800. Contributed by Jiro Takabatake
	<jiro@din.or.jp>.

	* config.guess: Merge with FSF version. Future changes will be
	more accurately recorded in this ChangeLog.
	* config.sub: Likewise.

1999-05-20   Stephen L Moshier  <moshier@world.std.com>

	 * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.

1999-04-30  Tom Tromey  <tromey@cygnus.com>

	* ltmain.sh: [mode link] Always use CC given by ltconfig.

1999-04-23  Tom Tromey  <tromey@cygnus.com>

	* ltconfig, ltmain.sh: Update to libtool 1.2f.

1999-04-20  Drew Moseley  <dmoseley@cygnus.com>

	* configure.in (noconfigdirs): Don't build libstub for arm-elf targets.
	(noconfigdirs): Don't build any bsp stuff for for arm-oabi targets.
	Bad merge removed these two changes.

Tue Apr 13 22:50:54 1999  Donn Terry (donn@interix.com)
	                  Martin Heller (Ing.-Buero_Heller@t-online.de)

	* config.guess (interix Alpha): Add.

1999-04-11  Richard Henderson  <rth@cygnus.com>

	* configure.in (i?86-*-beos*): Do config gperf; don't config
	gdb, newlib, or libgloss.

1999-04-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* config-ml.in: On mips*-*-*, if multidirs contains mabi=64, try to
	link a trivial program with -mabi=64.  If it fails, remove mabi=64
	from multidirs.

1999-04-10  Philipp Thomas  (kthomas@gwdg.de)

	* config.sub: Set basic_machine to i586 when target_alias = k6-*.

1999-04-08  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Add support for mcore targets.

1999-04-07  Michael Meissner  <meissner@cygnus.com>

	* configure.in (d30v-*): Use config/mt-d30v as makefile fragment,
	not mt-ospace, in order to shut up assembler warning about using
	symbols that are named the same as registers.

1999-04-07  Drew Moseley  <dmoseley@cygnus.com>

	* Makefile.in (all-target-cygmon): Added all-target-bsp to the
	dependency list for all-target-cygmon.

1999-04-05  Doug Evans  <devans@casey.cygnus.com>

	* config-ml.in: Check $host, not $target, for selective multilibs.
	(arm-*-*): Allow disabling of biendian, h/w fp, 26 bit apcs,
	thumb interworking, and underscore prefix multilibs.

1999-04-04  Ian Lance Taylor  <ian@zembu.com>

	* missing: Update to version from current automake.

Fri Apr  2 15:11:32 1999  H.J. Lu  (hjl@gnu.org)

	* configure (gxx_include_dir): Removed.

	* configure.in (gxx_include_dir): Handle it.
	* Makefile.in: Likewise.

1999-03-29  Gavin Romig-Koch  <gavin@cygnus.com>

	* config.sub (mips64vr4111,mips64vr4111el) Add.

1999-03-21  Ben Elliston  <bje@cygnus.com>

	* config.guess: Correct typo for detecting ELF on FreeBSD.

Thu Mar 18 00:17:50 1999  Mark Elbrecht <snowball3@usa.net>

	* configure.in (pc-msdosdjgpp): Set host_makefile_frag to
	config/mh-djgpp.

Thu Mar 11 18:37:23 1999  Drew Moseley  <dmoseley@cygnus.com>

	* Makefile.in (all-target-bsp): Added all-gcc all-binutils and
	all-target-newlib to dependency list for all-target-bsp.

Thu Mar 11 01:19:31 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* config.sub: Add i386-uwin support.
	* config.guess: Likewise.

Thu Mar 11 01:07:55 1999  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* configure.in: cleanup, add mh-*pic handling for arm, special
	case powerpc*-*-aix*

Wed Mar 10 18:35:07 1999  Jeff Johnston  <jjohnstn@cygnus.com>

	* configure.in (noconfigdirs): Removed target-libgloss so libnosys.a
	can be built.

Wed Mar 10 17:39:09 1999  Drew Moseley  <dmoseley@cygnus.com>

	* configure.in: Added bsp support to arm-*-coff and arm-*-elf
	targets.

1999-03-02  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Rename CYGNUS LOCAL to EGCS LOCAL

1999-02-28  Geoffrey Noer  <noer@cygnus.com>

	* config.sub: Check for "cygwin*" rather than "cygwin32*"

1999-02-24  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Fix typo in arm recognition.

1999-02-24  Drew Moseley  <dmoseley@cygnus.com>

	* configure.in (noconfigdirs): Changed target_configdirs to
	include target-bsp only for m68k-*-elf* and m68k-*-coff*
	rather than m68k-*-* since it is not known to work on
	m68k-aout. Ditto for arm-*-*oabi.

1999-02-24  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.in (*-*-windows*): Remove, no longer used.

1999-02-19  Ben Elliston <bje@cygnus.com>

	* config.guess: Automatically recognise ELF on FreeBSD. From Niall
	Smart and improved by Andrew Cagney.

1999-02-18  Marc Espie <espie@cvs.openbsd.org>

	* config.guess: Recognize openbsd-*-hppa.

1999-02-17  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (REALLY_SET_LIB_PATH): Append $$$(RPATH_ENVVAR)
	only if it is not empty.

1999-02-17  Nick Clifton  <nickc@cygnus.com>

	Patch from: Scott Bambrough <scottb@corelcomputer.com>

	* config.guess: Modified to recognize uname's armv* syntax.

	* config.sub: Modified to recognize uname's armv* syntax.

1999-02-17  Mark Salter  <msalter@cygnus.com>

	* configure.in: Added target-bsp for sparclite.

1999-02-08  Richard Henderson  <rth@cygnus.com>

	* config.sub: Recognize alphapca5[67] and up to alphaev8.

1999-02-08  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add support for strongarm port.
	* config.sub: Add support for strongarm target.

1999-02-07  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (*-*-cygwin32*): Use config/mh-cygwin instead of
	the old name config/mh-cygwin32.
	Enable texinfo.

1999-02-04  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Do build ld for ix86 Solaris.

1999-02-02  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS):  Set AR to $AR instead of
	$AR_FOR_TARGET.  Likewise for RANLIB.

1999-02-02  Catherine Moore  <clm@cygnus.com>

	* config.sub (oabi):  Recognize.
	* configure.in (arm-*-oabi):  Handle.

1999-01-30  Robert Lipe  (robertlipe@usa.net)

	* config.guess: Improve detection of i686 on UnixWare 7.

1999-01-30  Mumit Khan  <khan@xraylith.wisc.edu>

	* config.guess: Add support for i386-pc-interix.
	* config.sub: Likewise.
	* configure.in: Likewise.

1999-01-18  Christopher Faylor <cgf@cygnus.com>

	* Makefile.in: Remove unneeded all-target-libio from
	from all-target-winsup target since it is now unneeded.
	Add all-target-libtermcap in its place since it is now
	needed.

1998-12-30  Christopher Faylor <cgf@cygnus.com>

	* configure.in: makefile stub for cygwin target is probably
	unnecessary.  Remove it for now.

1998-12-30  Christopher Faylor <cgf@cygnus.com>

	* configure.in: libtermcap.a should be built when cygwin is the
	target as well as the host.
	* config.guess: Allow mixed case in cygwin uname output.
	* Makefile.in: Add libtermcap target.

1998-12-23  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Clean up handling of hppa2.0.

1998-12-22  Rodney Brown  (rodneybrown@pmsc.com)

	* config.guess: Use C code to identify more HP machines.

Thu Dec 17 01:22:30 1998  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Handle hppa2.0.

Tue Dec 15 17:02:58 1998  Bob Manson  <manson@charmed.cygnus.com>

	* configure.in: Add cygmon for x86-coff and x86-elf. Configure
	cygmon for all sparclite targets, regardless of object format.

1998-12-15  Mark Salter  <msalter@cygnus.com>

	* configure.in: Added target-bsp for several target architectures.

	* Makefile.in: Added rules for bsp.

Fri Dec  4 01:34:02 1998  Jeffrey A Law  (law@cygnus.com)

	* config.guess: Improve detection of hppa2.0 processors.

Fri Dec  4 01:33:05 1998  Niall Smart <nialls@euristix.ie>

	* config.guess: Recognize FreeBSD using ELF automatically.

1998-11-26  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure (skip-this-dir): Add handling for new shell script, which
	might be created by a sub-directory's configure to indicate, this particular
	directory is "unwanted".
	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): Likewise.

Wed Nov 18 18:28:45 1998  Geoffrey Noer  <noer@cygnus.com>

	* ltconfig: import from libtool, after changing libtool to
	account for the cygwin name change.

Wed Nov 18 18:09:14 1998  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: CC_FOR_TARGET and CXX_FOR_TARGET should also
	include newlib/libc/sys/cygwin and newlib/libc/sys/cygwin32.

Wed Nov 18 20:13:29 1998  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Add libtermcap to list of cygwin dependencies.

1998-11-17  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: modify CC_FOR_TARGET and CXX_FOR_TARGET so that
	they include winsup/include when it's a cygwin target.

1998-11-12  Tom Tromey  <tromey@cygnus.com>

	* configure.in (host_tools): Added zip.
	* Makefile.in (all-target-libjava): Depend on all-zip.
	(all-zip): New target.
	(ALL_MODULES): Added all-zip.
	(NATIVE_CHECK_MODULES): Added check-zip.
	(INSTALL_MODULES): Added install-zip.
	(CLEAN_MODULES): Added clean-zip.

1998-11-12  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: lose "32" from comment about cygwin.

1998-11-05  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Use -Os to build target libraries for the fr30.

1998-11-04  Dave Brolley  <brolley@cygnus.com>

	* config.sub: Add fr30.

1998-11-02  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: drop "32" from config/mh-cygwin32.  Check
	cygwin* instead of cygwin32*.
	* config.sub: Check cygwin* instead of cygwin32*.

1998-10-22  Robert Lipe  <robertl@dgii.com>

	* config.guess: Match any version of Unixware7.

1998-10-20  Syd Polk  <spolk@cygnus.com>

	* Makefile.in configure.in: Add the ability to use tcl8.1 and tk8.1
	if desired.

1998-10-18  Jeffrey A Law  (law@cygnus.com)

	* config.if (cxx_interface, libstdcxx_interface): Do not try to set
	these if the appropriate directories and files to not exist.

1998-10-14  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (DEVO_SUPPORT): Add config.if.

1998-10-13  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure: Add pattern to replace "build_tooldir"'s
	definition in the generated Makefile with "tooldir"'s
	actual value.

Tue Oct 13 09:17:06 1998  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Bring back lost sparcv9.

	* Makefile.in (all-snvavigator): Remove all-flexlm dependency.

Mon Oct 12 12:09:44 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (CHILL_FOR_TARGET): Mirror recent changes to
	CC_FOR_TARGET and friends.

Mon Oct 12 12:09:30 1998  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.in (build_tooldir): New variable, same as tooldir.
	(CC_FOR_TARGET, GCC_FOR_TARGET, CXX_FOR_TARGET): Add
	-B$(build_tooldir)/bin/.
	(BASE_FLAGS_TO_PASS): Pass build_tooldir down.

Wed Sep 30 22:20:50 1998  Robert Lipe  <robertl@dgii.com>

	* config.sub: Add support for i[34567]86-pc-udk.
	* configure.in: Likewise.

Wed Sep 30 19:23:48 1998  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: add bzip2 package building bits for user
	tools module
	* configure.in: ditto

Wed Sep 30 03:00:05 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (TARGET_CONFIGDIRS): Add libobjc.
	(ALL_TARGET_MODULES): Add all-target-libobjc.
	(CONFIGURE_TARGET_MODULES, CHECK_TARGET_MODULES): Similarly.
	(INSTALL_TARGET_MODULES, CLEAN_TARGET_MODULES): Similarly.
	(all-target-libchill): Add dependencies.
	* configure.in (target_libs): Add libchill.

1998-09-30  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure.in (target_subdir): Remove duplicate line.

Tue Sep 29 22:45:41 1998  Felix Lee  <flee@cygnus.com>

	* Makefile.in (all-automake): fix dependencies.

Mon Sep 28 04:04:27 1998  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Minor cleanups for building in the $(target_alias)
	subdir.

1998-09-22  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (bootstrap): Set r and s before make all.  Use
	BASE_FLAGS_TO_PASS in make all.
	(cross): Likewise.

1998-09-20  Mark Mitchell  <mark@markmitchell.com>

	* Makefile.in (bootstrap): Pass TARGET_FLAGS_TO_PASS to `make all'.

Sun Sep 20 00:13:02 1998  Richard Henderson  <rth@cygnus.com>

	* config.sub: Fix typo in last change.

1998-09-19  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config.sub: Add support for C4x target.
	* configure.in: Likewise.

1998-09-13  David S. Miller  <davem@pierdol.cobaltmicro.com>

	* config.sub: Recognize sparcv9 just like sparc64.

Wed Sep  9 15:44:52 1998  Robert Lipe  <robertl@dgii.com>

	* config.guess: Match "Pent II" or "PentII" for OpenServer.

Tue Sep  8 01:18:39 1998  Jeffrey A Law  (law@cygnus.com)

	* config.guess: Correctly identify Pentium II sco boxes.

	* config.guess: Fix "tr" code.  From Weiwen Liu.

Sat Sep  5 13:56:52 1998  John Hughes  <john@Calva.COM>

	* configure.in: Do not assume x86-svr4 or x86-unixware can handle
	stabs.

Sat Sep  5 02:12:02 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (TARGET_CONFIGDIRS): Add libchill.
	(ALL_TARGET_MODULES): Add all-target-libchill.
	(CONFIGURE_TARGET_MODULES, CHECK_TARGET_MODULES): Similarly.
	(INSTALL_TARGET_MODULES, CLEAN_TARGET_MODULES): Similarly.
	(all-target-libchill): Add dependencies.
	* configure.in (target_libs): Add libchill.

Sun Aug 30 22:27:02 1998  Lutz Wohlrab <lutz.wohlrab@informatik.tu-chemnitz.de>

	* config.guess: Avoid assumptions about "tr" behaves when
	LANG is set to something other than English.

Sun Aug 30 22:14:44 1998  H.J. Lu  (hjl@gnu.org)

	* configure (gxx_include_dir): Changed to
	'${prefix}/include/g++'-${libstdcxx_interface}.

	* config.if: New to determine the interfaces.

Sun Aug 30 21:15:19 1998  Mark Klein (mklein@dis.com)

	* config.guess: Detect and handle MPE/IX.
	* config.sub: Deal with MPE/IX.

Sat Aug 29 14:32:55 1998  David Edelsohn  <edelsohn@mhpcc.edu>

	* configure.in: Use mh-aix43.

1998-07-29  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure: Fix --without/--disable cases for gxx-include-dir.

Fri Aug 28 12:28:26 1998  Per Bothner  <bothner@cygnus.com>

	* mdata-sh:  Imported.  Needed for automake support.

Thu Aug 13 12:49:29 1998  H.J. Lu  <hjl@gnu.org>

	* Makefile.in (taz): Try "chmod -R og=u ." before
	"chmod og=u `find . -print`".

Fri Jul 31 09:38:33 1998  Catherine Moore  <clm@cygnus.com>

	* configure.in: Add arm-elf and thumb-elf support.

Mon Jul 27 16:23:58 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.in: Undo previous patch.

Fri Jul 24 19:55:24 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.in (INSTALL_TARGET): Move EXTRA_TARGET_HOST_INSTALL_MODULES
	to here ...
	(install-no-fixedincludes): and here
	(INSTALL_MODULES): ... from here.

Fri Jul 24 17:01:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Merge with FSF.

	* config.guess: Merge with FSF.

Fri Jul 24 08:43:36 1998  Doug Evans  <devans@canuck.cygnus.com>

	* configure (extraconfigdirs): New variable.
	(SUBDIRS): Add extraconfigdirs and recurse on them too.
	* Makefile.in (all): Move higher in file.
	(EXTRA_TARGET_HOST_ALL_MODULES): New variable.
	(EXTRA_TARGET_HOST_{INSTALL,CHECK}_MODULES): New variables.
	(ALL_MODULES): Add EXTRA_TARGET_HOST_ALL_MODULES.
	(CROSS_CHECK_MODULES): Add EXTRA_TARGET_HOST_CHECK_MODULES.
	(INSTALL_MODULES): Add EXTRA_TARGET_HOST_INSTALL_MODULES.

1998-07-23  Brendan Kehoe  <brendan@cygnus.com>

	* Makefile.in (all-target-libjava): Depend on all-gcc and
	all-target-newlib.
	(configure-target-libjava): Depend on $(ALL_GCC).

Sat Jul 18 14:32:43 CDT 1998  Robert Lipe  <robertl@dgii.com>

	* config.guess: (*-pc-sco3.2v5) Add detection for Pentium II.
	(*-pc-unixware7) Add detection for Pentium II, Pentium Pro.

Fri Jul 17 13:30:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ylwrap: Change absolute path checks to check for DOS style path
	names.

	* ylwrap: Don't use a full path name if the source file is in the
	same directory.  From hjl@lucon.org (H.J. Lu).

	* config-ml.in: Default to being verbose, to match Feb 18 change to
	configure.

Thu Jul 16 12:29:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	Brought over from egcs:

	Sat Jun 27 22:46:32 1998  Jeffrey A Law  (law@cygnus.com)

	* configure.in (target_subdir): Set to ${target_alias} instead
	of "libraries".

	Mon Sep  1 16:45:44 1997  Jim Wilson  <wilson@cygnus.com>

	* configure.in (target_subdir): Set to libraries if enable_multilib.

Wed Jul 15 01:00:54 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): If there are any
	multilibs, force reconfiguration the first time we create
	multilib.out in a subdirectory, in case TARGET_SUBDIR is `.'.

Tue Jul 14 23:41:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Strip any --no option from CONFIG_ARGUMENTS, to
	avoid confusion with --no-recursion.

Tue Jul 14 15:37:41 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: Win32 hosts shouldn't use install -x
	* install-sh: remove -x option, and special .exe-handling
	hack.

Tue Jul 14 15:28:41 1998  Richard Henderson  <rth@cygnus.com>

	* config.guess: Recognize i586-pc-beos.
	* configure.in: Don't build some bits for beos.

Tue Jul 14 13:22:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure: If CC is set but CFLAGS is not, and CC is gcc, make
	CFLAGS default to -O2.

	* ltmain.sh: Add some hacks to make SunOS --enable-shared work
	when using GNU ld.

Fri Jul 10 13:18:23 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltmain.sh: Correct install when using a different shell.

Tue Jul  7 15:24:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Update to libtool 1.2b.

Thu Jul  2 13:57:36 1998  Klaus Kaempf  <kkaempf@rmi.de>

	* makefile.vms: Update to build binutils/makefile.vms.  Add install
	target.

Wed Jul  1 16:45:21 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig: Update to correct AIX handling.

Sat Jun 27 22:46:32 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (BASE_FLAGS_TO_PASS): Add TARGET_SUBDIR.

	* configure.in (target_subdir): Set to ${target_alias} instead
	of "libraries".

1998-06-26  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (BASE_FLAGS_TO_PASS): Add gcc_version_trigger.
	(Makefile): Depend on $(gcc_version_trigger).

	* configure (gcc_version): Change default initializer to empty
	string.
	(gcc_version_trigger): New variable; pass this variable down
	to subdir configures to enable them checking gcc's version
	themselves. Emit make macros for both gcc_version vars.
	(topsrcdir): Initialize reliably.
	(recursion line): Remove --with-gcc-version=${gcc_version}.

1998-06-24  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure (enable_version_specific_runtime_libs): Implement new flag
	--enable-version-specific-runtime-libs which installs C++ runtime stuff
	in $(libsubdir); emit definition in each generated Makefile.
	(gxx_include_dir): Initialize depending on
	$enable_version_specific_runtime_libs.

1998-06-24  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure (gcc_version): Initialize properly depending on
	how and where configure is started.
	(recursion line): Pass a --with-gcc-version=${gcc_version}
	to configures in subdirs.

Wed Jun 24 16:01:59 1998  John Metzler  <jmetzler@cygnus.com>

	* configure.in (noconfigdirs): Add configure pattern for mips tx39
	cygmon

Tue Jun 23 22:42:32 1998  Mark Alexander  <marka@cygnus.com>

	* configure.in: Add cygmon and libstub support for mn10200.

1998-06-19  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure (gcc_version): Add new variable describing the
	particular gcc version we're building.
	* Makefile.in (libsubdir): Add new macro for the directory
	in which the compiler finds executables, libraries, etc.
	(BASE_FLAGS_TO_PASS): Pass down gcc_version, target_alias
	and libsubdir.

Fri Jun 19 02:36:59 1998  Alexandre Oliva <oliva@dcc.unicamp.br>

	* Makefile.in (local-clean): Remove *.log.
	(warning.log): Built with warn_summary from build.log.
	(mail-report.log): Run test_summary.
	(mail-report-with-warnings.log): Run test_summary including
	warning.log in the report.

Thu Jun 18 11:26:03 1998  Robert Lipe  <robertl@dgii.com>

	* config.guess: Detection of Pentium II for *-sco-3.2v5*.

Mon Jun 15 14:53:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (grep): Grep no longer depends on libiberty.

Fri Jun 12 14:03:34 1998  Syd Polk  <spolk@cygnus.com>

	* Makefile.in: all-snavigator needs all-libgui.

Thu Jun 11 19:43:47 1998  Mark Alexander  <marka@cygnus.com>

	* configure.in: Add cygmon and libstub support for mn10300.

Wed Jun 10 11:19:47 1998  Ian Lance Taylor  <ian@cygnus.com>

	* missing: Update to version from automake 1.3.

	* ltmain.sh: On installation, don't get confused if the same name
	appears more than once in the list of library names.

Wed Jun  3 14:51:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Accept m68060 and m5200 as CPU names.

Mon Jun  1 17:25:16 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Use && rather than using -a in test, because odd
	strings can confuse test.
	* configure.in: Likewise.

Thu May 28 19:31:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Bring in Visual C++ support.

Sat May 23 23:44:13 1998  Alexandre Oliva <oliva@dcc.unicamp.br>

	* Makefile.in (boostrap2-lean, bootstrap3-lean,
	bootstrap4-lean): New targets.

Mon May 11 23:55:56 1998  Jeffrey A Law  (law@cygnus.com)

	* mpw-* Delete.  Not used.

Mon May 11 23:11:34 1998  Jeffrey A Law  (law@cygnus.com)

	* COPYING.LIB: Update FSF address.

Fri May  8 01:30:20 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Update to libtool 1.2a.

	* Makefile.in (GASB_SUPPORT_DIRS): Remove intl; already included via
	GAS_SUPPORT_DIRS.

Thu May  7 17:27:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Avoid producing a version number if
	-version-info was not used.

Tue May  5 18:02:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add --with-newlib to CONFIG_ARGUMENTS if we are
	building with newlib.

1998-04-30  Paul Eggert  <eggert@twinsun.com>

	* Makefile.in (EXTRA_GCC_FLAGS): Remove backslash at end;
	Solaris `make' causes it to continue to next definition.

Tue Apr 28 16:24:24 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* Makefile.in (install-gdbtk): Call this 'install-gdb' so that
	the right GUI libraries and files are installed along with GDB.

Tue Apr 28 18:11:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change alpha to alpha* in several places.

Tue Apr 28 07:42:00 1998  Mark Alexander  <marka@cygnus.com>

	* config.sub: Recognize sparc86x.

Tue Apr 28 07:35:02 1998  Michael Meissner  <meissner@cygnus.com>

	* configure.in (--enable-target-optspace): Remove debug echo.

Thu Apr 23 21:31:16 1998  Jim Wilson  <wilson@cygnus.com>

	* configure: Set CXXFLAGS from CXXFLAGS, not CFLAGS.

Thu Apr 23 12:26:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig: Update cygwin32 support.

	* Makefile.in (GAS_SUPPORT_DIRS): Add intl.
	(BINUTILS_SUPPORT_DIRS, GASB_SUPPORT_DIRS): Likewise.
	(GDB_SUPPORT_DIRS): Likewise.

Wed Apr 22 12:30:10 1998  Michael Meissner  <meissner@cygnus.com>

	* configure.in (target_makefile_frag): If --enable-target-optspace,
	use -Os to compile target libraries rather than -O2.  Default to
	using -Os for d10v and m32r if --{enable,disable}-target-optspace is
	not used.
	* configure.in (target_cflags): Ditto for d30v.

Tue Apr 21 23:06:54 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (all-bfd): Depend on all-intl.
	(all-binutils): Likewise.
	(all-gas): Likewise.
	(all-gprof): Likewise.
	(all-ld): Likewise.

1998-04-19  Brendan Kehoe  <brendan@cygnus.com>

	* configure.in (host_tools): Fix typo, lbtool -> libtool.

Fri Apr 17 16:20:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (all-bfd): Depend upon all-libiberty.

	* ltconfig, ltmain.sh: Bring in newer cygwin32 support.

Fri Apr 17 12:22:22 1998  Bob Manson  <manson@charmed.cygnus.com>

	* Makefile.in: Add libstub.

	* configure.in: Ditto. Build libstub for targets that have cygmon
	support.

Tue Apr 14 18:01:55 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't set PICFLAG on ix86-cygwin32.

Tue Apr 14 12:24:45 1998  J. Kean Johnston  <jkj@sco.com>

	* configure.in: Recognise i[3456]96-*-sysv5* as a valid host, and
	use mh-sysv5 if specified.  Support gprof on SCO Open Server.

Tue Apr 14 11:33:51 1998  Krister Walfridsson <cato@df.lth.se>

	* configure: Define DEFAULT_M4 by searching PATH.
	* Makfile.in: Use DEFAULT_M4.

Mon Apr 13 15:37:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig: Add cygwin32 support.

	* Makefile.in, configure.in: Add libtool as a native only directory
	to configure and build.

Sun Apr 12 20:58:46 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INSTALL_MODULES): Remove texinfo.

Wed Apr  8 13:18:56 1998  Philippe De Muyter  <phdm@macqel.be>

	* Makefile.in (EXTRA_GCC_FLAGS): XFOO lines shortened.

Thu Apr  2 14:48:44 1998  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: add ash make rules
	* configure.in: add ash to native_only and host_tools lists

Thu Mar 26 12:53:20 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (all-gettext, all-intl): New targets.
	(ALL_MODULES): Added all-gettext, all-intl.
	(CROSS_CHECK_MODULES): Added check-gettext, check-intl.
	(INSTALL_MODULES): Added install-gettext, install-intl.
	(CLEAN_MODULES): Added clean-gettext, clean-intl.

	* configure.in (host_tools): Added gettext.
	(native_only): Likewise.
	(noconfigdirs) [various cases]: Likewise.
	(host_libs): Added intl.

Thu Mar 26 15:00:11 1998  Keith Seitz  <keiths@onions.cygnus.com>

	* configure: Do not disable building gdbtk for cygwin32 hosts.

Wed Mar 25 10:04:18 1998  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add thumb-coff target.
	* config.sub: Add thumb-coff target.

Wed Mar 25 11:49:12 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* Makefile.in: Revert yesterday's change.
	(all-target-winsup):  all-target-librx stays out of here.

Tue Mar 24 16:58:29 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* Makefile.in (TARGET_CONFIGDIRS, ALL_TARGET_MODULES,
	CONFIGURE_TARGET_MODULES, CHECK_TARGET_MODULES,
	INSTALL_TARGET_MODULES, CLEAN_TARGET_MODULES, all-target-winsup):
	Remove references to librx and libg++.

Tue Mar 24 18:28:12 1998  Eric Mumpower  <nocturne@cygnus.com>

	* Makefile.in (BASE_FLAGS_TO_PASS): Pass $(lispdir) down to
	recursive makes

Tue Mar 24 11:37:45 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (CC_FOR_TARGET): Use $(TARGET_SUBDIR) when passing -B
	for newlib directory.
	(CXX_FOR_TARGET): Likewise.

Mon Mar 23 11:30:21 1998  Jeffrey A Law  (law@cygnus.com)

	* ltconfig: Update after libtool/ltconfig.in change for
	hpux11.

Fri Mar 20 18:51:43 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Update to libtool 1.2.

Fri Mar 20 09:32:14 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (install-gcc): Don't specify LANGUAGES here.
	(install-gcc-cross): Instead, override LANGUAGES here.

1998-03-18  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): Set CONFIG_SITE to a
	non-existent file since /dev/null loses with bash 2.0/autoconf 2.12.

Wed Mar 18 09:24:59 1998  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add Thumb-pe target.

Tue Mar 17 16:59:00 1998  Syd Polk <spolk@cygnus.com>

	* Makefile.in - changed sn targets to snavigator
	* configure.in - changed sn targets to snavigator

Tue Mar 17 10:33:28 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* config-ml.in: After building symlink tree call make distclean
	if a Makefile got linked into ${ml_dir}/${ml_libdir}; this happens
	to be the case for libiberty.

Tue Mar 17 10:22:37 1998  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* configure: When making link, also check the current
	directory. The configure scripts may create one.

Fri Mar  6 01:02:03 1998  Richard Henderson  <rth@cygnus.com>

	* config.sub: Accept alphapca56 and alphaev6 properly.

Fri Mar  6 00:14:55 1998  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* configure.in: Revert 3 Jan change for powerpc-linux-gnulibc1.

Mon Feb 23 15:09:18 1998  Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de

	* config.sub (sco5): Fix typo.

Mon Feb 23 14:46:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL_MODULES): Move install-tcl before
	install-itcl.
	(install-itcl): Remove dependency on install-tcl.

Mon Feb 23 09:53:28 1998  Mark Alexander  <marka@cygnus.com>

	* configure.in: Remove libgloss from noconfigdirs for MN10300.

Thu Feb 19 13:40:41 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't build libgui for a cygwin32 target when not on
	a cygwin32 host.

Wed Feb 18 12:29:00 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* configure (redirect): Set to null, so default behavior of
	configure is now --verbose.

1998-02-16  Dave Love  <d.love@dl.ac.uk>

	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): Run configure with
	CONFIG_SITE=/dev/null to forestall lossage with site configuration.

Mon Feb 16 12:23:53 1998  Manfred Hollstein  <Manfred.Hollstein@ks.sel.alcatel.de>

	* Makefile.in (BASE_FLAGS_TO_PASS, EXTRA_TARGET_FLAGS): Really add
	this change to sync Makefile.in with its ChangeLog entries.

Thu Feb 12 15:03:08 1998  H.J. Lu  <hjl@gnu.org>

	* ltmain.sh (mkdir): Check that the directory doesn't exist
	before we exit with error, so that we don't get races during
	parallel builds.

Sat Feb  7 15:19:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Update from libtool 1.0i.

Fri Feb  6 01:33:52 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (BASE_FLAGS_TO_PASS): Don't pass PICFLAG and
	PICFLAG_FOR_TARGET.
	(EXTRA_TARGET_FLAGS): Don't pass PICFLAG_FOR_TARGET.

	* configure: Emit a definition for the new macro enable_shared
	into each Makefile.

Thu Feb  5 17:01:12 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* configure.in (host_tools, native_only): Add libtool.

Wed Feb  4 16:53:58 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: add target-gperf to noconfigdirs for Cygwin32.
	Fix typo in ming config comment.

Wed Feb  4 18:56:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig, ltmain.sh: Update from libtool 1.0h.

Mon Feb  2 19:38:19 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Add tic30 cases, and map c30 to tic30.

Sun Feb  1 02:40:41 1998  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (TARGET_CONFIGDIRS): Add libf2c.
	(ALL_TARGET_MODULES, CONFIGURE_TARGET_MODULES): Similarly
	(CHECK_TARGET_MODULES, INSTALL_TARGET_MODULES): Similarly
	(CLEAN_TARGET_MODULES): Similarly
	(all-target-libf2c): Add dependences.
	* configure.in (target_libs): Add libf2c.

Fri Jan 30 17:18:32 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: Remove expect from noconfigdirs when target
	is cygwin32.  OK to build expect and dejagnu with Canadian
	Cross.

Wed Jan 28 12:58:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Do build expect, dejagnu, and cvssrc for a cygwin32
	host.

	* config.guess: Use ${UNAME_MACHINE} rather than i386 for cygwin32
	and mingw32.

Wed Jan 28 10:26:37 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (BASE_FLAGS_TO_PASS): Remove passing $(local_prefix)
	here as it is not defined in the toplevel Makefile.

Tue Jan 27 23:25:06 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure (package_makefile_rules_frag): New variable, which names
	a file with generic rules, ...
	Change comment to mention we now have FIVE parts.
	* configure: Undo last change.

Tue Jan 27 23:15:55 1998  Lassi A. Tuura  <lat@iki.fi>

	* config.guess: More accurate determination of HP processor types.
	* config.sub: More accurate determination of HP processor types.

Sat Jan 24 01:59:45 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure (package_makefile_frag): Move inserting the
	${package_makefile_frag} to where it should be according
	to the comment.

Fri Jan 23 00:29:28 1998  Philip Blundell  <pb@nexus.co.uk>

	* config.guess: Add support for Linux/ARM.

Thu Jan 22 15:14:01 1998  Fred Fish  <fnf@cygnus.com>

	* .cvsignore: Remove *-info and *-install since they match
	release-info and mpw-install, which we don't want to just ignore.

Thu Jan 22 01:38:33 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in: Revert 3 Jan change for alpha-linux-gnulibc1.

Sat Jan 17 21:28:08 1998  Pieter Nagel <pnagel@epiuse.co.za>

	* Makefile.in (FLAGS_TO_PASS): Pass down gcc_include_dir and
	local_prefix to sub-make invocations.

Sat Jan 17 21:04:59 1998 H.J. Lu  (hjl@gnu.org)

	* configure.in: Check makefile fragments in the source
	directory.

Fri Jan 16 00:41:37 1998  Alexandre Oliva <oliva@dcc.unicamp.br>

	* configure.in: Check whether host and target makefile
	fragments exist before adding them to *_makefile_frag.

Wed Jan 14 23:39:10 1998  Bob Manson  <manson@charmed.cygnus.com>

	* configure.in (target_configdirs): Add cygmon for sparc64-elf.

Wed Jan 14 12:48:07 1998  Keith Seitz  <keiths@pizza.cygnus.com>

	* configure.in: Make sure we only replace RPATH_ENVVAR on
	lines which begin with RPATH_ENVVAR, i.e. add "^" to the
	regexp to sed.

	* Makefile.in (BASE_FLAGS_TO_PASS): Pass RRPATH_ENVVAR down
	to sub-makes.

1998-01-13  Lee Iverson   (leei@ai.sri.com)

	* config-ml.in (multi-do): LDFLAGS must include multilib
	designator.

Tue Jan 13 01:13:24 1998   Robert Lipe (robertl@dgii.com)

	* config.guess: Recognize i[3456]-i586-UnixWare7-sysv5.

Sun Jan  4 01:06:55 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* config.sub: Add mingw32 support.
	* configure.in: Likewise.

Sat Jan  3 12:11:05 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>

	* configure.in: Finalize support for {alpha|powerpc}*-*-linux-gnulibc1

Sun Dec 28 11:28:58 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INSTALL_TARGET): Do install-gcc first.
	* configure (gxx_include_dir): Provide a definition for subdirs
	which do not use autoconf.

Wed Dec 24 22:46:55 1997  Jeffrey A Law  (law@cygnus.com)

	* config.guess: Sync with egcs.  Picks up new alpha support,
	BeOS & some additional linux support.

Tue Dec 23 12:44:24 1997  Jeffrey A Law  (law@cygnus.com)

	* config.guess: HP 9000/803 is a PA1.1 machine.

Mon Dec 22 02:39:24 1997  Richard Henderson  <rth@cygnus.com>

	* configure.in: It's alpha*-...

Sun Dec 21 16:53:12 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* configure.in (host_makefile_frag, target_makefile_frag):
	Handle multiple config files.
	(alpha-*-linux*): Treat alpha-*-linux* as alpha-*-linux* and
	alpha-*-*.

Thu Dec 18 13:13:03 1997  Doug Evans  <devans@canuck.cygnus.com>

	* mkdep: New file.

Wed Dec 17 09:53:02 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (d30v-*-*): Allow configuring of libide, vmake, etc.

Tue Dec 16 17:36:05 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Add libgui directory.
	(GDB_TK): Add all-libgui.
	* configure.in: Add libgui directory.
	* configure: Add all-libgui to GDB_TK.

Mon Dec 15 16:12:28 1997  Nick Clifton  <nickc@cygnus.com>

	* config-ml.in (multidirs): Add m32r to multilib list.

Fri Dec 12 10:43:31 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>

	* Makefile.in (all-target-gperf): Change dependency to
	all-target-libstdc++.

Thu Dec 11 23:30:51 1997  Fred Fish  <fnf@ninemoons.com>

	* config.guess: Add BeOS support.

Wed Dec 10 15:10:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	Source directory cvs renamed to cvssrc:
	* configure.in (host_tools): Change cvs to cvssrc.
	(native_only): Likewise.
	(noconfigdirs) [various cases]: Likewise.
	* Makefile.in (ALL_MODULES): Change all-cvs to all-cvssrc.
	(CROSS_CHECK_MODULES): Change check-cvs to check-cvssrc.
	(INSTALL_MODULES): Change install-cvs to install-cvssrc.
	(CLEAN_MODULES): Change clean-cvs to clean-cvssrc.
	(all-cvssrc): Rename target from all-cvs.

Wed Dec  3 07:55:59 1997  Jeffrey A Law  (law@cygnus.com)

	* configure (gxx_include_dir): Fix thinko.

Tue Dec  2 10:55:34 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INSTALL_TARGET_CROSS): Define.
	(install-cross, install-gcc-cross): New targets.

Tue Dec  2 10:08:31 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (noconfigdirs): Add support for Thumb target.

	* config.sub (maybe_os): Add support for Thumb target.

Sun Nov 30 16:12:27 1997  Bob Manson  <manson@charmed.cygnus.com>

	* Makefile.in: Add rules for cygmon.

	* configure.in: Build cygmon for sparc-elf and sparclite-aout.

Thu Nov 27 01:31:30 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INSTALL_TARGET): Do install-gcc first.
	* configure (gxx_include_dir): Provide a definition for subdirs
	which do not use autoconf.

Wed Nov 26 11:53:33 1997  Keith Seitz  <keiths@onions.cygnus.com>

	* Makefile.in, configure, configure.in, ChangeLog: merge with foundry's
	11/18/97 build

Wed Nov 26 16:08:50 1997  Jeffrey A Law  (law@cygnus.com)

	* From Franz Sirl.
	* config.guess (powerpc*-*-linux): Handle glibc2 beta release
	found on RedHat Linux systems.

Fri Nov 21 09:51:01 1997  Jeffrey A Law  (law@cygnus.com)

	* config.guess (alpha stuff): Merge with FSF to avoid incorrect
	guesses.

Thu Nov 13 11:38:37 1997  Jeffrey A Law  (law@cygnus.com)

	* configure.in (i[3456]86-ncr-sysv4.3*): Tweak.

Mon Nov 10 15:23:21 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* ltmain.sh: If mkdir fails, check whether the directory was created
	anyhow by some other process.

Mon Nov 10 14:38:03 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (d30v-*-*): Configure all directories.

Sun Nov  9 17:36:20 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (d30v-*-*): Configure newlib, libiberty directories
	for the D30V.

Sat Nov  8 14:42:59 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (d30v-*-*): Configure target-libgloss on the D30V.

Fri Nov  7 10:34:09 1997  Rob Savoye  <rob@darkstar.cygnus.com>

	* include/libiberty.h: Add extern "C" { so it can be used with C++
	progrms.
	* include/remote-sim.h:  Add extern "C" { so it can be used with C++
	programs.

Thu Oct 30 11:09:29 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (d30v-*-*): Configure GCC now.

Mon Oct 27 13:17:24 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.in: Remove a "second pass" of tweaking noconfigdirs,
	is no longer needed.

Mon Oct 27 12:03:53 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in: check-target-libio depends on all-target-libstdc++.

Sun Oct 26 11:48:27 1997  Manfred Hollstein  (manfred@s-direktnet.de)

	* Makefile.in (bootstrap-lean): Combined with `normal' bootstrap
	targets using "$@" to provide support for similar but not identical
	targets without having to duplicate code.

Mon Oct 20 15:28:49 1997  Klaus K"ampf  <kkaempf@progis.de>

	* makefile.vms: Fix to work with DEC C.

Tue Oct  7 23:58:57 1997  Gavin Koch  <gavin@cygnus.com>

	* config.sub: Add mips-tx39-elf to marketing names.

Tue Oct  7 14:24:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ltmain.sh: Handle symlinks in generated script.

Wed Oct  1 13:11:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Handle autoconf style directory options: --bindir,
	--datadir, --includedir, --infodir, --libdir, --libexecdir,
	--mandir, --oldincludedir, --sbindir, --sharedstatedir,
	--sysconfdir.
	* Makefile.in (sbindir, libexecdir, sysconfdir): New variables.
	(sharedstatedir, localstatedir, oldincludedir): New variables.
	(BASE_FLAGS_TO_PASS): Pass down bindir, datadir, includedir,
	infodir, libdir, libexecdir, localstatedir, mandir, oldincludedir,
	sbindir, sharedstatedir, and sysconfdir.

Mon Sep 29 00:38:08 1997 Aaron Jackson <jackson@negril.msrce.howard.edu>

	* Makefile.in (bootstrap-lean): New target.

Wed Sep 24 18:06:27 1997  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* configure.in (d30v):  Remove tcl, tk, expect, gdb, itcl, tix, db,
	sn, and gnuserv from noconfigdirs.

Wed Sep 24 15:18:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ltmain.sh: Tweak shell pattern to avoid bug in NetBSD /bin/sh.

Thu Sep 18 23:58:27 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (cross): New target.

Thu Sep 18 21:43:23 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
			  Jeff Law	   <law@cygnus.com>

	* Makefile.in (bootstrap2, bootstrap3): New targets.
	(all-bootstrap): Remove outdated and confusing target.
	(bootstrap, bootstrap2, bootstrap3): Don't pass BOOT_CFLAGS down.

Thu Sep 18 15:37:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure (tooldir): enable_gdbtk=YES for cygwin32, NO for
	windows.  Consistent with gdb/configure.

1997-09-15 02:37  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Name Linux target fragment.

	* configure: Rewrite so that project Makefile fragment is inserted
	first and appears last in the resulting Makefile.

Tue Sep 16 09:55:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (install-itcl): Install tcl first.

Fri Sep 12 16:19:20 1997  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: remove bison from noconfigdirs for Cygwin32 host

Thu Sep 11 16:40:46 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* Makefile.in (local-distclean): Also remove mh-frag mt-frag.

	* configure.in (skipdirs): Add target-librx for Linux.
	(alpha-*-linux*): Use config/mh-elfalphapic and config/mt-elfalphapic.

Wed Sep 10 21:29:54 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (bootstrap): New target.

Wed Sep 10 15:19:22 1997  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Accept 'amigados' for backward compatability.

Mon Sep  8 20:46:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.guess: Merge with FSF.

Sun Sep  7 23:18:32 1997  Fred Fish  <fnf@ninemoons.com>

	* config.sub: Change 'amigados' to 'amigaos' to match current usage.

Sun Sep  7 15:55:28 1997  Gavin Koch  <gavin@cygnus.com>

	* config.sub: Add "marketing-names" patch.

Fri Sep  5 16:11:28 1997  Joel Sherrill  (joel@OARcorp.com)

	* configure.in (*-*-rtems*): Do not build libgloss for rtems.

Fri Sep  5 12:27:17 1997  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Handle v850-elf.

Wed Sep  3 22:01:58 1997  Fred Fish  <fnf@ninemoons.com>

	* .cvsignore (*-install): Remove.

Wed Sep  3 12:15:24 1997  Chris Provenzano  <proven@cygnus.com>

	* ltconfig: Set CONFIG_SHELL in libtool.
	* ltmain.sh: Use CONFIG_SHELL instead of /bin/sh

Mon Sep  1 16:45:44 1997  Jim Wilson  <wilson@cygnus.com>

	* configure.in (target_subdir): Set to libraries if enable_multilib.

Wed Aug 27 16:15:11 1997  Jim Wilson  <wilson@cygnus.com>

	* config.guess: Update from gcc directory.

Tue Aug 26 16:46:46 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (all-sim): Depends on all-readline.

Wed Aug 20 19:57:37 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (BISON, YACC): Use $$s.
	(all-bison): Depend on all-texinfo.

Tue Aug 19 01:41:32 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (BISON): Add -L flag.
	(YACC): Likewise.

Mon Aug 18 11:30:50 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (noconfigdirs): Add support for v850e target.

	* config.sub (maybe_os): Add support for v850e target.

Mon Aug 18 11:30:50 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (noconfigdirs): Add support for v850ea target.

	* config.sub (maybe_os): Add support for v850ea target.

Mon Aug 18 09:24:06 1997  Gavin Koch  <gavin@cygnus.com>

	* config.sub: Add mipstx39.  Delete r3900.

Mon Aug 18 17:20:10 1997  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (all-autoconf): Depends on all-texinfo.

Fri Aug 15 23:09:26 1997  Michael Meissner  <meissner@cygnus.com>

	* config-ml.in ({powerpc,rs6000}*-*-*): Update to current AIX and
	eabi targets.

Thu Aug 14 14:42:17 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Get CFLAGS and CXXFLAGS from Makefile, if possible.

	* configure: When handling a Canadian Cross, handle YACC as well as
	BISON.  Just set BISON to bison.  When setting YACC, prefer bison.
	* Makefile.in (all-bison): Depend upon all-texinfo.

Tue Aug 12 20:09:48 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (BISON): bison, not byacc or bison -y.
	(YACC): bison -y or byacc or yacc.
	(various): Add *-bison as appropriate.
	(taz): No need to mess with BISON anymore.

Tue Aug 12 22:33:08 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure: If OSTYPE matches *win32*, try to find a good value for
	CONFIG_SHELL.

Sun Aug 10 14:41:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (taz): Get the version number from AM_INIT_AUTOMAKE in
	configure.in if it is present.

Sat Aug  9 00:58:01 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (LD_FOR_TARGET): Change ld.new to ld-new.

Fri Aug  8 16:30:13 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config.sub: Recognize `arc' cpu.
	* configure.in: Likewise.
	* config-ml.in: Likewise.

Thu Aug  7 11:02:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in ($(INSTALL_X11_MODULES)): Depend upon installdirs.

Wed Aug  6 16:27:29 1997  Chris Provenzano  <proven@cygnus.com>

	* configure: Changed sed delimiter from ':' to '|' when
	attempting to substitute ${config_shell} for SHELL. On
	NT ${config_shell} may contain a ':' in it.

Wed Aug  6 12:29:05 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS): Fix for non-bash shells.

Wed Aug  6 00:42:35 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (AS_FOR_TARGET): Change as.new to as-new.

Tue Aug  5 14:08:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (NM_FOR_TARGET): Change nm.new to nm-new.

	* ylwrap: If the program is a relative path, force it to be
	absolute.

Tue Aug  5 12:12:44 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure (tooldir): Set BISON to `bison -y' and not just bison.

Mon Aug  4 22:59:02 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (CC_FOR_TARGET): When winsup/Makefile present,
	correctly specify the target build directory $(TARGET_SUBDIR)/winsup
	for libraries.

Mon Aug  4 12:40:24 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS): Fix handling of macros with values
	separated by spaces.

Thu Jul 31 19:49:49 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ylwrap: New file.
	* Makefile.in (DEVO_SUPPORT): Add ylwrap.

	* ltmain.sh: Handle /bin/sh at start of install program.

	* Makefile.in (DEVO_SUPPORT): Add ltconfig, ltmain.sh, and missing.

	* ltconfig, ltmain.sh: New files, from libtool 1.0.
	* missing: New file, from automake 1.2.

Thu Jul 24 12:57:56 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Treat tix like tk, putting it in X11_MODULES.  Add
	check-tk to CHECK_X11_MODULES.

Wed Jul 23 17:03:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Merge with FSF.

Tue Jul 22 19:08:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.guess: Merge with FSF.

Tue Jul 22 14:50:42 1997  Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>

	* configure: Treat msdosdjgpp like go32.
	* configure.in: Likewise.  Don't remove gprof for go32.

	* configure: Change Makefile.tem2 to Makefile.tm2.

Mon Jul 21 10:31:26 1997  Stephen Peters  <speters@cygnus.com>

	* configure.in (noconfigdirs): For alpha-dec-osf*, don't ignore grep.

Tue Jul 15 14:33:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* install-sh (chmodcmd): Set to null if the DST directory already
	exists.  Same as Nov 11th change.

Mon Jul 14 11:01:15 1997  Martin M. Hunt  <hunt@cygnus.com>

	* configure (GDB_TK): Needs itcl and tix.

Mon Jul 14 00:32:10 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* config.guess: Update from FSF.

Fri Jul 11 11:57:11 1997  Martin M. Hunt  <hunt@cygnus.com>

	* Makefile.in (GDB_TK): Depend on itcl and tix.

Fri Jul  4 13:25:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL_PROGRAM_ARGS): New variable.
	(INSTALL_PROGRAM): Use $(INSTALL_PROGRAM_ARGS).
	(INSTALL_SCRIPT): New variable.
	(BASE_FLAGS_TO_PASS): Pass down INSTALL_SCRIPT.
	* configure.in: If host is *-*-cygwin32*, set INSTALL_PROGRAM_ARGS
	to -x.
	* install-sh: Add support for -x option.

Mon Jun 30 15:51:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in, Makefile.in: Treat tix like itcl.

Thu Jun 26 13:59:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (WINDRES): New variable.
	(WINDRES_FOR_TARGET): New variable.
	(BASE_FLAGS_TO_PASS): Add WINDRES_FOR_TARGET.
	(EXTRA_HOST_FLAGS): Add WINDRES.
	(EXTRA_TARGET_FLAGS): Add WINDRES.
	(EXTRA_GCC_FLAGS): Add WINDRES.
	($(DO_X)): Pass down WINDRES.
	($(CONFIGURE_TARGET_MODULES)): Set WINDRES when configuring.
	* configure: Treat WINDRES like DLLTOOL, and WINDRES_FOR_TARGET like
	DLLTOOL_FOR_TARGET.

Wed Jun 25 15:01:26 1997  Felix Lee  <flee@cygnus.com>

	* configure.in: configure sim before gdb for win32-x-ppc

Wed Jun 25 12:18:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	Move gperf into the toplevel, from libg++.
	* configure.in (target_tools): Add target-gperf.
	(native_only): Add target-gperf.
	* Makefile.in (all-target-gperf): New target, depend on
	all-target-libg++.
	(configure-target-gperf): Empty rule.
	(ALL_TARGET_MODULES): Add all-target-gperf.
	(CONFIGURE_TARGET_MODULES): Add configure-target-gperf.
	(CHECK_TARGET_MODULES): Add check-target-gperf.
	(INSTALL_TARGET_MODULES): Add install-target-gperf.
	(CLEAN_TARGET_MODULES): Add clean-target-gperf.

Mon Jun 23 10:51:53 1997  Jeffrey A Law  (law@cygnus.com)

	* config.sub (mn10200): Recognize new basic machine.

Thu Jun 19 14:16:42 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* configure.in: Don't set ENABLE_MULTILIB, so we'll be passing
	--enable-multilib down to subdirs; setting TARGET_SUBDIR was enough.

Tue Jun 17 15:31:20 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* configure.in: If we're building mips-sgi-irix6* native, turn on
	ENABLE_MULTILIB and set TARGET_SUBDIR.

Tue Jun 17 12:20:59 1997  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (all-sn): Depend on all-grep.

Mon Jun 16 11:11:10 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Use mh-ppcpic and mt-ppcpic for powerpc*-* targets.

	* configure: Set CFLAGS and CXXFLAGS, and substitute them into
	Makefile.  From Jeff Makey <jeff@cts.com>.
	* Makefile.in: Add comment for CFLAGS and CXXFLAGS.

	* Makefile.in (DISTBISONFILES): Remove.
	(taz): Don't futz with DISTBISONFILES.  Change BISON to use
	$(DEFAULT_YACC).

	* configure.in: Build itl, db, sn, etc., when building for native
	cygwin32.

	* Makefile.in (LD): New variable.
	(EXTRA_HOST_FLAGS): Pass down LD.
	($(DO_X)): Likewise.

Mon Jun 16 11:10:35 1997  Philip Blundell  <Philip.Blundell@pobox.com>

	* Makefile.in (INSTALL): Use $(SHELL) when executing install-sh.

Fri Jun 13 10:22:56 1997  Bob Manson  <manson@charmed.cygnus.com>

	* configure.in (targargs): Strip out any supplied --build argument
	before adding our own. Always add --build.

Thu Jun 12 21:12:28 1997  Bob Manson  <manson@charmed.cygnus.com>

	* configure.in (targargs): Pass --build if we're doing
	a cross-compile.

Fri Jun  6 21:38:40 1997  Rob Savoye  <rob@chinadoll.cygnus.com>

	* configure: Use '|' instead of ":" as the separator in
	sed. Otherwise sed chokes on NT path names with drive
	designators. Also look for "?:*" as the leading characters in an
	absolute pathname.

Mon Jun  2 13:05:20 1997  Gavin Koch  <gavin@cygnus.com>

	* config.sub: Support for r3900.

Wed May 21 17:33:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Use install-sh, not install.sh.

Wed May 14 16:06:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (taz): Improve check for BISON so it doesn't try to
	apply it twice.

Fri May  9 17:22:05 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL_MODULES): Put install-opcodes before
	install-binutils.

Thu May  8 17:29:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Add automake targets.
	* configure.in (host_tools): Add automake.

Tue May  6 15:49:52 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Default CXX to c++, not gcc.
	* Makefile.in (CXX): Set to c++, not gcc.
	(CXX_FOR_TARGET): When cross, transform c++, not gcc.

Thu May  1 10:11:43 1997  Geoffrey Noer  <noer@cygnus.com>

	* install-sh: try appending a .exe if source file doesn't
	exist

Wed Apr 30 12:05:36 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* configure.in: Turn on multilib by default.
	(cross_only): Remove target-libiberty.

	* Makefile.in (all-gcc): Don't depend on libiberty.

Mon Apr 28 18:39:45 1997  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* config.guess: improve algorithm for recognizing Gnu Hurd x86.

Thu Apr 24 19:30:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (DEVO_SUPPORT): Add mpw-install.
	(DISTBISONFILES): Add ld/Makefile.in

Tue Apr 22 17:17:28 1997  Geoffrey Noer  <noer@pizza.cygnus.com>

	* configure.in: if target is cygwin32 but host isn't cygwin32,
	don't configure gdb tcl tk expect, not just gdb.

Mon Apr 21 13:33:39 1997  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Added gnuserv everywhere sn appears.

	* Makefile.in (ALL_MODULES): Added all-gnuserv.
	(CROSS_CHECK_MODULES): Added check-gnuserv.
	(INSTALL_MODULES): Added install-gnuserv.
	(CLEAN_MODULES): Added clean-gnuserv.
	(all-gnuserv): New target.

Thu Apr 17 13:57:06 1997  Per Fogelstrom  <pefo@openbsd.org>

	* config.guess: Fixes for MIPS OpenBSD systems.

Tue Apr 15 12:21:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL_XFORM): Remove.
	(BASE_FLAGS_TO_PASS): Remove INSTALL_XFORM.

	* mkinstalldirs: New file, copied from automake.
	* Makefile.in (installdirs): Rename from install-dirs.  Use
	mkinstalldirs.  Change all users.
	(DEVO_SUPPORT): Add mkinstalldirs.

Mon Apr 14 11:21:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	* install-sh: Rename from install.sh.
	* Makefile.in (INSTALL): Change install.sh to install-sh.
	(DEVO_SUPPORT): Likewise.

	* configure: Use ${config_shell} with ${moveifchange}.  From Thomas
	Graichen <graichen@rzpd.de>.

Fri Apr 11 16:37:10 1997  Niklas Hallqvist  <niklas@appli.se>

	* config.guess: Recognize OpenBSD systems correctly.

Fri Apr 11 17:07:04 1997  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* README, Makefile.in (ETC_SUPPORT): Remove references to
	cfg-paper*, configure.{texi,man,info*}._

Sun Apr  6 18:47:57 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Makefile.in (all.normal): Ensure that gcc is built after all
	the x11 - ie gdb - targets.

Tue Apr  1 16:28:50 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Don't run conf-a-gas.

Mon Mar 31 16:26:55 1997  Joel Sherrill  <joel@oarcorp.com>

	* configure.in (hppa1.1-*-rtems*): New target, like hppa-*-*elf*.

Sun Mar 30 12:38:27 1997  Fred Fish  <fnf@cygnus.com>

	* configure.in: Remove noconfigdirs case since gdb also
	configures and builds for tic80-coff.

Fri Mar 28 18:28:52 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Set cache_file to config.cache.
	* Makefile.in (local-distclean): Remove config.cache.

Wed Mar 26 18:49:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* COPYING: Update FSF address.

Wed Mar 26 10:38:25 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (tic80-*-*): Remove G++ libraries and libgloss from
	noconfigdirs.

Mon Mar 24 15:02:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (install-dirs): Don't crash if prefix, and hence
	MAKEDIRS, is empty.

Mon Mar 24 12:40:55 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config.sub: Tweak mn10300 entry.

Fri Mar 21 15:35:27 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (host_tools): Put sim before gdb, so gdb's
	configure.tgt can determine if the simulator was configured.

Sun Mar 16 16:07:08 1997  Fred Fish  <fnf@cygnus.com>

	* config.sub: Move BeOS $os case to be with other Cygnus
	local cases.

Sun Mar 16 01:34:55 1997  Martin Hunt <hunt@cygnus.com>

	* config.sub: Remove misplaced comment that broke Linux.

Sat Mar 15 22:50:15 1997  Fred Fish  <fnf@cygnus.com>

	* config.sub: Add BeOS support.

Mon Mar 10 13:30:11 1997  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (CHECK_X11_MODULES): Don't run check-tk.

Wed Mar  5 12:09:29 1997  Martin  <hunt@cygnus.com>

	* configure.in (noconfigdirs): Remove tcl and tk from
	noconfigdirs for cygwin32 builds.

Fri Feb 28 18:20:15 1997  Fred Fish  <fnf@cygnus.com>

	* configure.in (tic80-*-*): Remove ld from noconfigdirs.

Thu Feb 27 14:57:26 1997  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (GAS_SUPPORT_DIRS, BINUTILS_SUPPORT_DIRS): Remove
	make-all.com, use makefile.vms instead.

Tue Feb 25 18:46:14 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* config.sub: Accept -lnews*.

Tue Feb 25 13:19:14 1997  Andrew Cagney  <cagney@kremvax.tpgi.com.au>

	* configure.in (noconfigdirs): Disable target-newlib,
	target-examples and target-libiberty for d30v.

Fri Feb 21 17:56:25 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* configure.in (noconfigdirs): Enable ld for d30v.

Fri Feb 21 20:58:51 1997  Michael Meissner  <meissner@cygnus.com>

	* configure.in (tic80-*-*): Build compiler.

Sun Feb 16 15:41:09 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* configure.in (d30v-*): Remove sim directory from list of
	unsupported d30v directories

Tue Feb 18 17:32:42 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config.sub, configure.in: Add d30v target cpu.

Thu Feb 13 22:04:44 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: New file.
	* make-all.com: Remove.

Wed Feb 12 12:54:18 1997  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS): Add LIBGCC2_DEBUG_CFLAGS.

Sat Feb  8 20:36:49 1997  Michael Meissner  <meissner@cygnus.com>

	* Makefile.in (all-itcl): The rule is all-itcl, not all-tcl.

Tue Feb  4 11:39:29 1997  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (ALL_MODULES): Added all-db.
	(CROSS_CHECK_MODULES): Addec check-db.
	(INSTALL_MODULES): Added install-db.
	(CLEAN_MODULES): Added clean-db.

Mon Feb  3 13:29:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.guess: Merge with latest FSF sources.

Tue Jan 28 09:20:37 1997  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (ALL_MODULES): Added all-itcl.
	(CROSS_CHECK_MODULES): Added check-itcl.
	(INSTALL_MODULES): Added install-itcl.
	(CLEAN_MODULES): Added clean-itcl.

Thu Jan 23 01:44:27 1997  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: build gdb for mn10200

Fri Jan 17 15:32:15 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (all-target-winsup): Depend on all-target-libio.

Mon Jan 13 22:46:54 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (tic80-*-*): Turn off most targets right now.

Fri Jan  3 16:04:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (MAKEINFO): Check for the existence of the Makefile,
	rather than the makeinfo program.
	(do-info): Depend upon all-texinfo.

Tue Dec 31 16:00:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Remove uses of config/mh-linux.

	* config.sub, config.guess: Merge with latest FSF sources.

Fri Dec 27 23:04:33 1996  Fred Fish  <fnf@cygnus.com>

	* config.sub (case $basic_machine): Add tic80 entries.

Fri Dec 27 12:07:59 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub, config.guess: Merge with latest FSF sources.

Wed Dec 18 22:46:39 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-build.in: Build ld before gcc, use NewFolderRecursive.
	* mpw-config.in: Test for NewFolderRecursive.
	* mpw-install: Use symbolic name for startup filename.
	* mpw-README: Add various additional details.

Wed Dec 18 13:11:46 1996  Jim Wilson  <wilson@cygnus.com>

	* configure.in (mips*-sgi-irix6*): Remove binutils from noconfigdirs.

Wed Dec 18 10:29:31 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Do build gcc and the target libraries for
	the mn10200.

Wed Dec  4 16:53:05 1996  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: don't avoid building gdb for mn10300 any more
	* Makefile.in: double-quote GCC_FOR_TARGET line in EXTRA_GCC_FLAGS
	instead of single-quoting it.

Tue Dec  3 23:26:50 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* configure.in: Don't use --with-stabs on IRIX 6.

Tue Dec  3 09:05:25 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (m32r): Build gdb, libg++ now.

Sun Dec  1 00:18:59 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in (mips*-sgi-irix6*):  Remove gdb and related
	directories from noconfigdirs.

Tue Nov 26 11:45:33 1996  Kim Knuttila  <krk@cygnus.com>

	* config.sub (basic_machine): added mips16 configuration

Sat Nov 23 19:26:22 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.sub: Handle d10v-unknown.

Sat Nov 23 10:23:01 1996  Gavin Koch  <gavin@cygnus.com>

	* config.sub: Handle v850-unknown.

Thu Nov 21 16:19:44 1996  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: add findutils
	* configure.in: add findutils to list of host_tools

Wed Nov 20 10:09:01 1996  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Handle mn10200 and mn10300.

Tue Nov 19 16:35:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (d10v-*): Do not build librx.

Mon Nov 18 13:28:41 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in (mn10300): Build everything except gdb & libgloss.

Wed Nov 13 14:59:46 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* config.guess:  Patch for Dansk Data Elektronik servers,
	from Niels Skou Olsen <nso@dde.dk>.

	For ncr, use /bin/uname rather than uname, since GNU uname does not
	support -p.  Suggested by Mark Mitchell <mmitchell@usa.net>.

	Patch for MIPS R4000 running System V,
	from Eric S. Raymond <esr@snark.thyrsus.com>.

	Fix thinko for nextstep.

	Patch for OSF1 in i?86, from Dan Murphy <dlm@osf.org> via Harlan Stenn.

	Sat Jun 24 18:58:17 1995  Morten Welinder  <terra+@cs.cmu.edu>
	* config.guess: Guess mips-dec-mach_bsd4.3.

	Thu Oct 10 04:07:04 1996  Harlan Stenn <harlan@pfcs.com>
	* config.guess (i?86-ncr-sysv*):  Emit just enough of the minor
	release numbers.
	* config.guess (mips-mips-riscos*):  Emit just enough of the
	release number.

	Tue Oct  8 10:37:22 1996  Frank Vance <fvance@waii.com>
	* config.guess (sparc-auspex-sunos*):  Added.
	(f300-fujitsu-*): Added.

	Wed Sep 25 22:00:35 1996  Jeff Woolsey <woolsey@jlw.com>
	* config.guess:  Recognize a Tadpole as a sparc.

Wed Nov 13 00:53:09 1996  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* config.guess: Don't assume that NextStep version is either 2 or
	3.  NextStep 4 (aka OpenStep 4) has come out now.

Mon Nov 11 23:52:03 1996  David J. MacKenzie  <djm@churchy.gnu.ai.mit.edu>

	* config.guess: Support Cray T90 that reports itself as "CRAY TS".
	From Rik Faith <faith@cs.unc.edu>.

Fri Nov  8 11:34:58 1996  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>

	* config.sub: Contributions from bug-gnu-utils to:
	Support plain "hppa" (no version given) architecture, reported by
	OpenStep.
	OpenBSD like NetBSD.
	LynxOs is not a hardware supplier.

	* config.guess: Contributions from bug-gnu-utils to add support for:
	OpenBSD like NetBSD.
	Stratus systems.
	More Pyramid systems.
	i[n>4]86 Intel chips.
	M680[n>4]0 Motorola chips.
	Use unknown instead of lynx for hardware manufacturer.

Mon Nov 11 10:09:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* install.sh (chmodcmd): Set to null if the DST directory already
	exists.

Mon Nov 11 10:43:41 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc*-{eabi,elf,linux,rtem,sysv,solaris}*): Do
	not use mt-ppc target Makefile fragment any more.

Sun Nov  3 19:17:07 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure.in (*-*-windows):  Exclude everything but those dirs
	needed to build windows.

Tue Oct 29 16:41:31 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (all-target-winsup): Depend on all-target-librx.

Mon Oct 28 17:32:46 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure.in:  Exclude mmalloc from i386-windows.

Thu Oct 24 09:22:46 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* Undo my previous change.

Thu Oct 24 12:12:04 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS): Pass down GCC_FOR_TARGET
	unconditionally.
	(MAKEOVERRIDES): Define (revert this part of October 18 change).

Thu Oct 24 09:02:07 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* Makefile.in (FLAGS_TO_PASS):  Add $(HOST_FLAGS) to allow the
	host to add it's own flags.

Tue Oct 22 15:20:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Handle GCC_FOR_TARGET like CC_FOR_TARGET.

Fri Oct 18 13:37:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (CC_FOR_TARGET): Check for xgcc, not Makefile.
	(CXX_FOR_TARGET): Likewise.
	(GCC_FOR_TARGET): Define.
	(BASE_FLAGS_TO_PASS): Remove GCC_FOR_TARGET.
	(EXTRA_GCC_FLAGS): Define GCC_FOR_TARGET based on whether
	CC_FOR_TARGET was specified on the command line.
	(MAKEOVERRIDES): Don't define.

Thu Oct 17 10:27:56 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (m32r): Fix spelling of libg++ libs.

Thu Oct 10 10:37:17 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* config.sub (-apple*): Remove, now redundant.

Thu Oct 10 12:30:54 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Don't get confused by CPU-VENDOR-linux-gnu.

	* configure: Rework yesterday's sed script patch.

	* config.sub: Merge with FSF.

Wed Oct  9 17:24:59 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* config.guess:  Merge from FSF.

	1996-09-12  Richard Stallman  <rms@ethanol.gnu.ai.mit.edu>
	* config.guess: Use pc instead of unknown, for pc clone systems.
	Change linux to linux-gnu.

	Mon Jul 15 23:51:11 1996  Karl Heuer  <kwzh@gnu.ai.mit.edu>
	* config.guess: Avoid non-portable tr syntax.

Wed Oct  9 06:06:46 1996  Jeffrey A Law  (law@cygnus.com)

	* test-build.mk (HOLES): Add "xargs" for gdb.

	* configure: Avoid hpux10.20 sed bug.

Tue Oct  8 08:32:48 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure.in:  Add support for windows host
	(that is a build done under the Microsoft build environment).

Tue Oct  8 10:39:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Replace all uses of srcroot with s, to shrink
	command line lengths.

	Patches from Geoffrey Noer <noer@cygnus.com>:
	* configure.in: If configuring for newlib, pass --with-newlib to
	subdirectories.
	* Makefile.in (CC_FOR_TARGET): If winsup/Makefile exists, pass a
	-Bnewlib/ and -Lwinsup to gcc.
	(CXX_FOR_TARGET): Likewise.

Mon Oct  7 10:59:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (ETC_SUPPORT): Add configure.

Fri Oct  4 12:22:58 1996  Angela Marie Thomas (angela@cygnus.com)

	* configure.in: Use config/mh-dgux386 for i[345]86-dg-dgux
	host configuration file.

Thu Oct  3 09:28:25 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Break mn10x00 support into separate
	mn10200 and mn10300 configurations.
	* config.sub: Likewise.

Wed Oct  2 22:27:52 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Add lots of stuff to noconfigdirs for
	the mn10x00 targets.

	* config.sub, configure.in: Add mn10x00 support.

Wed Oct  2 15:52:36 1996  Klaus Kaempf  <kkaempf@progis.de>

	* make-all.com: Call conf-a-gas, not config-a-gas.

Tue Oct  1 01:28:41 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* configure.in (noconfigdirs): Don't build libgloss for arm-coff
	targets.

Mon Sep 30 14:24:01 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-README: Add much more detail for native PowerMac.
	* mpw-install: New file.
	* mpw-configure: Add --norecursion and --help options.
	* mpw-config.in: Translate readme and install files when
	copying to objdir.
	* mpw-build.in: Don't always depend on byacc and flex.
	(install-only-top): New action.

Fri Sep 27 17:39:44 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure.in:  You can now configure GDB for the v850.

Tue Sep 24 19:05:12 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.in (noconfigdirs): Don't configure any C++ dirs
	if targeting D10V.

Tue Sep 17 12:15:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Recognize mips64vr5000.

Mon Sep 16 17:00:52 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Use a single line for host_tools and native_only.

Mon Sep  9 12:21:30 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config.sub, configure.in: Add entries for m32r.

Thu Sep  5 13:52:47 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* Makefile.in (inet-install): Don't run install-gzip.

Wed Sep  4 17:26:13 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure.in:  Don't config lots of things for *-*-windows*.

Sat Aug 31 11:45:57 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Test for mpw-true, true, and null-command scripts.
	(host_libs, host_tools): Copy from configure.in.
	* mpw-configure: Don't complain about directories not found.

Thu Aug 29 16:44:58 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (i[345]86): Recognize i686 for pentium pro.
	(i[3456]86-*-dgux*): Use config/mh-sysv for the host configuration
	file.

	* config.guess (i[345]86): Ditto.

Mon Aug 26 18:34:42 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* configure.in (noconfigdirs): Removed gdb for D10V.

Thu Aug 22 17:13:52 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Remove ld, target-libio, target-libg++, and
	target-libstdc++ from noconfigdirs.

Wed Aug 21 18:56:38 1996  Fred Fish  <fnf@cygnus.com>

	* configure: Fix three locations where shell scripts were
	being run directly rather than with config_shell.

Tue Aug 20 13:08:47 1996  J.T. Conklin  <jtc@hippo.cygnus.com>

	* configure.in (v850-*-*): Set up initial $noconfigdirs.
	* config.sub (basic_machine): Recognize v850.

Thu Aug 15 12:19:33 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Handle multiple enable/disable options and
	pass them down recursively, handle -c and -s flags appropriately
	depending on choice of compiler, add escape mechanism for
	quoted arguments to gC.

Mon Aug 12 13:15:13 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc*-*-*): For eabi, system V.4, Linux, and
	solaris targets, use config/mt-ppc to set C{,XX}FLAGS_FOR_TARGETS
	so that -mrelocatable-lib and -mno-eabi are used.

	* Makefile.in (CONFIGURE_TARGET_MODULES): If target compiler does
	not support --print-multi-lib, don't abort.

Thu Aug  8 12:18:59 1996  Klaus Kaempf  <kkaempf@progis.de>

	* make-all.com: Run config-a-gas.
	* setup.com: Don't copy subdirectory files around.

Tue Jul 30 17:49:31 1996  Brendan Kehoe  <brendan@cygnus.com>

	* configure.in (*-*-ose): Remove exclusion of libgloss for this
	target, it now compiles correctly.

Sat Jul 27 15:10:43 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Generate Mac include for elf/dwarf2.h.

Tue Jul 23 10:47:04 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* configure.in (d10v-*-*): Remove ld from $noconfigdirs.

Mon Jul 22 13:28:51 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* configure.in (native_only): Add prms.

Mon Jul 22 12:27:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (GAS_SUPPORT_DIRS): Add make-all.com and setup.com.
	(BINUTILS_SUPPORT_DIRS): Likewise.

Thu Jul 18 12:55:40 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (d10v-*-*): Don't configure ld or gdb until the
	d10v support is added.

Wed Jul 17 14:33:09 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* configure.in (d10v-*-*): New target.

Mon Jul 15 11:53:00 1996  Jeffrey A Law  (law@cygnus.com)

	* config.guess (HP 9000/811): Recognize this as a PA1.1
	machine.

Fri Jul 12 23:21:17 1996  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (do-tar-gz): New target, split out from tail end of
	taz target.  Run each command separately, don't use pipes.
	(taz): Use it.

Fri Jul 12 12:08:04 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Look for g-mpw-make.sed in config/mpw.
	* mpw-build.in: No builds should depend on building byacc or flex,
	they are assumed to be installed already.

Fri Jul 12 09:52:52 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (CONFIGURE_TARGET_MODULES): Set r environment
	variable that CC_FOR_TARGET needs.

Thu Jul 11 10:09:45 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (CONFIGURE_TARGET_MODULES): Determine if the multlib
	options have changed since the last time the subdirectory was
	configured, and if it has, reconfigure.
	(CLEAN_TARGET_MODULES): Delete multilib.out and tmpmulti.out, which
	CONFIGURE_TARGET_MODULES uses to remember the old multilib options.

Wed Jul 10 18:56:59 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (ALL_MODULES,CROSS_CHECK_MODULES,INSTALL_MODULES,
	CLEAN_MODULES): Add bash.
	(all-bash): New target.

Mon Jul  8 17:33:14 1996  Jim Wilson  <wilson@cygnus.com>

	* configure.in (mips-sgi-irix6*): Use mh-irix6 instead of mh-irix5.

Mon Jul  1 13:31:35 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.sub (basic_machine): Recognize d10v as a valid processor.

Fri Jun 28 12:14:35 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Add support for --bindir.
	* mpw-build.in: Use a GCC-specific build script for GCC actions.

Wed Jun 26 17:20:12 1996  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: add bash, time, gawk to list of hosttools and things
	to only build for native toolchains

Tue Jun 25 23:09:03 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (docdir): Remove.

Tue Jun 25 19:00:08 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (datadir): Set to $(prefix)/share.

Mon Jun 24 23:26:07 1996  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: build diff and patch for cygwin32-hosted
	toolchains.

Mon Jun 24 15:01:12 1996  Joel Sherrill  <joel@merlin.gcs.redstone.army.mil>

	* config.sub: Accept -rtems*.

Sun Jun 23 22:41:54 1996  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: enable dosrel for cygwin32-hosted builds,
	        remove diff from the list of things not buildable
	        via Canadian Cross

Sat Jun 22 11:39:01 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (TARGET_SUBDIR): Move comment to previous line so we
	don't get ". ".

Fri Jun 21 17:24:48 1996  Jim Wilson  <wilson@cygnus.com>

	* configure.in (mips*-sgi-irix6*): Set noconfigdirs appropriately.

Thu Jun 20 16:57:40 1996  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (taz): Handle case where tex3patch didn't even get
	checked out.  Also, if it was found, put the symlink in a new util
	subdirectory.

Thu Jun 20 12:20:33 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.guess (*:Linux:*:*): Add support for PowerPC Linux.

Tue Jun 18 14:24:12 1996  Klaus Kaempf  (kkaempf@progis.de)

	* config.sub: Recognize -openvms.
	* configure.in (alpha*-*-*vms*): Set noconfigdirs.
	* make-all.com, setup.com: New files.

Mon Jun 17 16:34:46 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (taz): tex3patch moved to texinfo/util.

Sat Jun 15 17:13:25 1996  Geoffrey Noer <noer@cygnus.com>

	* configure: enable_gdbtk=no for cygwin32-hosted toolchains
	* configure.in: remove make from disable-if-Can-Cross list
		enable gdb if ${host} and ${target} are cygwin32

Fri Jun  7 18:16:52 1996  Harlan Stenn <harlan@pfcs.com>

	* config.guess (i?86-ncr-sysv*):  Emit minor release numbers.
	Recognize the NCR 4850 machine and NCR Pentium-based platforms.

Wed Jun  5 00:09:17 1996  Per Bothner  <bothner@wombat.gnu.ai.mit.edu>

	* config.guess:  Combine mips-mips-riscos cases, and use cpp to
	distinguish sysv/svr4/bsd variants.
	Based on a patch from Harlan Stenn <harlan@pfcs.com>.

Fri Jun  7 14:24:49 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* configure.in: Added copyright notice.
	* move-if-change: Added copyright notice.

Thu Jun  6 16:27:05 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpcle-*-solaris*): Until we get shared
	libraries working, don't build gdb, sim, make, tcl, tk, or
	expect.

Tue Jun  4 20:41:45 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* config.guess:  Merge with FSF:

	Mon Jun  3 08:49:14 1996  Karl Heuer  <kwzh@gnu.ai.mit.edu>
	* config.guess (*:Linux:*:*): Add guess for sparc-unknown-linux.

	Fri May 24 18:34:53 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
	* config.guess (AViiON:dgux:*:*): Fix typo in recognizing mc88110.

	Fri Apr 12 20:03:59 1996  Per Bothner  <bothner@spiff.gnu.ai.mit.edu>
	* config.guess:  Combine two OSF1 rules.
	Also recognize field test versions.  From mjr@zk3.dec.com.
	* config.guess (dgux):  Use /usr/bin/uname rather than uname,
	because GNU uname does not support -p.  From pmr@pajato.com.

Tue Jun  4 11:07:25 1996  Tom Tromey  <tromey@csk3.cygnus.com>

	* Makefile.in (MAKEDIRS): Removed $(tooldir).

Tue May 28 12:30:50 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-README: Document GCCIncludes.

Sun May 26 15:16:27 1996  Fred Fish  <fnf@cygnus.com>

	* configure.in (alpha-*-linux*): Set enable_shared to yes.

Tue May 21 15:41:39 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Handle --enable-FOO and --disable-FOO.

Mon May 20 10:12:29 1996  Geoffrey Noer  <noer@cygnus.com>

	* configure.in (*-*-cygwin32): Configure make.

Tue May  7 14:19:42 1996  Tom Tromey  <tromey@snuffle.cygnus.com>

	* Makefile.in (inet-install): Quote value of INSTALL_MODULES.

Fri May  3 08:57:17 1996  Tom Tromey  <tromey@lisa.cygnus.com>

	* Makefile.in (all-inet): Depend on all-perl.

	* Makefile.in (inet-install): New target.

	* Makefile.in (all-inet): Depend on all-tcl.
	(all-inet): Depend on all-send-pr.

Tue Apr 30 13:55:51 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpcle-*-solaris*): Turn off tk and tcl
	temporarily.

Thu Apr 25 11:48:20 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't configure --with-gnu-ld on AIX.

Thu Apr 25 06:33:36 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* configure.in (powerpcle-*-solaris*): Turn off gdb temporarily.

Tue Apr 23 09:07:39 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* Makefile.in (ALL_MODULES): Added all-inet.
	(CROSS_CHECK_MODULES): Added check-inet.
	(INSTALL_MODULES): Added install-inet.
	(CLEAN_MODULES): Added clean-inet.
	(all-indent): New target.

	* configure.in (host_tools): Added inet.
	(native_only): Added inet.
	(noconfigdirs): Added inet.

Fri Apr 19 15:35:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't configure libgloss if we are not configuring
	newlib.

Wed Apr 17 19:30:01 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* configure.in: Don't configure libgloss for unsupported
	architectures.

Tue Apr 16 11:17:05 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (CLEAN_MODULES): Add clean-apache.

Mon Apr 15 15:09:05 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* Makefile.in (ALL_MODULES): Include all-apache.
	(CROSS_CHECK_MODULES): Include check-apache.
	(INSTALL_MODULES): Include install-apache.
	(all-apache): New target.

	* configure.in: Added apache everywhere perl is seen.

Mon Apr 15 14:59:13 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in: Add support for clean-{module} and
	clean-target-{module} rules.

Wed Apr 10 21:37:41 PDT 1996  Marilyn E. Sander <msander@cygnus.com>

	* configure.in (*-*-ose) do not build libgloss.

Mon Apr  8 16:16:20 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.guess (prep*:SunOS:5.*:*): Turn into
	powerpele-unknown-solaris2.

Mon Apr  8 14:45:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Permit --enable-shared to specify a list of
	directories.

Fri Apr  5 08:17:57 1996  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (host==solaris): Pass only the first word of $CC
	to /usr/bin/which when checking if we're using /usr/ccs/bin/cc.

Fri Apr  5 03:16:13 1996  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Makefile.in (BASE_FLAGS_TO_PASS): pass down $(MAKE).

Thu Mar 28 14:11:11 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* Makefile.in (ALL_MODULES): Include all-perl.
	(CROSS_CHECK_MODULES): Include check-perl.
	(INSTALL_MODULES): Include install-perl.
	(ALL_X11_MODULES): Include all-guile.
	(CHECK_X11_MODULES): Include check-guile.
	(INSTALL_X11_MODULES): Include install-guile.
	(all-perl): New target.
	(all-guile): New target.

	* configure.in (host_tools): Include perl and guile.
	(native_only): Include perl and guile.
	(noconfigdirs): Don't build guile and perl; no ports have been
	done.

Tue Mar 26 21:18:50 1996  Andrew Cagney  <cagney@kremvax.highland.com.au>

	* configure (--enable-*): Handle quoted option lists such as
	--enable-sim-cflags='-g0 -O' better.

Thu Mar 21 11:53:08 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in ({,inst}all-target): New rule so we can make and
	install all of the target directories easily.

Wed Mar 20 18:10:57 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.in: Add missing global flag in sed substitution when
	deleting `target-' from ${configdirs}.

Thu Mar 14 19:15:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (DO_X): Don't get confused if CC contains `=' in an
	option.

	* configure.in (mips*-nec-sysvr4*): Use a host_makefile_frag of
	config/mh-necv4.

	* install.sh: Correct misspelling of transformbasename.

	* config.guess: Recognize mips-*-sysv*.

Mon Mar 11 15:36:42 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* config.sub: Recognize mon960.

Sun Mar 10 13:18:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Restore Canadian Cross handling of BISON and LEX,
	removed in Feb 20 change.

Fri Mar  8 20:07:09 1996  Per Bothner  <bothner@kalessin.cygnus.com>

	* README:  Suggestions from Torbjorn Granlund <tege@matematik.su.se>:
	Mention make install.  Remove the old copyright date as well the
	clumsy and rather pointless copyright on the README file.

Fri Mar  8 17:51:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): If there is a
	Makefile after running symlink-tree, then run `make distclean' to
	avoid clobbering any generated files in srcdir.

Tue Mar  5 08:21:44 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (m68k-*-netbsd*): Build everything now.

Wed Feb 28 12:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (taz): Fix quoting.

Tue Feb 27 11:33:57 1996  Doug Evans  <dje@charmed.cygnus.com>

	* configure.in (sparclet-*-*): Build everything now.

Tue Feb 27 14:31:51 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.in (m68k-*-linux*): New host.

Mon Feb 26 14:32:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Check for bison before byacc.

Tue Feb 20 23:12:35 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* Makefile.in configure:  Change the way LEX and BISON/YACC are
	set.  configure now defines DEFAULT_LEX and DEFAULT_YACC by
	searching PATH.  These are used as fallbacks by Makefile.in if
	flex/bison/byacc aren't in objdir.

Mon Feb 19 11:45:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Make everything which depends upon all-bfd also
	depend upon all-opcodes, in case --with-commonbfdlib is used.

Thu Feb 15 19:50:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (host *-*-cygwin32): Don't build gdb if we are
	building NT native compilers on Unix.

Thu Feb 15 17:42:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't get CC from the host Makefile fragment if we
	can find gcc in PATH, or if this is a Canadian Cross.  Move the
	Solaris test for /usr/ucb/cc to the post target script, just after
	the compiler sanity test.

Wed Feb 14 16:57:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Merge with FSF.

Tue Feb 13 14:27:48 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (RPATH_ENVVAR): New variable.
	(REALLY_SET_LIB_PATH): Use it.
	* configure.in: On HP/UX, set RPATH_ENVVAR to SHLIB_PATH.

Mon Feb 12 15:28:49 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config.sub, configure.in: Recognize sparclet cpu.

Mon Feb 12 15:33:59 1996  Christian Bauernfeind <chrisbfd@theorie3.physik.uni-erlangen.de>

	* config.guess:  Support m68k-cbm-sysv4.

Sat Feb 10 12:06:42 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config.guess (*:Linux:*:*): Guess m68k-unknown-linux and
	m68k-unknown-linuxaout from linker help string.  Put quotes around
	$ld_help_string.

Thu Dec  7 09:03:24 1995  Tom Horsley  <Tom.Horsley@mail.hcsc.com>

	* config.guess (powerpc-harris-powerunix): Add guess for port
	to new target.

Thu Feb  8 15:37:52 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config.guess (UNAME_VERSION): Recognize X4.x as an OSF version.

Mon Feb  5 16:36:51 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: If --enable-shared was used, set SET_LIB_PATH to
	$(REALLY_SET_LIB_PATH) in Makefile.
	* Makefile.in (SET_LIB_PATH): New variable.
	(REALLY_SET_LIB_PATH): New variable.
	($(DO_X)): Use $(SET_LIB_PATH).
	(install.all, gcc-no-fixedincludes, $(ALL_MODULES)): Likewise.
	($(NATIVE_CHECK_MODULES), $(CROSS_CHECK_MODULES)): Likewise.
	($(INSTALL_MODULES), $(CONFIGURE_TARGET_MODULES)): Likewise.
	($(ALL_TARGET_MODULES), $(CHECK_TARGET_MODULES)): Likewise.
	($(INSTALL_TARGET_MODULES), $(ALL_X11_MODULES)): Likewise.
	($(CHECK_X11_MODULES), $(INSTALL_X11_MODULES)): Likewise.
	(all-gcc, all-bootstrap, check-gcc, install-gcc): Likewise.
	(install-dosrel): Likewise.
	(all-opcodes): Depend upon all-libiberty.

Sun Feb  4 16:51:11 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* config.guess (*:CYGWIN*): New

Sat Feb  3 10:42:35 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (all-target-winsup): All all-target-libiberty.

Fri Feb  2 17:58:56 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (noconfigdirs): Add missing # in front of comment.

Thu Feb  1 14:38:13 1996  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: add second pass to things added to noconfigdirs
	so *-gm-magic can exclude libgloss properly.

Thu Feb  1 11:10:16 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure (extralibs_name, rez_name): Set correctly
	for MWC68K compiler.

	* mpw-README: Add more info on the necessary build tools.

Thu Feb  1 10:22:38 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* configure.in, config.sub: Recognize cygwin32.

Wed Jan 31 14:17:10 1996  Richard Henderson  <rth@tamu.edu>

	* config.guess, config.sub: Recognize A/UX.

Wed Jan 31 13:52:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Merge with gcc/config.sub.

Thu Jan 25 11:01:10 1996  Raymond Jou  <rjou@mexican.cygnus.com>

	* mpw-build.in (do-binutils): Add build of stamps.

Thu Jan 25 17:05:26 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config.sub: Add recognition for mips64vr4100*-* targets.

Wed Jan 24 12:47:55 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* test-build.mk: Add checking of `hpux9' rather than just `hpux'.
	Add creation of gconfigargs with `--enable-shared' turned on.
	($(host)-stamp-stage2-configured): Pass $(gconfigargs).
	($(host)-stamp-stage3-configured): Likewise.
	(HOLES): Add chatr and ldd.
	(i386-ncr-sysv4.3*): Add use of /usr/ccs/bin in the PATH and HOLE_DIRS.

Wed Jan 24 20:32:30 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>

	* configure: Pass --nfp to recursive configures.

Mon Jan 22 10:41:56 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* Makefile.in (DLLTOOL): New.
	(DLLTOOL_FOR_TARGET): New.
	(EXTRA_HOST_FLAGS): Pass down DLLTOOL.
	(EXTRA_TARGET_FLAGS): Ditto.
	(EXTRA_GCC_FLAGS): Ditto.
	(CONFIGURE_TARGET_MODULES): Ditto.
	(DO_X): Ditto.
	* configure: Add DLLTOOL.

Fri Jan 19 13:30:15 1996  Stan Shebs  <shebs@andros.cygnus.com>

	SCO OpenServer 5 changes from Robert Lipe <robertl@dgii.com>:
	* configure.in (i[345]86-*-sco3.2v5*): Use mh-sysv instead of
	mh-sco, since old workarounds no longer needed, and don't
	build ld, since libraries have weak symbols in COFF.

Sun Jan 14 23:01:31 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (CONFIGURE_TARGET_MODULES): Add missing ';'.

Fri Jan 12 15:25:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Make sure that ${CC} can be used to compile an
	executable.

Sat Jan  6 07:23:33 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* Makefile.in (all-gdb): Depend on $(GDB_TK).
	* configure (GDB_TK): Set GDB_TK to either "all-tcl all-tk" or
	nothing depending on whether gdbtk is being built.

Wed Jan  3 17:54:41 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (newlib.tar.gz): Delete building of newlib's info files.

Mon Jan  1 19:09:14 1996  Brendan Kehoe  <brendan@rtl.cygnus.com>

	* configure.in (noconfigdirs): Put ld or gas in this early, if the
	user specifically used --with-gnu-ld=no or --with-gnu-as=no.

Sat Dec 30 16:08:57 1995  Doug Evans  <dje@canuck.cygnus.com>

	* config-ml.in: Add support for
	--disable-{softfloat,m68881,m68000,m68020} on m68*-*-*.
	Simplify setting of multidirs from --disable-foo.

Fri Dec 29 07:56:11 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS): If any of the make variables
	LANGUAGES, BOOT_CFLAGS, STMP_FIXPROTO, LIMITS_H_TEST,
	LIBGCC1_TEST, LIBGCC2_CFLAGS, LIBGCC2_INCLUDES, and ENQUIRE are
	non-empty, pass them on to the	GCC make.
	(all-bootstrap): New rule that is like all-gcc, except it executes
	the GCC bootstrap rule instead of the GCC all rule.

Wed Dec 27 15:51:48 1995  Doug Evans  <dje@canuck.cygnus.com>

	* config-ml.in (ml_realsrcdir): New, to account for ${subdir}.

Tue Dec 26 11:45:31 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.guess (AViiON:dgux:*:*): Update from FSF to add pentium
	DG/UX support.

Fri Dec 15 10:01:27 1995  Stan Cox  <coxs@dg-rtp.dg.com>

	* config.sub (i*86*) Change [345] to [3456]

Wed Dec 20 17:41:40 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* configure.in (noconfigdirs): Add gas or ld if --with-gnu-as=no or
	--with-gnu-ld=no.

Wed Dec 20 15:15:35 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config-ml.in (rs6000*, powerpc*): Add switches to control which
	AIX multilibs get built.

Mon Dec 18 17:55:46 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (i386-win32): Don't build expect if we're not
	building the tcl subdir.

Mon Dec 18 11:47:19 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* Makefile.in: (configure-target-examples, all-target-examples):
	New targets, configure and build example programs.

Fri Dec 15 16:13:03 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: If an mpw-config.in generated a file mk.sed,
	use it as input to sedit the generated MPW makefile.
	* mpw-README: Add a suggestion about Gestalt.h.

Wed Dec 13 16:43:51 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Accept *-*-ieee*.

Tue Dec 12 11:52:57 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (local-distclean): Remove $(TARGET_SUBDIR).  From
	Ronald F. Guilmette <rfg@monkeys.com>.

Mon Dec 11 15:31:58 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (host==powerpc-pe): Add many directories to noconfigdirs
	for powerpc-pe native.
	(target==i386-win32): add tcl, make to noconfigdirs if canadian cross.
	(target==powerpc-pe): duplicate i386-win32 entry.

Sat Dec  9 14:58:28 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* configure.in (noconfigdirs): Exclude target-newlib for all versions
	of vxworks, not just vxworks5.1.

Mon Dec  4 12:05:40 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Add support for exec-prefix.

Mon Dec  4 10:22:50 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* config.guess: Recognize HP model 816 machines as having
	a PA1.1 processor.

Mon Dec  4 12:38:15 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Ignore new autoconf configure options.

Thu Nov 30 16:57:33 1995  Per Bothner  <bothner@wombat.gnu.ai.mit.edu>

	* config.guess:  Recognize Pentium under SCO.
	From Robert Lipe <robertl@arnet.com>.

Wed Nov 29 13:49:08 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (noconfigdirs): Disable target-libio on v810-*-*.

Wed Nov 29 12:12:01 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't configure gas for alpha-dec-osf*.

Tue Nov 28 17:16:48 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Default to --with-stabs for some targets for which
	it makes sense: mips*-*-*, alpha*-*-osf*, i[345]86*-*-sysv4* and
	i[345]86*-*-unixware*.

Mon Nov 27 13:44:15 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config-ml.in: Get list of multidirs using gcc --print-multi-lib
	rather than basing it on the target.  Simplify handling of options
	controlling which directories to configure.  Remove extraneous
	slash in multi-clean target.

Fri Nov 24 17:29:29 1995  Doug Evans  <dje@deneb.cygnus.com>

	* config-ml.in: Prefix more variables with ml_ so they don't collide
	with configure's.

Wed Nov 22 11:27:02 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Don't turn -v into --v.

Tue Nov 21 16:48:02 1995  Doug Evans  <dje@deneb.cygnus.com>

	* configure.in (targargs): Fix typo.

	* Makefile.in (DEVO_SUPPORT): Add symlink-tree.

Tue Nov 21 14:08:28 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Strip --host and --target options from
	CONFIG_ARGUMENTS, and always configure for --host only.  Add
	--with-cross-host option when building with a cross-compiler.
	* configure: Canonicalize the arguments put into config.status by
	always using `=' for an option with an argument.  Pass a presumed
	--host or --target explicitly.

Fri Nov 17 17:50:30 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* config.sub: Merge -macos*, -magic*, -pe*, and -win32 cases
	into general OS recognition case.

Fri Nov 17 17:42:25 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (target_configdirs): add target-winsup only
	for win32 target systems.

Thu Nov 16 14:04:47 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (all-target-libgloss): Depend upon
	configure-target-newlib, since when libgloss is built it looks to
	see if the newlib directory exists.

Wed Nov 15 14:47:52 1995  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (DEVO_SUPPORT): Use config-ml.in instead of
	cfg-ml-*.in.

Wed Nov 15 11:45:23 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Handle LD and LD_FOR_TARGET when configuring a
	Canadian Cross.

Tue Nov 14 14:56:11 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (target_libs): add target-winsup.
	(target==i386-win32): add patch diff flex make to $noconfigdirs.
	(target==ppcle-pe): remove ld from $noconfigdirs.

Tue Nov 14 01:25:50 1995  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (CONFIGURE_TARGET_MODULES): Pass --with-target-subdir.
	Preserve relative path names in $srcdir.  Build symlink tree if
	configuring cross target dir and srcdir=. (= no VPATH support).
	(configure-target-libg++): Depend on configure-target-librx.
	* cfg-ml-com.in, cfg-ml-pos.in: Deleted.
	* config-ml.in: New file.
	* symlink-tree: New file.
	* configure: Ensure srcdir="." if that's what it is.

Mon Nov 13 12:34:20 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-README: Clarify some phrasing, add notes about CodeWarrior
	includes and FLEX_SKELETON setting.
	* mpw-configure (--with-gnu-ld): New option, controls whether
	to use PPCLink or ld with PowerMac GCC.
	* mpw-build.in (all-grez, do-grez, install-grez): New targets.
	* mpw-config.in: Configure grez if targeting Mac.

	* config.sub: Accept pmac and pmac-mpw as names for PowerMacs,
	accept mpw and mac-mpw as names for m68k Macs, change macos7 to
	just macos.
	* configure.in: Configure grez resource compiler if targeting Mac.
	* Makefile.in (all-grez, install-grez): New targets.

Wed Nov  8 17:33:51 1995  Jason Merrill  <jason@yorick.cygnus.com>

	* configure: CXX defaults to gcc, not g++.  If we find
	gcc in the path, set CC to gcc -O2.

Tue Nov  7 15:45:17 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Default ${build} correctly.  Avoid picking up extra
	spaces when reading CC and CXX from Makefile.  When doing a
	Canadian Cross, use plausible default values for numerous
	variables.
	* configure.in: When doing a Canadian Cross, don't try to
	configure tools whose configure script can't handle it.

Mon Nov  6 19:32:17 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* cfg-ml-com.in (sh-*-*): Add m2 and ml/m2 to multidirs.

Sun Nov  5 00:15:41 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure:  Remove dubious bug reporting address.

Fri Nov  3 08:17:54 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in ($(CONFIGURE_TARGET_MODULES)):  If subdir has
	configure script, run that instead of this directory's configure.
	In either case, print a message that we're configuring the sub-dir.

Thu Nov  2 23:23:36 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure.in: Before checking for the existence of various files,
	use sed to filter out "target-".

Thu Nov  2 13:24:56 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (DO_X): Split rule to decrease command line length
	for systems with small ARG_MAX values.  From phdm@info.ucl.ac.be
	(Philippe De Muyter).

Wed Nov  1 15:18:35 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Makefile.in (all-patch): depend on all-libiberty.

Wed Nov  1 12:23:20 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: If the only directory in target_configdirs which
	actually exists is libiberty, then set target_configdirs to empty,
	to avoid trying to build a target libiberty in a gas or gdb
	distribution.

Tue Oct 31 17:52:39 1995  J.T. Conklin  <jtc@slave.cygnus.com>

	* configure.in (host_makefile_frag): Use m68k-sun-sunos* instead
	of m68k-sun-* when selecting mh-sun3 to avoid matching NetBSD/sun3
	systems.

Tue Oct 31 16:57:32 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* configure.in (copy_dirs): Use sys-include instead of include
	for --with-headers option.

Tue Oct 31 10:29:36 1995  steve chamberlain  <sac@slash.cygnus.com>

	* Makefile.in, configure.in: Make winsup builds work with
	new scheme.

Mon Oct 30 18:57:09 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Build the linker on AIX.

Mon Oct 30 12:27:16 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (CC_FOR_TARGET, CXX_FOR_TARGET):  Add $(TARGET_SUBDIR)
	where needed.

Mon Oct 30 12:45:25 1995  Doug Evans  <dje@cygnus.com>

	* Makefile.in (all-gcc): Fix typo.

Sat Oct 28 10:27:59 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in ($(CHECK_TARGET_MODULES)):  Fix typo.

Fri Oct 27 23:14:12 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure.in:  Rename libFOO to target-libFOO, and xiberty
	to target-xiberty, to provide more flexibility.
	(target_subdir):  Define.  Create if cross.
	Set TARGET_SUBDIR in Makefile to ${target_subdir}.
	* Makefile.in:  Rename all-libFOO -> all-target-libFOO, all-xiberty
	-> all-target-libiberty, configure-libFOO -> configure-target-libFOO,
	check-libFOO -> check-target-libFOO, etc.
	($(DO_X)):  Iterate over TARGET_CONFIGDIRS after SUBDIRS.
	($(CONFIGURE_TARGET_MODULES), $(CHECK_TARGET_MODULES),
	$(ALL_TARGET_MODULES), $(INSTALL_TARGET_MODULES)): Update accordingly.
	(configure-target-XXX):  Depend on $(ALL_GCC), not all-gcc, to
	allow ALL_GCC="" to only configure.
	(DEVO_SUPPORT):  Add cfg-ml-com.in and cfg-ml-pos.in.
	(ETC_SUPPORT, ETC_SUPPORT_PFX):  Merge;  update 'taz' accordingly.
	(LIBGXX_SUPPORT_DIRS):  Remove xiberty.

Sat Oct 28 01:53:49 1995  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (taz): Build "info" in etc explicitly.

Fri Oct 27 09:32:30 1995  Stu Grossman  (grossman@cygnus.com)

	* configure.in:  Make sure that CC is undefined (as opposed to
	null) if toplevel/config/mh-{host} doesn't define it.  Fixes a
	problem with autoconf trying to configure on a host without GCC.

Thu Oct 26 22:35:01 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Set host alias from choice of host compiler,
	only use generic MPW Makefile sed if present, edit a file
	named "hacked_Makefile.in" instead of "Makefile.in" if present.
	* mpw-README: Add problem notes about CW6 and CW7.

Thu Oct 26 05:45:10 1995  Ken Raeburn  <raeburn@kr-pc.cygnus.com>

	* Makefile.in (taz): Use ";" instead of ";;".

Wed Oct 25 15:18:24 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (taz):  Grep for '^diststuff:' or '^info:' in
	sub-directory Makefiles, instead of using DISTSTUFFDIRS and
	DISTDOCDIRS.
	(DISTSTUFFDIRS, DISTDOCDIRS):  Removed - no longer used.
	(newlib.tar.gz):  Don't pass DISTDOCDIRS to recursive make.

Wed Oct 25 14:43:55 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (DISTDOCDIRS):  Remove ld gprof bnutils gas libg++ gdb
	and gnats, because they are now subsumed by DISTSTUFFDIRS.
	Move bfd to DISTSTUFFDIRS.

Tue Oct 24 18:19:09 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Makefile.in (X11_LIB): Removed.
	(X11_FLAGS_TO_PASS): pass only X11_EXTRA_CFLAGS and X11_EXTRA_LIBS.

	* configure.in (host_makefile_frag): mh-aix & mh-sun removed.

Sun Oct 22 13:04:42 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cfg-ml-com.in (powerpc*): Shorten some of the multilib directory
	names.

Fri Oct 20 18:02:10 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cfg-ml-com.in (powerpc*-eabi*): Add mcall-aixdesc varients.

Thu Oct 19 10:40:57 1995  steve chamberlain  <sac@slash.cygnus.com>

	* configure.in (i[345]86-*-win32): Always build newlib.
	Don't configure cvs, autoconf or texinfo.
	* Makefile.in (LD_FOR_TARGET): New.
	(BASE_FLAGS_TO_PASS, EXTRA_TARGET_FLAGS, CONFIGURE_TARGET_MODULES):
	Pass down LD_FOR_TARGET.

Wed Oct 18 15:53:56 1995  steve chamberlain  <sac@slash.cygnus.com>

	* winsup: New directory.
	* Makefile.in: Build winsup.
	* configure.in: Winsup is configured when target is win32.
	Can only build win32 target GDB when native.

Mon Oct 16 09:42:31 1995  Jeffrey A Law  (law@cygnus.com)

	* config.guess: Recognize HP model 819 machines as having
	a PA 1.1 processor.

Mon Oct 16 10:49:43 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Fix sed loop which substitutes for CC and CXX to
	avoid bug found in various sed implementations.

Wed Oct 11 16:16:20 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cfg-ml-com.in (powerpc-*-eabisim): Delete separate rule for
	simulator.  Use standard powerpc-*-eabi*.

Mon Oct  9 17:21:56 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Stop putting gas and binutils in noconfigdirs for
	powerpc-*-aix* and rs6000-*-*.

Mon Oct  9 12:38:40 1995  Michael Meissner  <meissner@cygnus.com>

	* cfg-ml-com.in (powerpc*-*-eabisim*): Add support for building
	-mcall-aixdesc libraries.

Fri Oct  6 16:17:57 1995  Ken Raeburn  <raeburn@cygnus.com>

	Mon Sep 25 22:49:32 1995  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config.sub (arm | armel | armeb): Fix shell syntax.

Fri Oct  6 14:40:28 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cfg-ml-com.in ({powerpc,rs6000}-ibm-aix*): Add multilibs for
	-msoft-float and -mcpu=common support.
	(powerpc*-*-eabisim*): Add support for building -mcall-aix
	libraries.

Thu Oct  5 13:26:37 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* configure.in: Allow configuration and build of emacs19 for the alpha.

Wed Oct  4 22:05:36 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (CC): Get ^CC, not just any old CC, from
	${host_makefile_frag}.

Wed Oct  4 21:55:00 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (CC): Try to get CC from
	${srcdir}/${host_makefile_frag}, not ${host_makefile_frag}.

Wed Oct  4 21:44:12 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Makefile.in (TARGET_CONFIGDIRS): configure targetdirs
	only if it exists in $(srcdir).

Wed Oct  4 11:52:31 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: If CC and CXX are not set in the environment, set
	them, based on either an existing Makefile or on searching for gcc
	in PATH.  Substitute for CC and CXX in Makefile.
	* configure.in: Remove libm from target_libs.  Separate
	target_configdirs from configdirs.  If CC is not set in
	environment, try to get it from a host Makefile fragment.  Rewrite
	changes of configdirs to use skipdirs instead.  A few minor
	tweaks.  Take directories out of target_configdirs as they are
	taken out of configdirs.  Remove existing Makefile files from
	subdirectories.  Substitute for TARGET_CONFIGDIRS and
	CONFIG_ARGUMENTS in Makefile.
	* Makefile.in (TARGET_CONFIGDIRS): New variable, automatically set
	by configure.in.
	(CONFIG_ARGUMENTS): Likewise.
	(CONFIGURE_TARGET_MODULES): New variable.
	($(DO_X)): Loop over TARGET_CONFIGDIRS as well as SUBDIRS.
	($(CONFIGURE_TARGET_MODULES)): New target.
	(configure-libg++, configure-libio): New targets.
	(all-libg++): Depend upon configure-libg++.
	(all-libio): Depend upon configure-libio.
	(configure-libgloss, all-libgloss): New targets.
	(configure-libstdc++): New target.
	(all-libstdc++): Depend upon configure-libstdc++.
	(configure-librx, all-librx): New targets.
	(configure-newlib): New target.
	(all-newlib): Depend upon configure-newlib
	(configure-xiberty): New target.
	(all-xiberty): Depend upon configure-xiberty.

Sat Sep 30 04:32:59 1995  Jason Molenda (crash@phydeaux.cygnus.com)

	* configure.in (host i[345]86-*-win32):  Expand the
	noconfigdirs again.

Thu Sep 28 21:18:49 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-configure: Fix sed command file name.

Thu Sep 28 17:39:56 1995  steve chamberlain  <sac@slash.cygnus.com>

	* configure.in (host i[345]86-*-win32): Reduce the
	noconfigdirs again.

Wed Sep 27 12:24:00 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't configure ld and gdb for powerpc*-*-winnt*
	or powerpc*-*-pe*, since they are not yet supported.

Tue Sep 26 14:30:01 1995  Stan Shebs  <shebs@andros.cygnus.com>

	Add PowerMac support and many other enhancements.
	* mpw-configure: New option --cc to select compiler to use,
	paste options set according to --cc into the generated
	Makefile, generate the Makefile by sed'ing the Unix Makefile.in
	if mpw-make.sed is present.
	* mpw-config.in: Don't test for gC1, test for mpw-touch,
	add forward includes for PowerPC include files.
	* mpw-build.in: Build using Makefile.PPC if present.
	(do-byacc, etc): Remove separate version resource builds.
	(do-gas): Build "stamps" before "all".
	(do-gcc): Build "stamps-h" and "stamps-c" before "all".
	* mpw-README: Update to reflect --cc option, PowerMac support,
	and recently-reported compatibility problems.

Fri Sep 22 12:15:42 1995  Doug Evans  <dje@deneb.cygnus.com>

	* cfg-ml-com.in (m68*-*-*): Only build multilibs for
	embedded m68k systems (-aout, -coff, -elf, -vxworks).
	(--with-multilib-top): Pass to recursive invocations.

Tue Sep 19 13:51:05 1995  J.T. Conklin  <jtc@blues.cygnus.com>

	* configure.in (noconfigdirs): Disable libg++ and libstdc++ on
	v810-*-*.

Mon Sep 18 23:08:26 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (noconfigdirs): Disable bfd, binutils, gas, gcc,
	gdb, ld and opcodes on v810-*-*.

Tue Sep 12 18:03:31 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (DO_X): Change do-realclean to do-maintainer-clean.
	(local-maintainer-clean): New target.
	(maintainer-clean): New target.
	(realclean): Just depend upon maintainer-clean.

Fri Sep  8 17:11:14 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (noconfigdirs): Disable gdb on m68k-*-netbsd*.

Fri Sep  8 16:46:29 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Build ld in mips*-*-bsd* case.

Thu Sep  7 20:03:41 1995  Ken Raeburn  <raeburn@cygnus.com>

	* config.sub: Accept -lites* OS.  From Ian Dall.

Fri Sep  1 08:06:58 1995  James G. Smith  <jsmith@beauty.cygnus.com>

	* config.sub: recognise mips64vr4300 and mips64vr4300el as valid
	targets.

Wed Aug 30 21:06:50 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in: treat i386-win32 canadian cross the same as
	i386-go32 canadian cross.

Thu Aug 24 14:53:20 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cfg-ml-com.in (powerpc*-*-eabisim): Add support for PowerPC
	running under the simulator to build a reduced set of libraries.
	(powerpc-*-eabiaix): Add fine grained multilib support added to
	other powerpc targets yesterday.

Wed Aug 23 09:41:56 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cfg-ml-com.in (powerpc*): Add support for -disable-biendian,
	-disable-softfloat, -disable-relocatable, -disable-aix, and
	-disable-sysv to control which multilib libraries get built.

Thu Aug 17 16:03:41 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	* configure: Add Makefile.tem to list of files to remove in trap
	handler.

Mon Aug 14 19:27:56 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.guess (*Linux*):  Add missing "exit"s.
	Also, need specific check for alpha-unknown-linux (uses COFF).

Fri Aug 11 15:38:20 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.guess:  Merge with FSF:

	Wed Jun 28 17:57:27 1995  David Edelsohn  <edelsohn@mhpcc.edu>
	* config.guess (AIX4): More robust release numbering discovery.

	Thu Jun 22 19:01:24 1995  Kenneth Stailey  (kstailey@eagle.dol-esa.gov)
	* config.guess (i386-sequent-ptx): Properly get version number.

	Thu Jun 22 18:36:42 1995  Uwe Seimet  (seimet@iris1.chemie.uni-kl.de)
	* config.guess (mips:*:4*:UMIPS): New case.

Mon Aug  7 09:21:35 1995  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (i386-go32 host): Fix typo (deja-gnu -> dejagnu).
	(i386-win32 host): Likewise.  Don't build readline.

Sat Aug  5 09:51:49 1995  Fred Fish  <fnf@rtl.cygnus.com>

	* Makefile.in (GDBTK_SUPPORT_DIRS):  Define and pass as part of
	SUPPORT_FILES to submakes.

Fri Aug  4 13:04:36 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (GDB_SUPPORT_DIRS): Add utils.
	(DEVO_SUPPORT): Add mpw-README, mpw-build.in, mpw-config.h and
	mpw-configure.

Wed Aug  2 16:32:40 1995  Ken Raeburn  <raeburn@cygnus.com>

	* configure.in (appdirs): Use =, not ==, in test expression when
	trying to build the text to print in the warning message for
	Solaris users.

Mon Jul 31 09:56:18 1995  steve chamberlain  <sac@slash.cygnus.com>

	* cfg-ml-com.in (z8k-*-coff): Add 'std' multilib build.

Fri Jul 28 00:16:31 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* config.guess: Recognize lynx-2.3.

Thu Jul 27 15:47:59 1995  steve chamberlain  <sac@slash.cygnus.com>

	* config.sub (z8ksim): Deleted
	(z8k-*-coff): New, this is the one true name of the target.

Thu Jul 27 14:33:33 1995  Doug Evans  <dje@canuck.cygnus.com>

	* cfg-ml-pos.in (dotdot): Work around SunOS sed bug.

Thu Jul 27 13:31:05 1995  Fred Fish  (fnf@cygnus.com)

	* config.guess (*:Linux:*:*): First try asking the linker what the
	default object file format is (elf, aout, or coff).  Then if this
	fails, try previous methods.

Thu Jul 27 11:28:17 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in: Don't build newlib for *-*-vxworks5.1.

Thu Jul 27 11:18:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* configure.in: Don't build newlib for a29k-*-vxworks5.1.
	* test-build.mk: Add setting of --with-headers for a29k-vxworks5.1.

Tue Jul 25 21:25:39 1995  Doug Evans  <dje@canuck.cygnus.com>

	* cfg-ml-pos.in (MULTITOP): Trim excess trailing "/.".

Fri Jul 21 10:41:12 1995  Doug Evans  <dje@canuck.cygnus.com>

	* cfg-ml-com.in: New file.
	* cfg-ml-pos.in: New file.

Wed Jul 19 00:37:27 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* COPYING.NEWLIB: Add HP free copyright to list.

Tue Jul 18 10:58:51 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.sub: Recognize -eabi* for the system, not just -eabi.

Mon Jul  3 13:44:51 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* Makfile.in (DLLTOOL_FOR_TARGET): New name, pass it down.
	* config.sub, configure.in (win32): New target and host.

Wed Jun 28 23:57:08 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* configure.in: Add i386-pe configuration.

Fri Jun 23 14:28:44 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-build.in (install): Install GDB after LD.

Thu Jun 22 17:10:53 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in (elf/mips.h): Always forward-include, needed
	for GDB to build.

Wed Jun 21 15:17:30 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* testsuite: New directory for customer acceptance and whole tool
	chain tests.

Wed Jun 21 16:50:29 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* configure: If per-host line isn't found, but AC_OUTPUT is found
	and a configure script exists, run it instead.

Thu Jun 15 21:09:24 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.guess:  Update from FSF, for alpha-dec-winnt3.5 and  Crays.

Tue Jun 13 21:43:27 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* configure: Set build_{cpu,vendor,os,alias} to host values when
	--build isn't specified.

Mon Jun  5 18:26:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (PICFLAG, PICFLAG_FOR_TARGET): New macros.
	(FLAGS_TO_PASS): Pass them.
	(EXTRA_TARGET_FLAGS): Ditto.

Wed May 31 22:27:42 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* Makefile.in (all-libg++): Depend on all-libstdc++.

Thu May 25 22:40:59 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (noconfigdirs): Enable all packages for
	  i386-unknown-netbsd.

Sat May 20 13:22:31 1995  Angela Marie Thomas  <angela@cirdan.cygnus.com>

	* configure.in (noconfigdirs): Don't configure tk for i386-go32
	hosted builds (DOS builds)

Thu May 18 18:08:49 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Changes for ARM based on patches from Richard Earnshaw:
	* config.sub: Handle armeb and armel.
	* configure.in: Omit arm linker only for riscix.

Thu May 11 17:23:26 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.guess:  Update from FSF.

Tue May  9 15:52:05 1995  Michael Meissner  <meissner@cygnus.com>

	* config.sub: Recognize powerpcle as the little endian varient of
	the PowerPC.  Recgonize ppc as a PowerPC variant, and ppcle as a
	powerpcle variant.  Convert pentium into i586, not i486.  Add p5
	alias for i586.  Map new x86 variants p6, k5, nexgen into i586
	temporarily.

Tue May  2 16:29:41 1995  Jeff Law  (law@snake.cs.utah.edu)

	* configure.in (hppa*-*-lites*): Treat like hppa*-*-*elf*.

Sun Apr 30 21:38:09 1995  Jeff Law  (law@snake.cs.utah.edu)

	* config.sub: Accept -lites* as a basic system type.

Thu Apr 27 11:33:29 1995  Michael Meissner  (meissner@cygnus.com)

	* config.guess (*:Linux:*:*): Check for whether the pre-BFD linker is
	installed, and if so return linuxoldld as the system name.

Wed Apr 26 10:59:02 1995  Jeff Law  (law@snake.cs.utah.edu)

	* config.guess: Add hppa1.1-hp-lites support.

Tue Apr 25 11:08:11 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* configure.in: Don't build newlib for m68k-vxworks5.1.

Wed Apr 19 17:02:43 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* configure.in (mips-sgi-irix6): Use mh-irix5.

Fri Apr 14 15:21:17 1995  Doug Evans  <dje@chestnut.cygnus.com>

	* Makefile.in (all-gcc): Depend on all-ld (for libgcc1-test).

Wed Apr 12 16:06:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* test-build.mk: Enable building of shared libraries on IRIX 5 and
	OSF/1.  Fix compiler flags.
	* build-all.mk: Support Linux and OSF/1 3.0.  Fix compiler flags.

Tue Apr 11 18:55:40 1995  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in: Recognize --with-newlib.
	(sparc-*-sunos4*): Build sim, dejagnu, expect, tcl if cross target.

Mon Apr 10 14:38:20 1995  Jason Molenda (crash@phydeaux.cygnus.com)

	* Makefile.in: move {all,check,install}-gdb from *_MODULES
	to *_X11_MODULES due to gdbtk needing X include files et al.

Mon Apr 10 11:42:22 1995  Stan Shebs  <shebs@andros.cygnus.com>

	Merge in support for Mac MPW as a host.
	(Old change descriptions retained for informational value.)

	* mpw-config.in: Add generic include forwards for cpu-specific
	include files in aout and elf directories.

	* mpw-configure: Added copyright.
	* mpw-config.in: Check for presence of required build tools.
	(target_libs): Add newlib.
	(target_tools): Add examples.
	(Read Me): Generate as "Read Me for MPW" instead.
	* mpw-build.in: Base sub-builds on all-foo instead of do-foo.
	(all-byacc, do-byacc, all-flex, do-flex, do-newlib): New actions.
	(do-gas, do-gcc, do-gdb, do-ld): Build Version.r first.

	* mpw-configure: Remove subdir-specific makefile hackery,
	delete mk.tmp after using it.

	* mpw-build.in (all): Display start and end times.

	* mpw-configure (host_canonical): Set.
	(target_cpu): Always add to makefiles.
	(ARCHDEFS, EMUL): Add to makefile only if nonempty.
	(TM_FILE, XM_FILE, NM_FILE): No longer add to makefile.
	(mpw-mh-mpw): Look for in srcdir and srcroot.
	Use sed instead of mpw-edit-prefix to edit prefix definitions.

	* mpw-build.in: (install-only): New target.

	* mpw-configure (host_alias, target_alias): Rename from hostalias
	and targetalias, add into generated Makefile.
	(mk.tmp): If present, add into generated Makefile.
	* mpw-build.in (all-gas): Build config.h first before gas proper.

	* mpw-configure (config.status): Write only if changed.
	* mpw-config.in (readline): Configure it (not built, just used for
	definitions).

	* mpw-config.in (elf/mips.h): Add a forward include.

	* mpw-config.in: Forward-include most .h files in include into
	extra-include.
	(readline): Don't build.
	mpw-build.in (install): Install GDB.

	* mpw-configure (prefix, mpw_prefix): Handle it.
	* mpw-config.in (mmalloc, readline): Don't configure.
	* mpw-build.in (thisscript): Rename to ThisScript.
	Use mpw-build instead of BuildProgram everywhere.
	(mmalloc, readline): Don't build.
	* mpw-README: New file, basic documentation about the MPW port.

	* mpw-config.in: Use forward-include to create include files.

	* mpw-configure: Add more things to the top of each configured
	Makefile, including contents of config/mpw-mh-mpw.
	* mpw-config.in (extra-include): Create this directory and fill it
	with Posix-like include files when configuring.

	* config.sub (apple, mac, mpw): Add various aliases.

	* mpw-build.in: New file, top-level build script fragment for MPW.
	* mpw-configure: New file, configure script for MPW.
	* mpw-config.in: New file, config fragment for MPW.

Fri Apr  7 19:33:16 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in (host_libs): Remove glob, since it is gone from the
	sources.

Fri Mar 31 11:36:17 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Makefile.in: define empty GDB_NLM_DEPS var.

	* configure.in(target_makefile_frag): use config/mt-netware
	for netware targets.

Thu Mar 30 13:51:43 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.sub: Merge in recent FSF changes.  Remove linux special
	cases.

Tue Mar 28 14:47:34 1995  Jason Molenda (crash@phydeaux.cygnus.com)

	Revert this change:

	Tue Mar 30 10:03:09 1993  Ian Lance Taylor  (ian@cygnus.com)

		* build-all.mk: Use CC=cc -Xs on Solaris.

Tue Mar 21 10:43:32 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* glob/*: Removed.  Schauer's 24 Feb 1994 readline change made us
	stop using it.
	* Makefile.in: Nuke all references to glob subdirectory.

Thu Mar 16 13:35:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* configure.in: Fix --enable-shared logic in per-host.

Mon Mar 13 12:33:15 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (*-hp-hpux[78]*): Use mh-hpux8.

Mon Mar  6 10:21:58 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in (noconfigdirs): Don't build gas on AIX, for
	powerpc*-*-aix* as well as for rs6000*-*-aix*.

Wed Mar  1 12:51:53 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Fix --cache-file to work if the file argument is a
	relative path.

Tue Feb 28 17:36:07 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure: If the --cache-file is used, pass it down to
	configure in subdirectories.

Mon Feb 27 12:52:46 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* config.sub: add vxworks29k configuration.

Fri Feb 10 16:12:26 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (taz): Do "diststuff" part quietly.

Sun Feb  5 14:16:35 1995  Doug Evans  <dje@canuck.cygnus.com>

	* config.sub: Mini-merge with gcc/config.sub.

Sat Feb  4 12:11:35 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* config.guess (IRIX): Sed - to _.

Fri Feb  3 11:54:42 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (source-vault, binary-vault): New targets.

Thu Jan 26 13:00:11 1995  Michael Meissner  <meissner@cygnus.com>

	* config.sub: Recognize -eabi as a basic system type.

Thu Jan 12 13:13:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* configure.in (enable_shared stuff): Fix typo.

Thu Jan 12 01:36:51 1995  deanm@medulla.LABS.TEK.COM (Dean Messing)

	* Makefile.in (BASE_FLAGS_TO_PASS): Fix typo in passing LIBCXXFLAGS*.

Wed Jan 11 16:29:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (LIBCXXFLAGS_FOR_TARGET): Add -fno-implicit-templates.

Mon Jan  9 12:48:01 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* configure.in (rs6000-*-*): Don't build gas.

Wed Jan  4 23:53:49 1995  Ian Lance Taylor  <ian@tweedledumb.cygnus.com>

	* Makefile.in: Use /x/x/ instead of /brokensed/brokensed/, to
	reduce command line length.
	(AS_FOR_TARGET): Check for as.new, not Makefile.
	(NM_FOR_TARGET): Check for nm.new, not Makefile.

Wed Jan  4 13:02:39 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.guess:  Merge from FSF.

Thu Dec 15 17:11:37 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* configure: Don't use $ when handling program_suffix.

Mon Dec 12 12:09:37 1994  Stu Grossman  (grossman@cygnus.com)

	* configure.in:  Configure tk for hppa/hpux.

Fri Dec  2 15:55:38 1994  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (LIBGXX_SUPPORT_DIRS):  Add libstdc++.

Tue Nov 29 19:37:56 1994  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in:  Move -fno-implicit-template from CXXFLAGS
	to LIBCXXFLAGS.  Tests are better run without it.

Wed Nov 23 10:29:25 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (all-ispell): Depend on all-emacs19 instead of all-emacs.

Mon Nov 21 11:14:01 1994  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (*-*-netware*): Don't configure xiberty.

Mon Nov 14 08:49:15 1994  Stu Grossman  (grossman@cygnus.com)

	* configure.in:  Remove tk from native_only list.

Fri Nov 11 15:31:26 1994  Bill Cox  (bill@rtl.cygnus.com)

	* build-all.mk: Add mips-ncd-elf target to sun4 targets
	  for special NCD build.

Mon Nov  7 20:58:17 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (DEVO_SUPPORT): Remove configure.bat and
	makeall.bat, they're only useful for binutils snapshots.
	(binutils.tar.gz, gas+binutils.tar.gz): Add configure.bat and
	makeall.bat to specified SUPPORT_FILES.

Mon Nov  7 17:25:18 1994  Bill Cox  (bill@cirdan.cygnus.com)

	* build-all.mk: Add Ericsson targets to sun4 and solaris
	  hosts.  Add  BNR's sun4 target to solaris host, so their
	  build-from-source will be tested in-house first.

Sat Nov  5 18:43:30 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (LIBCFLAGS): New variable.
	(CFLAGS_FOR_TARGET): Ditto.
	(LIBCFLAGS_FOR_TARGET): Ditto.
	(LIBCXXFLAGS): Ditto.
	(CXXFLAGS_FOR_TARGET): Ditto.
	(LIBCXXFLAGS_FOR_TARGET): Ditto.
	(BASE_FLAGS_TO_PASS): Pass them.
	(EXTRA_TARGET_FLAGS): Ditto.

	* configure.in: Support --enable-shared.

Sat Nov  5 15:44:00 1994  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure.in (target_libs):  Include libstdc++ again.
	* config.guess:  Update from FSF (for FreeBSD).

Thu Nov  3 16:32:30 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (DEVO_SUPPORT): Include configure.bat and
	makeall.bat.
	(DISTDOCDIRS): Add `etc'.
	(ETC_SUPPORT_PFX): New variable.
	(taz): Include anything from etc starting with a word in
	ETC_SUPPORT_PFX.

Wed Oct 26 16:19:35 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* config.sub: Update for recent FSF changes.  Remove obsolete
	h8300hds entry.  Add -windows* and -osx as basic os.  Minor
	spacing changes.

Thu Oct 20 18:41:56 1994  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure.in (target_libs):  Remove libstdc++ for libg++-2.6.1.

	* config.guess:  Merge with FSF.
	* configure.in:  Match on i?86-ncr-sysv4.3, not i?86-ncr-sysv43.

Thu Oct 20 19:26:56 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* configure: Since the "trap 0" handler will override the exit
	status on many systems, only use it for "exit 1", and make it set
	a non-zero exit status; reset it before "exit 0".  Also, check
	exit status of config.sub, and error out if it failed.

Wed Oct 19 18:49:55 1994  Rob Savoye  (rob@cygnus.com)

	* Makefile.in: (ALL_TARGET_MODULES,INSTALL_TARGET_MODULES) Build
	and install libgloss.

Tue Oct 18 15:25:24 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* Makefile.in (all-binutils): Depend upon all-byacc.

	* configure.in: Don't build emacs on Irix 5.

Mon Oct 17 16:22:12 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* configure.in (*-*-netware*): Add libio.

Thu Oct 13 15:51:20 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (ALL_TARGET_MODULES): Add libstdc++.
	(CHECK_TARGET_MODULES): Ditto.
	(INSTALL_TARGET_MODULES): Ditto.
	(TARGET_LIBS): Ditto.
	(all-libstdc++): Note dependencies.

Thu Oct 13 01:43:08 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (BINUTILS_SUPPORT_DIRS): Add gas.

Tue Oct 11 12:12:29 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (CXXFLAGS): Use -fno-implicit-templates instead of
	-fexternal-templates.

	* configure.in (target_libs): Add libstdc++.
	(noconfigdirs): Add libstdc++ as appropriate.

Thu Oct  6 18:00:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Update from FSF.

Tue Oct  4 12:05:42 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* configure: Use ${config_shell} when running ${configsub}.

Mon Oct  3 14:28:34 1994  Doug Evans  <dje@canuck.cygnus.com>

	* config.sub: No longer recognize h8300h.

Mon Oct  3 12:40:54 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* config.sub: Remove extraneous differences between config.sub and
	gcc/config.sub.

Sat Oct  1 00:23:12 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (DISTSTUFFDIRS): Add gas.

Thu Sep 22 19:04:55 1994  Doug Evans  (dje@canuck.cygnus.com)

	* COPYING.NEWLIB: New file.

Mon Sep 19 18:25:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess (HP-UX):  Patch from Harlan Stenn
	<harlan@landmark.com> to also emit release level.

Wed Sep  7 13:15:25 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* config.guess (sun4*:SunOS:*:*): Change '-JL' to '_JL'.

Tue Sep  6 23:23:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.sub:  Merge nextstep cleanup from FSF.

Mon Sep  5 05:01:30 1994  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* configure.in (arm-*-*): Don't configure ld for this target.

Thu Sep  1 09:35:00 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* configure.in (*-*-netware): don't configure libg++, libio,
	  librx, or newlib.

Wed Aug 31 13:52:08 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in (alpha-dec-osf*): Use osf*, not osf1*.  Don't
	configure ld--it works, but it doesn't support shared libraries.

Sun Aug 28 18:13:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess (*-unknown-freebsd*):  Get rid of possible
	trailing "(Release)" in version string.
	Patch from Paul Richards <paul@isl.cf.ac.uk>.

Sat Aug 27 15:00:49 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Fix i486-ncr-sysv43 -> i486-ncr-sysv4.3.
	Fix type: *-next-neststep -> *-next-nextstep.

	* config.guess:  Merge from FSF:

	Fri Aug 26 18:45:25 1994  Philippe De Muyter (phdm@info.ucl.ac.be)

	* config.guess: Recognize powerpc-ibm-aix3.2.5.

	Wed Apr 20 06:36:32 1994  Philippe De Muyter  (phdm@info.ucl.ac.be)

	* config.guess: Recognize UnixWare 1.1 (UNAME_SYSTEM is SYSTEM_V
	instead of UNIX_SV for UnixWare 1.0).

Sat Aug 27 01:56:30 1994  Stu Grossman  (grossman@cygnus.com)

	* Makefile.in (all-gdb):  Add dependencies on all-gcc and all-ld
	to make gdb/nlm/* build after the compiler and linker.

Fri Aug 26 14:30:05 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess (netbsd, freebsd, linux):  Accept any machine,
	not just i[34]86.
	(m68k-atari-sysv4):  Relocate to match FSF version.

	* config.guess:  More merges from the FSF:

	Add a space before function call or macro invocation.

	Tue May 10 16:53:55 1994  Roland McGrath (roland@churchy.gnu.ai.mit.edu)

	* config.guess: Add trap cmd to remove dummy.c and dummy when
	interrupted.

	Wed Apr 20 18:07:13 1994  Roland McGrath (roland@churchy.gnu.ai.mit.edu)

	* config.guess (dummy.c): Redirect stderr for `hostinfo' command.
	(dummy): Redirect stderr from compilation of dummy.c.

	Sat Apr  9 14:59:28 1994  Christian Kranz  (kranz@sent5.uni-duisburg.de)

	* config.guess: Distinguish between NeXTStep 2.1 and 3.x.

Fri Aug 26 13:42:20 1994  Ken Raeburn  (raeburn@kr-laptop.cygnus.com)

	* configure: Accept and ignore --cache*, for compatibility with
	new autoconf.

Fri Aug 26 13:05:27 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Merge from FSF:

	Thu Aug 25 20:28:51 1994  Richard Stallman  <rms@mole.gnu.ai.mit.edu>

	* config.guess (Pyramid*:OSx*:*:*): New case.
	(PATH): Add /.attbin at end for finding uname.
	(dummy.c): Handle i860-alliant-bsd.  Follow whitespace conventions.

	Wed Aug 17 18:21:02 1994  Tor Egge  (tegge@pvv.unit.no)

	* config.guess (M88*:DolphinOS:*:*): New case.

	Thu Aug 11 17:00:13 1994  Stan Cox  (coxs@dg-rtp.dg.com)

	* config.guess (AViiON:dgux:*:*): Use TARGET_BINARY_INTERFACE
	to select whether to use ELF or COFF.

	Sun Jul 24 16:20:53 1994  Richard Stallman  <rms@mole.gnu.ai.mit.edu>

	* config.guess: Recognize i860-stardent-sysv and i860-unknown-sysv.

	Sun May  1 10:23:10 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* config.guess: Guess the OS version for HPUX.

	Tue Mar  1 21:53:03 1994  Karl Heuer  (kwzh@hal.gnu.ai.mit.edu)

	* config.guess (UNAME_VERSION): Recognize aix3.2.4 and aix3.2.5.

Fri Aug 26 11:19:08 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in: Recognize --with-headers, --with-libs, and
	--without-newlib.
	* Makefile.in (all-xiberty): Depend upon all-ld.

Wed Aug 24 12:36:50 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in: Change i[34]86 to i[345]86.

Mon Aug 22 10:58:33 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure (version): A few more tweaks to help message.

Fri Aug 19 12:40:25 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* Makefile.in:  Remove (for now) librx as a host library,
	now that we're building it for target.

Fri Aug 19 10:49:17 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure: Fix up help message; from karl@owl.hq.ileaf.com
	(Karl Berry).

Tue Aug 16 16:11:08 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* configure.in:  Also configure librx.

Mon Aug 15 16:51:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* Makefile.in:  Update various rules to reflect that librx
	is now needed for libg++.

Fri Aug 12 18:07:21 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* config.sub: Accept mips64orion and mips64orionel as a CPU name.

Mon Aug  8 11:36:17 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* configure.in: Configure the examples directory.

Thu Aug  4 16:12:36 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure: Simplify Jun 2 1994 change.

Wed Aug  3 04:58:16 1994  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* change CC to /usr/latest/bin/gcc for lynx host builds, since
	/bin/gcc isn't good enough to build gcc.

Wed Jul 27 09:07:14 1994  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (GDB_SUPPORT_FILES): Remove
	(setup-dirs-gdb, gdb.tar.gz, make-gdb.tar.gz):  Remove old rules.
	(gdb.tar.gz): Add new rule to use standard distribution building
	mechanism.

Mon Jul 25 11:10:06 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Warn about use of /usr/ucb/cc on Solaris.  From
	Bill Cox <bill@cygnus.com>.

Sat Jul 23 12:19:46 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Recognize ISC.  Patch from kwzh@gnu.ai.mit.edu.

Fri Jul 22 17:53:59 1994  Stu Grossman  (grossman@cygnus.com)

	* configure:  Search current dir first in .gdbinit.

Fri Jul 22 11:28:30 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.sub:  Recognize freebsd (merged from gcc config.sub).

Thu Jul 21 14:10:52 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.sub:  Refer to NeXT's operating system as nextstep.

	* config.sub (case $basic_machine):  Re-order the cases, to match
	the order in the FSF version (which is mostly alphabethical).
	Merge in some additions and changes from the FSF.

Sat Jul 16 12:03:08 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* config.guess: Recognize m68k-atari-sysv4 and m88k-harris-csux7.
	* config.sub: Recognize cxux7.
	* configure.in: Use mh-cxux for m88k-harris-cxux*.

Mon Jul 11 14:37:39 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.sub:  Fix typo powerpc -> powerpc-*.

Sat Jul  9 13:03:43 1994  Michael Tiemann  (tiemann@blues.cygnus.com)

	* Makefile.in: `all-emacs19' depends on `all-byacc'.

	* Makefile.in: Add all-emacs19 and install-emacs19 rules (in
	parallel with all-emacs and install-emacs).  Top-level command
	`make all-emacs19 CC=gcc' now behaves as `make all-emacs CC=gcc'.

Thu Jun 30 16:53:42 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* test-build.mk ($(host)-stamp-stage2-installed): Remove
	$(relbindir)/make before doing ``make install'', and use
	$(GNU_MAKE) while doing it.  Avoids problem on SunOS with
	installing over running make binary.
	($(host)-stamp-stage3-installed): Likewise.

Tue Jun 28 13:43:25 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Recognize Mach.

Mon Jun 27 16:41:14 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure: Check ${exec_prefixoption}, not ${exec_prefix}, to
	see whether --exec-prefix was used.

Sun Jun 26 21:15:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* README:  Explicitly mention libg++/README.  (Zoo's idea.)

Tue Jun 21 12:45:55 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Add all-librx target similar to all-libproc.

Wed Jun  8 23:11:55 1994  Stu Grossman  (grossman@cygnus.com)

	* config.guess:  Rearrange tests for Alpha-OSF1 to properly deal
	with post 1.2 uname bogosity.

Thu Jun  9 00:27:59 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure: Remove temporary files on receipt of a signal.

Tue Jun  7 12:06:24 1994  Ian Lance Taylor  (ian@cygnus.com)

	* configure: If there is a package_makefile_frag, remove
	${subdir}/Makefile.tem after copying it in.

Mon Jun  6 21:35:02 1994  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* build_all.mk: support rs6000 lynx identifies itself as
	rs6000-lynx-lynxos2.2.2.  Also, use /usr/cygnus/progressive/bin/gcc
	since /bin/gcc is too feeble to compile a modern gcc.

Mon Jun  6 16:06:34 1994  Karen Christiansen (karen@cirdan.cygnus.com)

	* brought devo/test-build.mk update-to-date with progressive/
	  test-build.mk. Add lynx targets and hppa flag info.

Sat Jun  4 17:23:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* configure.in:  Use mh-ncrsvr43.  Patch from
	Tom McConnell <tmcconne@sedona.intel.com>.

Fri Jun  3 17:47:24 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess (i386-unknown-bsdi):  No longer need to
	check #if defined(__bsdi__) && defined(__i386__).

Thu Jun  2 18:56:46 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure: Set program_transform_nameoption correctly.

Thu Jun  2 10:57:06 1994  Karen Christiansen (karen@cirdan.cygnus.com)

	* brought build-all.mk update-to-date with progressive build-all.mk,
	  added new targets and hppa info.

Thu Jun  2 00:12:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure: If config.guess result is a prefix of the user
	specified target, assume a native build and use the user specified
	target as the host alias.  Remove SunOS patch suffix removal hack.
	* configure.in: Remove SunOS patch suffix removal hack.

	* Makefile.in (CROSS_CHECK_MODULES): Remove check-flex, since it's
	in NATIVE_CHECK_MODULES.

Wed Jun  1 10:49:41 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Makefile.in: Rename HOST_ONLY to NATIVE.
	* configure: Delete SunOs patch suffix from host_canonical
	  and build_canonical variables that are prepended to Makefiles.
	* configure.in: Add comments for easier maintenance.

Tue May 31 19:39:47 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Add all-libproc target similar to all-gui.

Tue May 31 17:16:33 1994  Tom Lord  (lord@cygnus.com)

	* Makefile.in (CHECK_MODULES): split into
	HOST_ONLY_CHECK_MODULES and CROSS_CHECK_MODULES.

Tue May 31 16:36:36 1994  Paul Eggert  (eggert@twinsun.com)

	* config.guess (i386-unknown-bsdi): New system to guess.

Wed May 25 16:47:10 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Add all-gui target (but not yet build by "all").

Thu May 26 08:53:19 1994  Bill Cox  (bill@rtl.cygnus.com)

	* config.sub: Move deletion of patch suffix from here...
	* configure.in: To here, at Ian's suggestion.  The top-
	  level scripts might need to know of a patch level.

Wed May 25 09:15:54 1994  Bill Cox  (bill@rtl.cygnus.com)

	* config.sub: Strip off patch suffix so rtl is recognized
	  as a sunos4.1.3 machine, even though it's been patched.

Fri May 20 08:25:49 1994  Steve Chamberlain  (sac@deneb.cygnus.com)

	* Makefile.in (INSTALL_LAST): Delete.
	(INSTALL_DOSREL): New.

Thu May 19 17:12:12 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Use ld for i[34]86-*-sysv4* and sparc-*-solaris2*.
	Don't set use_gnu_ld to no for *-*-sysv4; that only controls
	whether we pass down --with-gnu-ld anyhow.

Thu May 19 09:29:12 1994  Steve Chamberlain  (sac@cygnus.com)

	* Makefile.in (INSTALL_LAST): Change operation so it works
	on more flavors of make.
	* configure.in (go32): Don't build libg++ or libio.

Fri May 13 13:28:34 1994  Steve Chamberlain  (sac@cygnus.com)

	* Makefile.in (Move HOST_PREFIX_1 and friends up so
	they can be overriden by templates.

Sat May  7 16:46:44 1994  Steve Chamberlain  (sac@cygnus.com)

	* configure.in (target==go32): Don't build gdb.
	* dosrel: New directory.

Fri May  6 14:19:25 1994  Steve Chamberlain  (sac@cygnus.com)

	* configure.in (host==go32): Configure dosrel too.
	* Makefile.in (INTALL_TARGET): Call INSTALL_LAST last.
	(HOST_CC, HOST_PREFIX, HOST_PREFIX_1): Undefine, they should
	be set by incoming names or templates.
	(INSTALL_LAST): New rule.

Thu May  5 17:35:05 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* config.sub (sparclitefrw, sparclitefrwcompat): Don't set the os.

Thu May  5 20:06:45 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* configure.in (appdirs): New variable.  Currently empty, but will
	be used in gas distribution.  If nonempty, lists a set of
	directories at least one of which must get configured, or top
	level configuration is considered to have failed.
	(rs6000-*-lynxos*): Use new file name.

Thu May  5 13:38:36 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Eliminate XTRAFLAGS.
	* Makefile.in (CC_FOR_TARGET): If newlib exists, refer to the
	newlib include files using -idirafter, and also use -nostdinc.
	(CXX_FOR_TARGET): Likewise.
	(XTRAFLAGS): Removed.
	(BASE_FLAGS_TO_PASS): Remove XTRAFLAGS_FOR_TARGET.
	(EXTRA_HOST_FLAGS): Remove XTRAFLAGS.
	(EXTRA_TARGET_FLAGS, EXTRA_GCC_FLAGS): Likewise.
	($(DO_X)): Don't pass down XTRAFLAGS.

Thu May  5 00:16:36 1994  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* configure.in (mips*-dec-bsd*): New target; do build linker.
	(mips*-*-bsd*): New target; don't build linker.

Wed May  4 20:10:10 1994  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* configure.in: support rs6000-*-lynxos* configuration.
	support sunos4 as a cross target.

	* config.sub: look for lynx*, not lynx since the OS version may
	legitimately be part of the name.

Tue May  3 21:48:11 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* configure.in (i[34]86-*-sco*): Move to be with other i386
	targets.
	(romp-*-*): New target.  Skip various binary utilities.
	(vax-*-*): New target.  Don't build newlib.
	(vax-*-vms): Renamed from *-*-vms.  Don't build opcodes or newlib.

Thu Apr 28 15:03:05 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure.in: Only set host_makefile_frag if config
	directory exists.

Wed Apr 27 12:14:30 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* install.sh: If $dstdir exists, don't check whether each
	component does.

Tue Apr 26 18:11:33 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* test-build.mk (HOLES): Add sleep; used by rcs/src/conf.sh.

Mon Apr 25 15:06:34 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* configure.in (*-*-lynxos*): Don't configure newlib for either
	native or cross Lynx.

Sat Apr 16 11:58:16 1994  Doug Evans  (dje@canuck.cygnus.com)

	* config.sub (sparc64-elf): Fix os.
	(z8k): Remove duplicate.

Thu Apr 14 23:33:17 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (gcc-no-fixedincludes): Touch gcc/include/fixed, not
	gcc/stmp-fixproto, to try to prevent fixproto from being run.

Wed Apr 13 15:14:52 1994  Bill Cox  (bill@cygnus.com)

	* configure: Make file links cleanly even if Lynx fails on
	  an NFS symlink (at least fail cleanly).

Mon Apr 11 10:58:56 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* test-build.mk (CC): For mips-sgi-irix4, change -XNh1500 to
	-XNh2000.

Sat Apr  9 15:10:45 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure: Unknown options are fatal again.

Fri Apr  8 12:01:41 1994  David J. Mackenzie  (djm@cygnus.com)

	* configure: Ignore --x-includes and --x-libraries, for Autoconf
	compatibility.

Thu Apr  7 17:31:43 1994  Doug Evans  (dje@canuck.cygnus.com)

	* build-all.mk: Add `clean' target.

Wed Apr  6 20:44:56 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* config.guess:  Add SINIX support.
	* configure.in:  Add mips-*-sysv4* support.

Mon Apr  4 17:41:44 1994  Doug Evans  (dje@canuck.cygnus.com)

	* build-all.mk: Document all useful targets.
	If canonhost is sparc-sun-solaris2.3, change it to sparc-sun-solaris2.
	If canonhost is mips-sgi-irix4.0.5H, change it to mips-sgi-irix4.

Thu Mar 31 04:55:57 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure: Support --silent, --quiet.

Wed Mar 30 21:37:38 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure: Support --disable-FEATURE.

Tue Mar 29 19:15:05 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Recognize NCR running SVR4.3.

Mon Mar 28 14:55:15 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Make BSDI generate i386-unknown-bsd386.
	Patch from Paul Eggert <eggert@twinsun.com>.

Mon Mar 28 12:54:52 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in (powerpc-*-aix*): Treat like rs6000-*-*.

Sat Mar 26 11:25:48 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure: Make unrecognized options give nonfatal warnings
	instead of fatal errors, and pass them to any subdirectory
	configures in case they recognize them.
	Make --x equivalent to --with-x.

Fri Mar 25 21:52:10 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure: Add --enable-* options.  Clean up usage message and
	some comments.

Thu Mar 24 09:12:53 1994  Doug Evans  (dje@canuck.cygnus.com)

	* Makefile.in (NM_FOR_TARGET): Build tree version is now nm.new.

Sun Mar 20 11:28:22 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* configure.in (hppa*-*-*): Enable binutils.

Sat Mar 19 11:50:16 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.sub: Recognize cisco.

Fri Mar 18 16:42:32 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (CXXFLAGS): Add -fexternal-templates.

Tue Mar 15 11:25:55 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: about target *-hitachi-hiuxwe2, don't print more
	than one configuration name.  Add comment.

Sun Mar  6 23:13:38 1994  Hisashi MINAMINO  (minamino@sra.co.jp)

	* config.guess: about target *-hitachi-hiuxwe2, fixed
	machine guessing order.  [Hitachi's CPU_IS_HP_MC68K
	macro is incorrect.]

Sun Mar 13 09:10:08 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (TAGS): Just build TAGS in each subdirectory, rather
	than the "make ls" stuff which used to be here.

Fri Mar 11 12:52:39 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Recognize i[34]86-unknown-freebsd.
	From Shawn M Carey <smcarey@rodan.syr.edu>.

Thu Mar  3 14:24:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* configure.in (noconfigdirs for alpha): Remove libg++ and libio.

Wed Mar  2 13:28:48 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* config.guess: Check for ptx.

Mon Feb 28 16:46:50 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* config.sub: Add os9k checking.

Thu Feb 24 07:09:04 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* config.guess: Handle OSF1 running on HPPA processors

Fri Feb 18 14:14:00 1994  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* configure: If subdir configure fails, print out a message with
	subdirectory name, in case subdir's configure code didn't identify
	itself.

Fri Feb 18 12:50:15 1994  Doug Evans  (dje@cygnus.com)

	* configure.in: Remove embedded newlines from configdirs.
	Avoid mismatches of substrings.  Fix matching strings at end
	of configdirs.

Fri Feb 11 15:33:33 1994  Stu Grossman  (grossman at cygnus.com)

	* config.guess:  Add Lynx/rs6000 config support.

Tue Feb  8 13:41:09 1994  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* configure.in (alpha-dec-osf1*, alpha*-*-*): Build gas.

Mon Feb  7 15:42:36 1994  Jeffrey A. Law  (law@cygnus.com)

	* configure.in (hppa*-*-osf*): Treat this just like most other
	PA configurations (eg no binutils or ld).
	(hppa*-*-*elf*): These configurations have binutils and ld.

Sun Feb  6 16:35:07 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* config.sub (hiux): Fix typo.  From m-kasahr@sramhc.sra.co.JP.

Sat Feb  5 01:00:33 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in (rs6000-*-*): Build gas.

Wed Feb  2 13:57:57 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* Makefile.in:  Avoid bug in losing hpux sed.

Wed Feb  2 14:53:05 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in, test-build.mk: Remove MUNCH_NM; it was only needed
	for GDB and GDB has been fixed to not need it.

Sun Jan 30 17:58:06 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* config.guess: Recognize vax hosts.

Fri Jan 28 15:29:38 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* configure (while loop): Don't use "break 2" inside case
	statement -- the case statement isn't an enclosing loop.

Mon Jan 24 18:40:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Clean up NeXT support, to allow nextstep
	on Intel machines.  Make OS be nextstep.

Sun Jan 23 18:47:22 1994  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)

	* config.guess: Add alternate forms for Convex.

Thu Jan 20 16:13:41 1994  Stu Grossman  (grossman at cygnus.com)

	* configure:  Completely rewrite option processing.  Take
	advantage of pattern-matching to avoid invoking test frequently.
	Also clean up host and target defaulting logic.

Mon Jan 17 15:06:56 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* Makefile.in: Replace all occurrances of "rootme" with "r" and
	"$${rootme}" with "$$r", to increase the likelihood that the do-*
	commands (plus user environment) will fit SCO limits.

Thu Jan  6 11:20:57 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Don't issue warnings about directories which are
	not being configured if -norecursion is set.  Correct test for
	--with-gnu-as and --with-gnu-ld to not get confused by substring
	matches.

	* configure.in: Don't build gas for alpha-dec-osf1*.

Tue Jan  4 17:10:19 1994  Stu Grossman  (grossman at cygnus.com)

	* configure:  Back out Per's change of 12/19/1993.  It changes the
	behavior of configure in unexpected and confusing ways.

	Also, use different delim char when calculating
	program_transform_name so that the name can contain slashes.

Sat Jan  1 13:45:31 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* configure.in, config.sub: Add support for VSTa micro-kernel.

Sat Dec 25 20:00:47 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* configure.in: Nuke hacks which were used to get a special
	version of GAS for HPPA configurations.

Sun Dec 19 20:40:44 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* configure:  If only ${target_alias} is given, use that
	as the default for ${host_alias}.
	* configure:  Add missing back-slashes before nested quotes.

Wed Dec 15 18:07:18 1993  david d `zoo' zuhn  (zoo@andros.cygnus.com)

	* Makefile.in (BASE_FLAGS_TO_PASS): add YACC=$(BISON)

Tue Dec 14 21:25:33 1993  Per Bothner  (bothner@cygnus.com)

	* config.guess:  Recognize some Tektronix configurations.
	From Kaveh R. Ghazi <ghazi@noc.rutgers.edu>.

Sat Dec 11 11:18:00 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* config.sub: Match any flavor of SH.

Thu Dec  2 17:16:58 1993  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* configure.in: Don't try to configure newlib for Alpha.

Thu Dec  2 14:35:54 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Don't build ld for Irix 5.  Don't build gas,
	libg++ or libio for any Alpha target.

	* configure.in (mips*-sgi-irix5*): New target; use mh-irix5.

Wed Dec  1 17:00:33 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (GZIPPROG): Renamed from GZIP, which gzip uses for
	default arguments -- so it tried to compress itself.

Tue Nov 30 13:45:15 1993  david d `zoo' zuhn  (zoo@andros.cygnus.com)

	* configure.in (notsupp): ensure that a space is always at the end
	  of the configdirs list, since the grep checks for an explicit space

Tue Nov 16 15:04:27 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in (target i386-sysv4.2): don't build ld, since static
	  versions of many libraries are not available.

Tue Nov 16 14:28:12 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Recognize Apollos (using environment variables).
	* configure.in: Don't configure ld, binutils, or gprof for Apollo.

Thu Nov 11 12:03:50 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Recognize Sony news mips running newsos.

Wed Nov 10 16:57:00 1993  Mark Eichin  (eichin@cygnus.com)

	* Makefile.in (all-cygnus, build-cygnus): "fi else" needs to be
	"fi ; else" for bash.

Tue Nov  9 15:54:01 1993  Mark Eichin  (eichin@cygnus.com)

	* Makefile.in (BASE_FLAGS_TO_PASS): pass SHELL.

Fri Nov  5 08:07:27 1993  D. V. Henkel-Wallace  (gumby@blues.cygnus.com)

	* config.sub: accept unixware as an alias for svr4.2.
	Fix some inconsistancies with the gcc version.

Fri Nov  5 15:14:12 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (DISTDOCDIRS):  Add gdb.

Fri Nov  5 11:59:42 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* Makefile.in (DISTDOCDIRS):  Add libg++ and libio.

Fri Nov  5 10:35:05 1993  Ken Raeburn  (raeburn@rover.cygnus.com)

	* Makefile.in (taz): Only build "info" in DISTDOCDIRS.
	(DISTDOCDIRS): Don't assume libg++ and gdb folks necessarily want
	this now.

Thu Nov  4 18:58:23 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.sub: Accept hiux* as an OS name.

	* Makefile.in: Change RUNTEST_FLAGS back to RUNTESTFLAGS per
	etc/make-stds.texi.  The underscore came from gcc, and dje now
	agrees that RUNTESTFLAGS is the correct name.

Thu Nov  4 10:49:01 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* install.sh:  Remove 'set -e'.  It makes any conditionals
	in the script useless.

	* config.guess: Automatically recognize arm-acorn-riscix
	Patch from Richard Earnshaw (rwe11@cl.cam.ac.uk).

Thu Nov 04 08:08:04 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Makefile.in: Change RUNTESTFLAGS to RUNTEST_FLAGS

Wed Nov  3 22:09:46 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* Makefile.in (DISTDOCDIRS): New variable.
	(taz): Edit local Makefile.in sooner, instead of proto-toplev
	Makefile.in later.  Build "info" and "dvi" in DISTDOCDIRS.

Wed Nov  3 21:31:52 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in (hppa target): check the source directory for the
	  pagas sub-directory

Wed Nov  3 11:12:22 1993  Doug Evans  (dje@canuck.cygnus.com)

	* config.sub: Allow -aout* and -elf*.

Wed Nov  3 11:08:33 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* configure.in: Don't build ld on i386-solaris2, same as for
	sparc-solaris2.

Tue Nov  2 14:21:25 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* Makefile.in (taz): Add texinfo/lgpl.texinfo (for libg++).

Tue Nov  2 13:38:30 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in:  Configure gdb for alpha.

Mon Nov  1 10:42:54 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (CXXFLAGS): Add -O.

Wed Oct 27 10:45:06 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* config.guess: added support for DG Aviion

Tue Oct 26 14:37:37 1993  Ken Raeburn  (raeburn@rover.cygnus.com)

	* configure.in: Produce warning message for subdirectories not
	configurable for this host/target combination.  Don't try to
	configure gdb for vms.

Mon Oct 25 11:22:15 1993  Ken Raeburn  (raeburn@rover.cygnus.com)

	* Makefile.in (taz): Replace "byacc" with "bison -y" in the
	appropriate files before making "diststuff".
	(DISTBISONFILES): New var: list of files to be edited.
	(DISTSTUFFDIRS): Add binutils.

Fri Oct 22 20:32:15 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* config.sub: also handle mipsel and mips64el (for little endian mips)

Fri Oct 22 07:59:20 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in: Add * to end of all OS names.

Thu Oct 21 11:38:28 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* configure.in: Build newlib for LynxOS native.

Wed Oct 20 09:56:12 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Add support for delta 88k running SVR3.

	* configure.in: Add comment about HP compiler vs. emacs.

Tue Oct 19 16:02:22 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: don't build ld on solaris2 (not a viable option
	  due to bugs in getpwnam & getpwuid)

Tue Oct 19 15:13:56 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* configure.in: Accept alpha-dec-osf1*, not just -osf1, since
	config.guess will produce a full version number.

Tue Oct 19 15:58:01 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Build linker and binutils for alpha-dec-osf1.

Tue Oct 19 11:41:55 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Remove -O from CXXFLAGS for consistency with CFLAGS,
	and gdb/testsuite/Makefile.in.

Sat Oct  9 18:39:07 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: recognize mips*- instead of mips-

Fri Oct  8 14:15:39 1993  Ken Raeburn  (raeburn@cygnus.com)

	* config.sub: Accept linux*coff and linux*elf as operating
	systems.

Thu Oct  7 12:57:19 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* config.sub: Recognize mips64, and mips3 as an alias for it.

Wed Oct  6 13:54:21 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in: Remove alpha-dec-osf*, no longer necessary now that
	gdb knows how to handle OSF/1 shared libraries.

Tue Oct  5 11:55:04 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in: Recognize hppa*-*-hiux* (currently synonym for hpux).
	* config.guess: Recognize Hitachi's HIUX.
	* config.sub: Recognize h3050r* and hppahitachi.
	Remove redundant cases for hp9k[23]*.

Mon Oct  4 16:15:09 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: default to '--with-gnu-as' and '--with-gnu-ld'
	if gas and ld are in the source tree and are in ${configdirs}.
	If ${use_gnu_as} or ${use_gnu_ld} are 'no', then don't set the
	--with options (but still pass them down on the command line,
	if they were explicitly specified).

Fri Sep 24 19:11:13 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure: substitute SHELL value in Makefile.in with
	${CONFIG_SHELL}

Thu Sep 23 18:05:13 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* configure.in: Build gas, ld, and binutils for *-*-sysv4* and
	*-*-solaris2* targets.

Sun Sep 19 17:01:41 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in: define M4, and pass it down to sub-makes;
	all-autoconf now depends on all-m4

Sat Sep 18 00:38:23 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in ({AR,RANLIB}_FOR_TARGET): make contingent on
	presence of {ar,ranlib} instead of a configured directory

Wed Sep 15 08:41:44 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)

	* config.guess: Accept 34?? as well as 33?? for NCR.

Mon Sep 13 12:28:43 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: grab mt-hppa for HPPA targets; use 'gas ' instead
	of 'gas' in sed commands, since 'gash' is now in the tree as well.

Fri Sep 10 11:23:52 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure: grab values for $(CC) and $(CXX) from the
	environment, so that someone can do "CC=gcc configure; make" and
	have it work right (matching the way that autoconf works now)

	* configure.in, Makefile.in: add support for gash, the tcl
	interface to Galaxy

	* config.guess: add NetBSD variants (hp300, x86)

Thu Sep  9 16:48:52 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* install.sh: Support -d option (in the manner of SunOS 4 install,
	as it is more deterministic than that of GNU install)
	(chmodcmd): Set file to mode 755 by default (should also do default
	chgrp and chown, but I don't feel like dealing with that now)

Tue Sep  7 11:59:39 1993  Doug Evans  (dje@canuck.cygnus.com)

	* config.sub: Remove h8300hhms alias.

Tue Aug 31 11:00:09 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in: Match *-*-solaris2* not *-sun-solaris2*.

Mon Aug 30 18:29:10 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in (gcc-no-fixedincludes): touch stmp-fixproto as well
	as stmp-fixinc

Wed Aug 25 16:35:59 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* config.sub: recognize m88110-bug-coff.

Tue Aug 24 10:23:24 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in (all-libio): all dependencies on the toolchain used
	to build this (gcc, gas, ld, etc)

Fri Aug 20 17:24:24 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Deal with OSF/1 1.3 on alpha.

Thu Aug 19 11:43:04 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* install.sh: add some 'else true' clauses for portability

	* configure.in: don't build libio for h8[35]00-*-* targets

Tue Aug 17 19:02:31 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* Makefile.in:  Add support for new libio.

Sun Aug 15 20:48:55 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* install.sh: If one command fails, don't try the rest.  Don't try
	to remove $dsttmp (via trap) unless we have already created it.
	If $src doesn't exist, detect it and exit with an error.

	* config.guess: Recognize BSD on hp300.

Wed Aug 11 18:35:13 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* config.guess:  Map (9000/[34]??:HP-UX:*:*) to m68k-hp-hpux.
	Bug report from "Hamish (H.I.) Macdonald" <hamish@bnr.ca>.

Wed Aug 11 15:37:51 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (all-send-pr): depends on all-prms

Wed Aug 11 16:56:03 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Fix typo (9000/8??:4.3bsd -> 9000/7??:4.3bsd).

Fri Aug  6 14:45:02 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* config.guess: From michael@mercury.cs.mun.ca (Michael Rendell):
	Added test for mips-mips-riscos5.

Thu Aug  5 15:45:08 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: use mh-hp300 for 68k HP hosts

Mon Aug  2 11:56:53 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure: add support for CONFIG_SHELL, so that you can use
	some alternate shell for evaluating configure scripts

Sun Aug  1 11:36:27 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* Makefile.in (make-gdb.tar.gz):  Sed bug reporting address
	in configure script to bug-gdb@prep.ai.mit.edu when building
	distribution archive.
	* Makefile.in (COMPRESS):  Remove def.
	* Makefile.in (gdb.tar.gz, make-gdb.tar.gz):  Renamed from
	gdb.tar.Z and make-gdb.tar.Z respectively.
	* Makefile.in (make-gdb.tar.gz):  Now only build gzip'd archive.
	* Makefile.in (make-gdb.tar.gz):  Minor changes to move closer
	to convergence with 'taz' target in Makefile.in.

Fri Jul 30 12:34:57 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* install.sh (dsttmp): use trap to ensure that tmp files go
	away on error conditions

Wed Jul 28 11:57:36 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in (BASE_FLAGS_TO_PASS): remove LOADLIBES

Tue Jul 27 12:43:40 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (install-dirs): Deal with a prefix like /gnu;
	its parent is '/' not ''.

	* Makefile.in (DEVO_SUPPORT): Add comments about ChangeLog.

Fri Jul 23 09:53:37 1993  Jason Merrill  (jason@wahini.cygnus.com)

	* configure: if ${newsrcdir}/configure doesn't exist, don't assume
	that ${newsrcdir}/configure.in does.

Tue Jul 20 11:28:50 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* test-build.mk: support for CONFIG_SHELL

Mon Jul 19 21:54:46 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* config.sub (netware):  Add as a basic system type.

Wed Jul 14 12:03:11 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* Makefile.in (Makefile): depend on configure.in.  Also drop the
	  $(srcdir)/ from the dependency on Makefile.in.

Tue Jul 13 20:10:58 1993  Doug Evans  (dje@canuck.cygnus.com)

	* config.sub: Recognize h8300hhms as h8300h-hitachi-hms.
	(h8300hhms is temporary until multi-libraries are implemented).
	* configure.in: Handle h8300h too.

Sun Jul 11 17:35:27 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Recognize dpx/2 as m68k-bull-sysv3.

Thu Jul  8 18:26:12 1993  John Gilmore  (gnu@cygnus.com)

	* configure:  Remove extraneous output when guessing host type.
	* config.guess:  Remove extraneous output when guessing using C
	compiler rather than uname, or when guessing fails.

Wed Jul  7 17:58:14 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)

	* Makefile.in: remove all.cross and install.cross targets

	* configure: remove CROSS=-DCROSS_COMPILE and ALL=all.cross
	  definitions

Tue Jul  6 10:39:44 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* configure.in (target sh): Build gprof.

Thu Jul  1 16:52:56 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config.sub: change -solaris to -solaris2

Thu Jul  1 15:46:16 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in: Use config/mh-riscos for mips-*-sysv*.

Wed Jun 30 09:31:58 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure: Correct error message for missing Makefile.in to
	print correct directory.

Tue Jun 29 13:52:16 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* install.sh: kludge around 386BSD shell bug

Tue Jun 29 13:06:49 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* config.guess:  Recognize NeXT.
	* config.guess:  Recognize i486-ncr-sysv4.
	* Makefile.in (taz):  rm $(TOOL)-$$VER before linking.

Tue Jun 29 12:50:57 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (MAKEINFOFLAGS): New variable.
	(FLAGS_TO_PASS): Pass MAKEINFO as MAKEINFO MAKEINFOFLAGS.
	* build-all.mk, test-build.mk: Pass down --no-split as
	MAKEINFOFLAGS when hosted on DOS.  Compile DOS hosted without -g.

Thu Jun 24 13:39:11 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in (DEVO_SUPPORT):  Add COPYING COPYING.LIB install.sh.

Wed Jun 23 12:59:21 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in (libg++.tar.z):  New rule.
	* Makefile.in (taz):  Replace 'configure -rm' by 'make distclean'.
	* Makefile.in (taz):  Only do a single chmod.

Fri Jun 18 12:03:10 1993  david d `zoo' zuhn  (zoo at majipoor.cygnus.com)

	* install.sh: don't use dirname anymore (replaced with sed usage)

Thu Jun 17 18:43:42 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in:  Change extension for gzip'd files from '.z' to
	'.gz' per new FSF standard usage.

Thu Jun 17 16:58:50 1993  david d `zoo' zuhn  (zoo at majipoor.cygnus.com)

	* configure: put quotes around the final value of program_transform_name

Tue Jun 15 16:48:51 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: new install.sh support; update install-info rules

Wed Jun  9 12:31:34 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: Build diff for crosses, but not for go32 host.

	* configure.in: Build gprof only for native, and don't build it
	for mips-*-*, rs6000-*-*, or i[34]86-*-sco*.

Mon Jun  7 13:12:11 1993  david d `zoo' zuhn  (zoo at deneb.cygnus.com)

	* configure.in: don't build gas,ld,binutils on for *-*-sysv4

Mon Jun  7 11:40:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* configure.in (host_tools): Add prms.

Fri Jun  4 13:30:42 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: install gcc, do installation of $(INSTALL_MODULES)
	with $(FLAGS_TO_PASS) on the command line

	* config.sub: Recognize lynx and lynxos

Fri Jun  4 10:59:56 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config.sub: Accept -ecoff*, not just -ecoff.

Thu Jun  3 17:38:54 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (taz): Use .gz suffix instead of .z.
	(binutils.tar.gz, gas+binutils.tar.gz, gas.tar.gz): Fixed target
	names.

Thu Jun  3 00:27:06 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in (vault-install): add an 'else true' (for Ultrix)

Wed Jun  2 18:19:16 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in (install-no-fixedincludes):  install gcc last, so
	that rebuilds that might happen during 'make install' don't get
	bogus gcc include files

Wed Jun  2 16:14:10 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	Change from Utah for HPPA support:
	* config.guess: Recognize hppa1.x-hp-bsd.

Wed Jun  2 11:53:33 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* config.guess:  Add support for Motorola Delta 68k, up to r3v7.
	Patch from pot@fly.cnuce.cnr.it (Francesco Potorti`).

Tue Jun  1 17:48:42 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* config.sub: Add support for rom68k and bug boot monitors.

Mon May 31 09:36:37 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in: Make all-opcodes depend on all-bfd.

Thu May 27 08:05:31 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config.guess: Added special check for i[34]86-univel-sysv4*.

Wed May 26 16:33:40 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config.guess: For i[34]86-unknown-sysv4 use UNAME_MACHINE for
	the processor rather than assuming i486.

Wed May 26 09:40:18 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.guess: Recognize SunOS6 as Solaris3.

Tue May 25 23:03:11 1993  Per Bothner  (bothner@cygnus.com)

	* config.guess:  Fix typo.  Avoid #elif (not in K&R 1).
	Recognize SunOS 5.* only (and not [6-9].*) as being Solaris2.

Tue May 25 12:44:18 1993  Ian Lance Taylor  (ian@cygnus.com)

	* build-all.mk (all-cross): New target for Canadian Cross.
	Added Q2 go32 targets.
	* test-build.mk: Configure go32 cross sparclite-aout and
	mips-idt-ecoff -with-gnu-ld.  Moved build binary directory from
	PARTIAL_HOLE_DIRS to BUILD_HOLES_DIRS.

Mon May 24 15:30:06 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: fix Alpha GDB typo; also, don't build DejaGnu for
	GO32 hosted toolchains

Mon May 24 14:18:41 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* configure: change  so "-exec-prefix" gets passed down rather
	than "-exec_prefix" so autoconf generated Makefiles get the
	exec_prefix set right.

Fri May 21 10:42:25 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config.guess: get the Solaris2 minor version number

	* Makefile.in: add standards.texi and make-stds.texi to ETC_SUPPORT

Fri May 21 06:20:52 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* config.guess: Recognize some Sequent platforms.

Thu May 20 14:33:48 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: added the vault-install target

	* configure.in: actually use the Sun3 makefile fragment that's in
	config, also added the release dir to configdirs

Thu May 20 14:19:18 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (taz): Fix modes on stuff in $(TOOL) dir also.

Tue May 18 20:26:41 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: remove some program from Alpha targetted toolchains

Tue May 18 15:23:19 1993  Ken Raeburn  (raeburn@cygnus.com)

	* Makefile.in (DISTSTUFFDIRS): Renamed from PROTODIRS.  Add ld and
	gprof.
	(taz): Run "make diststuff" in those directories instead of "make
	proto-dir".  Look for "VERSION=" only at start of line in subdir
	Makefile.  Use "gzip -9" for compression.
	(TEXINFO_SUPPORT, DIST_SUPPORT, BINUTILS_SUPPORT_DIRS): New vars.
	(binutils.tar.z): New target.

Mon May 17 17:01:15 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* Makefile.in (taz): Include gpl.texinfo.

Fri May 14 06:48:38 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* Makefile.in (setup-dirs): Merged into "taz" target.
	(taz): Only do `proto-dir' stuff if a directory is actually needed
	for this target.

Wed May 12 13:09:44 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (MUNCH_NM): New variable, defined to be $(NM).
	(FLAGS_TO_PASS): Pass down MUNCH_NM.
	(HOST_CC, HOST_PREFIX, HOST_PREFIX_1): New variables.
	(EXTRA_GCC_FLAGS): Pass down HOST_* variables.
	(gcc-no-fixedincludes): Correct for current gcc Makefile.

Tue May 11 10:14:25 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (make-gdb.tar.Z):  Add configure, config.guess,
	config.sub, and move-if-change to gdb testsuite distribution
	archive, so the testsuite can be extracted, configured, and
	run separately from the gdb distribution.  Blow away the Chill
	tests that require a Chill compiled executable, since GNU Chill
	is not yet publically available.

Mon May 10 17:22:26 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* test-build.mk: set environment variables in a single command,
	instead of a list of assignments and exports

	* config.guess: recognize Alpha/OSF1 systems

Mon May 10 14:55:51 1993  K. Richard Pixley  (rich@rtl.cygnus.com)

	* configure: Change help message to prefer --options rather than
	  -options.

Mon May 10 05:58:35 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* config.sub: Convergent Tech. "miniframe" uses m68010, sez
	zippy@ecst.csuchico.edu.
	* config.guess: Recognize miniframe.

Sun May  9 17:47:57 1993  Rob Savoye  (rob at darkstar.cygnus.com)

       * Makefile.in: Use srcroot to find runtest rather than rootme.
       Pass RUNTESTFLAGS and EXPECT down in BASE_FLAGS_TO_PASS.

Fri May  7 14:55:59 1993  Ian Lance Taylor  (ian@cygnus.com)

	* test-build.mk: Extensive additions to support building on a
	machine other than the host.

Wed May  5 08:35:04 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* configure (tooldir): Fix for i386-aix again.

Mon May  3 19:00:27 1993  Per Bothner  (bothner@cygnus.com)

	* configure, Makefile.in:  Change definition of $(tooldir)
	to match the FSF.

Fri Apr 30 15:55:21 1993  Fred Fish  (fnf@cygnus.com)

	* config.guess:  Recognize i[34]86/SVR4.

Fri Apr 30 15:52:46 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in (all-gdb): gdb depends on sim.

Thu Apr 29 23:30:48 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (gdb.tar.Z):  Make prototype gdb testsuite directory
	at the same time we make the prototype gdb directory.
	* Makefile.in (make-gdb.tar.Z):  Make the testsuite distribution
	files at the same time as the gdb base release distribution.

Thu Apr 29 12:50:37 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (check): Use individual check targets rather than
	DO_X rule.
	(check-gcc): Added.

Thu Apr 29 09:50:07 1993  Jim Kingdon  (kingdon@cygnus.com)

	* config.sub: Use sysv3.2 not sysv32 for canonical OS
	for System V release 3.2.

Thu Apr 29 10:33:22 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* config.sub: Recognize hppaosf.
	* configure.in: Do configure ld/binutils/gas for it.

Tue Apr 27 06:25:34 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* configure (tooldir): Alter syntax used to set this, for systems
	where "\$" isn't handled right, like i386-aix.

Thu Apr 22 08:17:35 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure: Pass program-transform-name, not
	program_transform_name, to recursive configures.

Thu Apr 22 02:58:21 1993  Ken Raeburn  (raeburn@cygnus.com)

	* Makefile.in (gas+binutils.tar.z): New rule for building snapshots
	of gas+ld+binutils.

Mon Apr 19 17:41:30 1993  Per Bothner  (bothner@cygnus.com)

	* config.guess:  Recognize AIX3.2 as distinct from 3.1.

Sat Apr 17 17:19:50 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: rename m88k-motorola-m88kbcs to m88k-motorola-sysv

Tue Apr 13 16:52:16 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (PRMS): Set back to all-prms.

Sat Apr 10 12:04:07 1993  Ian Lance Taylor  (ian@cygnus.com)

	* test-build.mk: Pass -with-gnu-as for known MIPS native and MIPS
	targets, rather than for MIPS hosts.

Fri Apr  9 13:51:06 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: add comment for --with-x default values

	* config.guess: handle Motorola Delta88 box for SVR3 and SVR4.

	* Makefile.in: add check-* targets for each of the directories in
	the tree.  Add a definition of RUNTEST that will use the one we
	just built, if it exists.  Pass this down via FLAGS_TO_PASS.

Thu Apr  8 09:21:30 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: Removed obsolete references to bfd_target and
	target_makefile_frag.

	* build-all.mk: Set assorted targets for Q2.
	* config.sub: Recognize z8k-sim and h8300-hms.
	* test-build.mk: Really don't pass host to configure.
	(HOLES): Added uname.

Wed Apr  7 15:48:19 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure: Handle an empty program-prefix, program-suffix or
	program-transform-name correctly.

Tue Apr  6 13:48:41 1993  Ian Lance Taylor  (ian@cygnus.com)

	* build-all.mk: -G 8 no longer required for MIPS targets.
	* test-build.mk: Don't pass host argument to configure; make it
	guess.

Tue Apr  6 10:36:53 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (gdb.tar.Z):  Fix for building gzip'd distribution.
	* Makefile.in (COMPRESS):  New macro, like GZIP.

Fri Apr  2 09:02:31 1993  Ian Lance Taylor  (ian@cygnus.com)

	* test-build.mk: Use -with-gnu-as for mips-sgi-irix4 as well.

	* build-all.mk: Set GCC to gcc -O -G 8 for MIPS targets, since gcc
	with gas currently defaults to -G 0.

Thu Apr  1 08:25:42 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (all-flex): flex depends on byacc.

	* build-all.mk: If host not specified, use config.guess.  Pass TAG
	to test-build.mk as RELEASE_TAG.
	* test-build.mk (configargs): New variable containing arguments to
	pass to configure.  Set to -with-gnu-as on mips-dec-ultrix.
	(FLAGS_TO_PASS): Pass down RELEASE_TAG.

	* config.guess: Use /bin/uname when checking -X argument on SCO,
	to avoid invoking GNU uname which doesn't understand -X.

	* test-build.mk: Don't use /usr/unsupported/bin/as on AIX.

	* configure.in: Build gas for mips-*-*.

Wed Mar 31 21:20:58 1993  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in (all.normal): insert missing backslash.

Wed Mar 31 12:31:56 1993  Ian Lance Taylor  (ian@cygnus.com)

	* build-all.mk: Bump -XNh value to 1500 to match gcc requirements.

	* Makefile.in: Complete overhaul to merge many almost identical
	targets.

Tue Mar 30 20:17:01 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (setup-dirs-gdb): Renamed from setup-dirs.
	(gdb.tar.Z): Adjusted.

	* Makefile.in (setup-dirs, taz): New targets; should be general
	enough to adapt for gdb sometime.  Build only .z file.
	(gas.tar.z): New target.

Tue Mar 30 10:03:09 1993  Ian Lance Taylor  (ian@cygnus.com)

	* build-all.mk: Use CC=cc -Xs on Solaris.

Thu Mar 25 15:14:30 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in:  Incorporate changes suggested by wilson@cygnus.com
	for handling BISON for FSF releases.

Thu Mar 25 06:19:48 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* configure: Actually implement the change zoo just documented.

Wed Mar 24 13:02:44 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* configure: when using config.guess, only set target_alias when
	it's not already been set (ie, on the command line)

Mon Mar 22 23:07:39 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: add installcheck target, set PRMS to install-prms

Sun Mar 21 16:46:12 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure: add support for package_makefile_fragment, handle the
	case where a directory has a configure.in file but no Makefile.in
	more gracefully (with an actual understandable error message, even);
	add support for --without (and add this to the usage message); also
	explicitly add a --host=${host_alias} to the command line when
	config.guess is used

Sun Mar 21 12:11:58 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* configure: Must use both --host and --target in recursive calls.

Thu Mar 18 12:31:35 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: Change deja-gnu to dejagnu.

Mon Mar 15 15:44:35 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in (h8300-*-*, h8500-*-*): Don't build libg++.

Fri Mar 12 18:30:14 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: canonicalize all instances to *-*-solaris2*,
	also strip out a number of tools to not build for go32 host

Wed Mar 10 12:08:27 1993  K. Richard Pixley  (rich@rtl.cygnus.com)

	* config.guess: add GPL.

	* Makefile.in, config.guess, config.sub, configure: bump
	  copyrights to 93.

Wed Mar 10 07:12:48 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (do-info): Removed obsolete check for existence of
	localenv file.

	* Makefile.in (MAKEOVERRIDES): Define to be empty.

Wed Mar 10 03:11:56 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: a couple of 'else true' for decstation,
	support for TclX

	* configure.in: configure tclX too; don't remove Tk on RS/6000 anymore

Tue Mar  9 16:06:12 1993  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in (setup-dirs): change invocation of make to $(MAKE).

Mon Mar  8 14:52:11 1993  Ken Raeburn  (raeburn@cambridge)

	* config.guess: Recognize i386-ibm-aix (PS/2).
	* configure.in: Use config/mh-aix386 file for it.

Mon Mar  8 11:12:43 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (GCC_FOR_TARGET): Eliminated definition; use
	CC_FOR_TARGET instead.
	(BASE_FLAGS_TO_PASS): Pass GCC_FOR_TARGET=$(CC_FOR_TARGET).

Wed Mar  3 16:00:28 1993  Steve Chamberlain  (sac@ok.cygnus.com)

	* Makefile.in: Add sim to list of directories sent with gdb

Wed Mar  3 11:42:39 1993  Ken Raeburn  (raeburn@cygnus.com)

	* configure.in: Put back mips-dec-bsd* case.

Tue Mar  2 21:15:58 1993  Fred Fish  (fnf@cygnus.com)

	(Ultrix 2.2 support from Michael Rendell <michael@mercury.cs.mun.ca>)
	* configure.in (vax-*-ultrix2*):  Add Ultrix 2.2 triplet.
	* config.guess:  Change 'VAX*:ULTRIX:*:*' to 'VAX*:ULTRIX*:*:*'.

Tue Mar  2 18:11:03 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: remove no-op mips-dec-bsd* in "case $target"

	* Makefile.in (dir.info): only run gen-info-dir if it exists,
	(install-info): install dir.info only if it exists,
	(all-expect, install-expect): pass along X11_FLAGS_TO_PASS

Tue Mar  2 09:01:30 1993  Ken Raeburn  (raeburn@cygnus.com)

	* configure.in: For vms target, skip bfd, ld, binutils.  Do build
	gas for mips-dec-bsd.

Tue Mar  2 08:35:24 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure (makesrcdir): If ${srcdir} is relative and not ".",
	and ${subdir} is not ".", set makesrcdir based on ${invsubdir}.

Tue Feb 23 14:18:28 1993  Mike Werner  (mtw@poseidon.cygnus.com)

	* configure.in: Added "dejagnu" to hosttools list.

Mon Feb 22 23:28:38 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* config.sub, configure.in, config.guess:  Add support
	for Bosx, an AIX variant from Bull.
	Patches from F.Pierresteguy@frcl.bull.fr.

Sun Feb 21 11:15:22 1993  Mike Werner  (mtw@poseidon.cygnus.com)

	* devo/dejagnu: Initial creation of devo/dejagnu.
	Migrated dejagnu testcases and support files for testing software
	tools to reside as subdirectories, currently called "testsuite",
	within the directory of the software tool.  Migrated all programs,
	support libraries, etc. beloging to dejagnu proper from
	devo/deja-gnu to devo/dejagnu.	These files were moved "as is"
	with no modifications.	The changes to these files which will
	allow them to configure, build, and execute properly will be made
	in a future update.

Fri Feb 19 20:19:39 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in: Change send_pr to send-pr.
	* configure.in: Likewise.
	* send_pr: Renamed directory to send-pr.

Fri Feb 19 19:00:13 1993  Per Bothner  (bothner@cygnus.com)

	* Makefile.in:  Add some extra semi-colons (needed if SHELL=bash).

Fri Feb 19 00:59:33 1993  John Gilmore  (gnu@cygnus.com)

	* README:  Update for gdb-4.8 release.
	* Makefile.in (gdb.tar.Z):  Add texinfo/tex3patch.  Build
	gdb-xxx.tar.z (gzip'd) file also.

Thu Feb 18 09:16:17 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: make all-diff depend on all-libiberty

Tue Feb 16 16:06:31 1993  K. Richard Pixley  (rich@cygnus.com)

	* config.guess: add vax-ultrix in the spirit of mips-ultrix.

Tue Feb 16 05:57:15 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in, Makefile.in: add hello, tar, gzip, recode, indent

Tue Feb 16 00:58:20 1993  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (DEVO_SUPPORT):  Remove etc directory
	(ETC_SUPPORT):  Only add the files GDB wants from etc/.
	(gdb.tar.Z):  Use ETC_SUPPORT.  Use byacc when building the file.

Thu Feb 11 20:14:28 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in:  makeinfo binary is in a new location

Tue Feb  9 12:42:27 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config.sub: Accept -ecoff as an OS.

	* Makefile.in: Various changes to eliminate a level of make
	recursion and reduce the required command line length.
	(BASE_FLAGS_TO_PASS): New variable holding flags passed to all
	sub-makes.
	(EXTRA_HOST_FLAGS, EXTRA_TARGET_FLAGS, EXTRA_GCC_FLAGS): New
	variables holding settings for specific sub-makes.
	(FLAGS_TO_PASS, TARGET_FLAGS_TO_PASS, GCC_FLAGS_TO_PASS): Rewrote
	in terms of BASE_FLAGS_TO_PASS.
	(TARGET_LIBS): New variable listing directories which use
	TARGET_FLAGS_TO_PASS.
	(subdir_do): Eliminated.
	(do-*): New set of targets to replace subdir_do.
	(various): All targets which used subdir_do now depend on do-*.
	(local-clean): Renamed from do_clean.
	(local-distclean): New target, dependency of distclean and
	realclean.
	(install-info): Don't create directories.  Depend on dir.info
	rather than calling make recursively.
	(install-dir.info): Eliminated.
	(install-info-dirs): Create all info directories here.
	(dir.info): Depend upon do-install-info.

	* test-build.mk (HOLES): Added false.

Sat Feb  6 14:05:09 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* config.guess:  Recognize BSDI and BSDJ (Jolitz 386bsd).

Thu Feb  4 20:49:18 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in (info): remove dependency on all-texinfo.  The
	problem was really in texinfo/C, not at this level.

Thu Feb  4 13:38:41 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (info): Added dependency on all-texinfo (PR 2112).

Thu Feb  4 01:50:53 1993  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (make-gdb.tar.Z):  Change BISON to 'bison -y' for
	GDB releases.

Wed Feb  3 17:22:16 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* configure: Include srcdir in message about target of link not
	being found.  Don't convert `-' to `_' in `with' options being
	passed to subdirs.

Tue Feb  2 18:57:59 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: add uudecode to host_tools

	* Makefile.in: added {all,install}-uudecode targets, added them to
	the appropriate lists

Tue Feb  2 11:45:53 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (all-gcc): Added dependency on all-gas.

	* configure.in (mips-*-*): Build ld and binutils.

Mon Feb  1 12:35:41 1993  K. Richard Pixley  (rich@rtl.cygnus.com)

	* configure: check return code from mkdir, print error message and
	  exit on failure.

Sat Jan 30 16:40:28 1993  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (make-gdb.tar.Z):  New location for texinfo.tex.

Thu Jan 28 15:09:59 1993  Ian Lance Taylor  (ian@cygnus.com)

	* test-build.mk (HOLES): Added tar, cpio and uudecode.

Wed Jan 27 16:50:32 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* config.sub (h8500):  Recognize this as a cpu type.

Sat Jan 23 20:32:01 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure: source directory missing is no longer a warning

	* configure.in: recognize irix[34]* instead of irix[34]

	* Makefile.in: define and pass down X11_LIB

Sat Jan 23 13:49:40 1993  Per Bothner  (bothner@cygnus.com)

	* guess-systype: Renamed to ...
	* config.guess:  ... by popular request.
	* configure.in, Makefile.in:  Update accordingly.

Thu Jan 21 12:20:55 1993  Per Bothner  (bothner@cygnus.com)

	* guess-systype:  Patches from John Eaton <jwe@che.utexas.edu>:
	+ Add Convex, Cray/Unicos, and Encore/Multimax support.
	+ Execute ./dummy instead of assuming . is in PATH.

Tue Jan 19 17:18:06 1993  Per Bothner  (bothner@cygnus.com)

	* guess-systype:  New shell script.  Attempts to guess the
	canonical host name of the executing host.
	Only a few hosts are supported so far.
	* configure:  Call guess-systype if no host is specified.

Tue Jan 19 08:26:07 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (gcc-no-fixedincludes): Made to work with current
	gcc Makefile.


Fri Jan 15 10:27:02 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (GCC_FLAGS_TO_PASS): New variable.
	(all-gcc, install-gcc, subdir_do): Use it.

Wed Jan 13 17:06:45 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* Makefile.in: Rename uninstalled gcc driver from gcc to xgcc.

Wed Jan  6 20:29:16 1993  Mike Werner  (mtw@rtl.cygnus.com)

	* Makefile.in: Removed explicit setting of SUBDIRS. SUBDIRS is now
	  set exclusively by configure, using configure.in .

Wed Jan  6 13:44:11 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* test-build.mk: set $PATH for all builds

	* Makefile.in: pass TARGET_FLAGS_TO_PASS for xiberty and libm

Wed Jan  6 11:02:10 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (GCC_FOR_TARGET):  Supply a default that matches
	the one used in gcc/Makefile.in, so that a null expansion doesn't
	override the one needed to build gcc with a native cc.


Tue Jan  5 07:55:12 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* configure: Accept -with arguments.

Sun Jan  3 15:15:09 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in: added h8300sim

Tue Dec 29 15:06:00 1992  Ian Lance Taylor  (ian@cygnus.com)

	* build-all.mk: If canonhost is i386-unknown-sco3.2v4, change it
	to i386-sco3.2v4.  Set TARGETS and CFLAGS for i386-sco3.2v4.
	(all-cygnus, native, build-cygnus): Make
	$(canonhost)-stamp-3stage-done, not $(host)....
	* test-build.mk (stamp-3stage-compared): Use tail +10c for
	i386-sco3.2v4.  Added else true to if command.

Mon Dec 28 12:08:56 1992  Ken Raeburn  (raeburn@cygnus.com)

	* config.sub: (from FSF) Sequent uses a BSD-like OS.

Mon Dec 28 08:32:06 1992  Minh Tran-Le  (mtranle@paris.intellicorp.com)

	* configure.in (i[34]86-*-isc*): added; uses mh-sysv.

Thu Dec 24 17:26:24 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: don't remove binutils from Solaris builds

Thu Dec 24 14:08:38 1992 david d`zoo' zuhn  (zoo@cygnus.com)

	* Makefile.in: get rid of earlier definitions for *clean,
	also handle the recursive info rule better

Thu Dec 24 12:40:21 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in (mostlyclean, distclean, realclean):  Fix to
	do more-or-less the right thing.

Wed Dec 16 10:25:31 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: Add lines defining CC and CXX, and use CXX rather
	than gcc in definitions of CXX_FOR_BUILD and CXX_FOR_TARGET.

Tue Dec 15 00:34:32 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: change all $(host_cpu)-$(host_vendor)-$(host_os) to
	$(host_canonical).

	* configure.in: split the configdirs list into 4 categories (native
	v. cross, library v. tool) and handle the cross-only and native-
	only in more reasonable (and correct!) way.

Mon Dec 14 17:04:22 1992  Stu Grossman  (grossman at cygnus.com)

	* configure.in (hppa*-*-*):  Don't remove bfd and gdb from
	configdirs anymore.

Sun Dec 13 00:37:26 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: extensive cleanup::  removed all of the explicit
	clean-* targets, collapsed many wrappers around subdir_do into
	one, added additional targets to satisfy standards.texi, deleted
	some old targets, some changes for consistency

Fri Dec 11 20:18:02 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: handle some programs as cross-only, and others as
	native only

	* test-build.mk: handle partial holes in a more generic manner

	* Makefile.in: m4 depends on libiberty

Thu Dec  3 21:52:11 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: add m4, textutils, fileutils, sed, shellutils,
	time, wdiff, and find to configdirs

	* Makefile.in: all, clean, and install rules for the new programs
	added to configure.in

Mon Nov 30 14:54:34 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: use mh-sun for all *-sun-* hosts

Fri Nov 27 18:35:54 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: define flags for X11 include files and library file
	locations, pass them down to the programs that need this info

	* build-all.mk: added a 'native' target, to 3stage the native toolchain

Sun Nov 22 18:59:13 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: start building libg++ for HP-UX targets

Wed Nov 18 19:33:11 1992  John Gilmore  (gnu@cygnus.com)

	* README:  Update references to files moved into etc/.

Sun Nov 15 09:36:08 1992  Fred Fish  (fnf@cygnus.com)

	* config.sub (i386sol2, i486sol2):  i[34]86-unknown-solaris2.
	* configure.in (i[34]86-*-solaris2*):  Use config/mh-sysv4.

Thu Nov 12 08:50:42 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure: accept dash as well as underscore in long option
	names for FSF compatibility.

Wed Nov 11 08:04:37 1992  Ian Lance Taylor  (ian@cygnus.com)

	* config.sub: added -sco3.2v4 support from FSF.

Sun Nov  8 21:14:30 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: expand the section that adds or removes
	directories from the list of programs to build, to handle native
	vs. cross in addition to host v. native

Sat Nov  7 18:52:27 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in:  Replace C++ in macro names with CXX.
	This is less likely to break ...

Sat Nov  7 15:16:58 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* test-build.mk: add -w to GNU_MAKE

Fri Nov  6 23:10:37 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config.sub: remove 'sparc'-->'sparc-sun' default transformation,
	add 'sparc' to list of recognized cpus.  This needed to make
	'sparc-aout' expand to 'sparc-unknown-aout' instead of 'sparc-sun-aout'.
	Delete some redundant ose68 variants.  Recognize -wrs as an os,
	then changes that into $CPU-wrs-vxworks.

	* configure.in: remove most references to gdbtest, regularize
	target based program removal

	* test-build.mk: import from p3 tree (many fixes and changes)

Fri Nov  6 20:59:00 1992  david d `zoo' zuhn  (zoo@cygnus.com)

	* Makefile.in: added rules to handle tcl, tk, and expect

	* configure.in: handle those directories if they exist

Thu Nov  5 14:35:41 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config.sub: removed bogus hppabsd and hppahpux names, since
	"hppa" is not a valid cpu (hppa1.1 or hppa1.0 are, though)

Thu Oct 29 00:12:41 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: all-gcc now depends on all-binutils.  all-libg++
	depends upon all-xiberty

	* Makefile.in: changes from p3, including:

	Thu Oct  8 15:00:17 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (XTRAFLAGS): include newlib directories if
	newlib/Makefile exists, rather than if host != target.

	Fri Sep 25 13:41:52 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: added -nostdinc to XTRAFLAGS if we are using gcc
	from the same source tree and not building a cross-compiler.  This
	matters for the libg++ configuration if reconfiguring a tree that
	has already been installed.

	Thu Sep 10 10:35:51 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: added -I for newlib/targ-include to XTRAFLAGS, to
	pick up the machine and system specific header files.

	* Makefile.in: added AS_FOR_TARGET, passed down in
	TARGET_FLAGS_TO_PASS.  Added CC_FOR_BUILD, which is intended to be
	the C compiler to use to create programs which are run in the
	build environment, set it to default to $(CC), and passed it down
	in FLAGS_TO_PASS and TARGET_FLAGS_TO_PASS.

	Mon Sep  7 22:34:42 1992  Ian Lance Taylor  (ian@cirdan.cygnus.com)

	* Makefile.in: add $(host) = $(target) tests back to *_FOR_TARGET.
	We need them for unusual native builds, like systems without
	ranlib.

	* configure: also define $(host_canonical) and
	$(target_canonical), which are the full, canonical names for the
	given host and target

Sun Nov  1 16:38:17 1992  Per Bothner  (bothner@cygnus.com)

	* Makefile.in:  Added separate definitions for C++.

Fri Oct 30 11:37:52 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in (configdirs):  Add deja-gnu.

Fri Oct 23 00:39:18 1992  John Gilmore  (gnu@cygnus.com)

	* README:  Update for configure.texi and gdb-4.7 release.

Wed Oct 21 21:54:27 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in:  Move "all" target to top of file.
	Previously, first target was ".PHONY" which caused BSD4.4 make
	to build .PHONY when make was run without arguments.

Mon Oct 19 01:17:54 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in:  Add COPYING.LIB to GDB releases, now that there's
	Library-copylefted code in libiberty.

Tue Oct 13 01:22:32 1992  John Gilmore  (gnu@cygnus.com)

	* config.sub:  Replace m68kmote with plain old m68k.

Fri Oct  9 03:14:24 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in:  Remove space from blank line, avoid Make complaints.

Thu Oct  8 18:41:45 1992  Ken Raeburn  (raeburn@cygnus.com)

	* config.sub: Complain if no argument is given.  Added support for
	386bsd as OS and target alias.

Thu Oct  8 15:07:22 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (XTRAFLAGS): include newlib directories if
	newlib/Makefile exists, rather than if host != target.

Mon Oct  5 03:00:09 1992  Mark Eichin  (eichin at tweedledumber.cygnus.com)

	* config.sub: recognize sparclite-wrs-vxworks.

	* Makefile.in (install-xiberty): added *-xiberty make rules (from
	p3.) Added clean-xiberty to clean.

Thu Oct  1 17:59:19 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: use *-*-* instead of nested cases for host and target

Tue Sep 29 14:11:18 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: added -nostdinc to XTRAFLAGS if we are using gcc
	from the same source tree and not building a cross-compiler.  This
	matters for the libg++ configuration if reconfiguring a tree that
	has already been installed.

Sep 20 08:53:10 1992  Fred Fish  (fnf@cygnus.com)

	* config.sub (i486v/i486v4):  Merge in from FSF version.

Fri Sep 18 00:32:00 1992  Mark Eichin  (eichin@cygnus.com)

	* configure: only set PWD if it is already set.

Thu Sep 17 23:05:53 1992  Mark Eichin  (eichin@cygnus.com)

	* configure: just set PWD=`pwd` at the top, since Ultrix sh
	doesn't have unset and all success paths (and most error paths)
	out set it anyway. (Note: should change all uses of ${PWD=`pwd`}
	to just ${PWD} to avoid confusion.)

Tue Sep 15 16:00:54 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure: always set $(tooldir) to $(libdir)/$(target_alias),
	even for a native compilation.

Tue Sep 15 02:22:56 1992  John Gilmore  (gnu@cygnus.com)

	Changes to make the gdb.tar.Z rule work better.

	* Makefile.in (GDB_SUPPORT_DIRS):  Add opcodes.
	(DEVO_SUPPORT):  Add configure.texi.
	(bfd-ilrt.tar.Z):  Remove ancient rule.

Thu Sep 10 10:43:19 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: added -I for newlib/targ-include to XTRAFLAGS, to
	pick up the machine and system specific header files.

	* configure.in, config.sub: added new target m68010-adobe-scout,
	with alias of adobe68k.  Changed configure.in to check for
	-scout before -sco* to avoid a false match.

	* Makefile.in: added AS_FOR_TARGET, passed down in
	TARGET_FLAGS_TO_PASS.  Added CC_FOR_BUILD, which is intended to be
	the C compiler to use to create programs which are run in the
	build environment, set it to default to $(CC), and passed it down
	in FLAGS_TO_PASS and TARGET_FLAGS_TO_PASS.

Wed Sep  9 12:21:42 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: added TARGET_FLAGS_TO_PASS, CC_FOR_TARGET,
	AR_FOR_TARGET, RANLIB_FOR_TARGET, NM_FOR_TARGET.  Pass
	TARGET_FLAGS_TO_PASS, which defines CC, AR, RANLIB and NM as the
	FOR_TARGET variants, to newlib and libg++.

Tue Sep  8 17:28:30 1992  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (all-gas, all-gdb): Require all-opcodes to be built
	first.

Wed Sep  2 02:50:05 1992  John Gilmore  (gnu@cygnus.com)

	* config.sub:  Accept `elf' as an environment.

Tue Sep  1 15:48:30 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in (all-opcodes):  cd into the right directory

Sun Aug 30 21:12:11 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure: added -program_transform_name option, used as
	argument to sed when installing programs.
	configure.texi: added documentation for -program_prefix,
	-program_suffix and -program_transform_name.

Thu Aug 27 21:59:44 1992  John Gilmore  (gnu@cygnus.com)

	* config.sub:  Accept i486 where i386 ok.

Thu Aug 27 13:04:42 1992  Brendan Kehoe  (brendan@rtl.cygnus.com)

	* config.sub: accept we32k

Mon Aug 24 14:05:14 1992  Ian Lance Taylor  (ian@cygnus.com)

	* config.sub, configure.in: accept OSE68000 and OSE68k.

	* Makefile.in: don't create all directories for ``make install'';
	let the subdirectories create the ones they need.

Tue Aug 11 23:13:17 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* COPYING: new file, GPL v2

Tue Aug  4 01:12:43 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: use the new gen-info-dir, which needs a template
	argument (which also lives in texinfo)

	* configure.texi, standards.texi: fix INFO-DIR-ENTRY

Mon Aug  3 00:34:17 1992  Fred Fish  (fnf@cygnus.com)

	* config.sub (ncr3000):  Change i386 to i486.

Thu Jul 23 00:12:17 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: add install-rcs, install-grep to
	install-no-fixedincludes, removed install-bison and install-libgcc

Tue Jul 21 01:01:50 1992  david d `zoo' zuhn (zoo@cygnus.com)

	* configure.in: grab the HPUX makefile fragment if on HPUX

Mon Jul 20 11:02:09 1992  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* Makefile.in: eradicate bison spoor (ditto libgcc).
	 configure.in: recognise m68{k,000}-ericsson-OSE.
	 es1800 is alias for m68k-ericsson-OSE

Sun Jul 19 17:49:02 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: rearrange the parts that remove programs from
	configdirs, based now on HOST==TARGET or by canonical triple.

Fri Jul 17 22:52:49 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* test-build.mk: recurse explicitly with -f test-build.mk when
	  appropriate.  predicate stage3 and comparison on the existence
	  of gcc.  That is, if gcc isn't around, we aren't three-staging.
	  On very clean, also remove ...stamp-co.  Build in-place before
	  doing other builds.

Thu Jul 16 18:33:09 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in, configure.in: add tgas

Thu Jul 16 16:05:28 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: a number of changes merged in from progressive.

	* configure.in: add libm.

	* .cvsignore: ignore some stuff that comes from test-build.mk.

Tue Jul  7 00:24:52 1992  Fred Fish  (fnf@cygnus.com)

	* config.sub:  Add es1800 (m68k-ericsson-es1800).

Tue Jun 30 20:24:41 1992  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* configure: Add program_suffix (parallel to program_prefix)
	* Makefile.in: adjust directory-creating script for losing decstation

Mon Jun 22 23:43:48 1992  Per Bothner  (bothner@cygnus.com)

	* configure:  Minor $subdir-related fixes.

Mon Jun 22 18:30:26 1992  Steve Chamberlain  (sac@thepub.cygnus.com)

	* configure: fix various problems with propogating
	makefile_target_frag in subdirs.
	* configure.in: config libgcc if its there

Fri Jun 19 15:19:40 1992  Stu Grossman  (grossman at cygnus.com)

	* config.sub:  HPPA merge.

Sun Jun 14 10:29:19 1992  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Replace all-bison with all-byacc in all
	dependency lines for other tools (which now use byacc).

Fri Jun 12 22:21:57 1992  John Gilmore  (gnu at cygnus.com)

	* config.sub:  Add sun4sol2 => sparc-sun-solaris2.

Thu Jun  4 12:07:32 1992  Mark Eichin  (eichin@cygnus.com)

	* Makefile.in: make gprof rules similar to byacc rules (instead of
	vestigal $(unsubdir) that didn't work...)

Thu Jun  4 00:37:05 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* config.sub:  Add support for Linux.
	* Makefile.in:  Use $(FLAGS_TO_PASS) more consistently
	(at least for libg++).

Tue Jun 02 20:03:00 1992  david d `zoo' zuhn (zoo@cygnus.com)

	* configure.texi: fix doc for the -nfp option to configure

Tue Jun  2 17:20:52 1992  Michael Tiemann  (tiemann@cygnus.com)

	* Makefile.in (all-binutils): ar needs flex, so depend on all-flex.

Sun May 31 15:04:08 1992  Mark Eichin  (eichin at cygnus.com)

	* config.sub: changed [^-]+ to [^-][^-]* so that it works under
	Sun sed. (BSD 4.3 sed doesn't handle [^-]+ either.)
	* configure.in: added solaris* host_makefile_frag hook.

Sun May 31 01:10:34 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config.sub: changed recognition of m68000 so that various
	m68k types can be specified via m680[01234]0

Sat May 30 21:01:06 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config.sub (basic_machine): fix sed so that '-foo' isn't
	completely substituted out while .+'-foo' loses the '-foo'

Wed May 27 23:18:52 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)

	* config.sub ($os): Add -aout.

Fri May 22 14:00:02 1992  Per Bothner  (bothner@cygnus.com)

	* configure:  If host_makefile_frag is absolute, don't
	prefix ${invsubdir} (relevant to libg++ auto-configure).

Thu May 21 18:00:09 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)

	* Makefile.in (tooldir): Define it.
	(all-ld): Depend on all-flex.

Sun May 10 21:45:59 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in (check):  Fix libg++ special case.

Fri May  8 08:31:41 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure: do not bury `pwd` into config.status, thus do fewer
	  pwd's.

	* configure: print the "Building in" message only when building in
	  other than "." AND verbose.

	* configure: remove -s, rework -v to better accomodate guested
	  configures.

	* standards.texi: updated to 3 may, fixed librid <-> libdir typo.

Fri May  1 18:00:50 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: macroize flags passed on recursion.  remove
	  fileutils.

Thu Apr 30 08:56:20 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure: get makesrcdir right for subdirs deeper than 1.

	* Makefile.in: pass INSTALL, INSTALL_DATA, INSTALL_PROGRAM on
	  install.

Fri Apr 24 15:51:51 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: don't print subdir_do or recursion lines.

Fri Apr 24 15:22:04 1992  K. Richard Pixley  (rich@cygnus.com)

	* standards.texi: added menu item.

	* Makefile.in: build and install standards.info.

	* standards.texi: new file.

Wed Apr 22 18:06:55 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* configure: test for and move config.status pieces from
	  ${subdir}/.

Wed Apr 22 14:38:34 1992  Fred Fish  (fnf@cygnus.com)

	* configure:  Test for existance of files before trying to mv
	them, to avoid numerous non-existance messages.

Tue Apr 21 12:31:33 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure: correct final line of config.status.

	* configure: patch from eggert.  Avoids a protection problem if
	  the original Makefile.in is read only.

	* configure: use move-if-change from gcc to create config.status.
	  Some makefiles depend on config.status to tell if a directory
	  has been reconfigured for a different host.  This change
	  prevents those directories from remaking everything in the case
	  where the reconfig was only intended to rebuild a Makefile.

	* configure: test for config.sub with "config.sub sun4" rather
	  than "config.sub ${host_alias}".  Otherwise we can't tell a bad
	  host alias from a missing config.sub.

Mon Apr 20 18:16:36 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: explicitly pass CFLAGS on recursion. no longer pass
	  MINUS_G (this can be done with CFLAGS).  Default CFLAGS to -g.

Fri Apr 17 18:27:51 1992  Per Bothner  (bothner@cygnus.com)

	* configure: mkdir ${subdir} as needed.

Wed Apr 15 17:37:22 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in,configure.in: added autoconf.

Wed Apr 15 17:27:34 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: no longer pass against on recursion.

	* Makefile.in: added .NOEXPORT: so that stray makefile_frag
	  definitions are not inherited.

	* configure: correct makesrcdir when subdir is .

Tue Apr 14 11:56:09 1992  Per Bothner  (bothner@cygnus.com)

	* configure:  Add support for 'subdirs' variable, which is
	like 'configdirs', except that configure doesn't re-invoke
	itself for subdirs, it just creates a Makefile for each subdir.
	* configure.texi:  Document subdirs.

Mon Apr 13 18:50:16 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: added flex to configdirs

Mon Apr 13 18:43:55 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: remove clean-stamps from clean.

Sat Apr 11 03:52:03 1992  John Gilmore  (gnu at cygnus.com)

	* configure.in:  Add gdbtest to configdirs.

Fri Apr 10 23:11:49 1992  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (MINUS_G):  Add macro, default to -g, pass on
	to recursive makes.
	* configure.in:  Recognize new ncr3000 config.

Wed Apr  8 23:08:12 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in, configure.in: removed references to gdbm.

Tue Apr  7 16:48:20 1992  Per Bothner  (bothner@cygnus.com)

	* config.sub:  Don't canonicalize os value
	newsos* to bsd (readline needs to check for newsos).
	(This fix was earlier made Jan 31, but got re-broken.)

Mon Apr  6 14:34:08 1992  Stu Grossman  (grossman at cygnus.com)

	* configure.in:  sco is an os, not a vendor!

	* configure:  Quote $( better.  Keep various shells happy.

Tue Mar 31 16:32:57 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: eliminate stamp-files.

Mon Mar 30 22:20:23 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: add send_pr.  remove "force" from .stmp-gprof rule.
	  Supress echoing of all the "if [ -d ... $(MAKE)" lines.

Wed Mar 25 15:20:04 1992  Stu Grossman  (grossman@cygnus.com)

	* config.sub:  fix iris/iris3.

Wed Mar 25 10:34:19 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure: re-add -rm.

Tue Mar 24 23:50:16 1992  K. Richard Pixley  (rich@cygnus.com)

	* Maskefile.in: add .stmp-rcs to all.

	* configure.in: remove gas from rs6000 build, use aix host fragment.

Mon Mar 23 19:43:35 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure: pass down site_option during recursion.

Thu Mar 19 16:49:36 1992  Stu Grossman  (grossman at cygnus.com)

	* Makefile.in (all.cross):  Add .stmp-bfd .stmp-readline.

Wed Mar 18 15:29:33 1992  Mike Stump  (mrs@cygnus.com)

	* configure: Change exec_prefix so that it really defaults to prefix.

Sat Mar 14 17:20:38 1992  Fred Fish  (fnf@cygnus.com)

	* Makefile.in, configure.in:  Add support for mmalloc library.

Fri Mar 13 18:44:18 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: add stmp dependencies for a few more things.

Thu Mar 12 04:56:24 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure: adjusted error message on objdir/srcdir configure
	  collision, per john's suggestion.

	* Makefile.in: add libiberty stmp to all and all.cross.

Wed Mar 11 02:07:52 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: remove force dependencies, add grep to all.

Tue Mar 10 21:49:18 1992  K. Richard Pixley  (rich@mars.cygnus.com)

	* Makefile.in: drop flex.  make stamp files work.

	* configure: added test for conflicting configuration in srcdir,
	  remove trailing slashes from srcdir.  Otherwise emacs gdb mode
	  gets cranky.  use relative paths for configure and srcdir
	  whenever possible.  Send some error messages to stderr that were
	  going to stdout.

Tue Mar 10 18:01:55 1992  Per Bothner  (bothner@cygnus.com)

	* Makefile.in:  Fix libg++ rule to check for gcc directory
	before using gcc/gcc.  Also pass XTRAFLAGS.

Thu Mar  5 21:45:07 1992  K. Richard Pixley  (rich@sendai)

	* Makefile.in: added stmp-files so that directories aren't polled
	  when they are already built.

	* configure.texi: fixed a node pointer problem.

Thu Mar  5 12:05:58 1992  Stu Grossman  (grossman at cygnus.com)

	* config.sub configure.in gdb/configure.in
	gdb/mips-tdep.c gdb/mipsread.c gdb/procfs.c gdb/signame.h
	gdb/tm-irix3.h gdb/tm-mips.h gdb/xm-irix4.h gdb/config/mt-irix3
	gdb/config/mh-irix4 texinfo/configure.in:  Port to SGI Irix-4.x.

Wed Mar  4 02:57:46 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* configure: -recurring becomes -silent.  corrected help message
	  for -site= option.

	* Makefile.in: mkdir $(exec_prefix) and $(tooldir).

Tue Mar  3 14:51:21 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* configure: when building Makefile for crosses, replace
	  tooldir and program_prefix.  default srcdir from location of
	  config.sub.  remove "for host in hosts" and "for target in
	  targets" loops.

Wed Feb 26 19:48:25 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: Do not pass bindir or mandir to cvs.

Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in, configure.in: removed traces of namesubdir,
	  -subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
	  copyrights to '92, changed some from Cygnus to FSF.

	* configure.texi: remove most references to multiple hosts,
	  multiple targets, subdirs, etc.

	* configure.man: removed rcsid. reference config.sub not
	  config.subr.

	* Makefile.in: mkdir $(infodir) on install-info.

Wed Feb 19 15:41:13 1992  John Gilmore  (gnu at cygnus.com)

	* configure.texi:  Explain better about .gdbinit and about
	the environment that configure.in sections run in.

Fri Feb  7 07:55:00 1992  John Gilmore  (gnu at cygnus.com)

	* configure.in:  Ultrix is only a decstation if it's a MIPS.

Fri Jan 31 21:54:51 1992  John Gilmore  (gnu at cygnus.com)

	* README:  DOC.configure => cfg-paper.texi.

Fri Jan 31 21:48:18 1992  Stu Grossman  (grossman at cygnus.com)

	* config.sub (near case $os):  Don't convert newsos* to bsd!

Fri Jan 31 02:27:32 1992  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Reinstall change from gdb-4.3 that reduces
	the number of copies of COPYING that go into the GDB tar file.

Thu Jan 30 16:17:30 1992  Stu Grossman  (grossman at cygnus.com)

	* bfd/configure.in, gdb/config/mh-i386sco,
	gdb/config/mt-i386v32, gdb/configure.in, readline/configure.in:
	Fix SCO configuration stuff.

Tue Jan 28 23:51:07 1992  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  For libg++, make sure the -I pointing
	to the gcc directory goes *after* all the libg++-local -I flags.
	Also, move just-gcc dependency from just-libg++ to all-libg++.

Tue Jan 28 12:56:24 1992  Stu Grossman  (grossman at cygnus.com)

	* configure:  Change -x to -f to keep Ultrix /bin/test happy.

Sat Jan 18 17:45:11 1992  Stu Grossman  (grossman at cygnus.com)

	* Makefile.in (make-gdb.tar.Z):  Remove texinfo targets.

Sat Jan 18 17:03:21 1992  Fred Fish  (fnf at cygnus.com)

	* config.sub:  Add stratus configuration frags.  Also
	submitted to FSF.

Sat Jan 18 15:35:29 1992  Stu Grossman  (grossman at cygnus.com)

	* Makefile.in (DEV_SUPPORT):  add configure.man.

	* config.sub(Decode manufacturer-specific):  add -none*.

Fri Jan 17 17:58:05 1992  Stu Grossman  (grossman at cygnus.com)

	* Makefile.in:  remove form feeds to make Sun's make happy.
	(DEVO_SUPPORT):  DOC.configure => cfg-paper.texi.

Sat Jan  4 16:11:44 1992  John Gilmore  (gnu at cygnus.com)

	* Makefile.in (AR_FLAGS):  Make quieter.

Thu Jan  2 22:57:12 1992  John Gilmore  (gnu at cygnus.com)

	* configure.in:  Add libg++.
	* configure:  When verbose, don't output the command line at each
	level; it will be unremarkably the same as the previous version,
	which will be the same as what the user typed.

Fri Dec 27 16:26:47 1991  K. Richard Pixley  (rich at cygnus.com)

	* configure.in, Makefile.in: fix clean-info, add flex.  add
	  fileutils.

	* configure: be less sensitive to spaces in Makefile.in.  Do not
	  look for sources in "..".  Doing so breaks subdirectories that
	  might have their own configure.  If a subdir has it's own
	  configure script, use it.

Thu Dec 26 16:30:26 1991  K. Richard Pixley  (rich at cygnus.com)

	* cfg-paper.texi: some changes suggested by rms.

Thu Dec 26 10:13:36 1991  Fred Fish  (fnf at cygnus.com)

	* config.sub:  Merge in some small additions from the FSF version,
	taken from the gcc distribution, to bring the Cygnus and FSF
	versions into closer sync.

Fri Dec 20 11:34:18 1991  Fred Fish  (fnf at cygnus.com)

	* configure.in:  Changed svr4 references to sysv4.

Thu Dec 19 15:54:29 1991  K. Richard Pixley  (rich at cygnus.com)

	* configure: added -V for version number option.

Wed Dec 18 15:39:34 1991  K. Richard Pixley  (rich at cygnus.com)

	* DOC.configure, cfg-paper.texi: revised, updated, and texinfo'd.
	  renamed from DOC.configure to cfg-paper.texi.

Mon Dec 16 23:05:19 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* configure, config.subr, config.sub: config.subr is now
	  config.sub again.

Fri Dec 13 01:17:06 1991  K. Richard Pixley  (rich at cygnus.com)

	* configure.texi: new file, in progress.

	* Makefile.in: build info file and install the man page for
	  configure.

	* configure.man: new file, first cut.

	* configure: find config.subr again now that configuration "none"
	  has gone.  removed all traces of the -ansi option.  removed all
	  traces of the -languages option.

	* config.subr: resync from rms.

1991-12-11  K. Richard Pixley  (rich at rtl.cygnus.com)

	* configure, config.sub, config.subr: merge config.sub into
	  config.subr, call the result config.subr, remove config.sub, use
	  config.subr.

	* Makefile.in: revised install for dir.info.

1991-12-10  K. Richard Pixley  (rich at rtl.cygnus.com)

	* configure.in: add decstation host makefile frag.

	* Makefile.in: BISON now bison -y again.  also install-gcc on
	  install.  clean-gdbm on clean.  infodir belongs in datadir.
	  Make directories for info install.  Build dir.info here then
	  install it.

1991-12-09  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: fix for bad directory tests.

1991-12-07  K. Richard Pixley  (rich at rtl.cygnus.com)

	* configure: \{1,2\} appears to be a sysv'ism.  Use a different
	  regexp.  -srcdir relative was being handled incorrectly.

	* Makefile.in: unwrapped some for loops so that parallel makes
	  work again and so one can focus one's attention on a particular
	  package.

1991-12-06  K. Richard Pixley  (rich at rtl.cygnus.com)

	* configure: added PWD as a stand in for `pwd` (for speed). use
	  elif wherever possible.  make -srcdir work without -objdir.
	  -objdir= commented out.

1991-12-05  K. Richard Pixley  (rich at rtl.cygnus.com)

	* configure: +options become --options.  -subdirs commented out.
	  added -host, -datadir.  Renamed -destdir to -prefix.  Comment in
	  Makefile now at top of generated Makefile.  Removed cvs log
	  entries.  added -srcdir.  create .gdbinit only if there is one
	  in ${srcdir}.

	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
	  and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
	  and mandir now keyed off datadir by default.

1991-11-22  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Freshly created ChangeLog.


Local Variables:
mode: change-log
left-margin: 8
fill-column: 76
version-control: never
End:
