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.

Sun May 30 16:03:16 1999  Cort Dougan  <cort@cs.nmt.edu>

	* config.guess (ppc-*-linux-gnu): Also use ld emul elf32ppclinux.

1999-05-24  Nick Clifton  <nickc@cygnus.com>

	* config.sub: Updated to match latest EGCS version.

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.

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-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>

	* config/mh-go32: Delete.
	* config/mh-djgpp: New. Renamed from mh-go32.
	* 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

Sun Feb 28 02:20:00 1999  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.

Wed Feb 24 13:51:40 1999  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.

Wed Feb 24 12:52:17 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.in (*-*-windows*): Remove, no longer used.
	* config/mh-windows: Ditto.

1999-02-19  Ben Elliston <bje@cygnus.com>

	* config.guess: Automatically recognise ELF on FreeBSD. From Niall
	Smart and improved by Andrew Cagney.

Thu Feb 18 19:55:09 1999  Marc Espie <espie@cvs.openbsd.org>

	* config.guess: Recognize openbsd-*-hppa.

Wed Feb 17 01:38:59 1999  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.

Mon Feb  8 14:17:24 1999  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.

Sun Feb  7 18:01:54 1999  Mumit Khan  <khan@xraylith.wisc.edu>
	
	* configure.in (*-*-cygwin32*): Use config/mh-cygwin instead of
	the old name config/mh-cygwin32.
	Enable texinfo.

Thu Feb  4 20:43:25 1999  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Do build ld for ix86 Solaris.

Tue Feb  2 19:46:40 1999  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (EXTRA_GCC_FLAGS):  Set AR to $AR instead of
	$AR_FOR_TARGET.  Likewise for RANLIB.

Tue Feb  2 20:05:05 1999  Catherine Moore  <clm@cygnus.com>
 
        * config.sub (oabi):  Recognize.
        * configure.in (arm-*-oabi):  Handle.

Sat Jan 30 06:09:00 1999  Robert Lipe  (robertlipe@usa.net)

	* config.guess: Improve detection of i686 on UnixWare 7.

Sat Jan 30 08:04:00 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* config.guess: Add support for i386-pc-interix.
	* config.sub: Likewise.
	* configure.in: Likewise.
	* config/mh-interix: New file.

Mon Jan 18 13:59:20 1999  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.

Wed Dec 30 20:34:52 1998  Christopher Faylor <cgf@cygnus.com>

	* configure.in: makefile stub for cygwin target is probably
	unnecessary.  Remove it for now.
	* config/mt-cygwin: Remove.

Wed Dec 30 01:13:03 1998  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.
	* config/mt-cygwin: New file.  libtermcap target info.

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.

Wed Dec 23 00:20:50 1998  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Clean up handling of hppa2.0.

Tue Dec 22 23:56:31 1998  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.

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.

Tue Nov 17 16:57:51 1998  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.

Thu Nov 12 17:27:21 1998  Geoffrey Noer  <noer@cygnus.com>

	* Makefile.in: lose "32" from comment about cygwin.

Thu Nov  5 15:00:31 1998  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Use -Os to build target libraries for the fr30.

Wed Nov  4 18:49:43 1998  Dave Brolley  <brolley@cygnus.com>

	* config.sub: Add fr30.

Mon Nov  2 15:19:33 1998  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-20  Syd Polk  <spolk@cygnus.com>

	* Makefile.in configure.in: Add the ability to use tcl8.1 and tk8.1
	if desired.

Sun Oct 18 18:34:50 1998  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.

Wed Oct 14 10:29:06 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (DEVO_SUPPORT): Add config.if.

Tue Oct 13 09:17:06 1998  Jeffrey A Law  (law@cygnus.com)

	* config.sub: Bring back lost sparcv9.

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

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: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 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.

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.

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.

Fri Feb 20 16:47:24 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Don't let builds be done in source tree.

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.

	* config/mh-sparcpic (PICFLAG): Define to properly according
	to current multilib configuration.
	* config/mt-sparcpic (PICFLAG_FOR_TARGET): Define to properly
	according to current multilib configuration.

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.

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:30:21 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.
	* mh-mingw32: New file.

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:45:50 1997  Jeffrey A Law  (law@cygnus.com)

	* config.guess: HP 9000/803 is a PA1.1 machine.


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.


1997-09-15 02:37  Ulrich Drepper  <drepper@cygnus.com>

	* config/mt-linux: Define CXXFLAGS to make sure -fvtable-thunks is
	used.
	* 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.

Sun Sep 14 20:53:42 1997  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: ok to build split texinfo files

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 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 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 seperator 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.
	* config/mh-windows:  Add rules for building MSVC makefiles.

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.
	* config/mh-windows (HOST_FLAGS):  Set srcroot, which is needed
	for MSVC build procedure.

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 config/mh-windows:  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.

Sun Aug 11 20:51:50 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* config/mh-cygwin32 (CFLAGS):  Define _WIN32 to be compatible
	with normal Windows compilation environment.

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.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.

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 14:45:25 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* config/mt-v810 (CC_FOR_TARGET): Add -ansi flag.  NEC compiler
 	defaults to K&R mode, but doesn't have varargs.h, so we have to 
	compile in ANSI mode.

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-*-*.
	* config/mt-v810 (CC_FOR_TARGET, AS_FOR_TARGET, AR_FOR_TARGET,
	RANLIB_FOR_TARGET): Set as appropriate for NEC v810 toolchain.

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 15:03:12 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* config/mh-i386win32: add LD_FOR_TARGET.

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-*-*.

Sat Sep 16 18:31:08 PDT 1995  Angela Marie Thomas <angela@cygnus.com>
	
	* config/mh-ncrsvr43: Removed AR_FLAGS

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.

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.

	* config/m?-*pic: Define PICFLAG* instead of LIB*FLAGS*.

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 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)

	build-all.mk,config/mh-solaris:  revert these two changes:

	Tue Mar 30 10:03:09 1993  Ian Lance Taylor  (ian@cygnus.com)

		* build-all.mk: Use CC=cc -Xs on Solaris.

	Mon Mar 29 19:59:26 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

		* config/mh-solaris: SunPRO C needs -Xs to be able to get a
		working xmakefile for Emacs.

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, config/m[th]-*pic: 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.
	* config/mh-go32: New fragment.

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)

	* config/mh-lynxrs6k: Renamed from mh-lynxosrs6k, to make it
	unique in 8.3 naming schemes.
	* 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.

Mon Jan 31 18:40:55 1994  Stu Grossman  (grossman at cygnus.com)

	* config/mh-lynxosrs6k:  Account for lack of ranlib!

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.
	* config/mh-irix5. New file for Irix 5.

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
	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

	* config/mh-delta88: remove extraneous GCC references

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, config/mh-irix4: 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.

Mon Mar 29 19:59:26 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config/mh-sun3: cc needs -J to compile cp-parse.c correctly

	* config/mh-solaris: SunPRO C needs -Xs to be able to get a
	working xmakefile for Emacs.

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*:*:*'.
	* config/mh-vaxult2:  New file.

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

	* config/mh-sco: define X11_LIB to the mess that SCO ODT requires

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)

	* config/mh-sco: Don't override BISON definition.

	* 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

Mon Dec  7 06:43:27 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config/mh-sco: don't default $(CC) to gcc

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

	* config/mh-solaris: rework standard X location to use
	$OPENWINHOME, if defined.

	* config/mh-sun: handle X11 include locations

	* config/mh-decstation: define NeedFunctionPrototypes to 0, to
	work around dain-bramaged DECwindows include files

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

	* config/{mh-hpux,mh-solaris}: define the "standard" locations for
	the vendor supplied X11 headers and libraries

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 15:41:28 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* config/mh-solaris: removed the -xs from CFLAGS (let the people
	with Sun's C compiler deal with it themselved)

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.

Wed Jul  8 00:01:30 1992  Stu Grossman  (grossman at cygnus.com)

	* config/mh-solaris:  Use -xs when compiling so that Sun-C puts
	a symbol-table into the executable.

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.

Mon Jun 15 12:31:52 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-ncr3000 (INSTALL):  Don't use /usr/ucb/install,
	it is broken on ncr 3000's.

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.

Tue Jun  9 17:18:11 1992  Fred Fish  (fnf at cygnus.com)

	* config/{mh-ncr3000, mh-sysv4}:  Add INSTALL.

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)

	* config/mh-delta88, config/mh-ncr3000:  Replace MINUS_G with
	CFLAGS per new configuration strategy.
	* 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 config/mh-irix4 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, config/mh-sco, 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.

Wed Dec 11 22:25:20 1991  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.

Tue Dec 10 00:04:35 1991  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.

Mon Dec  9 16:48:33 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: fix for bad directory tests.

Sat Dec  7 00:17:01 1991  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.

Fri Dec  6 00:22:08 1991  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.

Thu Dec  5 22:46:52 1991  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.

Fri Nov 22 07:38:11 1991  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:
