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:
