2008-01-30  Peter O'Gorman  <peter@pogma.com>

	Backport darwin support reorganization from HEAD.
	* libtool.m4 [darwin]: Check for nmedit and dsymutil with
	AC_CHECK_TOOL, use -single_module by default (can be turned off
	with the -multi-module linker flag or by setting the
	LT_MULTI_MODULE environment variable. If it is available use
	-exported_symbols_list instead of nmedit to remove symbols. 
	* ltmain.in [darwin]: Use -single_module by default.

2008-01-29  Peter O'Gorman  <peter@pogma.com>

	* doc/Makefile.am, doc/notes.texi, doc/libtool.texi: Move the
	platform specific notes to notes.texi and generate notes.txt.
	Reported by Tim Rice

	Search the compiler path too.
	* libtool.m4 (compiler_lib_search_dirs): New variable.
	* ltmain.in: Use it.
	Reported by Maynard Johnson

2008-01-24  Peter O'Gorman  <peter@pogma.com>

	* doc/libtool.texi: Fixup Notes.
	* README: Delete notes.

2008-01-24  Peter O'Gorman  <peter@pogma.com>

	* doc/libtool/texi: Backport notes.texi from HEAD.

	* libtool.m4 (sys_lib_search_path_spec, sys_lib_dlsearch_path_spec):
	Allow for a cache variable lt_cv_sys_lib... to set these at configure
	time.

2008-01-21  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin]: look in libdir for dependent libraries, the .la
	file may have been moved.
	Reported by Benjamin Reed <ranger@befunk.com>

2008-01-21  Bruno Haible  <bruno@clisp.org>

	* ltmain.in (lt_env): New variable. Use it when running commands.

2008-01-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Backport ISO C++ support from HEAD, 2006-03-17 and 2005-09-12 patches.

	* tagdemo/configure.ac (HAVE_NAMESPACES, HAVE_IOSTREAM):
	New tests for ISO C++ features.  Reimplementation of similar
	macros from the autoconf archive.
	* tagdemo/foo.cpp, tagdemo/main.cpp: Adjusted.  Provide dummy
	`std' namespace for the HPPA C++ compiler.

2008-01-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.am (fetch): Update to match upstream git sources.
	Pull `INSTALL' from gnulib instead of from Autoconf.

	* doc/notes.texi: Mention AIX binutils deficiency for C++ code.
	Report by Rainer Tammer.
	Suggest using bash for configure.  Hint to runtimelinking.

2008-01-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Fix warning about -l and -L for
	archives and objects as output, to not trigger for *.la files.
	Non-convenience archives are diagnosed later on.

2008-01-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) <exclude_expsyms>:
	Also exclude `_GLOBAL__F[ID]_.*'.  Also set for the C++ tag.
	Fixes esp. demo/helldl build failure with GCC on AIX.
	Report by Rainer Tammer.

2008-01-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* mdemo/main.c: Include string.h, for strrchr.
	Report by Rainer Tammer.
	* f77demo/cprogram.c: Include stdio.h, for printf.
	* f77demo/fooc.c: Likewise.

2008-01-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.guess, config.sub: Updated from external sources.

2008-01-07  Rainer Tammer <tammer@tammer.net>  (tiny change)
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Support AIX 6.1.
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(AC_DEPLIBS_CHECK_METHOD, _LT_AC_LANG_C_CONFIG)
	(_LT_AC_LANG_CXX_CONFIG, _LT_AC_LANG_F77_CONFIG)
	(AC_LIBTOOL_PROG_COMPILER_PIC, AC_LIBTOOL_PROG_LD_SHLIBS):
	Adjust case patterns to match AIX 6 through 9 as well.
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Likewise.
	* NEWS: Update.
	* THANKS: Update.

2008-01-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* NEWS, libtool.m4, ltmain.in: Bump copyright years.

2007-11-30  Stefan Sperling  <stsp@elego.de>  (tiny change)

	* doc/libtool.texi (Linking executables): Reorder paragraphs.

2007-11-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Avoid mixing functions and data pointers in callback functions.
	* libltdl/ltdl.c (file_worker_func): New type.
	(lt_dlforeachfile): Instead of passing a function pointer as a
	data pointer, pass a pointer to a file_worker_func pointer.
	(foreach_callback_func): Adjust.
	Backport from 2006-08-31 fix in HEAD.
	Report by Maciej Bliziński <maciej.blizinski@gmail.com>.

2007-11-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Avoid warnings about conftest.dSYM directories on Mac OS X Leopard.
	* libtool.m4 (_LT_LINKER_BOILERPLATE, AC_LIBTOOL_LINKER_OPTION)
	(AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Remove conftest.dSYM
	directory.
	Report and analysis by Jeff Squyres and Peter O'Gorman.

2007-10-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in: Also sanitize `LANGUAGE'.
	(execute mode): Also restore `LANGUAGE', for old glibc.
	Report by Paul Eggert against Autoconf.

2007-10-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC)
	<lt_cv_prog_compiler_pic_works>: Renamed from
	lt_prog_compiler_pic_works.
	<lt_cv_prog_compiler_static_works>: Renamed from
	lt_prog_compiler_static_works.
	* NEWS: Update.

2007-10-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in: Accept extension `.sx'.
	* tests/suffix.test: Test it.

2007-09-05  Eric Blake  <ebb9@byu.net>

	* libltdl/ltdl.c (lt_dlcaller_get_data): Work even when no caller
	has set data.

2007-09-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* NEWS: Update.

	* libltdl/ltdl.c (trim): Fix possible write beyond array bound.

	* libltdl/ltdl.c (try_dlopen): Do not test array address of
	sys_dlsearch_path against NULL, rather test for nonempty
	contents.
	Coverity reports CID 148 and CID 149 via Jeff Squyres.

2007-08-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* README: Fix testing instructions.
	* README-alpha: Fix release instructions: build in a new tree.

2007-08-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC): [ mingw, cygwin ]
	<GCJ>: Do not use -DDLL_EXPORT.
	Report by Ross Ridge <rridge@csclub.uwaterloo.ca>.

2007-08-15  Dirk Mueller  <dmueller@suse.de>  (tiny change)
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (try_dlopen): Avoid a strlen.  When reading .la
	files, cope with files that are not newline-terminated.

2007-08-05  Tilman Koschnick  <til@subnetz.org>  (tiny change)

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_COMPILER_PIC): [ linux ]: Treat pgcpp as
	Portland Group C++ compiler as well.

2007-07-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* mdemo/main.c (test_dl, main): Try lt_dlopenext as well.
	* tests/mdemo-exec.test: Also try absolute library names.
	* THANKS: Update.
	Report by Brian Barrett.

2007-07-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/fdl.texi: Update to GFDL 1.2.
	* doc/libtool.texi: Adjust.  Put License in Appendix.

2007-07-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_AC_LOCK) [ solaris ]: Cater to old Sparc
	Solaris 7 ld that does not understand `-64'.
	Report by Vincent Lefevre <vincent@vinc17.org>.

2007-06-30  Peter Breitenlohner  <peb@mppmu.mpg.de>

	* libtool.m4 (AC_LIBTOOL_DLOPEN_SELF): Correct a typo ("-dld"
	instead of "-ldld").

2007-06-23  Peter O'Gorman  <peter@pogma.com>

	* configure.ac: Bump version.
	* NEWS: Update.

2007-06-23  Peter O'Gorman  <peter@pogma.com>

	GNU libtool 1.5.24 is released.

	* configure.ac: Bump version.
	* NEWS: Updated.
	* config.guess, config.sub, install-sh, texinfo.tex, INSTALL:
	Updated from external sources.
	* libtool.m4: Bump serial.

2007-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [linux]:
	Ignore lines in ld.so.conf starting with 'hwcap '.

2007-06-22  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (version-number) [irix]: Don't subtract 1 from
	major as it may be less than age.

2007-06-17  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): add quotes to
	the test -n.

2007-06-17  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* libtool.m4 (LT_CMD_MAX_LEN): ensure stderr
	is redirected even when getconf does not exist.

2007-06-03  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (old_archive_cmds): Remove old_deplibs.
	Reported by Daniel Macks <dmacks@netspace.org>

2007-06-01  Steve Ellcey  <sje@cup.hp.com>

	* libtool.m4 (LT_CMD_MAX_LEN): Try using getconf to set
	lt_cv_sys_max_cmd_len.

2007-05-28  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in, libtool.m4 [darwin]: Only use ${wl} in verstring
	with xlc.

2007-05-03  Reuben Thomas  <rrt@sc3d.org>  (tiny change)

	* doc/libtool.texi (Libltdl interface): Fix typo.

2007-04-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* NEWS: Mention `-static-libtool-libs'.

2007-04-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode) <-no-install> [ darwin ]: Treat like
	`-no-fast-install', as we cannot hardcode.
	Report by Simon Josefsson.

	* ltmain.in (execute mode): Do not unset locale variables that
	have not been set previously.  Do not use uninitialized
	$lt_unset.  Report by <deckrider@gmail.com>.

2007-04-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Link mode) <-no-install>: Mention that this
	still generates a wrapper script on systems without hardcoding.
	* THANKS: Update.
	Report by Simon Josefsson.

2007-03-30   Matthieu Herrb  <matthieu.herrb@laas.fr>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS)
	[ openbsd ]: Add an explicit check for shared libraries support.

2007-03-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_CONFIG) <fix_srcfile_path>: This
	variable needs escaping, too.
	Report by Akim Demaille.

2007-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* mdemo/Makefile.am (libmlib_la_LDFLAGS): Add
	`-export-symbols-regex ".*"' because the convenience libltdl
	uses export markers and thus turns off autoexport on w32.  Fixes
	test failures for Cygwin and MinGW.
	Bug analysis by Charles Wilson.

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(AC_DEPLIBS_CHECK_METHOD, _LT_AC_LANG_CXX_CONFIG)
	(AC_LIBTOOL_POSTDEP_PREDEP, AC_LIBTOOL_PROG_COMPILER_PIC)
	(AC_LIBTOOL_PROG_LD_SHLIBS) [ interix ]: When matching for
	interix, accept version range [3-9] instead of 3.
	* NEWS: Update.
	Report by Martin Koeppe <mkoeppe@gmx.de>.

2007-02-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/dryrun.test: ls -l in MSYS sometimes shows year,
	not time, for really fresh files.  Add sleep 1 calls at
	strategic places.  Fixes test failure on MinGW.

2007-02-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac: Bump version.
	* NEWS: Updated.

2007-02-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	GNU libtool 1.5.23b is released.

	* configure.ac: Bump version.  Adjust copyright years.
	* NEWS: Updated.
	* config.guess, config.sub, install-sh, texinfo.tex, INSTALL:
	Updated from external sources.
	* libtool.m4: Bump serial.
	* ltdl.m4: Likewise.  Adjust copyright years.
	* libltdl/Makefile.am: Bump library revision.

2007-02-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [ linux ]
	<whole_archive_flag_spec>: For Sun C/C++ 5.9, do not add
	/dev/null as dummy object, it fails with GNU ld version
	2.16.91.0.7-amd-sles9.  Report by Terry D. Dontje.
	* THANKS: Update.

2007-02-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_AS_TEST_PREPARE, AS_EXECUTABLE_P): m4_defun
	these macros, if undefined, with modified copies from Autoconf
	2.59.
	(LT_AC_PROG_SED): Use AS_EXECUTABLE_P, not $as_executable_p,
	this is an internal Autoconf detail.

	* doc/libtool.texi: Update copyright years.

2007-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.h (LT_CONC) [_AIX]: Use `##'.  AIX 4.3.3 xlc
	won't define __STDC__ with -qlanglvl=extc89.

2007-02-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_COMPILER_BOILERPLATE, _LT_LINKER_BOILERPLATE)
	(_LT_AC_SYS_LIBPATH_AIX, AC_LIBTOOL_LINKER_OPTION)
	(AC_LIBTOOL_PROG_CC_C_O, AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(_LT_AC_TAGCONFIG, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE)
	(AC_LIBTOOL_PROG_LD_SHLIBS): Require LT_AC_PROG_SED.
	* THANKS: Update.
	Report and initial patch by Maciej W. Rozycki.

2007-01-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (lt_dlexit): Fix my bogus backport of Dave
	Brolley's patch from CVS HEAD.

2007-01-29  Samuel Thibault <samuel.thibault@ens-lyon.org>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [ gnu ]
	<archive_expsym_cmds>: Behave like Linux, so that
	--version-script is used for Hurd as well.

2007-01-28  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* NEWS: Update for Cygwin changes.

2007-01-28  Dave Brolley  <brolley@redhat.com>

	* libltdl/ltdl.c (lt_dlexit): Make sure that 'cur' is not NULL
	before checking that it is still in the list.

2007-01-28  Mike Frysinger  <vapier@gentoo.org>

	* ltmain.in (link mode): Pass through `-p' and `-fprofile-*' for
	GCC.

2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c, libltdl/ltdl.h: Adjust copyright years.

2007-01-28  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* libltdl/ltdl.c (LT_GLOBAL_DATA) [__CYGWIN__]: Also define on
	Cygwin.
	(LT_READTEXT_MODE): Ensure proper textmode fopen is used on
	Cygwin.
	* libltdl/ltdl.h (LT_SCOPE) [__CYGWIN__]: Also define on Cygwin.

2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [ cygwin, mingw ]
	<export_symbols_cmds>: Avoid shell expansion of '/s/.*' through
	double expansion, in case there is a 'S:' drive.
	Report by Charles Wilson.

2007-01-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Invoking libtool): Document `--tag'.
	(Tags): New node, backported from HEAD.
	(Other languages): Adjust.
	* NEWS: Update.

2007-01-27  James Su <james.su@gmail.com>

	* libltdl/ltdl.c (lt_dlmutex_register): Fix usage of old unlock
	function.  Also replace the seterror function.
	* THANKS: Update.

2007-01-24  Reuben Thomas <rrt@sc3d.org>  (tiny change)

	* doc/libtool.texi (Inter-library dependencies): Fix typo.

2007-01-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [cygwin, mingw]:
	Use `lib -OUT' rather than `lib /OUT' to avoid MSYS path
	translation mangling.  Report by Christopher Hulbert.
	* THANKS: Update.

	* ltmain.in (compile mode): Accept suffixes matching
	`[fF][09].', for Fortran.
	* tests/suffix.test: Also test f90, F90, f95, F95, f03, F03.

	* doc/libtool.texi: Typo fixes.
	* NEWS: Likewise.

2006-12-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (--version): Do not output leading blank line,
	added inadvertently after 1.5.22.
	Report by John Vandenberg <jayvdb@gmail.com>.

2006-10-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* NEWS: Account for recent fix.

2006-10-22  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Add -F* to flags that are passed to the linker.
	Reported by SIGOURE Benoit <sigoure.benoit@lrde.epita.fr>

2006-10-19  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Improve multilib
	support.
	Reported by Kate Minola <kate01123@gmail.com> and others.

2006-10-17  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_SYS_LIB_STRIP) [darwin]: Also set
	old_striplib.

2006-10-13  Eric Blake  <ebb9@byu.net>

	* libltdl/ltdl.c (unload_deplibs, load_deplibs): Avoid memory
	leaks.

2006-08-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Pass through `--coverage', for GCC.
	Report by Rainer Keller <keller@hlrs.de>.

2006-08-25  Kurt Roeckx <kurt@roeckx.be>,
	    Aurelien Jarno <aurel32@debian.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(AC_DEPLIBS_CHECK_METHOD, AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE)
	(AC_LIBTOOL_PROG_COMPILER_PIC, AC_LIBTOOL_PROG_LD_SHLIBS)
	[k*bsd*-gnu]: kfreebsd*-gnu and knetbsd*-gnu behave like
	linux-gnu.
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Likewise.
	* libtool.m4 (_LT_AC_LOCK)
	[x86_64-*kfreebsd*-gnu]: Add 32/64 bit bi-arch support.
	* NEWS: Update.

2006-08-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD) [ mingw, pw32 ]:
	If `file' is present, use `func_win32_libid' rather than
	`objdump -f', to facilitate cross-compilation.
	Reported by Pierre Ossman <ossman@cendio.se>.

2006-08-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (execute mode): Also search the directory above `$objdir'
	for the argument of "-dlopen", as mentioned in the error message.

2006-08-03  Ralf Menzel  <menzel@ls6.cs.uni-dortmund.de>

	* libtool.m4 (AC_LIBTOOL_POSTDEP_PREDEP): Previous patch
	applies to linux too, with Sun compiler.

2006-08-01  Albert Chin <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_POSTDEP_PREDEP) [ solaris ]:
	Don't set $postdeps to "-lCstd -lCrun" if
	"-library=stlport4" set in CXXFLAGS as stlport4 C++
	library incompatible with Cstd C++ library. Use
	'-library=Cstd -library=Crun' instead of '-lCstd -lCrun'.

2006-07-28  Eric Blake  <ebb9@byu.net>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): s/recognise/recognize/.

2006-06-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_COMPILER_BOILERPLATE, _LT_LINKER_BOILERPLATE):
	Rewrite to not use unchecked `printf', for old systems like
	SunOS 4.1.
	(AC_LIBTOOL_COMPILER_OPTION, AC_LIBTOOL_LINKER_OPTION)
	(AC_LIBTOOL_PROG_CC_C_O, AC_LIBTOOL_PROG_LD_SHLIBS): Likewise.
	(AC_LIBTOOL_LANG_C_CONFIG): Adjust: use literal newlines in
	`lt_simple_compile_test_code' and `lt_simple_link_test_code'.
	(AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_LANG_F77_CONFIG)
	(AC_LIBTOOL_LANG_GCJ_CONFIG, AC_LIBTOOL_LANG_RC_CONFIG):
	Likewise.
	Bug report by Bruce Becker and Mark Andrews.

2006-06-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Disregard
	`hardcode_libdir_flag_spec_ld' if we're using `$CC' to link.
	* libtool.m4 () [ hpux10, hpux11; hppa*64*, ia64* ]
	<hardcode_libdir_flag_spec_ld>: Removed.
	Reported by Roger While <simrw@sim-basis.de>.

2006-06-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Honor `-threads', similar to `-mt'.
	Report by Eric Paire <eric.paire@st.com>.

2006-06-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in: Convert *each* occurrence of `compile_command',
	`finalize_command', `relink_command', and `link_command',
	that can conceivably be longer than 4000 bytes, to newline-
	separated arguments before feeding to sed, to cater for sed
	implementations with limited line lengths.  Convert back
	afterwards.
	* tests/link.test: Accommodate for trailing white space
	resulting from above change.
	This addresses an issue reported by Albert Chin on 2001-05-27:
	http://lists.gnu.org/archive/html/libtool/2001-05/msg00159.html

2006-06-01  Tim Rice  <tim@multitalents.net>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [ sco3.2v5.0.[024]* ]:
	Add missing case entry for these systems.

2006-06-01  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC) [ cygwin ]:
	define DLL_EXPORT for PIC objects on cygwin.

2006-05-19  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (LT_AC_PROG_SED): AC_SUBST([SED]) for
	compatibility with future autoconf release of AC_PROG_SED.

2006-05-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (shell wrapper): Do not put `"$@"' in argument to
	$echo.

2006-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtoolize.in: Use just one `echo' for `--version' output
	instead of several `echo', to avoid `Broken pipe' errors.
	Reported by Behdad Esfahbod <behdad@cs.toronto.edu>.

	* ltmain.in: Reset/unset not only LANG and LC_ALL, but also
	LC_CTYPE, LC_COLLATE, LC_MESSAGES.
	(execute mode): Restore them.
	Noted by Peter O'Gorman.

2006-05-17  Albert Chin-A-Young  <china@thewrittenword.com>

	* tests/link-order.test: Take hardcode_direct into consideration
	when testing link order.

2006-05-15  Bruno Haible  <bruno@clisp.org>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 [ linux ] (AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_POSTDEP_PREDEP, AC_LIBTOOL_PROG_COMPILER_PIC)
	(AC_LIBTOOL_PROG_LD_SHLIBS): Add support for Sun C 5.9,
	Sun C++ 5.9, and Sun Fortran 8.3 on GNU/Linux.
	* NEWS: Update.

2006-05-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.guess, config.sub: Update from external sources.

2006-05-14  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 [ aix ] (AC_LIBTOOL_PROG_LD_SHLIBS)
	(AC_LIBTOOL_LANG_CXX_CONFIG): $hardcode_direct is set twice.

2005-05-14  John Bowler  <jbowler@acm.org>

	* ltmain.in (link mode): For version_type `none', we still need
	to set `current', `age', and `revision', so that our checks
	don't barf.  The values won't be used later.  Apparently
	reported by several people, several times, for BeOS.
	* NEWS, THANKS: Update.

2006-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [ linux ]:
	Avoid warning when "parsing" `/etc/ld.so.conf' and empty
	`/etc/ld.so.conf.d'.
	Reported by Orion Poplawski <orion@cora.nwra.com>.

2006-03-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS) [ freebsd, dragonfly ]:
	Set libltdl_cv_sys_dlopen_deplibs to yes.  Fixes excessive
	lt_dlopen times on these systems.
	* NEWS, THANKS: Update.
	Bug reported by Peter Jeremy <peterjeremy@optushome.com.au>,
	patch by Joerg Sonnenberger <joerg@netbsd.org>.

2006-03-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode) < -static-libtool-libs >: New option.
	* doc/libtool.texi (Link mode, Distributing libltdl):
	Document it.
	Suggested by Gary Kumfert <kumfert@llnl.gov>.

2006-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (LT_AC_PROG_SED): Do not forget to reset IFS even
	in case of empty `$PATH'.

2006-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode) [ openbsd, netbsd, dragonfly, .. ]:
	Fix 1.5.22 regression by commenting out the code to remove the
	uninstalled paths.  It was never working, and it is not at the
	right place.  A proper removal code is to follow.  This
	regression was visible on OpenBSD, NetBSD, DragonFly, and other
	systems with hardcode_direct=yes.
	* NEWS, THANKS: Updated.
	Reported by Joerg Sonnenberger <joerg@netbsd.org> and
	Marc Espie <espie@nerim.net> and others.

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [ freebsd,
	dragonfly ]: Fix 1.5.22 regression caused by too strict $host_os
	match that stopped DragonFly from working.
	* NEWS, THANKS: Updated.
	Reported by Jeremy C. Reed <reed@reedmedia.net>, patch by
	Todd Vierling <tv@duh.org>.

2006-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode) [ linux ]: PGI: for `reload_cmds', we
	not only need to get rid of `$wl', but also turn comma into
	space so $LD understands whole_archive_flag_spec correctly.

	* ltmain.in <startup, shell wrapper>: Add _AS_BOURNE_COMPATIBLE
	code from Autoconf, to fix issues with zsh and other shells.
	Reported by David Gómez Espinosa <david@pleyades.net>.

2006-02-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (extracted_archives, extracted_serial): New globals.
	(func_extract_archives): Use them to rename extraction archives
	for linking against multiple convenience libraries with the same
	name.
	Reported by Carlo Contavalli <ccontavalli@commedia.it>.

	* ltmain.in (link mode) < test_compile >: Fix a couple of instances
	where `test .. -ne ..' would possibly compare non-numbers.  Clean up a
	bit.

2006-02-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 [ solaris ] (AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_LD_SHLIBS) < whole_archive_flag_spec >:
	Fix this once and for all, for both the SUN compiler suite
	(cc/CC/f77/f90/f95) and GCC.
	Reported by Yuri Pukhalsky <pooh@cryptopro.ru>.

	* cdemo/Makefile.am: Remove broken use of undocumented
	Automake variable `$(OBJECTS)'.
	* demo/Makefile.am, depdemo/Makefile.am: Likewise.
	* f77demo/Makefile.am, mdemo/Makefile.am: Likewise.
	* mdemo2/Makefile.am, pdemo/Makefile.am: Likewise.
	* tagdemo/Makefile.am: Likewise.

	* ltmain.in (link mode): Fix logic for adding run paths to
	also add paths for installed libtool libraries in case
	`-static' is used.

2006-01-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (titlepage): Remove superfluous word.

2006-01-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* commit, mailnotify: Bump copyright years.

2006-01-21  Eric Blake  <ebb9@byu.net>

	* THANKS: Move myself to contributor.

2006-01-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Don't use semicolons
	inside { } in sed scripts, as Posix says it's not portable.
	* ltmain.in (func_win32_libid): Likewise.
	* mailnotify, commit: Likewise.
	Noted by Paul Eggert <eggert@cs.ucla.edu>.

	* ltmain.in (compile mode): Also transform `.obj' correctly.
	Reported by George Bosilca <bosilca@cs.utk.edu>.

2006-01-12  Leif Ekblad  <leif@rdos.net>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(AC_DEPLIBS_CHECK_METHOD, AC_LIBTOOL_PROG_COMPILER_PIC): Added
	support for RDOS.
	* NEWS: Updated.

2006-01-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4, ltmain.in, libltdl/ltdl.c: Bump copyright years.

2006-01-02  Alexis Wilke  <alexis_wilke@yahoo.com>

	* libltdl/ltdl.c (LT_DLMUTEX_GETERROR): check if
	`lt_dlmutex_geterror_func' is set instead of
	`lt_dlmutex_seterror_func'.

2005-12-20  Eric Blake  <ebb9@byu.net>

	* README-alpha: Another instance of anon cvs location.

2005-12-19  Eric Blake  <ebb9@byu.net>

	* README-alpha: Update anon cvs location.

2005-12-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* configure.ac: Bump version.
	* NEWS: Updated.

2005-12-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	GNU libtool 1.5.22 is released.

	* configure.ac: Bump version.
	* NEWS, THANKS: Updated.
	* config.guess, config.sub, install-sh, texinfo.tex: Updated
	from external sources.
	* libtool.m4, ltdl.m4: Bump serial.
	* libltdl/Makefile.am: Bump library revision.

	* ltmain.in (func_mktempdir): New, backported from HEAD.
	(relink mode): Use it.  Fixes potential denial of service
	through malicious other local user.
	Reported by James Kosin <jkosin@intcomgrp.com>.

2005-12-18  Peter O'Gorman  <peter@pogma.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Don't die if -L<relative/path> does not
	exist.  Put in notinst_path though, so it won't end up in the
	installed .la file.
	(link mode): Really eliminate all temporary directories.

2005-12-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in <duplicate_deps, preserve_args, linknames>:
	Initialize properly.

2005-12-18  Jacob Meuser <jakemsr@jakemsr.com>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Move library search paths that coincide
	with paths to not yet installed libraries to the beginning of
	the library search list.

2005-12-18  Kean Johnston  <jkj@sco.com>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_PROG_NM): Also look in /usr/ccs/bin/elf,
	for SCO.  If we are not cross-compiling, but $ac_tool_prefix is
	set, also try an un-prefixed `nm'.

2005-12-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG)
	<hardcode_shlibpath_var>: Initialize, to `unsupported'.

2005-12-18  Marc Espie  <espie@nerim.net>

	* ltmain.in: Change semantics of `--tag=disable-static' and
	`--tag=disable-shared': The last one given wins now, both
	override the default setting inherited by other `--tag'
	arguments, even if passed later on the command line.
	Still make sure we do not disable both kinds by falling back
	to static libraries.

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [ openbsd ]
	<sys_lib_dlsearch_path_spec>: Set to `/usr/lib' only.

2005-12-16  Nicolas Kaiser  <nikai@nikai.net>

	* doc/libtool.texi: Fix some documentation typos.

2005-12-13  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin]: Don't add -framework. -arch, -isysroot
	to $compiler_flags if already in $CC with same arguments.

2005-12-07  Marc Espie  <espie@nerim.net>

	* ltmain.in: Preserve both parts of `--tag TAG', for
	relink_command.

2005-12-03  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (func_extract_archives, compile mode, link mode):
	Use `$exit_status' rather than forbidden `$status'.

2005-11-28  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in: Fix typo introduced in dllsearchpath backport.
	<cwrappersource>: Undo line breaks in macro arguments.
	Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.

2005-11-26  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (link mode): Add missing $LTCFLAGS for a $LTCC.
	* libtool.m4 [darwin]: Use $LTCC $LTCFLAGS to create reloadable
	objects.

2005-11-26  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4: Fix comment typo.
	* tests/dryrun.test: Avoid `directory exists' warning.

2005-11-25  Charles Wilson  <cygwin@cwilson.fastmail.fm>,
	    Peter Ekberg  <peda@lysator.liu.se>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode, cwrappersource): Backport fixes from
	CVS HEAD.

	* ltmain.in (generate dlsyms): Backport of func_generate_dlsyms
	fixes from HEAD.

2005-11-25  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* ltmain.in (link mode): add foo/bin for every foo/lib in
	dllsearchpath when creating wrapper script.  Fixes
	build-relink2 test failure.
	Backport of CVS HEAD 2004-10-13.

2005-11-25  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 [aix] <archive_expsym_cmds>
	(AC_LIBTOOL_PROG_LD_SHLIBS, AC_LIBTOOL_LANG_CXX_CONFIG): Always
	move -bnoentry before $compiler_flags, so it can be overridden.

	* ltmain.in (link mode): Allow GCC response files through.

2005-11-25  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (link mode): Pass through -isysroot for cross
	architecture builds on darwin.

2005-11-24  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (clean mode): Don't remove non-existent libfoo.lai.

2005-11-24  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4, ltmain.in: When calling $LTCC, pass default $CFLAGS
	through with $LTCFLAGS.
	Backport from HEAD 2004-09-05.

2005-11-24  David Edelsohn  <dje@watson.ibm.com>

	* ltmain.in (link mode): Use $pic_object as $non_pic_object if
	$non_pic_object=none.
	* NEWS: Updated.
	Missing backport from HEAD 2004-09-03 noted
	by Max Bowsher <maxb1@ukf.net>.

2005-11-20  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Pass through `-pg', for GCC.
	Reported by Tor Lillqvist <tml@iki.fi>.

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS)
	(AC_LIBTOOL_LANG_CXX_CONFIG) [aix4/aix5 !ia64]: Set
	whole_archive_flag_spec to $convenience so the convenience libs
	are really added to the link cmdline.
	Missing backport from CVS HEAD 2004-11-17 noted by Jørgen Moth
	<jorgen.moth@uni-c.dk>.

2005-11-20  Todd Vierling <tv@netbsd.org>,
	    Thorsten Glaser <tg@mirbsd.org>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN)
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER,  AC_DEPLIBS_CHECK_METHOD)
	(AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_COMPILER_PIC)
	(AC_LIBTOOL_PROG_COMPILER_PIC,  AC_LIBTOOL_PROG_LD_SHLIBS)
	[ interix3 ]: Support for Interix/Microsoft Services for Unix.
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Likewise.
	* NEWS: Updated.

2005-11-20  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* tests/link-order.test [ aix, interix ]: Skip command line
	grep.
	Reported by Thorsten Glaser <tg@66h.42h.de>.

2005-11-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (finish mode): Fix a couple of $echo uses.
	Reported by Thorsten Glaser <tg@66h.42h.de>.

2005-11-14  Albert Chin  <china@thewrittenword.com>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS)
	[ hpux11 ]: Pass +nodefaultrpath when linking on ia64*.

2005-11-13  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_LANG_C_CONFIG):
	Removed `lt_prog_cc_shlib' cruft, not needed any more.

2005-11-13  Kean Johnston  <jkj@sco.com>,
	    Tim Rice <tim@multitalents.net>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(AC_DEPLIBS_CHECK_METHOD, AC_LIBTOOL_LANG_C_CONFIG)
	(AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_COMPILER_PIC)
	(AC_LIBTOOL_PROG_LD_SHLIBS)
	[ sco3.2v5, sysv4, sysv4.3, sysv5, sco3.2v5, sco5v6, unixware,
	OpenUNIX, sysv4*uw2 ]: Complete overhaul of SCO support.
	* THANKS: Updated.

2005-11-13  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* tests/quote.test: Do not fail on harmless shell bug present
	in some ksh versions.
	Reported by Tim Rice <tim@multitalents.net> and others.

2005-11-13  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [ hpux10 ]:
	Link with cc rather than ld (backport from HEAD).

2005-11-12  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC): `wl' is tagged
	here.

	* libtool.m4 (AC_LIBTOOL_DLOPEN_SELF)
	(AC_LIBTOOL_PROG_COMPILER_PIC): Make sure `$wl' is properly
	expanded for tests involving `export_dynamic_flag_spec',
	`lt_prog_compiler_static'.

2005-11-11  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [ freebsd ]:
	Fix shlibpath_overrides_runpath settings.
	Reported by Dave Benson <daveb@idealab.com>.

2005-11-10  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* ltmain.in (func_win32_libid): use $SED not sed.

2005-11-10  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG) [ hpux10, hpux11 ]
	<hppa*64,ia64, aCC,g++>:
	Use C++ compiler for linking rather than ld.

2005-11-09  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Move setting of
	`variables_saved_for_relink'..
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): here, when both `shlibpath_var'
	and `runpath_var' have been set.
	Reported by Mike Frysinger <vapier@gentoo.org>.

	* libtool.m4 (AC_LIBTOOL_LANG_C_CONFIG): Move static_flag
	check..
	(AC_LIBTOOL_PROG_COMPILER_PIC): ..here, so that both
	`lt_prog_compiler_static' have actually been set, and the check
	is applied to each tag.

2005-11-07  Kean Johnston  <jkj@sco.com>

	* ltmain.in (link mode) [ sysv4*uw2*, unixware7* ]: Work around linker
	bug on older SCO systems.

2005-11-07  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_LD_SHLIBS) [ hpux10, hpux11 ]:
	hardcode_libdir_flag_spec and hardcode_minus_L are the same for
	hppa*64 and ia64*. Don't set
	hardcode_libdir_flag_spec='-L$libdir' on ia64* because if you
	specify +b and -L, +b overrides what is set into DT_RPATH.

2005-11-06  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_AC_TRY_DLOPEN_SELF): lt_unknown is
	lt_dlunknown.

	* libtool.m4 (AC_LIBTOOL_LANG_C_CONFIG)
	(AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_LANG_F77_CONFIG)
	(AC_LIBTOOL_LANG_GCJ_CONFIG):  Only call
	AC_LIBTOOL_SYS_LIB_STRIP and AC_LIBTOOL_DLOPEN_SELF in the C
	case, and without the tag argument.

	* libtool.m4: Fix comments.

2005-11-05  Kean Johnston  <jkj@sco.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode) [*-*-sco3.2v5*]: Don't pass through -lc,
	nor add it to deplibs.
	[*-*-sysv5*]: Ditto.
	[*-*-openbsd*, *-*-freebsd*, *-*-dragonfly*]: Remove bogus
	`$arg'.

2005-11-04  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* THANKS: Updated.

2005-11-01  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_AC_LOCK) [ solaris ]: Add `-64' to $LD if
	necessary, to permit combining of several convenience libs
	without any further objects added.
	Reported by Brian Barrett <brbarret@open-mpi.org>.

2005-11-01  Kean Johnston  <jkj@sco.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_DLOPEN_SELF): Use
	`lt_prog_compile_static', not `link_static_flag'.  Expand `$wl'
	so expansion of `export_dynamic_flag_spec' works.
	(_LT_AC_TRY_DLOPEN_SELF): Show dlerror() in case of failure.
	(AC_LIBTOOL_PROG_LD_SHLIBS) [ aix3 ]: Likewise.
	(AC_LIBTOOL_PROG_COMPILER_PIC) [ hpux* ]: Use `${wl}'.

2005-11-01  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* THANKS: Updated.

2005-10-31  Kean Johnston  <jkj@sco.com>

	[ sysv5*, sco3.2v5*, sco5v6*, unixware*, OpenUNIX*, sysv4*uw2* ]
	Patches for various bug fixes, small improvements and updating
	the SCO platform support.

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Set correctly for
	SCO.

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Set correct
	symcode values for the native nm on SCO platforms.

	* ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): All SCO platforms open
	dependency libraries when you dlopen a module.

2005-10-31  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_LD_SHLIBS) [ aix ]: Remove duplicate
	always_export_symbols=yes for AIX.

2005-10-29  Howard Chu <hyc@highlandsun.com>

	* ltmain.in (link mode): With `-static', only link statically
	against uninstalled libtool libraries.  Fixes 1.5.x regression
	to match documented (and actual 1.4.x) behavior.
	* NEWS: Updated.

2005-10-29  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtoolize.in: Fail if libltdl files not present but
	`--ltdl' given.
	Reported by Troy Benjegerdes <hozer@hozed.org>.

2005-10-17  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltmain.in (link mode): When accepting -64, -mips[0-9], et. al.
	compiler flags, don't set compiler_flags only for GCC as the
	vendor compiler also requires this flag. Sync with HEAD.
	Reported by Donald Anderson <dda@ddanderson.com>.

2005-10-17  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in [darwin]: Don't check for "bundle" in file path.
	Reported by Christoph Egger <Christoph_Egger@gmx.de>.

2005-10-13  Peter O'Gorman  <peter@pogma.com>

	* libltdl/ltdl.c (find_module): Check that dir is set.
	(load_deplibs): Don't free the user search paths too early.

2005-10-10  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4 (AC_LTDL_ENABLE_INSTALL): Remove bogus extra
	closing brackets.

2005-10-09  Christian Biesinger  <cbiesinger@web.de>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG) [ beos ]:
	Initial shared library support for C++.

2005-10-05  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): Fix m4 quoting for
	lt_simple_link_test_code.
	Reported by Nicolas Joly <njoly@pasteur.fr>.

2005-09-27  Tim Rice  <tim@multitalents.net>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD)
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER, AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_COMPILER_PIC, AC_LIBTOOL_PROG_LD_SHLIBS)
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS) [ unixware7* | sysv5* ]:
	Get UnixWare 7.1.[34] and OpenServer 6 fully working.
	Improve other UnixWare versions a little.

2005-09-25  Alan W. Irwin  <irwin@beluga.phys.uvic.ca>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (func_win32_libid) [ cygwin, mingw ]: Robustify sed
	script to determine win32_libid_type.
	(link mode) [ mingw ]: Ignore `-lm'.

2005-09-22  Tim Rice  <tim@multitalents.net>

	* libtool.m4 (AC_PROG_NM, AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_POSTDEP_PREDEP, AC_LIBTOOL_PROG_LD_SHLIBS):
	Add missing `;;' after case list.

2005-09-21  Peter Ekberg  <peda@lysator.liu.se>,

	* ltmain.in (clean mode): Clean up $dlname as well when cleaning
	an uninstalled libtool library. Fixes -mode=clean on Cygwin and
	MinGW to actually remove the dll when cleaning up an uninstalled
	library.

2005-09-20  Peter Ekberg  <peda@lysator.liu.se>,

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS, AC_LIBTOOL_LANG_CXX_CONFIG):
	Split up --out-implib option for linker in separate args so that
	the MSYS path translation can do its magic on the provided path
	to the import library.

2005-09-17  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Allow some ARM gcc ABI flags through.
	Reported by Andrés Moré <more.andres@gmail.com>.

2005-09-14  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (lt_argz_insert): Work around newlib
	argz_insert bug.
	* libltdl/Makefile.am (libltdl_la_LDFLAGS): Bumped revision.
	Reported by Eric Blake <ebb9@byu.net>.

2005-09-09  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_COMPILER_BOILERPLATE, _LT_LINKER_BOILERPLATE)
	(AC_LIBTOOL_COMPILER_OPTION, AC_LIBTOOL_LINKER_OPTION)
	(AC_LIBTOOL_PROG_CC_C_O): When comparing expected and actual
	compiler/linker output for warnings, weed out both empty lines
	as well as lines starting with possibly indented `+', to allow
	for shell debugging with `set -x'.
	Check the weeded instead of unweeded contents for emptiness.

	* ltmain.in (link mode): Actually provide a useful error
	message.  Fixes long-standing shameful user neglection.
	Reported by Martin Paljak <martin.paljak@gmail.com>.

2005-09-08  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_LD_SHLIBS) [ cygwin, mingw, pw32 ]: Use
	--enable-auto-image-base instead of a fixed image base address.

2005-09-06  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD) [ sysv4*uw2*,
	sysv4.2uw2* ]: Fix my last checkin to really match the more special
	case before the general case.
	Reported by Stepan Kasal <kasal@ucw.cz>.

2005-09-06  Roger Cornelius  <rac@tenzing.org>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD) [ sysv5OpenUNIX8,
	sysv5UnixWare7, sysv5uw[78], unixware7, sysv4*uw2* ]:
	Match special cases before general case.

2005-09-01  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (old_postintall_cmds): chmod 644 before running
	ranlib.
	Reported by Gerald Pfeifer <gerald@pfeifer.com>

2005-08-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac: Bump version.
	* NEWS: Updated.

	GNU libtool 1.5.20 is released.

	* configure.ac: Bump version.
	* NEWS: Updated.
	* INSTALL, config.guess, config.sub, install-sh,
	doc/texinfo.tex: Updated from external sources.
	* libltdl/Makefile.am: Bump library revision.

2005-08-31  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/m4/libtool.m4 (AC_LIBLTDL_INSTALLABLE): Fix the comment
	to not pretend that LIBLTDL and LTDLINCL are not AC_SUBSTed here.

2005-08-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* README, libtool.m4 [ solaris CC ]: Document issue with C++
	standard libraries.

2005-08-29  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/m4/libtool.m4 (AC_LIBLTDL_CONVENIENCE): Fix the comment
	to not pretend that LIBLTDL and LTDLINCL are not AC_SUBSTed here.
	* doc/libtool.texi (Distributing libltdl):  Update the
	documentation to match the advice given in HEAD.  Don't tell
	the user they have to AC_SUBST again.

2005-08-24  Bruno Haible  <bruno@clisp.org>

	* ltmain.in (install mode): Try "ln -s -f" and "rm -f && ln -s"
	to make a symlink for a shared library: the former is needed for
	libraries `ln' depends on, the latter for Solaris /bin/ln.
	Reported by Nelson H. F. Beebe <beebe@math.utah.edu>.

	* ltmain.in (cwrappersource): return 127 if exec failed.

2005-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Send chmod warning to log.

2005-08-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [ freebsd ]: Do not
	assume `aout' for modern FreeBSD by absence of deprecated
	`objformat'.

	* libtool.m4 [sun, CC] (AC_LIBTOOL_LANG_CXX_CONFIG): Move
	postdeps override ..
	(AC_LIBTOOL_POSTDEP_PREDEP): ..here, so they actually override.

2005-08-18  Stepan Kasal  <kasal@ucw.cz>

	* ltmain.in (SP2NL, NL2SP): Simplify.

2005-08-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (install mode) [ cygwin, mingw ]: Do not append a dot
	to a file name to source it, it breaks on cygwin managed mounts
	and is not necessary anywhere.
	Reported by Eric Blake <ebb9@byu.net>.

	* Makefile.am, libltdl/Makefile.am: Install libltdl data files
	in correct order, by Automake rules.  Really fixes ownership and
	timestamp problems.
	Reported by Peter Breitenlohner <peb@mppmu.mpg.de> and
	Charles Wilson <cygwin@cwilson.fastmail.fm>.

2005-08-10  Peter Ekberg  <peda@lysator.liu.se>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): Set ac_ext to cpp,
	not cc.

2005-08-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* AUTHORS: Updated.

2005-08-05  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltmain.in (link mode): Ignore errors from expr when
	determining if piece-wise linking should be done.

2005-08-03  Peter Ekberg  <peda@lysator.liu.se>

	* libltdl/ltdl.c (sys_wll_open): Set the error mode so that no
	dialog is popped up in case the file given to LoadLibrary is not
	a dll.

	* ltmain.in (link mode): Properly remove the fake symbol line
	": @PROGRAM " from the list of exported symbols.

2005-08-02  Peter Ekberg  <peda@lysator.liu.se>

	* libtool.m4 (AC_LIBTOOL_LINKER_OPTION): Fix copy-paste bug, it
	is the linker that is tested.

	* libltdl/ltdl.c (sys_wll_open): Revert commit mistake.

	* ltmain.in (link mode) <lib>: Make sure skipped_export is
	set to colon if _some_ cmd of export_symbols_cmds is too long.

2005-07-24  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (CXX, archive_cmds) [sun]: Add -lCstd, -lCrun
	and -lc for c++ builds with Sun C++ and Centerline C++..
	Reported by Albert Chin-A-Young <china@hewrittenword.com>

2005-07-08  Peter Breitenlohner  <peb@mppmu.mpg.de>

	* libltdl/Makefile.am (local-install-files): Have root own of
	installed files (but do not fail, for user installs).

2005-07-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/defs (make): Undo bogus change I did, and also
	wrongly attributed to Derek R. Price.

2005-07-08  Derek R. Price  <derek@ximbiot.com>

	* tests/defs (SED): Default variable contents to `sed'.
	Fixes false PASS of sh.test.

2005-07-08  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltmain.in: When a library is installed, dependent on a
	convenience library, and it involves relinking, the object
	files extracted from the convenience library are not removed
	after the relink. This is a problem if you build as non-root,
	install as root, then try to remove the build directory as
	non-root; Clean up properly if relink fails; Change
	"$realname"U to ${realname}T to be consistent.
	Missing backport of 2004-03-24 patch reported against MirLibtool
	by Marc Matteo <marcm@lectroid.net>.

2005-07-08  Bruno Haible  <bruno@clisp.org>

	* libtool.m4 (postinstall_cmds) [cygwin,mingw,pw32]: Make DLL
	executable after installing it.

2005-07-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (install mode): Do not assume `-f' needs an argument if
	the install program is `cp'.  Cleanup install mode somewhat.
	Reported by Juergen Leising <juergen.leising@gmx.de>.

2005-07-03  Thorsten Glaser  <tg@66h.42h.de>

	* libtool.m4 (_LT_AC_TRY_DLOPEN_SELF): Quieten configure output
	for corner cases on some BSDs.
	(AC_LIBTOOL_SYS_MAX_CMD_LEN): Another comment cleanup.

	* config/ltmain.m4sh (func_extract_archives, func_mode_install),
	m4/libtool.m4 (AC_LIBTOOL_SETUP, AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	(AC_LIBTOOL_WIN32_DLL, AC_PROG_LD, AC_PROG_LD_GNU)
	(AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS):
	Comment language, indentation, and backquote cleanup.
	* THANKS: Updated.

2005-06-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)

	* ltmain.in (compile mode, link mode),
	libtool.m4 (_LT_AC_PROG_ECHO_BACKSLASH, _LT_AC_LOCK,
	AC_LIBTOOL_SYS_DYNAMIC_LINKER,  AC_PATH_TOOL_PREFIX,
	AC_DEPLIBS_CHECK_METHOD,   AC_LIBTOOL_LANG_C_CONFIG,
	AC_LIBTOOL_LANG_CXX_CONFIG,  AC_LIBTOOL_POSTDEP_PREDEP,
	AC_LIBTOOL_LANG_F77_CONFIG,  AC_LIBTOOL_PROG_COMPILER_PIC,
	AC_LIBTOOL_PROG_LD_SHLIBS): Remove some unnecessary quotes.

2005-07-01  Derek R. Price  <derek@ximbiot.com>

	* ltmain.in (link mode): Handle spaces in paths to executed
	programs.  Quote path in error message.

2005-06-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* THANKS: Updated.

2005-06-21  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin]: Accept -arch flag.

2005-06-16  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltmain.in: Add fully-qualified paths to temp_rpath
	rather than unqualified paths in order to avoid possible errors
	when computing the fully-qualified path later.

2005-06-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION, AC_LIBTOOL_PROG_CC_C_O):
	Fix sed script syntax to be portable.

2005-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC, AC_LIBTOOL_PROG_LD_SHLIBS,
	AC_LIBTOOL_LANG_CXX_CONFIG): PGI also has pgf95.  PGI static flag is
	`-Bstatic'.  Remove harmless extra comma from whole_archive output.

2005-06-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (compile mode): In order to find out
	about forbidden characters in output, check with grep after checking
	func_quote_for_eval result.  Also, warn instead of fail.
	(func_infer_tag, compile mode, link mode, install mode):
	Revert SunOS sh bug workaround patch from 2004-12-28 as it
	triggers bugs in the Tru64 5.1B shell.
	Reported by Albert Chin <libtool@mlists.thewrittenword.com> and
	Nicolas Joly <njoly@pasteur.fr>.

2005-06-01  Olly Betts <olly@survex.com>  (tiny change),
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Thread Safety in libltdl),
	libltdl/ltdl.c (argz_create_sep): Fix some typos.

2005-05-31  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Do not add installed static litool libraries to
	convenience, they are not convenience libraries.
	Reported by Chen-Mou Cheng <chenmou.cheng@gmail.com>

2005-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Link mode): Document -objectlist.
	Noted by Richard Kreckel <Richard.Kreckel@ginac.de>.

2005-05-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac: Bump version.
	* NEWS: Updated.

	GNU libtool 1.5.18 is released.

	* configure.ac: Bump version.
	* NEWS: Updated.
	* config.guess, config.sub, install-sh, doc/texinfo.tex: Updated.
	* THANKS: Updated.

	* doc/libtool.texi (Distributing libltdl): Add note that
	`libltdl/Makefile' should not be configured by toplevel `configure.ac'.
	Reported by Gideon Go <gideon.go@gmail.com>.

2005-05-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS)
	[linux]: PGI: Backport whole_archive changes from HEAD.
	Add $pic_flag to archive_cmds and archive_expsyms_cmds.
	Bug reported against LAM by Troy Telford <ttelford@lnxi.com>.

2005-05-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* THANKS: Updated.

2005-05-04  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin]: Pass -framework for executables too.
	Reported by Adam <adam@albedo.art.pl>

2005-05-02  Andreas Schwab  <schwab@suse.de>

	* libltdl/Makefile.am (local-install-files): Rename back from
	install-data-local.
	* Makefile.am (install-data-hook):  Readd call to local-install-files.
	* NEWS: Updated.
	Fixes libltdl install regression introduced in 1.5.16.

2005-04-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltdl.m4 (all over): Quote all arguments to AC_DEFINE and
	AC_DEFINE_UNQUOTED consistently.  Reported by
	Michael Koch  <konqueror@gmx.de>, Riccardo Mottola <zuse@libero.it>,
	and Dalibor Topic <robilad@kaffe.org>.

2005-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [openbsd3.3]: Set
	need_version to yes or no depending on the os release.
	Missing backport reported by Dalibor Topic <robilad@kaffe.org>.

2005-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [ linux ]: sed 3.02 does
	not understand \t in regex.
	Reported by Tim Van Holder <tim.vanholder@gmail.com>.

2005-04-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac, NEWS: Updated to 1.5.17a.

2005-04-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	GNU libtool 1.5.16 is released.

	* configure.ac: Bump version.
	* NEWS, README: Updated.
	* config.guess, config.sub: Updated.
	* THANKS: Updated.

	* libtool.m4 (_LT_CC_BASENAME): Ignore `compile'.

2005-04-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC, AC_LIBTOOL_PROG_LD_SHLIBS)
	[solaris]: Update wl for Sun Studio f77/f90/f95.  Fix
	whole_archive_flag_spec for cc and f77/f90/f95 to prevent reordering in
	case we link with $CC.

2005-04-23  Gary Kumfert <kumfert@llnl.gov>

	* libtool.m4 (AC_LIBTOOL_LANG_F77_CONFIG) [ aix4, aix5 ]:
	Adjust logic to match the C case: Only disable static if not
	on ia64 nor runtimelinking.

2005-04-23  Jonathan Ryshpan <jonrysh@pacbell.net>

	* doc/libtool.texi: Get rid of overfull hboxes.

2005-04-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)

	* libtool.m4 (_LT_CC_BASENAME): Use $echo, not $ECHO, for consistency.

2005-04-22  Gary V. Vaughan  <gary@gnu.org>

	The FSF are moving offices today.  Changed their contact address
	in all files from `59 Temple Place, Suite 330, MA 02111-1307' to
	`51 Franklin Street, Fifth Floor, MA 02110-1301'.

2005-04-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_COMPILER_BOILERPLATE, _LT_LINKER_BOILERPLATE):
	New macros: save warnings and boilerplate of simple compile/link tests.
	(AC_LIBTOOL_LANG_C_CONFIG, AC_LIBTOOL_LANG_CXX_CONFIG,
	AC_LIBTOOL_LANG_F77_CONFIG, AC_LIBTOOL_LANG_GCJ_CONFIG,
	AC_LIBTOOL_LANG_RC_CONFIG): Call.
	(AC_LIBTOOL_COMPILER_OPTION, AC_LIBTOOL_LINKER_OPTION, AC_LIBTOOL_PROG_CC_C_O):
	Fail only if nonempty warnings different from default compile/link.
	* NEWS: Update.
	Reported by Josselin Mouette <joss@debian.org> and Marcin Siennicki.

2005-04-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/hardcode.test [solaris]:  Use dumpstabs if available,
	to avoid false failure caused by debug section which contains
	command line (Solaris cc).
	Reported by Ralf Menzel <menzel@ls6.cs.uni-dortmund.de>.

2005-04-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)

	* libtoolize.in: Fix syntax typos.

2005-04-15  Maciej W. Rozycki  <macro@linux-mips.org>

	* libtool.m4 (AC_LIBTOOL_LANG_GCJ_CONFIG): Add old_archive_cmds
	definition.

2005-04-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (_LT_CC_BASENAME): New macro to figure out $cc_basename.
	Skip ccache, distcc, purify, cmdline options, `$host_alias-' prefix.
	(AC_LIBTOOL_SETUP, AC_LIBTOOL_LANG_CXX_CONFIG,
	AC_LIBTOOL_LANG_F77_CONFIG,  AC_LIBTOOL_LANG_GCJ_CONFIG,
	AC_LIBTOOL_LANG_RC_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS): Use.
	* NEWS: Update.

2005-04-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SETUP, AC_LIBTOOL_CONFIG): Fix
	definition of $Xsed.

2005-04-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/linkorder.test: Move to
	* tests/link-order.test: New, with fixed permissions.
	* tests/Makefile.am: Adjust.

2005-04-08  Alexandre Oliva  <aoliva@redhat.com>,
	    Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Don't add files with the same base name to an
	archive; rename duplicates instead.
	(func_extract_an_archive): Remove section to deal with duplicate
	base names in an archive.
	* tests/func_extract_archives.test: remove.
	* tests/duplicate_members.test: new test.
	* tests/Makefile.am: Add new test, remove old.

2005-04-08  Alexandre Oliva  <aoliva@redhat.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix the order of -L flags added for libtool dep libs.

	* ltmain.in (link mode): Add to tmp_libs paths for libtool dep
	libs in reverse order as well.
	* tests/defs: Set $build to allow to detect cross-compiles.
	* tests/Makefile.am, tests/linkorder.test: New test.

2005-04-01  Mike Stump  <mrs@apple.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN) [ netbsd, freebsd, openbsd,
	darwin, dragonfly]: Use 3/4 of argmax, instead of 1/4.

2005-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_CONFIG): Typo.

	* libtool.m4 (AC_LIBTOOL_LANG_GCJ_CONFIG, AC_LIBTOOL_LANG_RC_CONFIG):
	Set $cc_basename.

2005-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Move linux entry to
	correct position, re-indent.

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [solaris]: Use ${wlarc}
	and set to empty when using $LD for linking.  Fixes regression
	introduced in 2004-12-20.
	Reported by Ralf Menzel <menzel@ls6.cs.uni-dortmund.de> and
	Пухальский Юрий Андреевич <pooh@cryptopro.ru>.

2005-03-21  Gary V. Vaughan  <gary@gnu.org>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SETUP, AC_LIBTOOL_LANG_CXX_CONFIG,
	AC_LIBTOOL_LANG_F77_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS):
	For matching compiler names: Pick only first word, allow leading white
	space..
	* tests/sh.test: ..and test for missing `*' at end of patterns.

2005-03-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/demo-nopic.test: Enhance status output
	noted by Tom Burger <tvburger@few.vu.nl>.

2005-03-18  Peter O'Gorman  <peter@pogma.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4: The compiler can be a program name with args, so
	always check cc_basename against compiler name and a wildcard.
	Also, drop unnecessary quotes in `case' argument.

2005-03-18  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG) [ solaris2.6+ ]:
	When linking convenience libraries on Solaris with the Sun C++
	compiler, pass convenience libraries through to the linker with
	-Qoption between allextract/defaultextract.  The Sun C++ compiler
	bundles -Qoption arguments so convenience libraries are linked with
	defaultextract otherwise.
	Backport of branch-2-0 patch dated 2004-03-14.  Reported by
	Пухальский Юрий Андреевич <pooh@cryptopro.ru>.

2005-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in: unconditionally set IFS, and set it
	to the one true right sequence: space, tab, newline.

	* configure.ac, libltdl/configure.ac: s/##/dnl/ for comments
	that are meaningless in configure.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>.

2005-03-15  Per Bothner <per@bothner.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Allow special characters in source file names.  Will break unless
	`-o target' is also given, which must not contain special characters.
	En passant, fix source file quoting broken for cygwin/MSVC.

	* ltmain.in (compile mode): Use new variable qsrcfile
	for quoted source file name for compile $command.  Fix missing
	quotes for _c_o lockfile.
	* NEWS: Update.

2005-03-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [linux]: Remove MAIN_
	dependency when creating shared libraries with Portland pgf77.

2005-03-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Reword double negation in error message.
	Reported by Jesper Louis Andersen <jlouis@mongers.org>.

2005-03-10  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/Makefile.am (install-data-local): Don't force v7 tar
	format with the `o' flag in create mode.
	Set the umask to 0 when untarring to avoid copied files taking
	their mode from the installer's umask.
	* libtoolize.m4sh (func_copy_cb): Ditto.
	Ignore errors from failed `cd' in the tar processes, since we
	may be running in dryrun mode.
	* libltdl/Makefile.am (ltdldatafiles): List all files needed to
	build a newly libtoolize installed libltdl directory even if the
	parent project doesn't use autoconf and automake.
	Reported by Noah Misch <noah@cs.caltech.edu>,
		Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

2005-03-08  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG,
	AC_LIBTOOL_PROG_LD_SHLIBS) [irix*, osf*]: Output -update_registry
	information to ${output_objdir} directory, not ${objdir}.
	${output_objdir} will work when a project has a single Makefile and
	performs builds in subdirectories. ${objdir} expects the source in
	the current directory, breaking single-Makefile builds.

2005-03-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* THANKS: Update.

2005-03-02  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.m4sh (func_copy_cb): Use tar chof to avoid symlink
	attacks.
	* libltdl/Makefile.am (install-data-local): Ditto.

2005-02-24  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): The Portland group's
	compiler does not pass --whole-archive. Move gnu ld check for
	the flag to the top so it can be overridden.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Unset whole_archive_flag_spec for
	the portland group's c++ compiler too.
	Reported by Jeff Squyres <jsquyres@lam-mpi.org>

2005-02-24  Gary V. Vaughan  <gary@gnu.org>

	Using `libtoolize --copy --ltdl' was not preserving timestamps, so
	parts of the autoconf bootstrap would be rerun spuriously after
	the files had been copied into the source tree:

	* libtoolize.in: Use $tar to copy files to preserve timestamps.
	(tar): New default tar command.
	(cp): Use -p to try and preserve timestamps.
	* libltdl/Makefile.am (ltdldatadir): Installation destination for
	libltdl sources.
	(install-data-local): New rule to install libltdl tree with tar to
	preserve timestamps.
	(local-install-files): Removed.
	Reported by Jeff Squyres <jsquyres@lam-mpi.org>

2005-02-12  Alexandre Duret-Lutz  <adl@gnu.org>,
	    Peter O'Gorman  <peter@pogma.com>

	* Makefile.am (web-manual): Use makeinfo, not texi2html.

2005-02-12  Peter O'Gorman  <peter@pogma.com>

	* ChangeLog: Upped version to 1.5.15a.
	* NEWS: Updated.

	GNU libtool 1.5.14 is released.

	* ChangeLog: Upped version to 1.5.14.
	* NEWS: Updated.
	* config.guess, config.sub: Updated.

2005-02-10  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in, libtoolize.in: --version should show "(C) 2005".
	Reported by Paul Eggert <eggert@CS.UCLA.EDU>

2005-02-07  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Add -pthread like flags when linking executables too.
	Reported by Andreas Schwab <schwab@suse.de>

2005-02-05  Peter O'Gorman  <peter@pogma.com>

	* configure.ac: Bump version to 1.5.13a
	* NEWS: Updated

	Libtool-1.5.12 release

	* libltdl/Makefile.am: Bump library revision (I remembered!).
	* configure.ac: Bump version to 1.5.12.
	* NEWS: Updated
	* config.guess, config.sub: Updated.

	* ltmain.in (func_extract_archives) [darwin]: This didn't actually
	work on a real fat archive, should do now.
	* tests/func_extract_archives.test: remove darwin fat tests which
	did not actually work.

	* Makefile.am (web-manual): Make this target actually work.

2005-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): Allow five digits in version-info

	* NEWS: s/Linux/GNU &/.

2005-02-03 Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode): With piecewise (partial) linking, fix
	intermediate output name for subdir-objects.

	* ltmain.in (link mode): Backport yet another cygwin subdir fix
	(wrappersource).

2005-02-03  Charles Wilson  <cwilson@spam.protected>

	Backported from branch-2-0:
	* ltmain.in (func_generate_dlsyms): addresses
	in _preloaded_symbols[] cannot go into .rdata section
	if symbols are DATA imported from DLL, on windows,
	because runtime relocations must happen.
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS):
	build exports for symbols in .rdata sections

2005-02-03  Peter O'Gorman  <peter@pogma.com>

	* README: Update.

2005-02-03 Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* THANKS: Update.

2005-02-03  Reid Spencer  <reid@x10sys.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in (link mode) [cygwin]: Fix broken subdir path
	computation, exposed by using `-dlopen self'.  Fix broken sed
	script exposed by additionally using `-export-symbols FILE'.

2005-02-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/quote.test: Backport fix for spurious failures on Cygwin.

	* THANKS: Update.

2005-02-03  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin]: Don't add installed libs to temp_rpath when
	building executables on darwin, or other systems which use
	hardcode_automatic. It may break our wrapper scripts.

2005-02-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltmain.in, libtoolize.in: Exit with nonzero status on write failures
	with --help or --version or, in case of ltmain, --config or --features.

	* NEWS: Update.

2005-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
	[ pw32, freebsd3.[01], freebsdelf3.[01] ]
	(AC_LIBTOOL_LANG_CXX_CONFIG) [ aix4.[012]*, freebsd[12] ]
	[ hpux9* with aCC  solaris2.[0-5] ]
	(AC_LIBTOOL_PROG_LD_SHLIBS) [ linux with GNU ld < 2.11, aix4.[012]* ]
	(AC_LIBTOOL_LANG_GCJ_CONFIG): Fix [] quoting.  Should fix various spurious
	failures.

	* tests/func_extract_archives.test: Clean up afterwards.

2005-02-01  Peter O'Gorman  <peter@pogma.com>

	* libtoolize.in, libltdl/ltdl.c: Nothing significant changed in 2005,
	backing out copyright update. Thanks Gary.

2005-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config/ltmain.m4sh (func_win32_libid, func_infer_tag)
	(func_extract_an_archive, func_extract_archives):
	adjust to preferred function header layout.

2005-01-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Unicos 9 sed rejects
	empty parentheses as in 's/x\(\)/\1/'.
	(AC_LIBTOOL_PROG_COMPILER_PIC) [unicos*]: wl=-Wl,.

	* tests/quote.test: Match link quoting against `"$wl"', not `-Wl,'.

2005-01-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS)
	[linux]: Update for Intel Compiler icc/icpc/ifort: add -i_dynamic and
	-nofor_main, if necessary.  Simplify logic somewhat.

2005-01-29  Peter O'Gorman  <peter@pogma.com>

	* AUTHORS, THANKS: Copy from cvs HEAD.

	* ltmain.in, libtool.m4, libtoolize.in, libltdl/ltdl.c: Update
	copyright.

	* ltmain.in [darwin]: Allow -framework foo through when given on
	the command line.

2005-01-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/Makefile.am: also re-export CPP, F77, FFLAGS, CXX,
	CXXFLAGS, CXXCPP, and the value of SHELL as CONFIG_SHELL.
	Reported by Heinz Salzmann <heinz.salzmann@micronas.com>.

2005-01-26  Craig Dooley  <xlnxminusx@gmail.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* NEWS, libtool.m4, ltmain.in [dragonfly]: Add support for DragonFly.

2005-01-25  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltmain.in [irix]: Preserve processor option for SGI Compiler
	(-r[0-9][0-9]*).

2005-01-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_CONFIG) [mingw, cygwin, pw32, os2]:
	Add _LT_DECLs for host_os, build_alias, build and build_os.
	host_os and build were used in a few occasions in ltmain.in
	and affect above-mentioned systems, the others are added for
	symmetry.

2005-01-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)

	* libltdl.c (try_dlopen): Fix memleak.
	Savannah BTS patch #3670 by Lennart Poettering.

2005-01-16  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Don't pass through compiler-like thread flags when
	using $LD to do the linking. Use compiler_flags instead.
	Reported by Mark_Andrews@isc.org.

	* libtool.m4 (LT_CMD_MAX_LEN) [osf]: On Tru64 there could
	be a kernel panic when testing the maximum command line length
	if exec_disable_arg_limit=1. Don't do the tests to figure it
	out on *-osf*.
	Reported by Dr. Hans Ekkehard Plesser
	<hans.ekkehard.plesser@umb.no>

2005-01-14  Guido Draheim  <guidod-2003-@gmx.de>  (tiny change)

	* libtool.m4 (AC_PROG_SED): Don't break test loop early.

2005-01-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtoolize.in: Back out copying `install-sh' by libtoolize.
	* doc/libtool.texi (Distributing): Mention that we distribute
	`install-sh', but that non-Automake users will have to copy
	it by themselves.

	* libtoolize.in: Add datarootdir.

2005-01-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [linux]: While "parsing"
	/etc/ld.so.conf, skip comments.
	Reported by Jens Elkner <elkner@linofee.org>.

2005-01-08  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4, m4/ltdl.m4: RMS says, 'I think the [license of
	autoconf macro files] should be:
	# This file is free software; the Free Software Foundation
	# gives unlimited permission to copy and/or distribute it,
	# with or without modifications, as long as this notice is
	# preserved.'.

2004-12-28  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [ cygwin, mingw, pw32 ]:
	_LT_AC_TAGVAR missing for `ld_shlibs' and for `fix_srcfile_path'.

	* ltmain.in (func_extract_archives): Not all shells grok
	`read -r' (unnecessary in this case).
	Reported by Ralf Menzel <menzel@ls6.cs.uni-dortmund.de>.

	* ltmain.in: New variable quote_scanset to work around SunOS ksh
	`case' backslash-escaping bug: protect character class by variable
	expansion.  Reported by Alexander Kurz <alexander.kurz@qsc.de>.

2004-12-20  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtoolize.in: Install `install-sh' as well, needed for configure ..
	* Makefile.am: .. install, update it.
	* NEWS, doc/libtool.texi (Distributing): .. document it.
	Reported by Ross Boylan <ross@biostat.ucsf.edu>.

	* libtool.m4 [solaris] (AC_LIBTOOL_PROG_LD_SHLIBS): Use ${wl} for
	whole_archive_flag_spec.  Missing backport reported by Ralf Menzel
	<menzel@ls6.cs.uni-dortmund.de>.

	* tests/demo-nopic.test [solaris, sunos]: Skip test.

2004-12-18  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in: Fix typo `--mode' instead of `-mode' in warning.
	Reported by Georg Schwarz <georg.schwarz@freenet.de>.

	* libtool.m4 [linux] (AC_LIBTOOL_PROG_COMPILER_PIC): match
	$cc_basename, not $CC against icc.  Also, for symmetry match
	icpc* and ecpc* (ia64 version of icpc).

	* libltdl/ltdl.c [mingw] (opendir): Fix write of constant
	strings past end of buffer.
	(opendir, readdir): Fix read past end of buffer.

2004-12-17  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* README-alpha: Update list of non-Libtool-owned files.

2004-12-16  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (trim): Return error rather than do bogus
	null pointer arithmetic when parsing a malformed .la file.

2004-12-13  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG,
	AC_LIBTOOL_PROG_LD_SHLIBS): Append -G to link command-line on AIX
	to honor -brtl on command-line (runtime linking). Already done
	for IBM C/C++ compilers.

2004-12-10  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (func_extract_archives,func_extract_an_archive): On
	darwin, uniq can not take teh flags -cd together, thanks to Ralf
	for the fix, also ar does not accept N, so we use the fact that
	ar x libfoo.a foo.o will always extract the first foo.o in the
	archive and we then delete foo.o from the archive, which will also
	delete only the first foo.o, then rinse and repeat.
	* tests/func_extract_archives.test: Test this feature.
	* tests/Makefile.am: Add the test.

2004-12-09  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltmain.in: Preserve -model [arg] option, used
	with the Tru64 UNIX C++ compiler. This option selects the
	layout of C++ classes, name mangling, and exception handling.

2004-12-01   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* ltmain.in (func_mode_link): Fix quoting bug in last checkin.

2004-11-29   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Reloadable objects): Fix typo, reported by
	rsc@merit.edu.

	* ltmain.in: Allow some compiler/linker flags through unchecked.
	Backport of patch `2004-09-14 Albert Chin-A-Young' from branch-2-0.

2004-11-24  Jeff Squyres <jsquyres@lam-mpi.org>

	* libtool.m4 [linux] (AC_LIBTOOL_LANG_CXX_CONFIG,
	AC_LIBTOOL_PROG_COMPILER_PIC, AC_LIBTOOL_PROG_LD_SHLIBS),
	NEWS, THANKS: Support for Portland Group (aka "pgi") compilers.

2004-11-18  Daniel Reed <djr@redhat.com>

	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [linux]: Interpret
	`include' statements in toplevel ld.so.conf file.

2004-11-17  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* tests/demo-nopic.test: Correctly skip hppa, x86_64, and s390*.
	Reported by Daniel Reed <djr@redhat.com>.

2004-10-26  Gary Vaughan <gary@gnu.org>

	* config/ltmain.in (func_mode_link): When linking an installed
	libtool library on the command line using -lfoo we need to find
	the library in the search paths and add it's dependency_libs to
	the link in the conv pass so that any libtool libs listed are
	correctly expanded in the link pass.

2004-09-19  Peter O'Gorman  <peter@pogma.com>

	* configure.ac: Bump version to 1.5.11a.
	* NEWS: ditto

	GNU libtool 1.5.10 is released.

	* configure.ac: Bump version.
	* NEWS: Updated.

2004-09-19  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): The linker
	distinguishes data and code symbols on linux-gnu/ia64.  Fixes
	multiple testsuite failures.  Backport from 1.9c.

2004-09-19  Alexandre Duret-Lutz  <adl@gnu.org>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
	* demo/Makefile.am, pdemo/Makefile.am: Use per-target CFLAGS
	only for the Libtool-built objects, so that automake won't
	complain about missing AM_PROG_CC_C_O but still compile Libtool-
	and non-Libtool objects into different names.

2004-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* ltdl.c (memcpy, memmove): Fix pre-ANSI replacement functions
	to not use pointer-to-void arithmetic.
	(memmove): Fix infinite loop.

2004-09-12  Brad <brad@comstyle.com>

	* libtool.m4: Fixes for the OpenBSD support

2004-08-12  Maciej W. Rozycki  <macro@linux-mips.org>

	* demo/Makefile.am: Stop automake warning by defining
	libhell0_a_CFLAGS.
	* pdemo/Makefile.am: Ditto.

2004-08-12  Peter O'Gorman  <peter@pogma.com>

	* configure.ac, libtool.m4: Ensure that a c++ compiler exists before
	checking for the c++ preprocessor. Apparently reported by multiple
	people, multiple times.

	* libtool.m4 [GNU/linux] (AC_DEPLIBS_CHECK_METHOD): Cleanup,
	thanks to Daniel Reed.

2004-08-11  Daniel Reed  <djr@redhat.com>

	* tests/demo-nopic.test: Do not run on x86_64 or s390*

2004-08-07  Peter O'Gorman  <peter@pogma.com>

	* configure.ac: Bumped version to 1.5.9a.
	* NEWS: updated.

	GNU libtool-1.5.8 is released.

	* NEWS: updated.
	* configure.ac: Bumped version to 1.5.8.
	* config.guess, config.sub:  Synchronized from ftp.gnu.org.

2004-08-04  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Since CONFIG_SHELL may
	not actually be set, we should use SHELL here, also make darn sure
	that SHELL is set to something. Bug from Willem Jan Palenstijn
	<wpalenst@math.leidenuniv.nl>.

2004-08-03  Jacob Meuser <jakemsr@jakemsr.com>

	* ltmain.in: Allow some static libraries to be used in generating a
	shared library on NetBSD and OpenBSD. match-pattern_regex decides
	which are good.

2004-08-02  Todd Vierling  <tv@duh.org>,
	Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Use sysctl to get the
	max cmd length on BSD* and darwin. Make sure that there is a safety
	factor too.

2004-08-02  Geoffrey Keating  <geoffk@apple.com>

	* libtool.m4 [darwin]: Don't use -all_load.

2004-08-01  Maciej W. Rozycki  <macro@linux-mips.org>

	* libtool.m4 (LT_AC_PROG_SED): Set SED when running from cache as
	well.

2004-07-30  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4, ltmain.in:  autoconf now says the best thing to do
	with CDPATH is to (unset CDPATH) >/dev/null 2>&1 && unset CDPATH,
	so do it.

	* libtool.m4 [darwin]: $GREP is not defined here, use $EGREP.
	* ltmain.in (func_extract_archives): Backport func_extract_archives
	from cvs HEAD to reduce code size and enable the darwin fat archive
	extraction.

2004-07-28  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4, ltmain.in [darwin]: Backport xlc support from cvs HEAD.

2004-07-22  Joe Orton  <joe@manyfish.co.uk>

	* libtool.m4: Treat bsdi5* like bsdi4*.

2004-07-08  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 [darwin](AC_PROG_LD_RELOAD_FLAG): Use $CC -nostdlib -r
	on darwin so that ld will not thin fat files.

	* libtool.m4 [darwin]: Clean up darwin bits. Looks more normal now.

2004-07-07  Brad <brad@comstyle.com>

	* libtool.m4: Fixes for the OpenBSD support

2004-07-07  Peter O'Gorman  <peter@pogma.com>

	* libltdl/ltdl.h: Undo inadvertent changes from the last commit.

2004-06-24  Noah Misch  <noah@cs.caltech.edu>

	* ltmain.in: Unset the zsh GLOB_SUBST option, which makes zsh
	handle backslash quoting poorly, before doing anything else.
	* tests/defs: Likewise.

2004-06-16  Brad  <brad@comstyle.com>

	* libtool.m4: More improvements to OpenBSD support.
	* NEWS: Updated.

2004-05-05  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH): Insert space
	around = for a test and a comma between runpath_var and $1. Bug
	reported by Max Bowsher.

2004-04-29  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Fix problem with .libs/.libs/libfoo.so appearing on
	the link line, reported and fix confirmed by Dan S. Camper.

2004-04-20  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Detect Intel C++ compiler
	version more idiomatically.

2004-04-19  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Intel C++ compiler 8.0 and
	newer adds predep_objects and postdep_objects itself, so don't
	duplicate them in $archive_cmds and $archive_expsym_cmds.
	* NEWS: Updated.
	Reported by Roberto Bagnara <bagnara@cs.unipr.it>

2004-04-14  Alexandre Duret-Lutz  <adl@gnu.org>

	* bootstrap: Delete acinclude.m4.

2004-04-13  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (XDELTA_OPTIONS): Remove --pristine as that
	generates huge xdeltas.

2004-04-11  Peter O'Gorman  <peter@pogma.com>

	* configure.ac: Bumped version to 1.5.7a.
	* NEWS: updated.

	Released 1.5.6

	* configure.ac: Bumped version to 1.5.6.
	* NEWS: updated.

2004-04-10  Peter Breitenlohner <peb@mppmu.mpg.de>

	* libltdl/Makefile.am (local-install-files): remove $srcdir from
	file names, they may have been placed there by automake-1.8.

2004-04-08  Fredrik Estreen  <estreen@algonet.se>

	* ltdl.m4: Rename shrext to shrext_cmds here too.

2004-04-04  Peter O'Gorman  <peter@pogma.com>

	* Makefile.am: One install-data-hook target is better than two.

2004-04-03  Peter O'Gorman  <peter@pogma.com>

	* configure.ac: Bumped version to 1.5.5a.
	* NEWS: updated.

	Released 1.5.4

	* configure.ac: Bumped version to 1.5.4.
	* NEWS: updated.
	* config.guess, config.sub, texinfo.tex:  Synchronized from
	ftp.gnu.org.

2004-04-01  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Remove an extra eval concat_cmds that some idiot added.
	Fixes double eval on AIX, reported by Albert Chin and Uwe Moeller.

2004-03-24  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in <prog linkmode>: Always add -L options to
	$newlib_search_path instead of just in scan mode to ensure that
	non-libtool libraries in user-specified directories can be found.

2004-03-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4: Remove newlines from lt_ld_extra, so
	variable can safely be stored in config.cache.

2004-03-14  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4: Rename ld_extra to lt_lt_extra to be consistent
	with HEAD.

2004-03-14  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Use $EGREP, $GREP is not set.
	* ltmain.in (link_all_deplibs,darwin): Link libraries in the
	correct order. Bug from Zachary Pincus <zpincus@stanford.edu>.

2004-03-14  Scott James Remnant  <scott@netsplit.com>

	* m4/ltmain.in: Only check precious_files_regex if it is not empty.

2004-03-05  David Edelsohn  <edelsohn@gnu.org>

	* libtool.m4: Disable building static libraries if building
	shared libraries on AIX 5L.

2004-03-02  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Prune out my arch mirror dir before running
	amok through the tree with 'rm -rf'!

2004-02-22  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (web-manual): Generate the web manual carefully
	so that links will still work when it is uploaded to gnu.org.
	* README-alpha: Note that this rule should be used at release
	time.

2004-02-18  Gary V. Vaughan  <gary@gnu.org>

	* commit (SHELL): Set it explicitly, incase some madman is using
	tcsh as their login shell :-b

2004-02-15  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4, ltmain.in: Rename shrext to shrext_cmds.

2004-02-13  Gary V. Vaughan  <gary@gnu.org>

	* commit (MKSTAMP): Look for mkstamp in the right place.

2004-02-12  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in, libtoolize.in, commit, mailnotify: Remove
	$SED from definitions of $dirname and $basename and prefix each
	use with it instead.  Some shells (zsh) treat the expansion as
	a single command instead of a command with arguments.

2004-02-12  Scott James Remnant  <scott@netsplit.com>

	* mailnotify (func_sendmail): Look for sendmail in a
	couple of common non-PATH locations as well.

2004-02-12  Gary V. Vaughan  <gary@gnu.org>

	* commit, mailnotify: Use $progpath as for ltmain.in to work
	around the IRIX bug described below. Resynch with cvs-utils HEAD.

2004-02-12  Albert Chin-A-Young  <china@thewrittenword.com>,
	    Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (progpath): Work around backward compatibility issue
	on IRIX 6.5. On IRIX 6.4+, sh is ksh but when the shell is invoked
	as "sh" and the current value of the _XPG environment variable is
	not equal to 1 (one), the special positional parameter $0, within
	a function call, is the name of the function. So, rather than
	using "$0" in functions, we set $progpath in the body and use that
	everywhere instead (incase of code refactoring later).
	(EXIT_SUCCESS, EXIT_FAILURE, EXIT_MISMATCH): For clarity.

2004-02-11  Gary V. Vaughan  <gary@gnu.org>

	* commit: Completely change CVS/Root->name sed script to actually
	work when :ext: is not shown.

2004-02-11  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltmain.in: Indentation fixes, typo fixes.

2004-02-11  Gary V. Vaughan  <gary@gnu.org>

	* config/mailnotify: New file for mailing commit notifications,
	imported from cvs-utils.
	* commit: Updated from cvs-utils and tweaked for libtool.

2004-02-09  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Fix typo: testring -> teststring.

2004-02-06  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (EXTRA_DIST): No need to specify config.guess
	and config.sub, all Automake versions know we want to
	distribute these.

2004-02-05  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (infer_tag, win32_libid): Style changes. Rename
	infer_tag to func_infer_tag and win32_libid to func_win32_libid.
	* libtool.m4 (cygwin): rename win32_libid to func_win32_libid.

2004-02-04  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (infer_tag): Move tag inferrence to a shell function.
	Also test $base_compile against $CC with escaped arguments. Bug
	reported by Geoff Keating <geoffk@apple.com>.

2004-02-03  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (install-data-hook): Manually make config.guess
	and config.sub executable after they are installed as _DATA.
	We can't use _SCRIPTS because the various program name
	transforms may be applied to them.
	(pkgdata_DATA): List config.guess and config.sub here
	(pkgdata_SCRIPTS): instead of here.

2004-02-03  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Create temporary directory under a strict umask
	rather than running chmod afterwards, preventing a race
	condition where the directory could be replaced with a symbolic
	link in the time between the two commands.

2004-02-03  Paul Eggert  <eggert@twinsun.com>
	Scott James Remnant  <scott@netsplit.com>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS):
	Replace needless uses of egrep with grep as egrep may not exist,
	POSIX no longer mandates it.
	* ltmain.in: Replace use of 'grep -E' with '$EGREP -e' in case
	egrep is the only thing that exists.

2004-01-27  Scott James Remnant  <scott@netsplit.com>

	This fixes release procedure problems discovered whilst making
	the 1.5.2 release.

	* Makefile.am (cvs-dist): Because we check whether ChangeLog
	has been committed, this rule can't be run with uncommitted
	source so we can't run 'commit' and don't need to run
	'make dist' a second time.  Fix CVS tag as it should be
	"release-X" not "Release-X".
	(cvs_commit): New rule for the cvs-release chain that runs
	'commit'
	(cvs-release): Depend on cvs-commit, depend on deltas instead of
	cvs-diff and xdelta.
	(cvs-diff): Removed, replaced with delta-diff.
	(delta-diff): Unpack and diff the old and new tarballs rather
	than using CVS, so we get a genuinely complete diff.
	(xdelta): Removed, replaced with delta-xdelta.
	(got-xdelta): New rule for improved reading.
	(delta-xdiff): Copied and cleaned up version of old xdelta rule.
	(deltas): Depends on delta-diff and delta-xdelta (make deltas).
	(cvs-news): Don't depend on timestamps, cvs-dist itself does now.
	(prev-tarball): This is the only place we need a LASTRELEASE check
	so copy the code here and remove the CHECK_RELEASE variable.
	(new-tarball): Check there's a new tarball (did cvs-dist work?)
	* README-alpha: Update CVS instructions as everything's changed
	on Savannah, remove references to bz2 as we don't generate those
	on branch-1-5.
	(Release procedure): Update NEWS and ChangeLog after changing
	the version number (both times); Run 'make fetch' after running
	'configure' (difficult to do it beforehand); Require 'commit'
	before 'make cvs-dist' as that checks ChangeLog is committed;
	'make deltas' instead of 'cvs-diff' and 'xdelta', pass LASTRELEASE
	to make instead of OLDVERSION (and it's mandatory); Clean up
	uploading paragraph; Clearer announcement sending instruction;
	Removed ftp-upload@gnu.org mail as that's not necessary now;
	Make web page updating instructions a bit clearer; Add an instruction
	to update the manual for non-alphas.
	(Alpha release note template): Add a Subject; update CVS instructions.
	(Full release note template): Add a Subject; update CVS instructions.
	* configure.ac: Add dist-bzip2 to AM_INIT_AUTOMAKE as we talk
	about bz2 files in our release announcements.

2004-01-25  Scott James Remnant  <scott@netsplit.com>

	* NEWS: updated.
	* configure.ac: Bumped version to 1.5.3a also in accordance with
	the new versioning scheme.

	GNU libtool 1.5.2 was released.

	* configure.ac: Bumped version to 1.5.2 in accordance with the
	new versioning scheme.
	* NEWS: updated.
	* config.guess, config.sub, texinfo.tex:  Synchronized from
	ftp.gnu.org.

2004-01-25  Scott James Remnant  <scott@netsplit.com>
	Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am: Update the maintainer rules against HEAD, I
	cannot seem to find Gary's original ChangeLog entry for these.

2004-01-25  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Check for module_cmds if max_cmd_len is exceeded too.

	* ltmain.in: Test $old_striplib before using it, not $striplib.

	* ltmain.in: Move eval to after command separation to allow ~ in paths.

	* ltmain.in (linkalldeplibs,darwin): Fix a bug reported by Idar
	Tollefsen where a dir could be added to the link line with no '-L'
	on darwin.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* libtool.m4 (AC_LIBTOOL_CONFIG): Don't attempt to
	make ltmain.sh unless there's an ltmain.in to do it with.
	This prevents make/configure loops caused by Automake's
	dependency rules.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* libtoolize.in: Fix libtoolize so the cd command run when
	AC_CONFIG_AUX_DIR is used is shown when --dry-run is given.
	(Debian Bug #153699)

2004-01-23  Scott James Remnant  <scott@netsplit.com>
	* ltmain.in: include newline in "sensible default" for IFS.
	(Debian Bug #98492 and #95447)

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* libtool.m4: allow STRIP to contain spaces and additional
	arguments.  (Debian Bug #183055)

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Remove dead code
	for platforms that have been using pass_all for some time now.

2004-01-23  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Don't suppress output of PIC mode compile if
	-no-suppress option is given.
	* doc/libtool.texi (Invoking libtool): Document it.
	* NEWS: Updated.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* libltdl/ltdl.c (lt_dlerror): change return value when
	no error has occured to NULL to match documentation.
	(Debian Bug #157229)

2004-01-23  Kevin P. Fleming  <kpfleming@backtobasicsmgmt.com>
	Charles Wilson <cygwin@cwilson.fastmail.fm>

	* ltmain.in: include --tag options, if specified, in the
	relink_command in uninstalled .la files.  Also, preserve --silent,
	--debug options when libtool re-execs itself.
	* NEWS: Updated.

2004-01-23  James Henstridge  <james@daa.com.au>,
	Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [Linux]: Fix the
	-export-symbols and -export-symbols-regex options.

2004-01-23  Owen Taylor  <otaylor@redhat.com>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Recognise the
	'R' symbol type so read-only symbols can be exported when combining
	GCC and Solaris LD.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: When relinking, place the -L parameter containing
	the installation prefix directory after the intended destination,
	so we don't accidentally link against an older installed library.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* tests/demo-nopic.test: Skip test on hppa, which don't like
	non-PIC shared libraries.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4  (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [linux]: Include
	directories found in /etc/ld.so.conf in sys_lib_dlsearch_path_spec.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Add -pthread and similar to $deplibs ($compile_deplibs
	and $finalize_deplibs for programs) when found on the command line
	or in a .la file's dependency_libs (but don't place them there) so
	they are honoured when linking both programs and libraries.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: In compile mode, delay parsing of -shared, -static,
	-prefer-pic and -prefer-non-pic until after tagged configuration
	has been read.  In link mode, read tagged configuration before
	parsing any arguments.  These arguments will now work when using
	a non-C compiler.

2004-01-23  Stefan Nordhausen  <nordhaus@informatik.hu-berlin.de>
	Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Don't use the mkdir -p option when creating a
	temporary output directory so a symlink attack can't be used to
	arbitrarily chmod other directories on the system if libtool
	gets run as root.

2004-01-23  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: new -precious-files-regex link mode option
	to prevent removal of matching files from the temporary
	output directory.
	(Debian Bug #221420)
	* doc/libtool.texi: document the new option.
	* NEWS: announce the new option.

2004-01-22  Jeff Squyres  <jsquyres@lam-mpi.org>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Some compilers (e.g. Intel
	Linux icc compiler) write temporary files to the current
	directory. These compilers do support -c and -o simultaneously but
	wrongly fail the test due to the failure to create temporary
	files. It is incorrect to penalize compilers which write temporary
	files to the current directory so the 'chmod -w .' is therefore
	removed.

2004-01-21  Nick Hudson  <skrll@netbsd.org>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [netbsd*]: Remove
	gratuitous ${libname}${release}${shared_ext} from
	library_names_spec.

2003-11-12  Gary V. Vaughan  <gary@gnu.org>

	The rules for uploading releases to gnu.org have been updated, and
	are in fact now rather complicated.  This delta updates the
	release instructions to the describe the new process, and updates
	the maintainer rules to help automate many of the steps:

	* README-alpha: Updated release instructions.
	* Makefile.am (GPG): Name of the program for generating signatures
	for files to be uploaded.
	(XDELTA, XDELTA_OPTIONS): Invocation of xdelta.
	(cvs-dist): Run distcheck before tagging the cvs tree incase
	distcheck fails, and then generate the gpg signature files.
	(cvs-diff): Generate the gpg signature files for the diff.
	(xdelta): New rule for generating the xdelta diffs and associated
	gpg signature files.
	(cvs-release): New rule to do all of the above, if you don't mind
	typing your gpg passphrase over and over again. :-)
	(fetch): New rule inspired by automakes similar rule for updating
	files maintained outside the project.
	* config.guess, config.sub, doc/texinfo.tex: Updated with the new
	fetch rule.

2003-10-16  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): For MinGW, reverted DLL
	check method back to a working objdump-based test.  This is not as
	concrete a test as using the 'file' command, but it does not
	require that the 'file' command be available.

2003-09-29  Scott James Remnant  <scott@netsplit.com>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use pass_all for linux*
	solving many build problems on ARM, and hopefully preventing any
	future ones.
	(Debian Bug #191133 and #190569)

2003-09-29  Bob Friesenhahn <bfriesen@simple.dallas.tx.us>,
	Dalibor Topic <robilad@kaffe.org>

	* libltdl/ltdl.c: Only include malloc.h if stdlib.h can not be
	found.

2003-09-26  Alfred M. Szmidt  <ams@kemisten.nu>

	* mdemo2/Makefile.am (INCLUDES): Include `$(top_srcdir)/../libltdl'
	instead of `../libltdl'.

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

	* libtool.m4: Add GNU/KNetBSD support.
	* ltdl.m4: Likewise.

2003-09-10  Peter O'Gorman  <peter@pogma.com>

	* mdemo2/configure.ac: Use AC_LIBTOOL_DLOPEN.
	* mdemo2/main.c: Use LTDL_SET_PRELOADED_SYMBOLS().
	* mdemo2/Makefile.am: Set INCLUDES properly and add -dlopen force
	to make sure the symbols file is included in the link line.

2003-09-10  Arne Woerner  <woerner@mediabase-gmbh.de>

	* libtool.m4 [openbsd]: openbsd 3.x needs versioning information.

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

	* libtool.m4 (_LT_AC_LANG_C_CONFIG): Fix unquoted call to
	_LT_AC_LANG_C_CONFIG.

2003-08-05  Jim Pick <jim@kaffe.org>,
	Ito Kazumitsu <kaz@maczuka.gcd.org>,
	Gary V. Vaughan  <gary@gnu.org>

	Much as we have tried not to make it the callers' responsibility
	to maintain an lt_dlrealloc function pointer, it is too difficult
	to implement realloc as malloc/memcpy/free without knowing the
	size of the original block.  rpl_realloc has been deprecated since
	2002-10-30, but kaffe has real failures with that so it's time to
	bite the bullet.  Caller gets to maintain lt_dlrealloc:

	* NEWS (1.5.1): Updated.
	* libltdl/ltdl.c (LT_DLREALLOC): Use lt_dlrealloc so the user can
	update the function pointer to match lt_dlmalloc.
	(lt_emalloc): Use lt_dlrealloc rather than hardcoding realloc.
	* doc/libtool.texi (Libltdl interface): Describe lt_dlrealloc now
	that it too has become part of the exported interface to libltdl.

2003-08-01  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (darwin): Use "-undefined dynamic_lookup" if the
	user set MACOSX_DEPLOYMENT_TARGET to 10.3 or greater.
	* libltdl/ltdl.c (dyld): Save the error from the first lookup
	to report in lt_dlerror(). Otherwise the error is always
	"Symbol _foo not in /usr/lib/libSystem.dylib".
	Thanks to Chris Zubrzycki for reporting this.

2003-08-01  Robert Boehne  <rboehne@gnu.org>

	* libltdl/ltdl.h: Tweak the header to support visual studio.

2003-07-31  Greg Eisenhauer  <eisen@cc.gatech.edu>

	* ltmain.in: Provide absolute paths for dlopen and dlpreopen
	files in generating uninstalled libtool libraries.
	* mdemo2/main.c, mdemo2/Makefile.am, mdemo2/README,
	mdemo2/configure.ac, mdemo2/.cvsignore, mdemo/mlib.c,
	tests/mdemo2-conf.test, tests/mdemo2-exec.test,
	tests/mdemo2-make.test: New files for testing above feature.
	* configure.ac, bootstrap, tests/Makefile.am: Accomodate new
	test directory.
	* mdemo/Makefile.am: Build libmlib.la for mdemo2 tests.

2003-07-30  Tony Wyatt <wyattaw@optushome.com.au>

	* libtool.m4: Remove parentheses around finish_eval part which
	broke on amigaos pdksh.

2003-07-30  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Correctly remove IRIX C++
	template files.

2003-07-30  Christiaan Welvaart  <cjw@daneel.dyndns.org>

	* tests/dryrun.test: Ignore any 'total' line from "ls -l" output.

2003-07-30  Robert Millan  <robertmh@gnu.org>

	* libtool.m4: More fixes for the new GNU/FreeBSD triplet.

2003-07-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config.guess, config.sub: Synchronized from ftp.gnu.org since
	Robert Millan's patch requires it.

2003-07-30  Robert Millan  <zeratul2@wanadoo.es>

	* libtool.m4: Fixed to use the new GNU/FreeBSD triplet.
	* ltdl.m4: Fixed to use the new GNU/FreeBSD triplet.
	* ltmain.in: Remove GNU/FreeBSD cases, which are no longer needed.

2003-07-30  Andreas Schwab  <schwab@suse.de>

	* libtool.m4 (_LT_AC_LOCK): Also match powerpc64-*linux* in
	addition to ppc64-*linux*.  From Markus Meissner
	<meissner@bogus.example.com>.

2003-07-30  Dalibor Topic  <robilad@yahoo.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): For AmigaOS with pdksh,
	set the maximum command line length to 8K since otherwise the test
	takes over an hour to run.

2003-06-25  Alexandre Oliva  <aoliva@redhat.com>, Tim Waugh  <twaugh@redhat.com>

	* libtool.m4: Replace mis-uses of path with pathname.
	(AC_PROG_LD_GNU): Don't quote $LD when running it.
	(_LT_AC_LANG_CXX_CONFIG): Use -nostdlib also when linking with g++
	and non-GNU ld.

2003-06-11  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION): Require LT_AC_PROG_SED to
	ensure $SED is set by the time it is used.

	* configure.ac (AC_INIT): Bumped revision to 1.5.0a -- the first cvs
	revision number for the 1.5 maintenance branch, leading towards a
	1.5.1 release.

	* NEWS: Sychronised from branch-1-4.

2003-06-03 Benjamin Reed  <ranger@befunk.com>

	* ltmain.in: search libraries in the order of preference, rather
	than picking .la's even if they're in a less preferred directory.

2003-06-03  Robert Millan <rmh@debian.org>

	* ltdl.m4: Add support for GNU/FreeBSD.
	* ltmain.in: Add support for GNU/FreeBSD.

2003-06-03  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: No need to use sed to remove leading comma when
	appending to $tagnames.

2003-06-03  Albert Chin-A-Young  <china@thewrittenword.com>

	* tests/defs, tests/demo-conf.test, tests/demo-nofast.test,
	tests/demo-nopic.test, tests/demo-pic.test,
	tests/demo-shared.test, tests/demo-static.test,
	tests/depdemo-conf.test, tests/depdemo-nofast.test,
	tests/depdemo-shared.test, tests/depdemo-static.test:
	Pass build system type to tests to support environment
	where default system type not equal to build system type
	(eg. 64-bit HP-UX).

2003-06-03  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (darwin): Remove checks for Apple-specific gcc.
	* libltdl/ltdl.c (HAVE_MACH_O_DYLD_H): #define
	__private_extern__ for fsf gcc.
	* ltmain.in (darwin): Only add new paths to newlib_search_path.

2003-06-03  Max Bowsher  <maxb@ukf.net>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Reorder cygwin's
	system library search path.

2003-06-01  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Match all qnx-nto
	as recent config.guess returns a slightly different string.
	* ltmain.in: Replace use of "od" with tr.

2003-05-30  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_insert): Corrected an off by one error when
	checking that before is not out of range.

2003-05-29  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_int_dyld_lib_install_name): Removed unused
	variable mh1.
	(sys_dyld_close): Removed unused variable size.

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

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

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

	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on all
	mips*-linux* variants.

2003-04-22  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 Switch on $CC and add paterns to cases.

2003-04-22  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: Move the AC_LIBTOOL_SYS_DYNAMIC_LINKER check
	to be before AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH, because the
	value of shlibpath_overrides_runpath is used in the HARDCODE
	test and is set in the DYNAMIC_LINKER test.
	* ltmain.in(darwin): We never need to relink on darwin.

2003-04-22  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 Switch on $CC and add paterns to cases.

2003-04-21  Richard Dawe  <rich@phekda.freeserve.co.uk>

	* doc/libtool.texi: Use @ifnottex instead of @ifinfo,
	to allow production of HTML documentation using makeinfo.

2003-04-15  Robert Boehne  <rboehne@gnu.org>

	* README-alpha: Updated upload instructions.

2003-04-14  Robert Boehne  <rboehne@gnu.org>

	* NEWS: Updated.
	* configure.ac: Bumped version to 1.5a.

	GNU libtool 1.5 was released.

	* configure.ac: Bumped version to 1.5.
	* NEWS: updated.
	* README: Changed typo in version description.
	* config.guess, config.sub, texinfo.tex:  Synchronized from
	ftp.gnu.org.

2003-04-05  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: if ZSH_VERSION is set then setopt NO_GLOB_SUBST so
	libtool works. Remove zsh echo test code, don't bother checking
	for zsh anymore in the darwin archive_expsym_cmds.

2003-04-05  Allan Sandfeld Jensen  <snowwolf@one2one-networks.com>

	* libtool.m4: Switch on $CC not $cc_basename.

2003-04-02  Robert Boehne  <rboehne@gnu.org>

	* tests/defs: Quote $DJGPP to prevent problems with some shells.
	Pointed out by Albert Chin <libtool@thewrittenword.com>

2003-04-01  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: Fix the echo test which I broke earlier.
	* ltmain.in: Make DESTDIR work on darwin, don't use otool.

2003-03-31  Keith Packard  <keithp@keithp.com>

	* ltmain.in: New flag -version-number to be used for maintaining
	compatability with a previously non-Libtool versioning scheme.
	* doc/libtool.texi: Document it.

2003-03-31  Naofumi Yasufuku  <naofumi@yasufuku.net>

	* ltmain.in (win32_libid): Fixed sed expression error in
	win32_nmres evaluation.

2003-03-31  Albert Chin  <libtool@thewrittenword.com>

	* ltmain.in: Don't pass -R flags found in a .la's dependency_libs
	variable directly down to the linker.
	Reported by Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu>.

2003-03-28  Richard Dawe  <rich@phekda.freeserve.co.uk>

	* Makefile.am: Define CONF_SUBDIRS.
	* tests/defs: Set CONFIG_SITE to /nonexistent, except on DJGPP,
	which requires its config.site, to work correctly.
	* tests/cdemo-conf.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-nofast.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-shared.test,
	tests/demo-static.test, tests/depdemo-conf.test,
	tests/depdemo-nofast.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/f77demo-conf.test,
	tests/f77demo-shared.test, tests/f77demo-static.test,
	tests/mdemo-conf.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/pdemo-conf.test,
	tests/tagdemo-conf.test, tests/tagdemo-shared.test,
	tests/tagdemo-static.test: Don't set CONFIG_SITE, now that
	tests/defs sets it.
	* tests/cdemo-exec.test, tests/demo-exec.test,
	tests/demo-inst.test, tests/depdemo-exec.test,
	tests/depdemo-inst.test, tests/f77demo-exec.test,
	tests/mdemo-exec.test, tests/mdemo-inst.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/tagdemo-exec.test: When checking for the existence
	of executables, use the executable file extension from $EXEEXT.

2003-03-28  Peter O'Gorman  <peter@pogma.com>

	* libltdl/ltdl.c (dyld): Remove some debug printf's, fix a bug.
	* ltmain.in (darwin): Only link against shared libraries when doing
	link_all_deplibs.

2003-03-25  Robert Boehne  <rboehne@gnu.org>

	* bootstrap: Add f77demo to the directories that AUTOHEADER
	is run in.

2003-03-21  Wesley W. Terpstra <terpstra@ito.tu-darmstadt.de>

	* ltmain.in: Don't accumulate directory information in clean mode.
	Include properly pathed wrapper script.

2003-03-21  Peter O'Gorman  <peter@pogma.com>

	* README: Remove "Important" information about patching automake.
	* configure.ac: Fix misapplied patch in last commit
	* libtool.m4 (darwin): Check compiler is apple gcc, add -single_module
	support so that dyloading c++ shared libraries will work.
	* libtool.m4 (_LT_AC_TAGCONFIG): Add test -n to the tests so that
	it will work outside of libtool.
	* doc/PLATFORMS: Add darwin
	* f77demo/configure.ac: Add config.h which was misapplied previously.

2003-03-20  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Always use $echo not echo for consistency.
	Changes for darwin building. Warn if linking against libs linked
	with -module. Use module_cmds if available and building a module,
	move convenience double lib check,
	* libltdl/ltdl.c: ltdl support for darwin (first blush)
	* libltdl/README: note that darwin is supported
	* ltdl.m4: Changes for darwin, and for new shrext
	* libtool.m4: Changed the way darwin builds stuff (make check passes)
	added module_cmds, module_expsym_cmds and hardcode_automatic and put
	them in the libtool script. check for zsh's removal of escapes. Allow
	libraries to be stripped on darwin.
	* TODO: Remove the todo about zsh's removal of excapes. note that zsh
	echo works perfectly well, eval is screwed up. Seems to be fixed in
	latest zsh.
	* THANKS: added self :)
	* f77demo/configure.ac: Use config.h or it doesn't work.

2003-03-19  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (_LT_AC_TAGCONFIG): Add test around the macro that
	adds tags to the libtool script so that they won't run when not
	needed.
	* configure.ac: Set F77 to no when no Fortran compiler is found.

2003-03-16  Charles Wilson  <cwilson@ece.gatech.edu>

	* ltmain.in (win32_libid): use $SED, not head.

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

	* libtool.m4 (AC_PROG_LD): Use $CC instead of GCC.
	(_LT_AC_LANG_CXX_CONFIG): Preserve variables used by AC_PROG_LD,
	and reset them for a C++ environment.  Use the with_gnu_ld setting
	from AC_PROG_LD.

2003-02-28  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* ltmain.in: Only append a dot to the wrapper script when
	building on cygwin/MSYS (check for $build, not $host).

2003-02-27  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 (ia64): Add support for Intel compiler (ecc) on IA64
	Linux.

2003-02-27  Benjamin Reed <ranger@befunk.com>

	* THANKS: Added people who have submitted 3 or more patches
	to libtool to the THANKS file.
	* README: Added notes about the Darwin (MacOSX) support.

2003-02-25  Bob McElrath  <bob+libtool@mcelrath.org>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC): Add support for
	the Compaq C compiler for Alpha Linux.

2003-02-25  Benjamin Reed  <ranger@befunk.com>

	* libtool.m4 (darwin): Disable hardcoding library paths to
	make relinking unnecessary.

2003-02-24  Robert Boehne  <rboehne@gnu.org>

	* libltdl/configure.ac: Use AC_CONFIG_AUX_DIR([.]) to place
	auxilary files in the libltdl directory.
	* Makefile.am: Add to the ltmain.sh rule to copy it into the
	libltdl subdirectory.
	* bootstrap: Explicitly handle ltmain.sh in libltdl, and pass
	--copy to automake.

2003-02-24  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* libtool.m4 (AC_LIBTOOL_SETUP): Check for ar.

2003-02-23  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (darwin): Revamp darwin platform support.
	* ltdl.m4 (darwin): Support dlcompat if found.
	* ltmain.in: Make sure ranlib is run if needed when piecewise
	linking.

2003-02-23  Alexandre Duret-Lutz  <adl@gnu.org>

	* ltmain.in (--help): Show mailing-address for bug reports.
	(--version): Mention only the most recent copyright year.
	* libtoolize.in (--help): Show mailing-address for bug reports.
	(--version): Mention only the most recent copyright year.

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

	* libtool.m4 (AC_PROG_LD): Use $CC instead of GCC.
	(_LT_AC_LANG_CXX_CONFIG): Preserve variables used by AC_PROG_LD,
	and reset them for a C++ environment.  Use the with_gnu_ld setting
	from AC_PROG_LD.

	* libtool.m4: Replace $linker_flags with $compiler_flags wherever
	it is used as argument to $CC.

	* libtool.m4: Use linux version_type on IRIX with GNU ld.
	Prefix -soname, -set_version and their arguments with ${wl}.  Add
	-melf* linker scripts to LD, and use them to determine libsuff,
	shlibsuff and libmagic.

2003-02-17  Allan Sandfeld Jensen  <snowwolf@one2one-networks.com>

	* libtool.m4: Intel icc fixups for version 7.0.

2003-02-17  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Prepend a dot to
	the value of the shrext (aka shared_ext) variable and delete it
	from the library_names_spec and soname_spec definitions.  That
	way the user can omit the shared library suffix by setting it
	to the empty string.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Strengthen renaming commands for
	the KCC compiler.
	* doc/libtool.texi (Link mode): Update the manual.

2003-02-17  Charles Wilson  <cwilson@ece.gatech.edu>

	* ltmain.in (win32_libid): Rewritten to improve speed.

2003-02-11  Richard Dawe  <rich@phekda.freeserve.co.uk>

	* libtoolize.in: Use the program found by AC_PROG_LN_S
	to create symlinks.

2003-02-08  Jan Kratochvil  <project-libtool@jankratochvil.net>

	* ltmain.in: Handle duplicate object file names when performing
	piecewise archive linking by renaming object files when needed.

2003-02-05  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_CHECK_LIBM): Search for a real symbol in
	the math library rather than 'main', it causes problems for
	C++ compilers with certain Auto* tools.
	(AC_LIBLTDL_INSTALLABLE): ditto.

2003-02-05  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_LD_SHLIBS): Rewrite printf commands so
	that the format string cannot be mistaken as an option.
	Reported by Martin MOKREJS.

2003-02-05  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4: Modify the sys_lib_search_path_spec to allow
	for either native sed or GNU sed to be used.

2003-02-04  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4: don't use -nodefaultlibs in archive_commands
	or archive_expsym_commands on NetBSD.

2003-02-04  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Change setting of archive_cmds_need_lc
	so that it doesn't overwrite the previous setting.

2003-01-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Allow compiler variable, CC, CXX, etc. to
	be a program name with arguments. Original version stripped
	arguments for CC.

2003-01-28  Charles Wilson  <cwilson@ece.gatech.edu>

	* ltmain.in: add code for a binary wrapper
	to use with uninstalled executables on cygwin/mingw.
	Make sure that --mode=clean gets shell wrapper and
	binary wrapper.  When sourcing the shell wrapper,
	invoke using a terminal `.' on cygwin/mingw to
	avoid the automatic append-.exe behavior.

2003-01-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Hardcode library paths into libraries on IRIX.

2003-01-18  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC): Don't add -DPIC
	for languages other than C and C++.

2003-01-13  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4, ltmain.in: Add support for hppa*64* based on
	a patch by Ross Alexander <ross.alexander@uk.neceur.com>.
	Credit to Ross! Use +b to hardcode library runtime path.
	Add new variable, $hardcode_libdir_flag_spec_ld, that
	is equivalent to $hardcode_libdir_flag_spec but is used
	when ld is used for linking. This works around having to
	set wl=''.

2003-01-12  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Revert an
	accidental rearranging of dylib and so for darwin.

2003-01-10  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Modify the
	"-shrext" option so that is works properly under Darwin.
	Modify the processing of 'gcc -print-search-dirs' under
	Darwin to make it behave like GNU gcc does.
	(AC_LIBTOOL_CONFIG): Single quote $shrext.
	* ltimain.in: Expand shared_ext just before it is used
	so that it can be conditional on the value of $module.

2002-12-31  Benjamin Reed  <ranger@befunk.com>

	* ltmain.in [darwin]: disable lazy linking, needed
	to resolve C++ global constructor issues

2002-12-30  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	Rework by Robert Boehne <rboehne@gnu.org>
	* ltmain.in: New link option -shrext.
	* libtool.m4 (AC_LIBTOOL_CONFIG): New libtool variable shrext.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Replace all hard coded shared
	library file name extensions in library_names_spec and
	soname_spec with $shrext.
	* doc/libtool.texi (Link mode): Document it.

2002-12-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): modify
	$archive_expsym_cmds to restore support for using
	.def files via the -export-symbols switch.
	(AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]): in both the [CXX]
	branch and the default branch, improve $export_symbols_cmds
	so that DATA symbols are properly  labelled.  In the default
	branch, duplicate the _CXX_CONFIG correction for
	$archive_expsym_cmds.

2002-12-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_RC): AC_PROG_RC doesn't exist --
	but we do AC_DEFUN something called LT_AC_PROG_RC.
	Call that instead.

2002-12-30  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): Copy the section
	for Darwin from AC_LIBTOOL_PROG_LD_SHLIBS so that the CXX
	tag doesn't use the g++ defaults for the OS X compiler.

2002-12-30  Albert Chin-A-Young <china@thewrittenword.com>

	* libtool.m4: Sync methods used to detect GNU ld.

2002-12-20  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION,
	AC_LIBTOOL_PROG_CC_C_O): Do not escape } or ? in sed argument.

2002-12-19  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Use the sed program found by LT_AC_PROG_SED
	so that relink commands don't get truncated.

2002-12-18  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4: Move AC_REQUIRE([LT_AC_PROG_SED]) to AC_PROG_LD
	so it is invoked earlier.

2002-12-11  Allan Sandfeld Jensen  <snowwolf@one2one-networks.com>

	* libtool.m4: Add support for Intel icc compiler for Linux.

2002-12-11  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Revert the version +1 change for IRIX, it could
	cause compatibility problems.

2002-11-22  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION,
	AC_LIBTOOL_PROG_CC_C_O): Changed method for compilation with
	custom flags to be language-independent.  Thereby removed
	CFLAGS/GCJFLAGS mixup bug.  Imitate Autoconf-style logging.
	Log entries no longer discarded by compilation failures.
	(_LT_AC_LANG_C_CONFIG, _LT_AC_LANG_CXX_CONFIG,
	_LT_AC_LANG_GCJ_CONFIG): Tuned settings of
	lt_simple_compile_test_code and lt_simple_link_test_code
	to avoid warnings that could break some option detections.
	(AC_LIBTOOL_PROG_COMPILER_NO_RTTI): Removed
	redundant "-c conftest.$ac_ext" in the argument to
	AC_LIBTOOL_COMPILER_OPTION.
	(AC_LIBTOOL_PROG_LD_SHLIBS): Replaced C-specific conftest
	source code with $lt_simple_compile_test_code, to support
	the "-lc" test with other languages.

2002-11-19  Paul Eggert  <eggert@twinsun.com>

	Don't assume that egrep and fgrep exist.  POSIX 1003.1-2001 no
	longer requires them; you're supposed to use grep -E and grep -F
	instead.  Also, don't assume that "test -a" works, since POSIX
	doesn't require it.

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER, _LT_AC_LANG_C_CONFIG,
	_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,
	AC_LIBTOOL_PROG_LD_SHLIBS):
	egrep -> grep, when that makes no difference.
	* libtoolize.in: Likewise.
	* ltdl.m4 (AC_LTDL_SYMBOL_USCORE): Likewise.
	* ltmain.in: Likewise.
	* demo/Makefile.am (hc-direct): Likewise.
	* pdemo/Makefile.am (hc-direct): Likewise.
	* tests/build-relink.test, tests/build-relink2.test,
	tests/cdemo-conf.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-nofast.test, tests/demo-shared.test,
	tests/demo-static.test, tests/depdemo-conf.test,
	tests/depdemo-nofast.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/hardcode.test,
	tests/mdemo-conf.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/pdemo-conf.test,
	tests/tagdemo-conf.test, tests/tagdemo-shared.test,
	tests/tagdemo-static.test: Likewise.

	* libtool.m4 (AC_PROG_EGREP):
	New macro, defined if Autoconf doesn't define.
	(AC_PATH_TOOL_PREFIX, AC_PROG_LD_GNU): Use it.
	(AC_PROG_LD, AC_PROG_NM, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE):
	Use shell pattern matching rather than egrep.
	(AC_LIBTOOL_CONFIG): Set lt_EGREP and EGREP.

	* demo/Makefile.am (SET_HARDCODE_FLAGS): Use sed instead of egrep.
	* pdemo/Makefile.am (SET_HARDCODE_FLAGS): Likewise.

	* tests/defs (EGREP, FGREP): New vars.

	* ltmain.in: egrep -> $EGREP
	* tests/assign.test, tests/demo-exec.test, tests/demo-inst.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test, tests/sh.test:
	Likewise.

	* tests/hardcode.test: fgrep -> $FGREP

	* tests/f77demo-exec.test: test -a -> test &&

2002-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltmain.in: When using gcc, pass -mfoo to the linker
	via $compiler_flags in order to pass architecture information to
	the linker (e.g. 32 vs 64-bit). This may also be accomplished via
	-Wl,-mfoo but this is not reliable with gcc because gcc may use
	-mfoo to select a different linker, different libraries, etc, while
	-Wl,-mfoo simply passes -mfoo to the linker. If there is a better
	solution, please let me know what it is.

2002-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tests/Makefile.am: Conditional assignment of FFLAGS = @FFLAGS@
	does not appear to be necessary given that Automake makes this
	assignment by default.  The condition is removed since Automake
	1.7.1 complains about it.

2002-11-18  Jakub Jelinek  <jakub@redhat.com>

	* libtool.m4: Support linking of 64-bit libraries on
	sparc{,v[789]}-*linux*, s390*-*linux*, ppc*-*linux*
	GNU/Linux systems when the platform default is to build
	32-bit libraries.

2002-11-18  Andreas Jaeger  <aj@suse.de>, Bo Thorsen  <bo@suse.de>

	* libtool.m4: Support linking of 32-bit libraries with ld
	on the x86-64, ppc64, s390x and sparc64 GNU/Linux systems.

2002-11-18  Akim Demaille  <akim@epita.fr>

	* ltmain.in: Do not change the PATH in the wrappers: let them
	launch the real binary using its path.

2002-11-18  Kevin Ryde  <user42@zip.com.au>

	* doc/libtool.texi (Library tips): Note array dimensions.

2002-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tests/*.test: MinGW's MSYS treats files under /dev
	specially. This causes 'test -r /dev/null/config/site' to
	improperly report success, causing configure to fail. Change the
	CONFIG_SITE definition from "/dev/null/config/site" to
	"/nonexistent" to avoid this problem.

2002-11-18  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (_LT_AC_LOCK): remove support for ancient
	versions of mingw and cygwin.
	(AC_LIBTOOL_POSTDEP_PREDEP): new function.
	moved the "find hidden library dependencies" code here
	from AC_LIBTOOL_LANG_CXX_CONFIG.  Attempted to make it
	multi-tag compatible, but currently only CXX calls it.
	(AC_LIBTOOL_LANG_CXX_CONFIG): set
	enable_shared_with_satic_runtimes to 'no' by default
	Set it to 'yes' for cygwin, mingw, pw32. Replace
	"find hidden library dependencies" code with a call
	to the new function AC_LIBTOOL_POSTDEP_PREDEP.
	Consolidate cygwin and mingw/pw32 stanzas.
	(AC_LIBTOOL_LANG_F77_CONFIG): set
	enable_shared_with_static_runtimes to 'no' by default
	(AC_LIBTOOL_CONFIG): add
	enable_shared_with_static_runtimes to the list of variables
	to write into ltmain.sh; include it in the libtool script
	template as allow_libtool_libs_with_static_runtimes.
	(AC_LIBTOOL_PROG_LD_SHLIBS): set
	enable_shared_with_static_runtimes to 'no' by default
	Set it to 'yes' for cygwin, mingw, pw32.
	(AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): only put cr in regexp
	if the build_os is mingw, not host_os

	* ltmain.in (case deplibs_check_method): for all appropriate
	cases, if allow_libtool_libs_with_static_runtimes, then remove
	predeps and postdeps from the list of dependencies that must
	be checked for "dynamicness".  For the "none" case, the
	presence of compiler-generated postdeps and predeps should
	not trigger "inter-library dependencies not supported" error.
	(initial setup after arg processing): on cygwin/mingw, allow
	compiler-generated dependent libs to be duplicated without
	elimination.
	(initial search loop for deplibs): if the deplib in question
	is a libtool lib, then if
	allow_libtool_libs_with_static_runtimes then parse the .la file.
	If the .la file only has an "old_library", add the deplib
	directly to the deplibs list (-lstdc++) and DON'T use the .la
	file; this allows the (case deplibs_check_method) change above
	to take effect.
	* ltmain.in (for pass in $passes loop): remove predeps,
	postdeps, and compiler_lib_search_path from dependency_libs.

2002-11-08  Robert Boehne  <rboehne@gnu.org>

	* doc/libtool.texi: Add --mode=* to every example using libtool.

2002-11-03  Ossama Othman  <ossama@doc.ece.uci.edu>

	* ltmain.in: add support for installing into temporary
	staging area (e.g. 'make install DESTDIR=...')

2002-11-03  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): restore setting
	allow_undefined_flag=unsupported for cygwin and mingw.
	(AC_LIBTOOL_PROG_LD_SHLIBS): ditto, for both "normal" gcc/ld
	and for the (unmaintained?) MSVC case.

2002-11-03  Charles Wilson  <cwilson@ece.gatech.edu>

	* doc/libtool.texi (Install mode): document new
	-inst-prefix option.

2002-11-02  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Print a warning if the mode is not specified.
	* doc/libtool.texi: Document the change that the mode must be
	specified.

2002-10-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): use printf, not
	echo. (AC_DEPLIBS_CHECK_METHOD): use new shell function
	win32_libid on w32 platforms
	* ltmain.in: add new section for shell functions. Add
	win32_libid() shell function.
	* f77demo/Makefile.am: add -no-undefined flag

2002-10-30  Rob Browning  <rlb@defaultvalue.org>

	* ltdl.c (realloc): Remove custom realloc. (#define
	rpl_realloc realloc) and comment out later code for custom
	realloc. You can't define your own malloc unless you know
	enough about the malloc in use to be able to tell how big
	the src ptr is. The disabled code incorrectly used the
	*destination* ptr to decide how much to copy. This
	sometimes results in out-of-bound accesses which cause
	segfaults. This is a quick hack for now; we may want
	something cleaner later. (tryall_dlopen_module): check to
	be sure (dirname_len > 0) before testing first character
	against '/'. (try_dlopen): check for feof(file) in read
	loop -- otherwise infloop?

2002-10-25  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in (-XCClinker): New flag passes a linking option
	directly to the compiler driver without appending ${wl}.

2002-10-25  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha: Add some release not templates for inspiration and
	consistency at release time.

	* Makefile.am (cvs-diff): Compress the generated diff file, ready
	for upload to ftp.gnu.org.

2002-10-25  Howard Chu  <hyc@highlandsun.com>

	* ltmain.in [aix]: Be sure to deal with xlc_r, cc_r and other
	compiler variants.

2002-10-25  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_FILE_IMPGEN_C): Removed.  No longer used.
	(_LT_AC_FILE_LTDLL_C): Ditto.
	(AC_LIBTOOL_CONFIG) [cygwin, mingw, pw32, os2]: Don't call
	_LT_AC_FILE_LTDLL_C or _LT_AC_FILE_IMPGEN_C.

2002-10-25  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: When LDFLAGS="-Wl,-brtl,[other options]", the
	-brtl special-case code for AIX never gets triggered because
	were are being too specific about how we search for -brtl.
	Use case statement to avoid this. Remove extraneous
	semicolon.
	* ltmain.in: Recognize the IBM xlc compiler.

2002-10-24  Andrew Suffield  <asuffield@debian.org>

	* libltdl/ltdl.c (lt_dlopenext): Corrected sense of "file not
	found" check.

2002-10-24  Ossama Othman  <ossama@doc.ece.uci.edu>

	* ltmain.in: Support compiler names matching g++*

2002-10-23  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtool.m4: Removed old Windows cruft.
	* libtool.m4: Adapted pw32 to be like Cygwin/MinGW.

2002-10-23  Robert Boehne  <rboehne@gnu.org>

	ltmain.in: Do not add 1 to the version under IRIX, it is
	not necessary.

2002-10-15  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): avoid long delay on
	 cygwin/Win9x when computing commandline length.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): fix postinstall_cmds when
	sources are in a subdirectory
	* ltdl.m4 (AC_LTDL_SYSSEARCHPATH): use $PATH_SEPARATOR, not
	$ac_path_separator
	* configure.ac: move depdemo-specific stuff.  You must configure
	libtool before you can try './libtool --features'.
	* mdemo-inst.test: set $PATH to include the directory in which
	the modules are installed (on cygwin, DLL search path is the
	$PATH)

2002-10-15  Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* ltmain.in: MinGW works identically to Cygwin.
	* libtool.m4: lt_cv_sys_max_cmd_len hard-coded to 8192
	*  Model MinGW configuration after Cygwin configuration.
	Some portions share implementation.

2002-10-15  Elizabeth Barham <soggytrousers@yahoo.com>

	* libtool.m4: Pattern MinGW library naming after that
	used by Cygwin except use 'lib' prefix rather than 'cyg'.
	* Transfer some configuration from Cygwin with adjustments
	for MinGW.

2002-10-15  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: When a module is built for AIX, the 'lib'
	prefix isn't needed, neither is the version. AIX dlopen
	will honor the RPATH in a library.

2002-10-11  Christoph Egger  <Christoph_Egger@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS, darwin): Add
	-install_name to the link line only when -dynamiclib is
	specified for a module.  Use -bind_at_load when linking C++
	shared libraries.

2002-10-04  Elizabeth Barham  <soggytrousers@yahoo.com>

	* libtool.m4 (AC_LIBTOOL_SETUP): GCC now checks -shared to
	create a dll for Windows targets.

2002-09-24  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Fixed a few spelling errors.

2002-09-17  Robert Boehne  <rboehne@gnu.org>

	* libltdl/ltdl.c: Commented out access() call that checks for a
	library file's existence and permissions, as it appears to fail
	in every case.

2002-09-09  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Custom $symcode for Tru64 UNIX to catch 'Q',
	read-only constants.

2002-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.de>

	* libtool.m4 (osf[345]): Append $major to soname_spec.
	Reflect this in library_names_spec.
	* ltmain.in (osf): Prefix $major with '.' for use as extension.

2002-08-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltdl.m4 & libltdl/ltdl.c: Port fully to native Win32 API.

2002-07-31  Robert Boehne  <rboehne@gnu.org>

	* f77demo/.cvsignore: New file, forgotten in the last commit.

2002-07-31  Eric Lindahl  <erik@theophys.kth.se>

	* libtool.m4 (AC_PROG_LIBTOOL): Added support for the new F77
	Fortran support tag.
	(AC_LIBTOOL_PROG_CC_C_O, _LT_AC_TAGCONFIG): Support F77 tag.
	(AC_LIBTOOL_F77, _LT_AC_LANG_F77, AC_LIBTOOL_LANG_F77_CONFIG):
	New macros for F77 tag Fortran support.
	* configure.ac: Add support for creating the new F77 tag.
	* bootstrap: Add f77demo directory to the list to be processed.
	* Makefile.am: Add support for FFLAGS and FLIBS.
	* tests/Makefile.am: Add new Fortran tests.
	* tests/f77demo-*.test: New files.
	* f77demo/configure.ac, f77demo/cprogram.c, f77demo/fooc.c
	* f77demo/foof.f, f77demo/foo.h, f77demo/fprogram.f
	* f77demo/Makefile.am, f77demo/README: New files.

2002-07-16  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (tryall_dlopen): We need to catch missing file
	errors early so that file_not_found() can detect what happened.

2002-06-26  Bob Friesenhahn  <bfreisen@simple.dallas.tx.us>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [mingw]: Remove
	extraneous '=' character which appears in gcc 3.1
	-print-search-dirs output.
	Handle both upper and lower case drive letters when testing for
	Windows vs POSIX style path output from -print-search-dirs
	output.

2002-06-24  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in (Piecewise linking): Add a clause to skip creating
	the export file until the reloadable object file(s) have been
	created, then use them as input for $export_symbols_cmds.

2002-06-23  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Need to quote [ and ] for
	Autoconf.

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): HP/UX needs
	libltdl_cv_sys_dlopen_deplibs set to yes.

2002-06-23  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_SETUP, _LT_AC_LOCK): Use
	AC_PROVIDE_IFELSE to test AC_LIBTOOL_WIN32_DLL and
	AC_LIBTOOL_DLOPEN, necessary for autoconf 2.53.

2002-06-23  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_insert): Actually, BEFORE can be NULL
	when *PARGZ_LEN is non-NULL, so the assertion to the contrary was
	bogus.
	Reported by Bob Friesenhahn <bfreisen@simple.dallas.tx.us>
	and Albert Chin-A-Young <china@thewrittenword.com>

2002-06-21  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (foreach_dirinpath): Ensure that filename is '\0'
	terminated by all code paths.
	Reported by Lutz Müller <lutz@users.sourceforge.net>

2002-06-20  Gary V. Vaughan  <gary@gnu.org>

	From Kevin Ryde  <user42@zip.com.au>:
	* doc/libtool.texi (Platform quirks): s/dependan/dependen/
	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Ditto.
	* TODO: Ditto.

2002-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* ltmain.in (irix, nonstopux): Set major before use.

2002-06-11  Daniel Kobras  <kobras@linux.de>

	* libltdl/ltdl.c (try_dlopen): Don't return bogus handle to user
	  if tryall_dlopen() fails.

2002-06-01  Gary V. Vaughan  <gary@gnu.org>

	* tests/pdemo-exec.test: Typo.  s/hell-static/hell_static/

2002-05-31  Charles Wilson  <cwilson@ece.gatech.edu>

	* NEWS: Updated.
	* libtool.m4: use $NM to create the symbol list on cygwin, not
	$ltdll_cmds as on mingw.  For all tags, (and host=cygwin) set
	allow_undefined_flag="" so that the --auto-import magic
	works properly.  For all tags (and host=cygiwn) set
	always_export_symbols=no -- it is unnecessary thanks to
	binutils' auto-export magic.
	* libltdl/ltdl.c: Don't force cygwin to use the LoadLibrary
	wrapper; use cygwin's builtin implementatino of dl*.
	* cdemo/Makefile.am: the downside of unsetting
	'allow_undefined_flag' -- we must include -no-undefined
	in the _la_LDFLAGS variable.
	* depdemo/l1/Makefile.am: ditto.
	* depdemo/l2/Makefile.am: ditto.
	* depdemo/l3/Makefile.am: ditto.
	* depdemo/l4/Makefile.am: ditto.
	* mdemo/Makefile.am: ditto.
	* tagdemo/Makefile.am: ditto.
	* demo/Makefile.am: ditto.  But also, we must make special
	provision to clean up the hell0 wrapper script.
	* pdemo/Makefile.am: ditto -no-undefined.  ditto hell0.
	And use 'hell_static' instead of 'hell.static'.
	* tests/pdemo-inst.test: use 'hell_static' instead
	of 'hell.static'.
	* tests/pdemo-exec.test: ditto.

2002-05-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* tests/build-relink2.test: look for installed libl3.la
	in $prefix/lib/ as well as $prefix/lib/extra/.

2002-05-30  Gary V. Vaughan  <gary@gnu.org>

	* tests/hardcode.test: Use libtool --config to collect the
	variable values for the test, otherwise the tag values interfere
	with a straight grep.

2002-05-30  Gary V. Vaughan  <gary@gnu.org>

	Finally fix the annoying bug which always adds all tags to the
	libtool script built by your project configure.  Now we set the
	default tags depending on whether AC_PROG_CXX et. al. are actually
	called from configure.ac.

	* libtool.m4 (_LT_AC_TAGCONFIG): Don't default the tagnames when
	no --with-tags argument is given.
	(_LT_AC_SHELL_INIT): Factored out from the AC_DIVERT_PUSH code
	in...
	(_LT_AC_PROG_ECHO_BACKSLASH): ...which now calls the macro
	instead.
	(AC_LIBTOOL_CXX): Use _LT_AC_SHELL_INIT to add CXX to the
	initialisation sequence for tagnames.
	(AC_LIBTOOL_GCJ): Similarly for GCJ tag.
	(AC_LIBTOOL_RC): Likewise for RC tag.

2002-05-21  Jon Meredith  <jonm@alchemetrics.co.uk>

	* ltmain.in: Fix a problem on SCO OpenServer5 that caused a
	failure in three depdemo-make tests. For some reason the linker
	tries to find the dependent libraries using the library search
	path before it has read the libraries specified with absolute
	paths in the full commandline. This patch add -L's for each of
	the dependent library directories so that they can be resolved.

2002-05-09  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4: Update support for NetBSD
	* ltdl.m4: Make sure that libltdl_cv_func_dlopen and
	libltdl_cv_lib_dl_dlopen are set and used instead of the
	ac_cv_ versions. Also, use lt_cv_sys_global_symbol_pipe
	instread of global_symbol_pipe. This fixes the detection of
	dlopen on BSD derived plaforms and more importantly fixes
	need_uscore detection.

2002-05-06  Paul Eggert  <eggert@twinsun.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): head -1 -> sed 1q to
	port to POSIX 1003.1-2001 hosts, like textutils 2.0.21 with
	_POSIX2_VERSION=200112.

2002-05-06  Paul Eggert  <eggert@twinsun.com>

	* ltmain.in: Don't assume that "sort +2" works, as POSIX
	1003.1-2001 says that "sort +2" is supposed to sort the file
	named "+2".  An example host that behaves like this is
	textutils 2.0.21 with _POSIX2_VERSION=200112.

2002-05-06  Loren James Rittle  <rittle@latour.rsch.comm.mot.com>

	* ltmain.in: Detect and handle object name conflicts while
	piecewise linking a static library.

2002-05-02  Dave Vasilevsky  <thevas@mac.com>

	* ltmain.in: Remove convenience libraries from deplibs for Darwin.

2002-05-02  Fritz Elfert  <felfert@to.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Modify archive_expsym_cmds
	to catch properly handle dll alias symbols.

2002-04-24  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Use $build_os not $host_os.

2002-04-14  Robert Boehne  <rboehne@gnu.org>

	* doc/libtool.texi (C++ libraries): Finally updated to reflect
	Libtool's support for C++.

2002-04-14  Jean-Frederic Clere  <jfrederic.clere@fujitsu-siemens.com>

	* libtool.m4: Update support for Fujistu-Siemens Computers (FSC).
	* ltmain.in: Add support for EBCDIC based systems.

2002-04-07  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (LT_AC_PROG_SED): Refactor, removing temporary directory
	and consistent use of the shell variable namespace "lt_ac_".

2002-04-02  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Finish the tag matching logic started yesterday and
	refactor it a bit.

2002-04-01  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Handle the case when no tag is explicitly set, and
	$base_compile has a space in front of $CC, and revert the setting
	of tagname checked in on 2002-3-14.

2002-04-01  Robert Boehne  <rboehne@gnu.org>

	* tagdemo/foo.cpp: Use C++ IO to catch problems linking to C++
	runtime libraries.
	* tagdemo/main.cpp: Ditto.

2002-03-16  Gary V. Vaughan  <gary@gnu.org>

	* TODO: Removed obsolete comments about RMS' package system.

2002-03-14  Robert Boehne  <rboehne@gnu.org>

	ltmain.in: Touch-up to make testsuite pass, and default tagname
	to CC when it isn't explicitly set.

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

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Albert Chin's gcj fix.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Per Bothner's change for not
	using -DPIC with gcj.

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

	* ltmain.in(compile): bring a touch of order to the option processing

2002-02-09  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* THANKS: Added Rob Collins and Chuck Wilson for their cygwin
	work.

	From Robert Collins  <robert.collins@itdomain.com.au>:
	* configure.ac (AC_EXEEXT): Needed for DOSish systems.
	* libtool.m4 (shlibpath_overrides_runpath) [cygwin]: Set to yes
	when compiling with gcc.
	(lt_prog_compiler_pic) [cygwin]: No longer needs the -DDLL_EXPORT
	hack, so we just say the pic is the default.
	(AC_LIBTOOL_PROG_LD_SHLIBS) [cygwin]: Extract symbols from a
	library normally.
	[cygwin]: Declare C++ compiler characterisics for g++, taking into
	account the new auto-import support in cygwin ld.
	* ltmain.in (specialdeplibs) [cygwin]: Be careful about
	eliminating duplicate -lgcc's from the link line.
	[cygwin]: Be smarter about .exe suffixes.
	* demo/configure.ac (AC_EXEEXT, AC_LIBTOOL_WIN32_DLL):  Support
	DOSish systems properly.
	* depdemo/configure.ac (AC_EXEEXT, AC_LIBTOOL_WIN32_DLL):  Ditto.
	* demo/Makefile.am (deplibs-check): Allow for .exe suffix.  Use
	hell_static instead of hell.static for multi-`.' inhibited OSes.
	* tests/demo-exec.test: Ditto.
	* tests/demo-inst.test: Ditto.
	* demo/foo.h [cygwin]: Sanitize cygwin dll support.
	* demo/foo.c (_LIBFOO_COMPILATION_): No longer required.
	* demo/hello.c (_LIBFOO_COMPILATION_): Ditto.
	* depdemo/Makefile.am (bin_PROGRAMS): Use depdemo_static instead
	of depdemo.static for multi-`.' inhibited OSes.
	* tests/depdemo-exec.test: Ditto.
	* tests/depdemo-inst.test: Ditto.
	* mdemo/Makefile.am (bin_PROGRAMS):  Ditto for mdemo.static.
	* tests/dryrun.test: Ditto.
	* tests/mdemo-exec.test: Ditto.
	* tests/mdemo-inst.test: Ditto.
	* tests/build-relink.test:  Be careful about possible .exe
	suffixes.
	* tests/noinst-link.test: Allow for .exe suffix.

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

	Reverted incorrect patch:
	2001-10-24  H.J. Lu  <hjl@gnu.org>
	* ltmain.sh: Allow link against an archive when building a
	shared library.
	* libtool.m4 (lt_cv_deplibs_check_method): Always use
	file_magic for Linux ELF.

2002-01-30  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (LT_AC_PROG_SED): Removed a mysterious newline.

2002-01-28  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (LT_AC_PROG_SED): New macro tests sed for truncation of
	output.  AC_REQUIRE the new macro.
	* ltmain.in: Use $SED rather than plan old sed, as set by the new
	macro LT_AC_PROG_SED.

2002-01-10  Volker Christian  <voc@soft.uni-linz.ac.at>

	* libltdl/ltdl.c (find_handle_callback): treat the result of a call
	to access(2) correctly when deciding whether a library can be found
	in a directory from user_search_path.

2002-01-07  Robert Boehne  <rboehne@ricardo-us.com>

	* NEWS: Fixed wrong path for texinfo.tex.
	* configure.ac: Bumped version to 1.4e.

	GNU libtool 1.4d was released.

	* configure.ac: Bumped version to 1.4d.
	* NEWS: updated.
	* config.guess, config.sub, texinfo.tex:  Synchronised from
	ftp.gnu.org.

2001-12-06  Jens Petersen  <petersen@redhat.com>

	* ltmain.in: Replace all test "-a"s by "&& test"
	for portability.

2001-11-28  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Change the
	factor of saftey as 3/4 of the result was not low enough.

2001-11-28  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: The test for whether AC_PROG_LIBTOOL is defined
	in aclocal.m4 had bitrotted slightly.
	Reported by Takahiko Kawasaki <Takahiko_Kawasaki@cii.csk.co.jp>

2001-11-27  Donald D. Anderson  <dda@sleepycat.com>

	* ltmain.in: Treat freebsd like openbsd, in that -lc/-lc_r should
	not be explicitly used.  ld handles this depending on the presence
	of the -pthread option.

2001-11-27  Robert Boehne  <rboehne@ricardo-us.com>

	With help from Michael Matz <matz@kde.org>:
	* ltmain.in:  Add a new command line argument
	--preserve-dup-deps for preserving duplicate
	dependent libraries.
	* libtool.texi: Document it.

2001-11-27  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Send "test"
	warnings to /dev/null, helps FreeBSD and maybe others.

2001-11-15  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: quote LTCC because autoconf AC_PROG_CC_STDC
	macro might add to $CC if options needed by compiler to
	grok ANSI.

2001-11-15  Gary V. Vaughan  <gary@gnu.org>

	From Joseph S. Myers  <jsm28@cam.ac.uk>:
	* ltmain.in: Typo.

2001-11-15   Mo DeJong  <supermo@bayarea.net>

	* ltmain.in: Place parens around a generated relink_command
	so it is run is a subshell. This avoids an install error
	where libtool ended up in the wrong directory after
	relinking a .la file.

2001-10-31  Raja R Harinath  <harinath@cs.umn.edu>

	* configure.ac (pkgdatadir): Move the invocation of AC_INIT_AUTOMAKE
	before the use of $PACKAGE in $pkgdatadir.
	Reported by Bob Friesenhahn <bfreisen@simple.dallas.tx.us>

2001-10-28  Gary V. Vaughan  <gary@gnu.org>

	From Tom Bates  <Tom.Bates@compaq.com>:
	* libtool.m4 [mips-compaq-nonstopux]: New port.
	* ltmain.in [mips-compaq-nonstopux]: Support
	$version_type == nonstopux.

2001-10-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* libltdl/ltdl.c (foreach_dirinpath): change some types to size_t
	from int because strlen() returns size_t. argz_len changed to
	size_t because argzize_path() takes 3rd argument as size_t, not
	int.
	Based on lint run from Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

2001-10-27  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_TAGCONFIG): Cray sed does not allow character
	sets to contain the separator character.
	Reported by Kevin Ryde <user42@zip.com.au>

	* ltdl.m4 (AC_WITH_LTDL): New macro to add `--with-included-ltdl'
	option to configure, but to find an appropriate ltdl library and
	append the right options to link it.

2001-10-24  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Remove a stray ' quote.

2001-10-24  H.J. Lu  <hjl@gnu.org>

	* ltmain.sh: Allow link against an archive when building a
	shared library.
	* libtool.m4 (lt_cv_deplibs_check_method): Always use
	file_magic for Linux ELF.

2001-10-12  Guido Draheim  <guidod-2001q3@gmx.de>

	* ltdl.m4: Changed "underscode to underscore".

2001-10-06  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac: General modernisation and cleanup.
	* cdemo/configure.ac: Ditto.
	* demo/configure.ac: Ditto.
	* depdemo/configrue.ac: Ditto.
	* ltdl/configure.ac: Ditto.
	* ltdldemo/configure.ac: Ditto.
	* mdemo/configure.ac: Ditto.
	* pdemo/configure.ac: Ditto.
	* tagdemo/configure.ac: Ditto.

2001-10-04  Albert Chin-A-Young <china@thewrittenword.com>

	* libltdl/ltdl.c: Match function return type with prototype
	(add static initializer to file_not_found).

2001-09-30  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBLTDL_CONVENIENCE): s/INCLTDL/LTDLINCL/ for
	consistency with gettext's INTLINCL.  Keep the old symbol too for
	backwards compatibility.
	(AC_LIBLTDL_INSTALLABLE): Ditto.
	* doc/libtool.texi (Distributing libltdl):  Adjust documentation.

2001-09-22  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltdl.m4 (AC_LTDL_DLLIB): Even though HP-UX 10.20 and 11.00
	support shl_load *and* dlopen, dlopen works correctly only
	with a patch. Because we want to avoid the situation where we
	build on a system with the patch but deploy on a system without,
	use shl_load exclusively if found.

2001-09-22  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_FILE_LTDLL_C): Be carefule that the start
	marker searched for by sed must start in column 0.
	(_LT_AC_FILE_IMPGEN_C): Ditto.
	Reported by Tor Lillqvist <tml@iki.fi>

2001-09-22  Tor Lillqvist  <tml@iki.fi>

	* libtool.m4 [mingw* cygwin*]: Small improvement for mingw-hosted
	tool support (while still running libtool on cygwin). In that case
	PATH_SEPARATOR is ':', but gcc -print-search-dirs still prints its
	search path with ';' as separator.
	(AC_LIBTOOL_RC, AC_LIBTOOL_LANG_RC_CONFIG): Add support for .rc
	files (Windows resource files), compiled by the resource compiler
	(windres in mingw) to .o files.
	(AC_PROG_NM): Minor bug fix for $PATH elements with spaces in
	them.
	* configure.ac: Use LT_AC_PROG_RC.
	* ltmain.in: Check for .rc files.
	* NEWS: Updated.

	* ltmain.in: Add a space to $base_compile in the case statement,
	as the case labels checks for trailing spaces, but there aren't
	necessarily in $base_compile.

2001-09-22  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: When setting archive_cmds for CC, don't
	test for $GXX but for $GCC on HP-UX. Indentation fixes.

2001-09-21  Gary V. Vaughan  <gary@gnu.org>

	From Tor Lillqvist <tml@iki.fi>:
	* ltmain.in [cygwin* mingw*]: Take care of the difference between
	wrapper script name and executable name.

	* libtool.m4 (archive_cmds) [darwin1.[0-2]]: Darwin uses zsh-3.1.6
	for /bin/sh, and that shell does not handle escaped quotes
	properly yet.
	Reported by Christopher Pfisterer <cp@chrisp.de>

2001-09-21  Albert Chin-A-Young  <china@thewrittenword.com>

	* libltdl/ltdl.c: Match function return type with prototype
	(add static initializer to some functions) to prevent warnings
	from HP-UX cc.

2001-09-21  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c: Added support for dmalloc, and uncovered some
	memory bugs as a result.

2001-09-21  Albert Chin  <china@thewrittenword.com>

	* libtool.m4: Don't include main() when testing for command to
	parse $NM output because some C++ compilers don't allow you to
	take the address of main (e.g. HP-UX aCC).

	* libtool.m4: Some uses of $GXX were unquoted, but GXX is either
	NULL or yes.  Use "$GXX".

2001-09-13  Assar Westerlund  <assar@sics.se>

	* ltdl.m4 (AC_LTDL_DLLIB): call dlopen with arguments so the test
	does not fail due to a prototype in dlfcn.h

2001-09-13  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4 (AC_CHECK_HEADERS): Check for assert.h.
	* libltdl/ltdl.c:  If not, disable assertions manually.

2001-09-11  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Be robust to having no files that need removing.

	* libltdl/configure.ac (AM_INIT_AUTOMAKE): Bump libltdl version to
	1.2.
	* libltdl/Makefile.am (libltdl_la_LDFLAGS):  Bump libtool library
	version info to 4:0:1.

2001-09-11  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: No need to undefine([symbols]), proper quotation is
	enough.

2001-09-10  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: CVS Autoconf guarantees a decent default IFS, so
	there is no need for us to preset it anymore.
	Be careful not to set IFS="${IFS}$PATH_SEPARATOR" for PATH
	splitting, otherwise spaces in directory names will be lost.
	Use $PATH_SEPARATOR... don't rely on $ac_path_separator, which was
	an autoconf internal until just now, when it disappeared!
	* ltmain.in: Default IFS once, at the start.
	Reported by Akim Demaille <akim@epita.fr>

2001-09-10   Brad  <brad@comstyle.com>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Missed an instance of
	Autoconf square bracket quoting style normalisation.

	* ltmain.in (-lc_r): Style improvement.

	* doc/libtool.texi: Remove obsolete references to ltconfig.
	* tests/quote.test: s/ltconfig/\$0/

2001-09-09  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: Use Autoconf square bracket quoting style
	consistently throughout.

2001-09-08  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Cleanup `autom4te' and `libtool' so that we don't
	get caught by something from a previous build.

	* libtool.m4 (archive_cmds, archive_expsym_cmds) [solaris*]: Revert
	my 2001-09-06 patch.
	(no_undefined_flag)i [solaris*]: Revert Alexandre's 2001-04-11 patch.

2001-09-07  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (foreach_dirinpath): argz_len should be a size_t.
	Reported by Albert Chin <china@thewrittenword.com>

2001-09-06  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [solaris*]: Typo. s/GXX/GCC/.

	* libtool.m4 (archive_cmds, archive_expsym_cmds) [solaris*]: Changing
	no_undefined_flag from `-z text' to `-z defs' (see entry below at
	2001-04-11  Alexandre Oliva  <aoliva@redhat.com>) has a problem.
	when linking a shared library with gcc calling /usr/ccs/bin/ld (eg.
	the gcc supplied with Solaris 8 companion CD), using the flag
	-no-undefined, shared library linking will always fail because of
	the unresolved symbols from libgcc.a.  Consequently we have to
	provide a path to libgcc.a when linking shared libraries in
	conjunction with -no-undefined!

	From Michael Pruett <mpruett@engr.sgi.com>:
	* libltdl/ltdl.c (find_module): `0' valued arguments to
	tryall_dlopen_module() must be explicitly cast to avoid compiler
	warnings on some environments.

	From Daniel Johnson <danielj7@mac.com>:
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [darwin*]: Move from GNU
	ld section to non-GNU ld section.

2001-09-05  Robert Boehne  <rboehne@ricardo-us.com>

	* pdemo/Makefile.am (helldl):  Automake 1.4 can't find the target
	if we use helldl$(EXEEXT), and Automake 1.5 barfs unless we do.
	Using both targets to the left of the colon seems to work though!

2001-09-03  Gary V. Vaughan  <gary@gnu.org>

	* demo/Makefile.am (helldl):  Automake 1.4 can't find the target
	if we use helldl$(EXEEXT), and Automake 1.5 barfs unless we do.
	Using both targets to the left of the colon seems to work though!

2001-09-03  Brad  <brad@comstyle.com>

	* ltdl.m4 [AC_LTDL_SYS_DLOPEN_DEPLIBS]: Teach ltdl about the
	behavior of OpenBSD's dlopen().

2001-09-03  Gary V. Vaughan  <gary@gnu.org>

	From Marius Vollmer <mvo@zagadka.ping.de>:
	* libltdl/ltdl.c (tryall_dlopen_module): Don't forget to propogate
	errors over recurse levels.

2001-09-03  Brad  <brad@comstyle.com>

	* libtool.m4 [openbsd*]: More improvements to the OpenBSD port.

2001-09-02  Gary V. Vaughan  <gary@gnu.org>

	From Albert Chin <china@thewrittenword.com>:
	* libtool.m4 (_LT_AC_LANG_C_CONFIG) [aix4*]: Be careful with
	shared namespaces for static and shared libs.
	(AC_LIBTOOL_DLOPEN_SELF): If all else fails, try dld_link from GNU
	DLD.

2001-09-02  Christopher Pfisterer <cp@chrisp.de>

	* libtool.m4, ltmain.in: Linker flag and version numbering fixes
	for darwin.

2001-09-02  Gary V. Vaughan  <gary@gnu.org>

	Based on a patch from Marius Vollmer <mvo@zagadka.ping.de>:
	* NEWS: updated.
	* ltdl.m4 (AC_LIB_LTDL): Check for unistd.h.
	* ltdl.c: Include unistd.h if it exists.
	(LTDL_SEARCHPATH_VAR): Macro to prevent hardcoding
	"LTDL_LIBRARY_PATH".
	(LTDL_ARCHIVE_EXT): Macro to prevent hardcoding ".la".
	(archive_ext): Have only one copy of ".la" in the readonly
	segment of the compiled library.
	(find_handle_callback): Don't bother trying to dlopen the file if
	it doesn't exist.
	(find_handle): Don't bother searching for files if no search_path
	was supplied.
	(file_not_found): A new function to determine whether the last
	error was due to a file not found condition.
	(try_dlopen): Renamed from lt_dlopen() and changed to have the
	same footprint as tryall_dlopen.  This involved a minor rewrite of
	much of the internals of this function.
	(lt_dlopen): A new function wrapped arounf try_dlopen().
	(lt_dlopenext): If a file already has a suitable extension, don't
	bother adding additional extensions and trying to open those.
	Tidy up the rest of the code to prevent continued searching with
	an eventual FILE_NOT_FOUND when a genuine failure earlier in the
	search process could be legitimately reported.

	* demo/Makefile.am (helldl$(EXEEXT)): Automake-1.5 made me change
	this from just `helldl'.

2001-07-31  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) Fixed a problem
	with export_symbols_cmds not being set for CXX tags, and
	not being properly set for any tag under AIX/Power.

2001-08-19  Ossama Othman  <ossama@uci.edu>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): Corrected and improved
	  error message that is displayed when there was a problem
	  compiling the C++ test program.  It still mentioned the now
	  non-existent `ltcf-cxx.sh' file.

	* doc/libtool.texi (LTDL_SET_PRELOADED_SYMBOLS): Removed
	  parentheses at end of starting "defmac" line, as pointed out by
	  makeinfo.

2001-08-18  Brad  <brad@comstyle.com>

	* ltmain.in: Do not remove -lm from deplibs for OpenBSD.

2001-08-16  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_create_sep): Don't forget to include the
	terminating '\0' when counting argz_len.
	(argz_create_sep): When canonicalizing argz, don't forget to copy
	the terminating '\0', incase canonicalization has shortened argz.
	(argz_stringify): Don't covert the final '\0' to a separator.

2001-08-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlhandle_next): Now we can loop through all
	loaded module handles as originally intended.

	* libltdl/ltdl.c (lt_dlseterror): Oops.  This never worked
	either, due to a pair of typos.  Now fixed.

	* libltdl/ltdl.c (N_ELEMENTS):  Deleted.  How come nobody noticed
	there was no way this could have ever worked?
	(lt_dlcaller_set_data): Now that valid caller_ids must be
	non-zero, allocate an addition entry in the caller_data vector and
	use a zero valued key as the end marker.
	(lt_dlcaller_get_data): Iterate up to the end marker in one pass.

2001-08-14  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlcaller_register): Caller ids are allocated
	starting from value `1', so that clients can use a value of zero
	to indicate that libltdl has not yet initialised.

	* ltmain.in (exec_cmd): Fix quoting in execute mode so that the
	double quotes added by libtool (to prevent lossage with embedded
	spaces in filenames etc.) are not interpreted as literals by the
	shell.

2001-08-13  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (find_file_callback): Fix a multiple free()
	bug.
	(tryall_dlopen_module): Remove some unused variables.

	* libltdl/ltdl.c (lt_dlinsertsearchdir): Calculate the address
	of the end of user_search_path correctly.

	* libltdl/ltdl.c (rpl_argz_stringify): New fallback implementation.
	* ltdl.m4 (AC_LTDL_FUNC_ARGZ):  Test for argz_stringify in libc.
	* libltdl/ltdl.c (lt_argz_insertinorder): Renamed from
	lt_argz_insert to make room for...
	(lt_argz_insert): Wraps argz_insert with libltdl error handling.
	(lt_dlpath_insertdir): Insert new path elements into an
	argzized path.
	(lt_dlinsertsearchdir): New function to insert new search
	directories anywhere into user_search_path using the above.
	(lt_dladdsearchdir): Rewritten to use lt_dlpath_insertdir.
	* libltdl/ltdl.h (lt_dlinsertsearchdir): Prototype for export.
	* doc/libtool.texi (Libltdl interface): Document it.
	* NEWS: Updated,

2001-08-07  Gary V. Vaughan  <gary@gnu.org>

	From Albert Chin <china@thewrittenword.com>:
	* ltmain.in [irix*]: $with_gcc is either "yes" or "" (empty string)
	with current autoconf, so we need to be robust to that when testing
	it,

2001-08-06  Gary V. Vaughan  <gary@gnu.org>

	From Brad <brad@comstyle.com>:
	* libtool.m4 (deplibs_check_method) [aix*]: Removed redundant setting
	of this variable.

2001-08-05  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (load_deplibs): Insert missing 1st argument to
	LT_EMALLOC.

2001-08-05  Tim Van Holder  <tim.van.holder@pandora.be>

	* ltdl.m4: Canonicalize descriptive text used with
	AC_DEFINE.

	* libtool.m4 (_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR): Remove.
	(_LT_AC_PROG_ECHO_BACKSLASH): Use $ac_path_separator
	instead of $PATH_SEPARATOR.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Ditto.
	(_LT_AC_TAGCONFIG): Ditto.
	(AC_ENABLE_SHARED): Ditto.
	(AC_ENABLE_STATIC): Ditto.
	(AC_ENABLE_FAST_INSTALL): Ditto.
	(AC_PATH_TOOL_PREFIX): Ditto.
	(AC_PATH_MAGIC): Ditto.
	(AC_PROG_LD): Ditto.
	(AC_PROG_NM): Ditto.
	* ltdl.m4 (AC_LTDL_SYSSEARCHPATH): Ditto.

2001-08-05  Gary V. Vaughan  <gary@gnu.org>

	From Brad <brad@comstyle.com>:
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [openbsd]:  OpenBSD
	can build modules without a `lib' prefix and version number.
	Move the deplibs check code from here...
	(AC_DEPLIBS_CHECK_METHOD): ...to here.

2001-08-05  Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>

	* libtool.m4 [osf3*, osf4*, osf5*]: Tru64 *can* build modules
	without a `lib' prefix to the module name.

2001-08-05  Gary V. Vuaghan  <gary@gnu.org>

	From Guido Draheim <Guido.Draheim@tek.com>:
	* ltmain.in: Display better and different error messages when
	library linkage fails in various ways.

2001-08-05  Albert Chin-A-Young <china@thewrittenword.com>

	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Add newline after
	terminating '}' grouping character. Change '[0-9][0-9]'
	to '0' as we've already matched it.

2001-08-05  Gary V. Vaughan  <gary@gnu.org>

	From Brad <brad@comstyle.com>:
	* libtool.m4 (archive_cmds) [darwin, newsos, sysv4]: Replace
	1.3 era $linkopts references with $linker_flags.

	* libltdl/ltdl.c:  Fixed several careless mistakes in the
	foreach_dirinpath support functions.
	(foreach_dirinpath): Walk path elements with the argz API.

2001-08-04  Gary V. Vaughan  <gary@gnu.org>

	From Sedi Master Albert Chin <china@thewrittenword.com>:
	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Replace the awk invocation
	with an equivalent bit of sed wizardry.

	From Edouard G. Parmelan <egp@free.fr>
	* libtool.m4 [darwin, openbsd]: Fix quoting problems with
	unquoted [] expressions.

2001-08-03  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap:  s/ltdldemo // -- This demo soesn't work properly,
	so I haven't committed it yet.

2001-08-01  Ossama Othman  <ossama@doc.ece.uci.edu>

	* libtool.m4 (AC_LIBTOOL_SETUP): Require Autoconf-2.50 via the
	AC_PREREQ autoconf macro since the new libtool macros utilize
	macros from that version of Autoconf.

2001-08-01  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4: Bump serial number.
	General reformat and tify up in line with Autoconf-2.50 support.
	(AC_LTDL_FUNC_ARGZ): Test for system implementations of a
	handful of argz API calls, the error_t type, and the argz.h
	header.
	* libltdl/configure.ac (AM_INIT_AUTOMAKE): Bump version number.
	* libltdl/ltdl.c (rpl_argz_append, rpl_argz_create_sep.
	rpl_argz_insert, rpl_rgz_next):  Fallback implementations of
	the similarly named functions for machines that don;t use glibc.
	(lt_dlrealloc):  New memory function pointer that can be set by
	the client.  Defaults to rpl_realloc, which in turn uses only
	lt_dlmalloc and lt_dlfree.
	(LT_EMALLOC, LT_EREALLOC): Set internal out-of-memory error
	inside the functions called by these new macros.  Simplified all
	callers by removing explicit client error reporting.
	(memmove):  Fallback implementation of overlap safe memory copy
	function.
	(tryall_dlopen):  Factorized common code into...
	(tryall_dlopen_module): ...this new helper function.
	(canonicalize_path):  Changed function signature to return success
	or failure.  Updated all callers.
	(foreachfile_callback):  Make use of argz API.
	(LT_DLSTRLEN): Moved from here...
	* libltdl/ltdl.h (LT_STRLEN): ...to here.  Updated all callers.
	(lt_dlrealloc):  Declare new memory management handle.

2001-07-31  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (mingw*) Revert the previous change as it was
	applied by mistake.

2001-07-31  Guido Draheim  <Guido.Draheim@tek.com>

	* libtool.m4 (mingw*) sys_lib_search_path_spec:
	Sets the proper path separator for cross-compiling.

2001-07-30  Steve Ellcey  <sje@cup.hp.com>

	* libtool.m4 (ia64-*-hpux*) Add support for ia64*-*-hpux* platform.

2001-07-30  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC) [aix*]: Fixed an
	incorrect resetting of lt_prog_compiler_static when using gcc
	under AIX Power.

2001-07-31  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Remove generated files (incase they are links) before
	rerunning the autotools to regenerate them.

2001-07-30  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SETUP): Use Autoconf-2.50 era
	quadrigraphs and AC_HELP_STRING to bring AC_ARG_WITH/ENABLE
	macros up to date.
	(_LT_AC_LOCK): Ditto.
	(_LT_AC_TAGCONFIG): Ditto.
	(AC_PROG_LD): Ditto.
	(AC_ENABLE_SHARED): Ditto.  And eliminate the last remaining
	changequote invocations.
	(AC_ENABLE_STATIC): Ditto.  And Ditto.
	(AC_ENABLE_FAST_INSTALL):  Ditto.  And Ditto.
	* ltdl.m4 (AC_LTDL_ENABLE_INSTALL): Use Autoconf-2.50 era
	quadrigraphs and AC_HELP_STRING to bring AC_ARG_ENABLE
	macro up to date.
	* NEWS: Updated.

	* libtool.m4 [UnixWare7, OpenUNIX8]: Initial support for
	UnixWare7 and OpenUNIX8.  Accept these identifiers from the
	latest config.guess/config.sub as pseudonyms for sysv5uw[78].
	* NEWS: Updated.
	Reported by Boyd Lynn Gerber <gerberb@zenez.com>

2001-07-29  Gary V. Vaughan  <gary@gnu.org>

	* tests/sh.test: Add a new test to enforce X as the fill
	character in `test "X...'.
	Beef up the `test' tests to also check `test -.' and `test ! -.'
	phrases for compliance.
	* ltmain.in: Fix quoting problems uncovered by the new tests.

2001-07-29  Andrew C. Feren  <aferen@CetaceanNetworks.com>

	* tests/sh.test:  New test to disallow `test $foo', where
	`test "$foo"' is much safer.
	* ltmain.in: Fix quoting problems uncovered by the new test.

2001-07-29  Steve Ellcey  <sje@cup.hp.com>

	* libtool.m4 (lt_cv_sys_global_symbol_to_cdecl):  Change it from
	"extern char" to "extern int" so that GCC 3.0 won't complain and
	refuse to compile programs containing "extern char main()".

2001-07-29  Gary V. Vaughan  <gary@gnu.org>

	From Guido Draheim <Guido.Draheim@tek.com>:
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [mingw]: Support
	cross compilation to mingw by allowing `:' or ';' as a path
	separator.
	* NEWS: Updated.

2001-07-27  NIIBE Yutaka  <gniibe@m17n.org>

	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all
	for sh*-*-linux* (SuperH) too.

2001-07-25  Ossama Othman  <ossama@debian.org>

	From Thomas Poindessous <poinde_t@epita.fr>
	* ltmain.in (pic_mode):  Added missing quotes around shell
	variable in "if test" conditional.

	From Peter Moulder <pmoulder@longford.csse.monash.edu.au>
	* ltmain.in (xform): Add support for pre-processed
	(e.g. `*.{i,ii}' sources).

2001-07-25  Gary V. Vaughan  <gary@gnu.org>

	From Steve Ellcey <sje@cup.hp.com>:
	* libltdl/ltdl.c (foreach_dirinpath): Free unassigned pointer
	fix for `canonical'.

2001-07-23  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS)
	[aix4*, aix5*]: Fixed a mispelled binder option under AIX.
	The option to throw errors for unresolved external references is
	-bernotok, not -bnoerok.

2001-07-23  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (EXTRA_DIST): Don't forget to distribute
	ChangeLog.1.

	From Erik Lindahl <E.Lindahl@chem.rug.nl>
	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Used on aix to discover
	the compiler's default library search path so that the MPI
	compiler suite is not hosed by the previously hardcoded path.
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [aix4*, aix5*]: Use it.

2001-07-23  Andreas Schwab  <schwab@suse.de>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use pass_all for
	s390*-*-linux* and m68*-*-linux*.

2001-07-19  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix tag support
	problems with CXX variables being overwritten by the individual
	macros.
	(AC_LIBTOOL_PROG_CC_C_O): Ditto.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Ditto.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Moved call to
	AC_LIBTOOL_SYS_HARD_LINK_LOCKS after the call to
	AC_LIBTOOL_PROG_CC_C_O as it depends on the result.
	(AC_LIBTOOL_LANG_GCJ_CONFIG): Ditto.
	(AC_LIBTOOL_LANG_C_CONFIG): Ditto.
	(AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH): Used the macro
	_LT_AC_TAGVAR to ensure the correct variable is being queried.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Changed the naming of shared
	objects under IRIX back to what it was in the MLB.

2001-07-23  Mark Kettenis  <kettenis@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN) [gnu*]: Remove spurious
	"break" and bogus comment
	(_LT_AC_LANG_CXX_CONFIG): Add support for the Hurd.
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Add support for the Hurd.

2001-07-16  Robert Boehne  <rboehne@ricardo-us.com>, Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): add cases and comments for
	more platforms, including AIX, Digital/Tru64 UNIX and IRIX.

2001-07-16  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix ia64 AIX
	run-time-linking when not using gcc.
	(AC_LIBTOOL_LANG_CXX_CONFIG):  Ditto.
	Reported by Dan McNichol <mcnichol@austin.ibm.com>

2001-07-12  Gary V. Vaughan  <gary@gnu.org>

	From dda@sleepycat.com (Don Anderson):
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [qnx]: New
	supported architecture.
	(AC_DEPLIBS_CHECK_METHOD) [qnx]:  Ditto.
	* NEWS: Updated.

	From Stefan Ondrejicka <ondrej@idata.sk>:
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [cygwin*]: Make
	sure that /lib/w32api is searched for system libraries to
	match recent versions of cygwin.
	* NEWS: Updated.

2001-07-12  Dan McNichol  <mcnichol@austin.ibm.com>

	From albert chin <china@thewrittenword.com>
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix AIX
	run-time-linking when using gcc.
	(AC_LIBTOOL_LANG_CXX_CONFIG):  Ditto.

2001-07-11  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG) [hpux, linux, osf,
	solaris]: Doh!  the evalled variable shouldn't have been
	quoted.

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG) [hpux, linux, osf,
	solaris]: output_verbose_link_cmd have unquoted `*' in case
	statements for these architectures.  Be sure to quote them
	with a sed expression before passing to eval.
	Reported by Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>

2001-07-09  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha:  s/configure.in/configure.ac.
	* configure.ac: Bumped version to 1.4c.

	GNU libtool 1.4b was released.

	* configure.ac: Bumped version to 1.4b.
	* NEWS: updated.
	* config.guess, config.sub, texinfo.tex:  Synchronised from
	ftp.gnu.org.

2001-07-09  Robert Boehne  <rboehne@ricardo-us.com>

	From Michael Elizabeth Chastain <chastain@cygnus.com>:
	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN):  Set max_cmd_len
	to a maximum of 512Kb, as it seems some HPUX 11.0 systems
	have trouble with 1MB.

2001-07-09  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha:  Upgrade distribution instructions to include
	canonical location of texinfo.tex.

2001-07-09  Timothy Wall  <twall@oculustech.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Don't disable shlibs
	on AIX5/IA64 with GNU ld.  Keep gnu defaults if using gnu tools
	on AIX5/IA64.

2001-07-09  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN):  Set max_cmd_len
	to -1 on hurd, it has no command line argument limits.
	* ltmain.in Handle max_cmd_len=-1 for systems that don't have
	command line argument limits.

2001-07-05  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LANG_C_CONFIG):  Revert to 1.3.x
	sematics, and always build static libs when the host machine
	cannot build shared libs.  Even if static libs were explicitly
	disabled.

2001-07-02  Gary V. Vaughan  <gary@gnu.org>

	Cleanup of libltdl:
	* ltdl.c (lt_dladderror): Don't use `index' as a variable name,
	since it is a function on BSD based boxes.
	(lt_dlseterror): Ditto.
	(lt_dlexit): Remove unused errormsg declaration.
	(foreach_dirinpath):  Make sure filename is initialised.
	(find_handle):  Return NULL for a failed search.
	(foreachfile_callback): Don't reuse data2 symbol from prototype
	in func declaration to prevent symbol shadowing.
	* ltdl.h (lt_dlmutex_seterror): Don't use `error' as a parameter
	name, since it is a function on glibc boxes.

	* libtoolize.in:  Display --version in the same format as
	autoconf and automake.
	* ltmain.in: Ditto.

2001-06-30  Gary V. Vaughan  <gary@gnu.org>

	Merge test improvements from multi-language-branch:
	* tests/defs: Find and set the value of CC probed by libtool.m4
	* tests/link-2.test: Use a .lo wrapper script, and the value of
	CC set by defs instead of hardcoding gcc.
	* tests/link.test: Use the value of CC set by defs instead of
	hardcoding gcc.
	* tests/quote.test: Ditto.
	* tests/suffix.test: Ditto.

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC) [aix*]: Always set
	lt_prog_compiler_wl to `-Wl'.
	Reported by Albert Chin-A-Young  <china@thewrittenword.com>

	* ltdl.m4 (AC_LTDL_DLLIB) [sco3.2*]: When searching for a dlopen
	implementation, and adding `-ldl' has failed, try linking a call
	to dlopen, #including dlfcn.h, and without -ldl.  On sco3.2 the
	header files redefines the interface symbols to point at the
	implementation symbols in libc.
	Reported by "Golubev I. N." <gin@mo.msk.ru>

2001-06-29  Tim Van Holder  <tim.van.holder@pandora.be>

	General cleanup of autoconf-2.50 upgrade:
	* configure.ac: Mark as needing autoconf-mode in
	emacs.  Pass arguments to AC_INIT.
	* cdemo/configure.ac: Ditto.
	* demo/configure.ac: Ditto.
	* depdemo/configure.ac: Ditto.
	* libltdl/configure.ac: Ditto.
	* mdemo/configure.ac: Ditto.
	* pdemo/configure.ac: Ditto.
	* tagdemo/configure.ac: Ditto.
	* ltdl.m4: Mark as needing autoconf-mode in
	emacs.
	* libtool.m4: Mark as needing autoconf-mode in
	emacs.  Don't add () to AS_MESSAGE_LOG_FD.
	* libltdl/configure.ac: Use config-h.in as
	template for config.h.
	* tagdemo/configure.ac: Drop the AC_DIAGNOSTIC. Move
	AC_LANG([C++]) after the OBJEXT/EXEEXT check.

2001-06-29  Gary V. Vaughan  <gary@gnu.org>

	From Tim Van Holder <tim.van.holder@pandora.be>
	* tests/suffix.test: Typo in 2nd for loop.

	From Tim Van Holder <tim.van.holder@pandora.be>
	* libltdl/Makefile.am (OBJECTS):  This was an implicit variable.
	instead state the list of object variables explicitly.

	From Bruno Haible <haible@ilog.fr>
	* libtool.m4:  undefine the m4 builtin `symbols', so that the
	string `symbols' can be used in the rest of the code without
	causing errors with autoconf-2.13.

	From "Golubev I. N." <gin@mo.msk.ru>
	* tests/Makefile.am (CPPLAGS): Typo. s/CPPLAGS/CPPFLAGS.

	* mdemo/Makefile,am (foo1_la_LIBADD): Add libsub.la, since foo1
	does use symbols from libsub.la -- only platforms that allow
	undefined symbols in libraries were able to cope with this
	previously.
	Reported by Robert Collins <robert.collins@itdomain.com.au>

	From "Golubev I. N." <gin@mo.msk.ru>
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [sco3.2v5*]: Needs
	-wl,-Bexport to make self dlopen work.

2001-06-28  Gary V. Vaughan  <gary@gnu.org>

	From  Alexander Bluhm  <Alexander.Bluhm@WiredMinds.de>
	* libltdl/ltdl.c (lt_dlopen): Fix bad memory initialisation
	assumptions.

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE) [HPUX]: Define
	lt_cv_sys_global_symbol_to_c_name_address to be a sed expression
	for mangling the output of the symbol pipe into a brace delimited
	C declaration of symbol name and address.
	* ltmain.in: Use it to generate the fooS.c symbol name
	Reported by Albert Chin-A-Young  <china@thewrittenword.com>

2001-06-28  Tim Van Holder  <tim.van.holder@pandora.be>, Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Use cp instead of ln -s, for systems without
	symlinks.  Reorder the statements to avoid repetition outside
	the loop.

2001-06-28  Paolo Bonzini  <bonzini@gnu.org>, Gary V. Vaughan  <gary@gnu.org>

	Libtool now builds with the help of Autoconf-2.50!
	* configure.ac (AC_PREREQ):  Require Autoconf-2.50 or newer.
	(AC_PROG_CPP, AC_EXEEXT, AC_OBJEXT):  Removed.  Autoconf-2.50
	doesn't have the AC_REQUIRE bug that required these to be called
	explicitly from here.  Autoconf-2.50 uses this file instead of...
	* configure.in: ...this, which is now deleted.
	* cdemo/configure.ac, cdemo/configure.in: Ditto.
	* demo/configure.ac, demo/configure.in: Ditto.
	* depdemo/configure.ac, depdemo/configure.in: Ditto.
	* libltdl/configure.ac, libltdl/configure.in: Ditto.
	* mdemo/configure.ac, mdemo/configure.in: Ditto.
	* pdemo/configure.ac, pdemo/configure.in: Ditto.
	* tagdemo/configure.ac, tagdemo/configure.in: Ditto.
	* libltdl/acconfig.h:  Deleted.
	* Makefile.am (libtool): libtool now depends on configure.ac.
	* libtool.m4 (_LT_AC_LOCK):  Use 2.50's AC_LANG_PUSH/AC_LANG_POP
	instead of 2.13's AC_LANG_SAVE/AC_LANG_RESTORE.
	(AC_LIBTOOL_LANG_C_CONFIG): Ditto.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Ditto.
	* libtoolize.in:  Use $configure_ac, instead of hardcoding
	configure.in.

2001-06-28  Tim Van Holder  <tim.van.holder@pandora.be>

	* pdemo/Makefile.am:  Use '=' instead of '+=' to shut up
	automake.

2001-06-27  Gary V. Vaughan  <gary@gnu.org>

	From brad@openbsd.org:
	* NEWS: Updated.
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [openbsd]: Improved
	support for various openbsd platforms.
	(AC_LIBTOOL_PROG_LD_SHLIBS): Ditto.
	* ltmain.in: Ditto,

2001-06-26  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* libltdl/ltdl,c (LT_DLMUTEX_LOCK): Renamed from MUTEX_LOCK to
	avoid potential namespace clash.
	(LT_DLMUTEX_UNLOCK, LT_DLMUTEX_SETERROR, LT_DLMUTEX_GETERROR):
	Ditto.
	(lt_dlmutex_lock_func): Renamed from mutex_lock to avoid a
	namespace clash of NCR MP-RAS.
	(lt_dlmutex_unlock_func, lt_dlmutex_seterror_func,
	lt_dlmutex_geterror_func): Ditto.
	Reported by Edouard G. Parmelan <egp@free.fr>

	* libltdl/ltdl.c (LT_DLSTRLEN): Call strlen only if the argument
	is non-NULL and non-zero in length.  Changed all calls to strlen
	appropriately.

	* libltdl/ltdl.c: Prototype all static functions.

	* ltdl.m4: Bump serial number to 3.
	(AC_LIB_LTDL): Require AC_HEADER_DIRENT for ltdl.c.
	* libltdl/ltdl.h (lt_dlforeachfile): Prototype for new function.
	* libltdl/ltdl.c: Include an appropriate header for the
	opendir/dirent api.
	(foreach_dirinpath): Visit each file in a list of directories.
	(find_file_callback): Factor out the core of find_file() to make
	use of foreach_dirinpath().
	(find_file): Use it!
	(find_handle_callback, find_handle): Ditto.
	(lt_dlforeachfile):  New function to find files in a searchpath.,,
	(foreachfile_callback): ...using this callback.
	* doc/libtool.texi (Libltdl interface): Document new
	lt_dlforeachfile api call.

2001-06-25  Gary V. Vaughan  <gary@gnu.org>

	* THANKS:  Added Albert Chin-A-Young.

	* libtool.m4 (IFS): When IFS is changed to split a string for
	examination in a loop, restore it inside the loop as well as
	outside incase IFS is needed by commands in that loop.
	Reported by Pavel Roskin <proski@gnu.org>

2001-06-25  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Prefer shl_load to dlopen on HP-UX because dlopen
	won't work properly without a patch.

2001-06-25  Daniel Harvey <daniel@amristar.com.au>

	* libtool.m4 (ltdll_cmds): [$]0 doesn't appear to translate through
	the script correctly, change to $''0

2001-06-25  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use pass_all for
	mips-*-linux* and mipsel-*-linux*.

2001-06-24  Andreas Schwab  <schwab@suse.de>

	* libtool.m4 (AC_LIBTOOL_SETUP): Remove failed try to
	transform linux to linux-gnu in $host.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Match $host_os against
	linux*, not linux-gnu*.
	(AC_DEPLIBS_CHECK_METHOD): Likewise.

2001-06-24  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR):  Set
	PATH_SEPARATOR appropriately if it is not set already,
	(_LT_AC_TAGCONFIG): Use it.
	(AC_ENABLE_SHARED): Ditto.
	(AC_ENABLE_STATIC): Ditto.
	(AC_ENABLE_FAST_INSTALL): Ditto.
	(AC_PATH_TOOL_PREFIX): Ditto.
	(AC_PATH_MAGIC): Ditto.
	(AC_PATH_PROG_NM): Ditto.

	From Tim Van Holder  <tim.van.holder@pandora.be>:
	* libtool.m4: Use the canonical absolute path test
	([\\/]* | ?:[\\/]) and $PATH_SEPARATOR wherever
	appropriate.
	(AC_LIBTOOL_PROG_CC_PIC): Properly recognize DJGPP as a
	platform that doesn't support shared libraries.
	(AC_LIBTOOL_SYS_MAX_CMD_LEN): Avoid this test on DJGPP; use a
	fixed value (12K) instead.
	(AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Don't forget $ac_exeext
	when testing for link success.

	* configure.in (AM_INIT_AUTOMAKE): Bumped version to 1.4a.

	Complete the new configure time tags creation facility based on
	the ltcf-*.sh and ltconfig.in files from multi-language-branch:
	* libtool.m4:  More refactoring and reformatting.
	(_LT_AC_LANG_GCJ_CONFIG): Merged ltcf-gcj.sh from
	multi-language-branch.
	(_LT_AC_LANG_CXX_CONFIG): Merged ltcf-cxx.sh from
	multi-language-branch.
	* configure.in (AC_PROG_CXX, LT_AC_PROG_GCJ): Compiler checks must
	be done before AC_PROG_LIBTOOL which appends tags based on their
	results.

2001-06-12  Robert Boehne  <rboehne@ricardo-us.com>

	* docs/libtool.texi: Updated the libltdl interface documentation
	to bring it up to date.

2001-06-06  Gary V. Vaughan  <gary@gnu.org>

	* demo/Makefile.am (objdir): Use `libtool --config' for
	extracting configuration values, since a given value may
	be present in each tag.
	(hc-libpath): Ditto.
	(hc-minusL): Ditto.
	* libtool.m4 (_LT_AC_TAGCONFIG): Add tagged configurations from
	the --with-tags option.
	(_LT_AC_LTCONFIG_HACK): Factored out into separate configuration
	macros -- The interdependencies and running order are still
	immutable, and need a lot of work to fix.
	(AC_LIBTOOL_CONFIG): Taken from the previous incarnation of
	_LT_AC_LTCONFIG_HACK -- this macro is used both to create the
	primary (C language) libtool configuration from
	_LT_AC_LTCONFIG_HACK and also to append tagged configurations from
	_LT_AC_TAGCONFIG.
	* NEWS:  Merged from multi-language-branch.

2001-06-06  Robert Boehne  <rboehne@ricardo-us.com>

	* bootstrap: Added tagdemo and pdemo tests from
	multi-language-branch.
	* configure.in: Added pdemo and tagdemo to CONF_SUBDIRS
	and merged references to CXX and GCJ from multi-language-branch.
	* pdemo: Added test directory from multi-language-branch.
	* tagdemo: Added test directory from multi-language-branch.
	* tests/Makefile.am: Merged additional tests from
	multi-language-branch.
	* tests/pdemo-*.test: ditto.
	* tests/tagdemo-*.test: ditto.

2001-05-30  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: Merged ltconfig.in from multi-language-branch.

2001-05-28  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: Reformatting for consistency, and some refactoring
	in preparation for ltcf-*.sh merge.

2001-05-27  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Merged from multi-language-branch.
	* libtool.m4: Merged from multi-language-branch.
	* ChangeLog: Started afresh.  Old ChangeLog history moved to...
	* ChangeLog.1: ...here.

Continued in ChangeLog.1

	$Revision$ $Date$
