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

	* config/getopt.m4sh (func_version, func_usage, func_help):
	Use `$SED -n' instead of `$SED RANGE {..}; d' as AIX sed cannot
	handle the latter.
	(func_help): start autoconf and automake in subshells to avoid
	error messages from ash or Bourne shell if not available.

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

	* config/general.m4sh (func_quote_for_eval): Move backslash to
	beginning of character class, to work around old Bash bug.
	(func_quote_for_expand): Also test to avoid unnecessary fork.

2004-12-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>,
	    Gary V. Vaughan <gary@gnu.org>

	* Makefile.am, bootstrap, clcommit.m4sh, libtoolize.m4sh,
	config/ltmain.m4sh: Replace `set --' with `set dummy [...]; shift'
	for portability.
	* tests/sh.test: Test for this.

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

	* libtoolize.m4sh, config/ltmain.m4sh (most functions): New
	variable $opt_debug is either `:' or `set -x' depending on
	--debug.  Execute at most function entries to cater for ksh which
	resets `-x'.
	* tests/defs.m4sh: Ditto for VERBOSE=debug.

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin, mingw, pw32]:
	_LT_TAGVAR missing for `fix_srcfile_path'.
	[sysv4, sysv5]: _LT_TAGVAR missing for
	`export_dynamic_flag_spec'.

	* doc/libtool.texi (all over): Use @option and @command.
	Some more minor formatting updates, typos.

	* m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Fix variable	quoting;
	allows lt_ECHO to match --fallback-echo again.

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

	* config/general.m4sh: New variable quote_scanset...
	(func_quote_for_eval, func_quote_for_expand): ...use it to work
	around SunOS ksh `case' backslash-escaping bug: protect character
	class by variable expansion.
	Reported by Alexander Kurz <alexander.kurz@qsc.de>.

	* tests/quote.test: Restart under the correct shell (the one
	$ECHO was computed for).

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

	* libltdl/lt__dirent.c: Include lt__private.h.
	* libltdl/libltdl/lt__private.h: Include lt__strl.h.

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

	* config/ltmain.m4sh (func_extract_archives)
	(func_extract_an_archive): On darwin, uniq can not take the 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. Also add markers for the testuite.
	* m4/libtool.m4 (_LT_CONFIG): Add a marker so that we can use a
	sed expression to find the shell functions in libtool.
	* tests/functests.at: Test this feature.
	* tests/testsuite.at: Add the test.
	* tests/Makefile.am: Add the test.

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

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

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [solaris]: Add '${wl}-z
	${wl}text' to archive_cmds and archive_expsyms_cmds.  I.e., do not
	allow nopic in shared libraries.

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [solaris]: Change
	no_undefined_flag back to ' -z defs'.  Problems with linking
	against libgcc.a will have to be resolved differently.

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

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

	* libtool.m4 [linux] (_LT_COMPILER_PIC, _LT_LANG_CXX_CONFIG):
	Match icpc* and ecpc* (ia64 version of icpc) instead of only icpc.

	* libltdl/lt__dirent.c (opendir) [mingw]: 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>

	* HACKING: Update list of non-Libtool-owned files.

2004-12-17  Akim Demaille <akim@epita.fr>

	* libtoolize.m4sh (func_copy_all_from_path): Remove spurious eval.

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  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libltdl/lt__strl.c, libltdl/libltdl/lt__strl.h: New files to
	emulate strlcat and strlcpy, which support size-bounded string
	copying and concatenation for improved security.
	* libltdl/Makefile.am: Optionally build source files
	libltdl/lt__strl.c and libltdl/libltdl/lt__strl.h.
	* m4/ltdl.m4 (LTDL_INIT): Add checks for strlcat and strlcpy.

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

	* libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG):
	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-12  Patrick Welche <prlw1@newn.cam.ac.uk>

	* configure.ac: Fix aclocaldir to use ${datadir}, not ${prefix}.
	Necessary for removal of old libtool.m4 files.

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

	* config/ltmain.m4sh (func_extract_archive): Send stderr of $NM
	to /dev/null.
	Reported by Martin Waitz <tali@admingilde.org>.

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

	* config/ltmain.m4sh: 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-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config/ltmain.m4sh (func_mode_finish) [solaris]: Fix [] escaping
	bug.

	* config/ltmain.m4sh (all over the map): Make use of func_basename
	and func_dirname in most occasions.

	* m4/libtool.m4 (_LT_CHECK_XSI_SHELL, _LT_PROG_XSI_SHELLFNS): New
	macros to detect at `configure' time whether the shell supports
	some XSI extensions and to copy appropriate versions of new shell
	functions into `libtool' through `config.status'.  Copied
	functions are Bourne and XSI variants of func_basename,
	func_dirname (a variant of `dirname' suitable for libtool).
	(_LT_SETUP): Require _LT_CHECK_XSI_SHELL.
	(_LT_CONFIG):  Use _LT_PROG_XSI_SHELLFNS to insert into `libtool'
	at marker.

	* config/ltmain.m4sh: Set marker for insertion of shell functions.

	* config/general.m4sh (func_quote_for_eval): Only fork if the
	substitution matches.

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

	* TODO: Paste Peter's summary of the TODO thread starting at
	http://lists.gnu.org/archive/html/libtool/2004-11/msg00130.html.

2004-12-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config/ltmain.m4sh: Remove code which is no longer needed
	now that temp_rpath only contains fully-qualified elements.

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

	* config/general.m4sh: basename sed-subst is anchored and thus
	does not need the `g' flag.
	(func_quote_for_eval): Return both the possibly double-quoted
	backslashified as well as only the backslashified argument.
	* config/ltmain.m4sh (func_mode_link): Use both return values,
	to save another sed_quote_subst application per cmdline arg.

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

	* config/ltmain.m4sh (func_lalib_p): Update function
	description.
	(func_lalib_unsafe_p): New function with same functionality but
	written without forks; this function is safe to use for cases
	where the argument either does not exist or is required to be a
	lalib for correct operation.
	* NEWS: Mention the fact that stdin is not to be used.
	* config/ltmain.m4sh (func_mode_execute, func_mode_install)
	(func_mode_link): Use func_lalib_unsafe_p where appropriate.
	(func_mode_execute): For the program wrapper, use
	func_ltwrapper_p instead of func_lalib_p.

	* m4/libtool.m4 (_LT_LINKER_SHLIBS): Treat linux-dietlibc with
	the `diet' compiler wrapper (as opposed to the `diet-dyn' wrapper)
	as a static-only platform.
	* NEWS: Updated.

	* libltdl/ltdl.c (trim): Use memcpy instead of strncpy here, to
	avoid problems with non-conforming strncpy.  This is safe here.

	* m4/ltdl.m4 (LT_LIB_DLLOAD): Define HAVE_LIBDLLOADER if we
	have a dlloader to preload.
	* libltdl/ltdl.c (lt_dlinit): Only preload if HAVE_LIBDLLOADER, only
	declare preloaded_symbols then.  Fixes libltdl on static platforms.
	* NEWS: Updated.

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

	Add a search path option to libtoolize so that we can run it from
	the testsuite without pulling in the last installed macros and
	ltdl sources:

	* libtoolize.m4sh:  Add a -I option to change libtoolize's search
	path for macro files, and libltdl master sources.
	(pkgvdatadir, pkgvmacrodir): Renamed...
	(pkgvdatadirs, pkgvmacrodirs): ...as they can now contain a ':'
	delimited list of directories.  Adjust all callers.
	(func_copy_all_from_path): New function to search a ':' delimited
	search path for a directory to copy.
	(func_serial_update, func_ltmain_update, func_config_update): New
	first parameter is a filename to search for.  srcdir parameter can
	now be a ':' delimited search path.  Adjust all callers.
	(func_copy_some_files): Ditto.
	Put srcfile_spec first in parameter list for consistency with
	other functions.  Adjust all callers.
	(func_copy_cb): func_copy adapter function to call func_copy
	correctly from func_copy_some_files.
	(func_filename_path_search): Return the full path to the first
	occurence of a named file found in a list of directories.
	* tests/testsuite.at (LIBTOOLIZE): Wrap exported LIBTOOLIZE
	initialisation in PREPARE_TESTS diversion to stop it being
	discarded when testsuite is generated.
	(AT_LIBTOOLIZE): Factor out libtoolize calls,
	and set search path to find macros and libltdl source files from
	the source tree.
	(AT_CHECK_LIBTOOLIZE): Test it.
	(AT_BOOTSTRAP): Adjust.  Split out call to make.
	* tests/am-subdir.at: Call make explicitly.
	(Makefile.am): Fix typo in ACLOCAL_AMFLAGS,

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

	* config/ltmain.m4sh (func_mode_link): $dlsymsobj is really
	$symfileobj, bug exposed only in the static preloading case
	(symfileobj is created, but not linked into output).

	* tests/demo-relink.test, tests/depdemo-relink.test: SKIP, don't
	FAIL if no shared libs available in demo/.  Do not try to access
	nonexistent files.

	* libltdl/loaders/loadlibrary.c: Remove unneeded
	file-static variable.

2004-11-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

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

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

	* m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG) [linux]: Support for Portland Group (aka
	"pgi") compilers.
	* NEWS, THANKS: Updated.

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

	* Makefile.am: Move Autotest rules from here...
	* tests/Makefile.am: ...to here.
	* bootstrap: Adjust.  Also, create temporary Makefile from
	tests/Makefile.am so that bootstrap can create the Autotest
	testsuite.

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

	If the user's login shell is something crazy like, oooh,
	/bin/tcsh, trying to execute bourne shell helper scripts with
	the `$SHELL /path/to/helper $helper_flags' idiom incase the
	execute bits were lost by say, eeer, cvs, is gonna blow up in
	our faces.  This changeset tries to save these people from
	their shells^H^H^H^H^H^H^H^H^Hmselves :->

	* tests/defs.m4sh (SHELL): Move definition from here...
	* config/general.m4sh (SHELL): ...to here.

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

	The ltdl.h header is the published interface to libltdl, and
	is thus not installed to $prefix/include/libltdl.  It has always
	been used with `#include <ltdl.h>', so move just that one file
	back to where it was before:

	* libltdl/libltdl/ltdl.h: Moved from here...
	* libltdl/ltdl.h: ...to here.
	* libltdl/Makefile.am: Adjust.

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

	Do not require that libtoolize --ltdl=/some/path end in libltdl.
	Move most libltdl headers to libltdl/libltdl to allow
	`#include <libltdl/ltdl.h>' to always work:

	* libltdl/Makefile.am, libltdl/loaders/Makefile.am: Look for includes
	in the new location.
	* libltdl/libltdl/lt__alloc.h, libltdl/libltdl/lt__dirent.h,
	libltdl/libltdl/lt__glibc.h, libltdl/libltdl/lt__private.h,
	libltdl/libltdl/lt_dlloader.h, libltdl/libltdl/lt_error.h,
	libltdl/libltdl/lt_system.h, libltdl/libltdl/ltdl.h,
	libltdl/libltdl/slist.h: Added files, moved from libtdl/.
	* libltdl/lt__alloc.h, libltdl/lt__dirent.h, libltdl/lt__glibc.h,
	libltdl/lt__private.h, libltdl/lt_dlloader.h, libltdl/lt_error.h,
	libltdl/lt_system.h, libltdl/ltdl.h, libltdl/slist.h: Removed, moved
	to libltdl/libltdl.

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

	* doc/libtool.texi (LT_INIT): s/libtool 1.6/libtool 2.0/.
	(Invoking libtoolize): Fix typo.

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

	* config/ltmain.m4sh (func_mode_install): Now that func_mktempdir
	has been improved, the default directory template is perfectly
	fine.

	* doc/libtool.texi (Invoking libtoolize): Improve documentation
	for use of ACLOCAL_AMFLAGS and AC_CONFIG_MACRO_DIR.

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

	* m4/libtool.m4 (_LT_TAG_COMPILER): Document that with_gcc is
	tag-dependent.

	* m4/libtool.m4, tests/demo-nopic.test: Undo bogus commit.

	* config/ltmain.m4sh (func_mode_link), tests/objectlist.test:
	Make sure the argument to `-objectlist' may contain spaces.

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

	* config/m4general.m4sh, config/mailnotify.m4sh,
	clcommit.m4sh: Updated from cvs-utils--tla--1.0 to allow
	parallel commits, and use safer tmpfiles.

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

	* doc/libtool.texi (Libltdl interface): Typos.

	* doc/libtool.texi (Libltdl interface): Document public macros
	LT_PATHSEP_CHAR, LT_DIRSEP_CHAR, use in path descriptions.

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-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin, mingw, pw32]:
	tag-protect setting of ld_shlibs.

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

	* doc/libtool.texi (Libltdl interface): The path separator
	is system-dependent.

	* doc/libtool.texi (Linking static libraries): Typo.

	* m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[aix4/aix5 !ia64]: Set whole_archive_flag_spec to '$convenience'
	so convenience libs are really added to the link cmdline.

2004-11-17  Mats Rynge  <rynge@isi.edu>

	* libtool.m4 [linux]: Use only the CC basename in case statment
	when checking for icc/ecc.  Allows for setting CC to the full path
	to the compiler.

	* libtool.m4 [solaris]: Added missing 'with linker' flags to
	-z allextract ... -z defaultextract flags

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

	* m4/libtool.m4 (_LT_LINKER_SHLIBS): Typo: s/--rpath/-rpath/g.
	(_LT_LANG_CXX_CONFIG): Ditto.

	* configure.ac (APIVERSION): New substituted variable.
	(pkgvdatadir): Ditto.  Versioned data directory.
	(pkgvmacrodir): Ditto.  Versioned aclocal directory.
	(LN): New check for LN command.
	* Makefile.am (aclocal_DATA): Replaced with...
	(pkgvmacro_DATA): ...this.
	(install-data-local): Remove old shared resources.
	(install-exec-hook): Make versioned links to executables.
	(uninstall-hook): Remove versioned files.
	* libltdl/Makefile.am (ltdldatadir): Redefine in terms of
	pkgvdatadir.
	* libltdl/loaders/Makefile.am (ltdldatadir): Ditto.
	* libtoolize.m4sh: Copy macro files from versioned macro directory
	instead of shared aclocal directory.
	* doc/libtool.texi: Document it.
	* NEWS: Updated.

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

	From James Henstridge <james@jamesh.id.au>:
	* m4/libtool.m4, m4/ltdl.m4, m4/ltoptions.m4: Added commented out
	empty macro definitions to match each AU_DEFUN to help aclocal
	from automake-1.4 regexps find the right libtool macro files.

2004-11-10  James E Wilson  <wilson@specifixinc.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config/ltmain.m4sh (func_mode_link), tests/Makefile.am,
	Fix error message with `-objectlist' file that does not exist.
	* tests/objectlist.test:  New test for this.

	* Makefile.am: config/ltmain.sh is generated by
	config/ltmain.m4sh.

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

	* doc/libtool.texi (Compile mode, Link mode,
	Libltdl interface, Test descriptions, libtool script
	contents): Some quote cleanup, more use of texinfo types.

	* doc/libtool.texi (libtool script contents):
	echo is now ECHO; mention argument restriction.

	* doc/libtool.texi (Multiple dependencies): Minor rewording.

	* doc/libtool.texi (User defined module data, References):
	indentation and word-wrap cleanup.

	* doc/libtool.texi (all over): White space cleanup:
	two spaces at start of sentence, no TABs.

2004-11-09  Gary V. Vaughan  <gary@gnu.org>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (libtool script contents): Fix description
	of need_lib_prefix.

2004-11-08  Peter Ekberg  <spam.protected>

	* config/ltmain.m4sh (func_mode_link): forward thread
	related flags to dependent applications and libraries
	by adding them to `inherited_linker_flags'.

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

	* m4/ltoptions.m4: Change all references of LT_LIBTOOL_INIT
	to LT_INIT.

2004-11-05  Peter Ekberg  <spam.protected>

	* ltmain.m4sh (cwrappersource): clean up other warning on MinGW.

2004-11-04  Bernhard Fischer  <spam.protected>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS), m4/ltoptions.m4
	(_LT_SET_OPTIONS), README, README.alpha: Typos.

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

	* libltdl/ltdl.c (parse_dotla_file): Fix memleak.

	* ltmain.m4sh (cwrappersource): Cast isalpha arguments correctly.

2004-11-03  Peter Ekberg  <spam.protected>

	* ltmain.m4sh (cwrappersource): clean up warnings and
	#include errors on MinGW.

2004-11-01  Peter Ekberg  <spam.protected>

	* config/ltmain.m4sh (cwrappersource): clean up warnings and
	#include errors.

2004-11-01  Peter Ekberg  <spam.protected>

	Sometimes, a wrapper script is generated for an executable that,
	itself, does not link against an uninstalled library.  It appears
	that this can happen if you are building a project where:

	  (1) there is a library
	  (2) there is an executable that does not, itself, link against
	      that library

	In this case, notinst_deplibs is empty, and when the wrapper
	script is loaded by libtool during ./libtool mode=install, there
	is a check for "is notinst_deplibs empty".  In this case, it is,
	so libtool reports an error.

	I don't think it is wrong to have a wrapper script for an exe that
	*technically* doesn't need it.  But instead of checking for
	notinst_deplib nonempty as a proxy for "did wrapper script get
	sourced into my environment properly" a different var should be
	used.

	* config/ltmain.m4sh (func_mode_install): set new variable
	`generated_by_libtool_version' in wrapper script when using
	libtool_install_magic.  When verifying that wrapper script was
	properly sourced, check that `generated_by_libtool_version' is
	non-empty, instead of using notinst_deplibs.

2004-11-01  Charles Wilson  <spam.protected>,
	    Peter Ekberg  <spam.protected>

	* config/ltmain.m4sh (func_mode_install): On Windows based hosts,
	ensure that import libraries don't get stripped.
	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): On Windows based hosts,
	use postinstall_cmds to strip DLL (not import lib!) when symbol
	stripped installation was requested.

2004-10-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (loader_init_callback): Back out broken cast.

	* libltdl/ltdl.c (loader_init_callback, lt_dlexit): Add casts to
	target type.

	* tests/defs.m4sh (func_exec): `shift'ing when there is nothing
	to shift is non-portable.

2004-10-28  Patrick Welche  <prlw1@newn.cam.ac.uk>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.am, Makefile.maint: Use path for dependencies built
	in the source tree, to cater for BSD make.

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

	* config/ltmain.m4sh (func_lalib_p, func_ltwrapper_p): New
	functions that abstract .la sanity checking.
	(func_mode_execute, func_mode_install, func_mode_link)
	(func_mode_uninstall): Use them.

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

	* config/ltmain.m4sh (opt_silent): Whether --silent was given.
	(run, show): Deleted.  All callers converted to opt_dry_run,
	opt_silent or calls to func_show_eval.
	* tests/mdemo-dryrun.test: Adjust.

	* HACKING: Fix a typo in the gpg --verify instructions.

	* Makefile.maint (cvs-dist): Generate signatures and directives
	for bz2 upload.

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

	* config/ltmain.m4sh (func_mode_link): Make Gary's new tests
	pass. When the output wrapper script is not in the current
	directory, we can not use an rpath which is relative to the
	current directory. Use an absolute path instead.

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

	* clcommit.m4sh: Add --rcfile option.

	* clcommit.m4sh: Updated again, to support file list limited
	commits to CVS, and to fix another occurence of the bash bug
	that was preventing non-tla users from sending a commit mail.

2004-10-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* TODO, libltdl/lt_error.h, libltdl/ltdl.c, libltdl/ltdl.h:
	Undo accidental commit.

	* Makefile.maint: Fix typo.

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

	* clcommit.m4sh, config/mailnotify.m4sh: Updated from
	cvs-utils--tla--1.0 to fix quoting of metachars in patch names.

	* HACKING: Updated: `.in' files are now `.m4sh'; document some
	more coding standards for these files.

	* config/general.m4sh (sed_double_backslash): Undo an
	over-optimisation.

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

	* AUTHORS: Reformatted to better reflect the current state of
	Libtool maintainership.
	* THANKS: Reformatted to give maintainers a quick way to look
	up who has supplied FSF paperwork.

2004-10-21  Noah Misch  <noah@cs.caltech.edu>,
	    Gary V. Vaughan  <gary@gnu.org>

	* config/general.m4sh (sed_double_backslash): Improve this sed
	expression to correct left anchored \$ input to
	double_quote_subst, as well as backslash escaped $ preceded by
	any odd-numbered amount of \ characters.

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

	* config/general.m4sh (sed_double_backslash): New sed expression
	to escape \$ properly in combination with double_quote_subst.
	(func_quote_for_eval): Four space indent margin for functions!
	(func_quote_for_expand): Use $sed_double_backslash.
	(func_show_eval): New function that echos an escaped but variable
	expanded command, and then evaluates it.

2004-10-20  Noah Misch  <noah@cs.caltech.edu>,
	    Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (sed_quote_subst): Remove superfluous backslashes
	from the match character set.
	(double_quote_subst): Ditto.
	* config/general.m4sh (sed_quote_subst): Ditto.
	(double_quote_subst): New variable, copied from
	m4/libtool.m4. Much the same as sed_quote_subst, but variable
	references are not quoted.
	(func_quote_for_eval): Given any $foo; $bar and
	$foo must be identical after the following commands:
	    func_quote_for_eval "$foo"
	    eval "bar=$func_quote_for_eval_result"
	(func_quote_for_expand): In a similar vein to to func_quote_for_eval,
	except that variable expansions are not protected when quoting the
	command for subsequent display.
	* config/ltmain.m4sh: Factor away use of $sed_quote_subst now that
	it has been subsumed into func_quote_for_eval.
	(func_mode_link): Instead of `2004-10-14 Peter O'Gorman' below,
	use func_quote_for_expand so that ${wl} is expanded properly in
	the $show expression.

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

	* config/ltmain.m4sh (func_mode_finish): solaris-2.6 also has
	crle(1).
	Reported by Albert Chin-A-Young <china@thewrittenword.com>

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

	Add some new tests for Libtool's support of Automake
	subdir-objects builds.  This marks the beginning of a move to an
	Autotest driven test framework, which will eventually allow us to
	trim away many of the generated files in the current test demo
	subdirectories:

	* configure.ac (AC_CONFIG_TESTDIR): Re-enable commented out
	Autotest macros.
	(AUTOTEST, M4SH): Use --language long hand.
	* bootstrap: Generate tests/testsuite, and by implication
	tests/package.m4.
	* Makefile.am (edit): Add substitutions needed to generate
	tests/package.m4 from bootstrap.
	(check-recursive): Add tests/testsuite.
	(TESTSUITE): The new Autotest testsuite target.
	(TESTSUITE_AT): The Autotest sources.
	(EXTRA_DIST): Distribute the generated testsuite and sources.
	(tests/package.m4): Use $(edit) to propagate package metadata to
	the new tests.
	(tests/testsuite): Build the testsuite.
	(tests/atconfig): How to regenerate the file.
	(check-local): Hook Autotest into `make check'.
	(installcheck-local): Run the testsuite on the installed tree.
	(clean-local): Tidy our file droppings.
	* tests/Makefile.am: Remove bitrotted code from Autotest
	experiments in Autoconf 2.52 era.  Updated the rest and moved into
	Makefile.am.
	* tests/testsuite.at: New container for Autotest test groups.
	* tests/am-subdir.at: New test group for compatibility with
	Automake's subdir-objects builds.  Currently holds two tests, one
	for a C project and another similar project in C++.
	* TODO: Add an entry to remind us that these new tests expose a
	bug in libtool.
	* NEWS: Updated.

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

	* config/ltmain.m4sh: Revert most of my last commit, only eval
	\$show \"$cmds\", and only when building a library. I'm a wimp.
	Thanks Gary for pointing out errors in previous commit.

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

	* config/ltmain.m4sh (func_mode_finish): Mention crle(1) on
	solaris 2.7 and higher in the finalisation notes.
	Reported by Kurt J. Lidl <lidl@pix.net>

	* tests/cdemo-undef.test: New test for hosts that allow shared
	libraries with undefined symbols, but have no C++ compiler
	installed.
	* tests/Makefile.am (COMMON_TESTS): Add it.

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

	* config/ltmain.m4sh: Make sure that we $show what we will $run,
	use eval $show if we do $run eval.

2004-10-13  Charles Wilson  <spam.protected>

	* config/ltmain.m4sh: add foo/bin for every foo/lib
	in dllsearchpath when creating wrapper script.  Fixes
	depdemo-relink test failure.

2004-10-12  Charles Wilson  <spam.protected>

	* config/ltmain.m4sh (func_mode_link): don't relink
	on cygwin/mingw; no need.  But do ensure that wrappers
	are created unless doing a purely static build.

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

	* tests/tagdemo-undef.test: New test for hosts that allow shared
	libraries with undefined symbols.
	* tests/Makefile.am (CXX_TESTS): Add it.

2004-10-11  Charles Wilson  <spam.protected>

	* tests/link.test: Fix check for use of libnlsut.a under
	Cygwin.

2004-10-11  Noah Misch  <noah@cs.caltech.edu>

	* tests/quote.test: Do not look for $preargs in the output,
	because libtool may change them.

2004-10-10  Charles Wilson  <spam.protected>

	* config/ltmain.m4sh: Really don't require versions of GNU
	sed newer than 3.02 for Cygwin and MinGW, and don't break
	dryrun mode.

2004-10-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config/getopt.m4sh: Under MinGW, reported paths may include ':'
	so ':' should not be used as the sed delimiter.  Use '*' instead
	since it is very unlikely to appear in a path.

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

	* config/ltmain.m4sh: Don't require versions of GNU sed newer than
	3.02 for Cygwin and MinGW.

2004-10-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tests/pdemo-inst.test: Correction for mis-application of
	Charles Wilson's earlier patch.

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

	* m4/libtool.m4 (_LT_LANG_F77_CONFIG): Make sure the save and
	restore code for CC is nested at the same depth.
	(_LT_LANG_CXX_CONFIG): Ditto, but for several variables.

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

	Update to the latest commit and mailnotify scripts from
	gary@gnu.org--2004/cvs-utils--tla--1.0:

	* commit, config/mailnotify: Removed.  Now built from...
	* clcommit.m4sh, config/mailnotify.m4sh: ...these new sources.
	* Makefile.maint (commit, config/mailnotify): How to build them.
	* bootstrap: If we have a checked out tree (i.e. clcommit.m4sh
	is present), then build them.

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

	Fix some issues that mangled the reexecution path to a script,
	and thus prevented it from finding itself:

	* config/general.m4sh (progname): Don't actually change the name
	of the script if it begins with a `-', just prepend `./'.
	(progpath): Add a new clause that first searches the execution
	PATH, and then finally assumes this script is in the current
	working directory if $progname has no directory separators (e.g
	when invoked as `$SHELL progname').

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

	* config/general.m4sh (func_verbose): Work around a bash bug in
	shell functions.

2004-10-08  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* tests/pdemo-inst.test: pdemo-inst should depend on pdemo-make.
	* config/ltmain.m4sh: Windows and Cygwin reserve the .lnk
	extension to represent shortcuts.  Use the extension ".lnkscript"
	rather than ".lnk" for the piecewise linking ld script in order to
	avoid the conflict.

2004-10-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (lt_dlexit, lt_dlpath_insertdir): Fix memleaks,
	free user_search_path on lt_dlexit.

2004-10-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/sh.test: Remove tests which fail on AS_SHELL_SANITIZE
	from autoconf >= 2.59.

	* TODO: Remove item: no need for a libltdl without stdio.

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

	* tests/defs.m4sh (scripts): Actually scan the generated ltmain.sh
	for shell portability problems.

	* m4/libtool.m4 (_LT_FORMAT_COMMENT): Shell meta-characters in
	_LT_DECL descriptions were not being escaped before injection into
	TAG CONFIG here documents in config.status.

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

	* m4/libtool.m4 (_LT_PROG_CXX, _LT_PROG_F77): New macros to work
	around the deficiencies in AC_PROG_CXX and AC_PROG_F77.
	* configure.ac: Cleaned up, having moved the checks for compilers
	which do not exist to libtool.m4.

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

	* libltdl/ltdl.c (try_dlopen): Move .la file parsing
	part.. (parse_dotla_file): ..here.  Adjust.

	* libltdl/ltdl.c (load_deplibs, try_dlopen): Revert unnecessary casts
	to int from my patch from 2004-10-01.

	* AUTHORS: Add myself.

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

	* config/ltmain.m4sh [darwin]: Make the -dylib_file flag work on
	older darwins too. Reported by Christoph Egger.

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

	* configure.ac: Bumped version to 2.1a.

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

	* m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Don't confuse $ECHO
	with $lt_ECHO, or we always get a libtool with ECHO=echo, rather
	than testing for a mechanism that quotes \ properly.
	* NEWS: Updated.

	* config/ltmain.m4sh: Need to include getopt.m4sh earlier so that
	progpath is set before it is called to --no-reexec.
	* NEWS: Updated.

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

	Without this change, the distributed libtool tarball has a
	dependency on autom4te.  There was some inconsistency in the
	filenames: now we have foo.m4sh -> m4sh -> foo.in -> configure
	-> foo[.sh].  Bootstrap runs the m4sh steps and the resulting .in
	files are distributed:

	* tests/Makefile.am (EXTRA_DIST): Distribute defs.m4sh.
	* Makefile.am (EXTRA_DIST): Distribute libtoolize.m4sh.
	(libtoolize.in, libtoolize): Split into bootstrap and runtime
	stages.
	($(top_srcdir)/tests/defs.in, $(top_srcdir)/tests/defs): Ditto.
	($(top_srcdir)/config/ltmain.sh): Swap ltmain.m4sh and ltmain.in
	names.
	* bootstrap: Make libtoolize.in and tests/defs.in.
	* NEWS: Updated.

2004-10-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* README, README.alpha: Update notes regarding available VERBOSE
	settings.

2004-10-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config/ltmain.in: Change $XSED to $Xsed to fix hang noticed
	under MinGW.
	* tests/defs.in: Support VERBOSE=debug to enable shell tracing
	while running tests.

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

	* NEWS: Updated.
	* configure.ac: Bumped version to 1.9e.

	GNU libtool 1.9d was released.

	* configure.ac: Bumped version to 1.9d.
	* NEWS: Updated.

	* libltdl/lt__alloc.h (lt__alloc_die): Declare with LT_SCOPE as
	per Ralf's original patch.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* libltdl/Makefile.am (libltdlc_la_LIBADD): Don't use
	libdlloader_la_OBJECTS, an undocumented Automake internal
	variable...
	(libltdlc_la_SOURCES): ...use libdlloader_la_SOURCES here
	instead.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* libltdl/argz_.h: Forgot to spell lt_system.h with just one `_'.

	* libltdl/argz_.h: Forgot to include lt__system.h for LT_SCOPE
	definition.

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

	* libltdl/lt__alloc.h: Declare exported functions with LT_SCOPE
	for mingw32.
	* libltdl/lt__dirent.h: Ditto.
	* libltdl/argz._h: Ditto.  Be careful about not requiring
	additional libltdl files when used outside of libltdl.
	* libltdl/slist.h: Ditto.
	* HACKING: Add a section on libltdl implementation layering.

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

	* tests/quote.test: echo is called ECHO now.  Make sure we extract
	the value of ECHO from the libtool script.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

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

	* m4/libtool.m4 (hardcode_shlibpath_var) [darwin7*]: Revert my
	hack from 2004-09-30 now that I've removed /lib/hello.la and the
	tests work properly for me again.

2004-10-02  Jim Tison  <jtison@us.ibm.com>

	Initial support for s390x-ibm-tpf:

	* m4/libtool.m4: Correct obvious spelling errors in remarks.
	(_LT_ENABLE_LOCK): Make s390x-ibm-tpf hosts adopt elf64_s390
	conventions.
	(_LT_SYS_DYNAMIC_LINKER): Set defaults for s390x-ibm-tpf host.
	(_LT_CHECK_MAGIC_METHOD): Skip all dependency checks for
	s390x-ibm-tpf hosts.
	(_LT_LINKER_SHLIBS): Make s390x-ibm-tpf hosts adopt GNU/Linux OS
	attributes.
	* NEWS: Updated.

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

	* config/ltmain.in (func_mode_install): Need to set $tmpdir before
	using it.

	* config/ltmain.in (func_mode_link): Fix quoting bug.  Fixes
	e.g. the quoting of the -export-symbols-regex argument in .la
	files' relink_command.

	* libltdl/lt__alloc.c (lt__memdup): Allocation can fail, so we
	need to guard against null pointer dereference here.
	* libltdl/ltdl.c (lt_dlcaller_register): Ditto.

	* libltdl/slist.c (slist_foreach): result was declared as
	inner variable, shadowing the actually returned value.

	* libltdl/ltdl.c (load_deplibs, try_dlopen): Cast argument
	to isspace/isalnum to the correct range.  Also, cast to int to
	avoid compiler warnings.

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

	* libltdl/ltdl.c (try_dlopen): Fix null pointer dereference in
	case the name given to lt_dlopen contains no extension.

	* libltdl/lt_dlloader.c (lt_dlloader_remove), libltdl/ltdl.c
	(tryall_dlopen, lt_dlhandle_next): Show usage of function pointers.

	* doc/libtool.texi (LT_INIT, Using libltdl)
	(Module loaders for libltdl, Multiple dependencies)
	(libtool script contents): Fix several typos (trivial change).
        Also, libltdl consists of more than two small files.

2004-09-30  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (hardcode_shlibpath_var) [darwin7]: My Panther
	workstation doesn't hardcode the shared library path, although it
	used to, so this is more likely a function of the binutils and/or
	gcc I am using at the moment.  The hardcode value setting code for
	the configure script sucks at the moment though...
	* TODO: ...and needs to do a test compile instead of a table
	lookup before 2.0 final.

	* m4/libtool.m4 (echo): Use ECHO throughout for consistency with
	config/ltmain.in.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (rm): Use RM throughout for consistency with
	config/ltmain.in.
	Reported by Charles Wilson <cwilson@spam.protected>

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

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [darwin]: Don't echo gcc -v
	output during configure. (Really this time, honest)

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

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [aix]: In archive_expsym_cmds,
	move -bnoentry linker option before $compiler_flags to honor any
	possible -e entries in LDFLAGS.

2004-09-25  Gary V. 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-24  Charles Wilson  <cwilson@spam.protected>

	* libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Revert changeset from
	`2004-09-22  Charles Wilson  <cwilson@spam.protected>'.

2004-09-24  Gary V. Vaughan  <gary@gnu.org>

	* config/general.m4sh (Xsed): Set a default when not used from
	ltmain.in.
	(ECHO): Audit for (and correct!) uses of $ECHO with more than one
	argument, which breaks when ECHO='printf %s\n', and with possible
	`-' as first character of the argument, which breaks `print -r'
	and some implementations of `echo'.
	* config/ltmain.in, tests/defs.in, libtoolize.in (ECHO): Ditto.
	Reported by Albert Chin-A-Young <china@thewrittenword.com>

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

	* m4/libtool.m4 (_LT_CMD_STRIPLIB) [darwin]: strip archives too.

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [darwin]: Don't echo gcc -v
	output during configure.

2004-09-24  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_DECL_EGREP): Only the newest CVS autoconf
	AC_SUBSTs for GREP.  Do our own here too to cater for release
	autoconfen.

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

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

	* tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-deplibs.test, tests/demo-exec.test,
	tests/demo-hardcode.test, tests/demo-inst.test,
	tests/demo-make.test, tests/demo-nofast.test,
	tests/demo-noinst-link.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-relink.test,
	tests/demo-shared.test, tests/demo-static.test,
	tests/demo-unst.test, tests/depdemo-conf.test,
	tests/depdemo-exec.test, tests/depdemo-inst.test,
	tests/depdemo-make.test, tests/depdemo-nofast.test,
	tests/depdemo-relink.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/depdemo-unst.test,
	tests/f77demo-conf.test, tests/f77demo-exec.test,
	tests/f77demo-make.test, tests/f77demo-shared.test,
	tests/f77demo-static.test, tests/link-2.test, tests/link.test,
	tests/mdemo-conf.test, tests/mdemo-dryrun.test,
	tests/mdemo-exec.test, tests/mdemo-inst.test,
	tests/mdemo-make.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/mdemo-unst.test,
	tests/mdemo2-conf.test, tests/mdemo2-exec.test,
	tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/pdemo-make.test, tests/quote.test, tests/sh.test,
	tests/suffix.test, tests/tagdemo-conf.test,
	tests/tagdemo-exec.test, tests/tagdemo-make.test,
	tests/tagdemo-shared.test, tests/tagdemo-static.test,
	tests/tagtrace.test: POSIX `.' searches only in user's $PATH, so
	we must use `. ./defs' to source the common code.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Gah.  Merge error
	corrected.

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

	Since defs can change (path to grep for example) when it is made
	for a different host, it can't be shipped.  That also means that
	defs will always be generated in the build tree, so each test case
	can have the srcdir discovery factored away into tests/defs.in:

	* Makefile.am (EXTRA_DIST): s/defs/defs.in/g
	* tests/Makefile.am (defs): New rule to remake defs from the
	parent directory's Makefile.
	* tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-deplibs.test, tests/demo-exec.test,
	tests/demo-hardcode.test, tests/demo-inst.test,
	tests/demo-make.test, tests/demo-nofast.test,
	tests/demo-noinst-link.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-relink.test,
	tests/demo-shared.test, tests/demo-static.test,
	tests/demo-unst.test, tests/depdemo-conf.test,
	tests/depdemo-exec.test, tests/depdemo-inst.test,
	tests/depdemo-make.test, tests/depdemo-nofast.test,
	tests/depdemo-relink.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/depdemo-unst.test,
	tests/f77demo-conf.test, tests/f77demo-exec.test,
	tests/f77demo-make.test, tests/f77demo-shared.test,
	tests/f77demo-static.test, tests/link-2.test, tests/link.test,
	tests/mdemo-conf.test, tests/mdemo-dryrun.test,
	tests/mdemo-exec.test, tests/mdemo-inst.test,
	tests/mdemo-make.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/mdemo-unst.test,
	tests/mdemo2-conf.test, tests/mdemo2-exec.test,
	tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/pdemo-make.test, tests/quote.test, tests/sh.test,
	tests/suffix.test, tests/tagdemo-conf.test,
	tests/tagdemo-exec.test, tests/tagdemo-make.test,
	tests/tagdemo-shared.test, tests/tagdemo-static.test,
	tests/tagtrace.test: Removed srcdir discovery boilerplate...
	* tests/defs.in: ...and put it here.

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

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): move symcode calculation
	to correct place.
	* doc/libtool.texi (libtool script contents): update description
	of global_symbol_to_cdecl.

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

	* configure.ac (M4SH): AC_SUBST m4sh expander.
	* config/general.m4sh, config/getopt.m4sh: New files with factored
	out functionality from...
	* config/ltmain.in, libtoolize.in: ...here.  m4_include the shared
	code, and call AS_SHELL_SANITIZE.  Also quote all `[' and `]' to
	survive m4 run.
	(func_serial): No need to double up m4sh quotes after a `#'.
	(func_check_macros): Escape `dnl' to stop m4sh interpreting it as
	a macro.
	* tests/defs.in: New file expanded into tests/defs by autom4te.
	* m4/libtool.m4 (_LT_DECL_EGREP): Also require fgrep for the tests
	that use it.
	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Now built with
	M4SH.
	(libtoolize): Ditto.
	* bootstrap: Set M4SH for call to make.
	* HACKING: No need to sync to AS_SHELL_SANITIZE by hand any more.

	* m4/libtool.m4: _LT_DECL uppercase ECHO.
	* config/ltmain.in: Use it throughout.
	(func_mkdir_p): Now matches the other implementations in
	tests/defs and libtoolize.in.
	* tests/sh.test: Updated to detect ECHO misuse.

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

	* config/ltmain.in (func_mode_link): Propagate a convenience
	library's dependency libs correctly when it is being linked into a
	libtool library.  Deplibs are now propagated whether libdir is set
	or not.

2004-09-22  Andreas Schwab  <schwab@suse.de>

	The dlpreopen pass over libraries reverses the elements in the
	$deplibs list.  This causes problems when the link pass tries to
	find libraries when they are located in non-standard places
	denoted by -L options.  Due to the reversed order these -L options
	occur after the libraries that need them, and they are not found:

	* config/ltmain.in: (Un)Reverse $deplibs list at the start of the
	link pass in lib mode.

2004-09-22  Charles Wilson  <cwilson@spam.protected>

	* ltmain.in (func_generate_dlsyms) [cygwin, mingw]: when creating
	a .exp file for an executable, also create a .def file, and add
	that file to the link command via SYMFILES.  This causes binutils
	to generate an .edata section, and allows self dlopening to work.
	* NEWS: Updated.

	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): better quoting for
	postinstall_cmds and postuninstall_cmds to allow spaces in install
	paths.

	* config/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.
	* m4/libtool.m4 (_LT_LINKER_SHLIBS([TAGNAME])):	Build exports for
	symbols in .rdata sections.

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

	The checks in assign.test are trying to catch case of this ilk:
	`foo=bar break', but unfortunately they also choke on `foo=bar;
	break' and `foo=bar && break'.  Writing a sophisticated test to
	catch just the intended case seems like more trouble than it's
	worth, but leaving the test in causes the testsuite to fail on
	valid m4sh output:

	* tests/assign.test: Removed; chokes on perfectly valid shell
	syntax.
	* tests/Makefile.am (COMMON_TESTS): Remove assign.test.
	* tests/defs.in (scripts): Don't check the m4sh inputs, go back
	to checking the generated ltmain.sh script.

2004-09-17  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_echo): Except for multi-line warnings and
	errors, always use func_echo.  $show is for command output, and
	$echo is for internal use in backtick expressions and similar.

2004-09-17  Gary V. Vaughan  <gary@gnu.org>

	Missed a couple of MKDIR_P references in ltmain.in in my last
	patch; fix them carefully.  Introduce an opt_dry_run to ltmain.in
	so that the implementations of func_mkdir_p can converge, and a
	func_mktempdir to do a better job of temporary directory creation:

	* libtoolize.in (func_mkdir_p): Don't fail if the directory wasn't
	created in dry run mode.
	* tests/defs (func_mkdir_p): Ditto.  We don't actually have a dry
	run mode for the tests, but the function is written carefully to
	be kept in synch and work correctly here too.
	* config/ltmain.in (func_mkdir_p): Ditto.  This copy of the
	function now only differs in its use of $echo over $ECHO.
	(func_extract_archive): Removed first redundant mkdir call.
	(func_mktempdir): New function that tries to avoid races when
	making temporary directories.
	(opt_dry_run): Set this if --dry-run is given at the CLI, or if
	tests/mdemo-dryrun.test has forced the value of $run.
	(func_mode_install): Call $MKDIR directly and error out if the
	directory cannot be created.
	(func_mode_link): Rather than copying func_mkdir_p into the
	wrapper script as a replacement for $MKDIR_P, we know that the
	script won't be called my `make -j', so write the current value of
	$MKDIR.

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

	* m4/libtool.m4: remove an extra "]"

	* m4/libtool.m4 [darwin] (_LT_LANG_CXX_CONFIG): Changes for 10.4.
	* config/libtool.in [darwin]: ditto.

2004-09-16  Gary V. Vaughan  <gary@gnu.org>

	My most recent `2004-09-02 Gary V. Vaughan' patch for mkdir_p
	below is horrendously broken since it makes the installed libtool
	try to run the mkinstalldirs or install-sh helper scripts.  This
	patch fixes the `make -j' mkdir race condition internally:

	* libtoolize.in (func_mkdir_p): New slice and dice algorithm
	to build the directory tree one dir at a time, ignoring errors
	until the end incase they are transient due to a concurrent
	identical mkdir.
	* tests/defs (func_mkdir_p): Ditto.
	* config/ltmain.in (func_mkdir_p): Ditto, except that ltmain.in
	uses $echo rather than $ECHO, and uses $show and $run to interact
	correctly with the command line.
	* configure.ac (AM_INIT_AUTOMAKE): 1.8 is sufficient again.
	* Makefile.am (edit): Don't substitute automake's $(mkdir_p).
	* NEWS: Updated.

2004-09-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libltdl/loaders/loadlibrary.c: Compilation fixes (originally
	from Gary V. Vaughan) to compile under MinGW.
	* config/mkstamp: Translate input data so that it is assured to
	use the Unix line terminations. This is necessary under Windows if
	the files are checked out with CR/NL line terminations. A
	side-effect of this change is that input must always be from
	stdin. Previously a filename argument was accepted as well.

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

	* tests/Makefile.am: Use the same CPP, F77, CXX and CXXFLAGS
	for the test suite.

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

	* m4/libtool.m4 (_LT_ENABLE_LOCK):Replace AC_TRY_LINK with
	AC_LINK_IFELSE to get rid of `autoconf -Wobsolete' warning.
	* m4/ltdl.m4 (LT_LIB_DLLOAD): Ditto.

2004-09-15  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_quote_for_eval): Set a return value to
	avoid forking at every call.  Changed all callers.
	(func_mode_link): Simplified, and removed the final non-portable
	nested escaped double quotes in back quotes usage in the process.

2004-09-14  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_quote_for_eval): Factor out the ugly
	shell meta-character quoting.  Changed all callers.

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

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Simplification:
	distinguish between data and code symbols on every system.

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

	Unfortunately, libtool has no way of telling if unrecognized
	compiler flags need an argument or not, and can disect options and
	pass parts through incorrectly.  This changeset reverts both
	2004-09-06 Albert Chin-A-Young (topmost) and 2004-09-05 Albert
	Chin-A-Young below, and recognises more options explicitly:

	* config/ltmain.in (func_mode_link): Pass through options needed
	to compile in 64-bit mode with gcc, and the SGI, Sun, HP and IBM
	compilers.

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

	* m4/libtool.m4 (_LT_CMD_GLOBALS_SYMBOLS): Fix a typo I made when
	applying 2004-09-11 Ralf Wildenhues.

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

	* libtool.m4: Fixes for the OpenBSD support

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

	Our fortran tests were not very good. All the libraries created
	were convenience libs, so we did not test the creation of shared
	libraries on any platform. Also none of the libs used any actual
	fortran library calls, adding a call to write(*,*) in each lib
	causes the tests to fail on darwin (and presumably other platforms).
	These new tests would likely cause many more fortran test failures,
	so if there is an error during make it is reported as SKIP.

	* tests/f77demo-make.test: Don't fail hard, skip on failure.
	* tests/f77demo/foof2.f: New file.
	* tests/f77demo/foof3.f: New file.
	* tests/f77demo/fprogram.f: Call routine in new lib.
	* tests/f77demo/foof.f: Call routine in another new lib.
	* tests/f77demo/Makefile.am: Make a couple of new libraries, add
	$(FLIBS) to cprogram LDADD.

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

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): The linker distinguishes
	data and code symbols on linux-gnu/ia64.  Fixes multiple testsuite
	failures.
	* NEWS: Updated.

2004-09-06  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/loaders/shl_load.c (get_vtable): Typo.

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

	Hopefully, passing unrecognised compiler arguments through
	unmolested will prove to be a good plan for the 2.0 release.  If
	it goes awry, we can get back to where we were by reverting this
	patch and the 2004-09-05 Albert Chin-A-Young patch, aka
	gary@gnu.org--2004/libtool--devo--1.0--patch-169,172:

	* config/ltmain.in (func_mode_link): Because we now pass through
	compiler arguments we doesn't recognize, the code to pass
	through GCC's -m* arguments is not needed.

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

	* Makefile.am (clean-ltmain-sh): Using '==' to test for equality
	in a shell script is not portable. Use '=' instead.

2004-09-05  Andreas Schwab  <schwab@suse.de>

	* m4/ltdl.m4 (LT_WITH_LTDL): Remove excess quoting in argument of
	AC_CONFIG_SUBDIRS.

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

	* config/ltmain.in (func_mode_link): Pass otherwise unrecognised +
	and - style switches to the compiler.
	* NEWS: Updated.

2004-09-05  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (libtool): Force libtool to be regenerated if
	stamp-vcl has changed.

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

	* m4/libtool.m4, config/ltmain.in: When calling $LTCC,
	pass default $CFLAGS through with $LTCFLAGS.

2004-09-03  David Edelsohn  <dje@watson.ibm.com>

	* config/ltmain.in (func_mode_link): Use $pic_object as
	$non_pic_object if $non_pic_object=none.
	* NEWS: Updated.

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

	* bootstrap: Remember that the ltmain.sh generated by bootstrap
	is missing most of its substitution values, so force it to be
	rebuilt at make time by touching $(top_srcdir)/config/ltmain.in.

	From Martin Quinson <mquinson@ens-lyon.fr>
	* m4/libtool.m4 (_LT_SETUP, _LT_ENABLE_LOCK, LT_PATH_LD): Use
	AS_HELP_STRING to get rid of autoconf -Wobsolete warning
	messages.
	* m4/ltdl.m4 (LT_WITH_LTDL, _LT_ENABLE_INSTALL): Ditto.
	* m4/ltoptions.m4 (_LT_ENABLE_SHARED, _LT_ENABLE_STATIC)
	(_LT_ENABLE_FAST_INSTALL, _LT_WITH_PIC): Ditto.
	* TODO: Updated

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

	* libltdl/slist.c (slist_cons): Don't leak the tail of a list.

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

	* m4/libtool.m4 (_LT_ENABLE_LOCK): Reformatted.

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

	* HACKING: Explain how to verify detached signatures with gpg in
	the release announcement templates.

	* AUTHORS: Fix typo in my address.

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

	Builds of packages that use libtool and make -j produce "directory
	already exists warnings" for .lib directory.  Build on automake
	wisdom to support make -j builds where a suitable mkdir is
	available:

	* configure.ac (AM_INIT_AUTOMAKE): Require 1.9, which goes to some
	trouble to find a $(mkdir_p) that doesn't interfere with make -j.
	* Makefile.am (edit): Substitute for @mkdir_p@.
	* config/ltmain.in (MKDIR_P): Take @mkdir_p@ value.
	(mkdir): Removed.
	(func_mkdir_p): New function to use $MKDIR_P.  Factor out all
	previous mkdir calls to use this function.
	(RM, MV): Declared as in libtoolize.in.  Changed all callers.
	* libtoolize.in (MKDIR_P): Take @mkdir_p@ value from automake.
	(func_mkdir_p): Use it, similarly to new config/ltmain.in.
	* tests/defs: Synchronize boiler plate code with ltmain.in.
	Adjust all callers.
	Add missing copyright preamble.
	* tests/demo-static.test: Add missing copyright preamble.
	* NEWS: Updated.
	Reported by Daniel Reed <n@ml.org>

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

	* Makefile.am (clean-ltmain-sh): Quote $(top_builddir) for the
	shell, incase it is not set when running maintainer rules with
	`make -fMakefile.maint'.
	Don't show the shell commands.

	* AUTHORS: Fix my email address.

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

	* libltdl/ltdl.c (try_dlopen): Fix memory leak.
	* NEWS: Updated.

2004-09-02  Gary V. Vaughan  <gary@gnu.org>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/slist.c, libltdl/slist.h: Merge in changes from latest
	upstream.  Mostly comments, formal item boxing, a sort function,
	and const madness reduction.
	(slist_new): Removed.
	(slist_box, slist_unbox, slist_sort): New.
	(SListCompare, SListCallback): Swapped!
	(slist_remove, slist_find): Change order of parameters for
	orthogonality with slist_foreach.  Changed all callers.
	* libltdl/lt_dlloader.c (loader_cmp): Renamed to...
	(loader_callback): ...this.  Return boxed item.
	(lt_dlloader_remove): Adjust to new loader_callback semantics;
	unbox each removed item before returning.
	Remove unused variable.
	Remove const from name parameter, since the slist API cannot
	guarantee userdata const-ancy for its callback functions.
	(lt_dlloader_find): Adjust to new loader_callback semantics; need
	to return the contents of the boxed item.
	Remove const from name parameter, since the slist API cannot
	guarantee userdata const-ancy for its callback functions.
	* libltdl/lt_dlloader.h (lt_dlloader_find, lt_dlloader_remove):
	Adjust to new constless footprint.
	* libltdl/ltdl.c (ltdl_exit): The global `loaders' list is changed
        by `lt_dlloader_remove' while cleaning up, so the address in local
	variable `loader' is invalidated.  Since some loaders may be
	resident modules that cannot be unloaded (though we have none
	yet), we must save each `next' address before calling
	`lt_dlloader_remove'.
	* NEWS: Updated.
	* THANKS: Added Ralf.

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

	* libltdl/lt_dlloader.c (lt_dlloader_add): Handle malloc failure
	from slist_new.
	* libltdl/ltdl.c (loader_init): Trust lt_dlloader_add(), don't
	overwrite its error type, and simplify.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	* libltdl/slist.c (slist_new): Handle malloc failure gracefully.

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

	* libtoolize.in, config/ltmain.in: Add CDPATH protection to
	preamble.
	* tests/defs: Put a full m4sh.m4 style 'Be Bourne compatible'
	preamble in here too.
	* HACKING: Note that tests/defs needs synching with m4sh.m4 too.
	* TODO: Add new item.

	* libltdl/ltdl.c (try_dlopen, lt_dlforeachfile): Use correct cpp
	macro name, LT_DLSEARCH_PATH.

	* libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Fix gcc parentheses
	warning.
	(foreach_dirinpath, try_dlopen, lt_dlpath_insertdir): Fix gcc
	signed vs unsigned warning.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* m4/libtool.m4 (_LT_PROG_LTMAIN): Simplified in light of
	ltmain.sh no longer being in the build tree.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	* libltdl/loaders/preopen.c: Initialise memory in get_vtable.

	* tests/sh.test: Look in the source tree for ltmain.sh.

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

	Don't use C99 flexible array types as we want to be C89
	compatible.  Instead, revert to the old way of doing things with
	an array of symbol name vs. address, and adding the originator as
	the first symbol but with a NULL address:

	* config/ltmain.in (func_extract_dlsyms): Store originator as a
	NULL address symbol.
	* libltdl/ltdl.h (lt_dlsymbol): Removed.
	(lt_dlsymlist): Remove originator field.
	(LTDL_SET_PRELOADED_SYMBOLS): Adjust.
	* libltdl/loaders/preopen.c (vm_open, lt_dlpreload_open): Adjust
	for new types.
	(vm_sym): Skip the new originator symbol when scanning symbol
	names.
	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Adjust preloaded symbols
	test file to match.
	* NEWS: Updated.
	Reported by Andreas Schwab <schwab@suse.de>

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

	Libtool currently assumes that certain characteristics, such as
	enable_shared, apply to the host architecture rather than per-
	language.  Running the tests over a broken compiler can corrupt
	these values, when there is no C++ compiler for example, so we
	skip most of the tests in those cases.

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): If caught_CXX_compiler was
	set from configure.ac, then don't run all the compiler tests.
	(_LT_LANG_F77_CONFIG): Similarly for caught_F77_compiler.

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

	* Makefile.am (clean-ltmain-sh): Remove stale config/ltmain.sh
	from the build tree that were left behind by previous versions of
	libtool.
	($top_srcdir)/stamp-vcl: Since this rule is already called on
	every invocation of make, hook clean-ltmain-sh in here too.
	Suggested by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	* bootstrap: Update warning message to reflect having split
	libtool.m4 into several files.
	Also, add config/ltmain.sh to list of stale files from previous
	versions to be removed before bootstrap.

	* libltdl/ltdl.c: Replace strdup with lt__strdup.

2004-08-30  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in: Double quote even $# for the sake of sh.test.
	(exec_cmd): Be careful about "`\"foo\"`" quoting, even in comments
	to avoid triggering the tests in sh.test.

	* configure.ac:  Because of the way the autoconf C++ testing
	works, we need to call the C test first to work in an environment
	that has no C++ compiler.

	* libltdl/lt_dlloader.c (lt_dlloader_remove): Since the return
	value of this function is often passed to free, don't declare it
	`const'. Responsibility for this memory is given back to the
	caller on return.
	* libltdl/lt_dlloader.h (lt_dlloader_remove): Ditto.
	* libltdl/ltdl.c (lt_dlexit): Adjust.
	* NEWS: Updated.

2004-08-30  Andreas Schwab  <schwab@suse.de>

	* libltdl/ltdl.c (lt_dlexit): Remove lvalue cast.

	* libltdl/slist.h (SListCallback): Fix missing type.

	* config/ltmain.in: Accept --mode=relink.

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

	* NEWS: Updated.
	* configure.ac: Bumped version to 1.9c.

	GNU libtool 1.9b was released.

	* configure.ac: Bumped version to 1.9b.
	* NEWS: Updated.
	* INSTALL, config/config.guess, config/config.sub,
	config/texinfo.tex: Updated from canonical source.
	* Makefile.maint, HACKING: Update instructions for releasing in a
	VPATH build.

	* Makefile.am (dist-hook): Only run if README-alpha exists.
	* README.alpha: Renamed from README-alpha to stop automake from
	automatically adding it to DIST_COMMON.

	* NEWS: Merge changes from branch-1-5.

	* Makefile.am (dist-hook): Always distribute just a README file,
	but take its contents from README-alpha for alpha releases.

	* TODO: Reformat.  Removed some items that have been implemented.

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

	Add a new `-weak' flag to tell libtool when not to propogate
	dependency libraries from dlpreopened modules to libraries:

	* config/ltmain.in: Support new -weak link mode option.  Adjust
	help message.
	* libltdl/Makefile.am (libltdlc_la_LDFLAGS): Use it.
	* doc/libtool.texi (Linking with dlopened modules): Document it.
	(Link mode): Mention -weak.
	* NEWS: Updated.

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

	* config/ltmain.in (opt_help): Defer showing help messages until
	after a possible following --mode argument has been parsed, so we
	can handle `libtool --help --mode=foo'.

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

	We have had shell functions in ltmain.in for a few years without
	complaint now, and recently a few more have crept in.  Make a
	start at refactoring the code with shell functions, and
	standardising on option parsing style:

	* config/ltmain.in (func_echo, func_verbose, func_error)
	(func_fatal_error, func_fatal_help, func_missing_arg)
	(func_version, func_usage, func_help): Boiler plate shell
	functions mostly copied from libtoolize.in.  Changed *lots* of
	shell snippets to call these functions as appropriate, rather than
	inlining the same code over and over.
	(func_config, func_features, func_enable_tag, func_mode_help):
	Factored out from the shared option parsing loop.  Write a new
	shared option parser based on the one in libtoolize.in.
	(func_check_version_match): Factored out from global scope.
	(func_mode_compile, func_mode_execute, func_mode_finish)
	(func_mode_install, func_mode_link, func_mode_uninstall): Break
	each of the top level mode handlers out into a function.  Adjust
	main loop.
	(modename, prevopt, prev, optarg, show_help): Removed in the
	course of cleaning up the shared option parser.
	(opt_duplicate_deps): Use `:' and `false' instead of `yes' and `',
	so we can run it directly, rather than calling test.

2004-08-28  Gary V. Vaughan  <gary@gnu.org>

	To help users submit better bug reports, improve the general
	instructions, and provide additional useful info alongside the bug
	reporting address in --help output:

	* Makefile.am (edit): Substitute $host_triplet.
	* libtoolize.in: Output useful debug info with --help.
	* config/ltmain.in: Ditto.
	* README: Rewritten.  Added copyright info.
	* README-alpha: Rewritten.  Added copyright info.
	* HACKING: New file, partly taken from old README-alpha.

2004-08-27  Gary V. Vaughan  <gary@gnu.org>

	Two things to stop `make distcheck' from trying to rebuild
	distributed files (m4/ltversion.m4 and config/ltmain.in) in the
	readonly source tree:

	* Makefile.am (stamp-vcl): Keep only one copy of stamp-vcl; in
	$(top_srcdir), so that an up-to-date version is rolled into the
	dist tarball even from a VPATH build.
	($(top_srcdir)/config/ltmain.sh): Don't depend on Makefile,
	otherwise ltmain.sh needs to be rebuilt after every config.status
	run, and then configure needs to be rebuilt, and it all goes
	horribly wrong :-/  Unfortunately, we can't depend on Makefile.am
	either, because that is a circular dependency.  The downside of
	this change is that it is now possible to edit Makefile.am to
	change the way ltmain.sh is generated, and the dependency
	information can't tell that ltmain.sh needs regenerating.

2004-08-27  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Cheap tricks): Escape the `@' for texinfo.

2004-08-27  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Cheap tricks): Fix the instructions for making
	a ltmain.in wrapping libtool in light of recent changes to the
	version checking code.

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

	* config/ltmain.in [darwin]: Use the -dylib_file flag and avoid
	linking to so many libraries on darwin.

	* m4/libtool.m4 [darwin]: Don't use a libname triplet, a couplet
	is perfectly fine.

	* m4/ltdl.m4: Don't use the dyld loader on darwin 8 or later.

2004-08-25  Paolo Bonzini  <bonzini@gnu.org>

	* config/ltmain.in (piecewise linking): Use a GNU ld script if
	possible.
	* m4/libtool.m4 (_LT_LINKER_SHLIBS): Add per-tag variable
	with_gnu_ld.
	(_LT_LANG_CXX_CONFIG): Don't set unused variable with_gnu_ldcxx.

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

	The Grand Renaming.  In preparation for libtool-2.0, move all of
	the many and varied m4 symbols accumulated by libtool over the
	years, considering also that modern autoconf can detect unexpanded
	macros even without AC in the macro name:

	* bootstrap: Remove libltdl/config.h from previous releases.
	* m4/libtool.m4, m4/ltdl.m4, doc/libtool.texi: Basically, run a
	giant sed transformation like this:
	s,AC_LIB_LTDL,LTDL_INIT,g
	s,AC_LIBLTDL_CONVENIENCE,LTDL_CONVENIENCE,g
	s,AC_LIBLTDL_INSTALLABLE,LTDL_INSTALLABLE,g
	s,AC_WITH_LTDL,LT_WITH_LTDL,g
	s,AC_LTDL_ENABLE_INSTALL,_LT_ENABLE_INSTALL,g
	s,AC_DEPLIBS_CHECK_METHOD,_LT_CHECK_MAGIC_METHOD,g
	s,AC_LIBTOOL_OBJDIR,_LT_CHECK_OBJDIR,g
	s,AC_LTDL_OBJDIR,_LT_CHECK_OBJDIR,g
	s,AC_LTDL_DLPREOPEN,_LT_CHECK_DLPREOPEN,g
	s,AC_LIBTOOL_SYS_MAX_CMD_LEN,LT_CMD_MAX_LEN,g
	s,AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,_LT_CMD_GLOBAL_SYMBOLS,g
	s,AC_LIBTOOL_SYS_OLD_ARCHIVE,_LT_CMD_OLD_ARCHIVE,g
	s,AC_PROG_LD_RELOAD_FLAG,_LT_CMD_RELOAD,g
	s,AC_LIBTOOL_SYS_LIB_STRIP,_LT_CMD_STRIPLIB,g
	s,AC_CHECK_LIBM,LT_LIB_M,g
	s,AC_LTDL_DLLIB,LT_LIB_DLLOAD,g
	s,AC_LIBTOOL_COMPILER_OPTION,_LT_COMPILER_OPTION,g
	s,AC_LIBTOOL_PROG_CC_C_O,_LT_COMPILER_C_O,g
	s,AC_LIBTOOL_PROG_COMPILER_NO_RTTI,_LT_COMPILER_NO_RTTI,g
	s,AC_LIBTOOL_PROG_COMPILER_PIC,_LT_COMPILER_PIC,g
	s,AC_LIBTOOL_SYS_HARD_LINK_LOCKS,_LT_COMPILER_FILE_LOCKS,g
	s,AC_LTDL_DLSYM_USCORE,LT_FUNC_DLSYM_USCORE,g
	s,AC_LIBTOOL_LINKER_OPTION,_LT_LINKER_OPTION,g
	s,AC_LIBTOOL_PROG_LD_SHLIBS,_LT_LINKER_SHLIBS,g
	s,AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH,_LT_LINKER_HARDCODE_LIBPATH,g
	s,AC_PATH_MAGIC,_LT_PATH_MAGIC,g
	s,AC_PATH_TOOL_PREFIX,_LT_PATH_TOOL_PREFIX,g
	s,AC_PROG_LD,LT_PATH_LD,g
	s,AC_PROG_LD_GNU,_LT_PATH_LD_GNU,g
	s,AC_PROG_NM,LT_PATH_NM,g
	s,AC_LTDL_SYS_DLOPEN_DEPLIBS,LT_SYS_DLOPEN_DEPLIBS,g
	s,AC_LIBTOOL_DLOPEN_SELF,LT_SYS_DLOPEN_SELF,g
	s,AC_LIBTOOL_POSTDEP_PREDEP,_LT_SYS_HIDDEN_LIBDEPS,g
	s,AC_LTDL_SYSSEARCHPATH,LT_SYS_DLSEARCH_PATH,g
	s,AC_LTDL_SHLIBEXT,LT_SYS_MODULE_EXT,g
	s,AC_LTDL_SHLIBPATH,LT_SYS_MODULE_PATH,g
	s,AC_LTDL_SYMBOL_USCORE,LT_SYS_SYMBOL_USCORE,g
	s,AC_LIBTOOL_SYS_DYNAMIC_LINKER,_LT_SYS_DYNAMIC_LINKER,g
	s,_LT_AC_TAGVAR,_LT_TAGVAR,g
	s,_LT_AC_SYS_COMPILER,_LT_TAG_COMPILER,g
	s,_LT_AC_PROG_ECHO_BACKSLASH,_LT_PROG_ECHO_BACKSLASH,g
	s,_LT_AC_SYS_LIBPATH_AIX,_LT_SYS_MODULE_PATH_AIX,g
	s,_LT_AC_SHELL_INIT,_LT_SHELL_INIT,g
	s,_LT_AC_LOCK,_LT_ENABLE_LOCK,g
	s,_LT_AC_CHECK_DLFCN,_LT_HEADER_DLFCN,g
	s,_LT_AC_TRY_DLOPEN_SELF,_LT_TRY_DLOPEN_SELF,g
	s,LT_AC_PROG_EGREP,_LT_DECL_EGREP,g
	s,LT_AC_PROG_SED,_LT_DECL_SED,g
	* doc/libtool.texi (Autoconf macros): Document exported macros.
	* libtoolize.in: Compare ltdl.m4 serial numbers for LTDL_INIT
	instead of newly obsoleted AC_LIB_LTDL.
	(func_scan_files): Also set seen_ltdl for LTDL_INIT and
	LT_WITH_LTDL.

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

	* m4/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-06  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlforeachfile): LT_SYS_LIBSEARCH_PATH is not
	an environment variable, it is an actual path.

	* bootstrap: Remove `-f Makefile.am' now that we have an actual
	Makefile to build ltmain.sh.
	Reported by Noah Mish <noah@cs.caltech.edu>

2004-08-05  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Run the bootstrap rules from a file named Makefile,
	copied from Makefile.am for fresh checkouts.

2004-08-05  Alexandre Duret-Lutz  <adl@gnu.org>

	* m4/libtool.m4 (_LT_PROG_LTMAIN): Require ltmain.sh using
	using Autoconf's new AC_REQUIRE_AUX_FILE.

2004-08-05  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Depends on
	Makefile.
	(timestamp): Factor out timestamp setting and edit it based on the
	version number, so that it is empty for release versions.
	($(top_srcdir)/config/ltmain.sh): Use it.
	(libtoolize): Ditto.

	* Makefile.am (libtool): Depends on ltmain.sh.
	(libtoolize): Set and substitute TIMESTAMP.

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Actually run
	$(MKSTAMP) before changing directories, or it won't be found.
	Forgot to save before my last commit :-(

	* Makefile.am ($(top_srcdir)/m4/ltversion.m4): Since we already did
	`cd $(top_srcdir)' for this rule, we can't mv ltversion.tmp to the
	relative $(top_srcdir) again!  Also, run $(MKSTAMP) before changing
	directories, or it won't be found.
	($(top_srcdir)/config/ltmain.sh): Ditto.
	(EXTRA_DIST): We should distribute ltversion.m4 too.

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

	* m4/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  Geoffrey Keating  <geoffk@apple.com>

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

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

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

2004-07-31  Gary V. Vaughan  <gary@gnu.org>

	Although libtool is optimised to not need to subconfigure libltdl,
	the installed libltdl sources for libtoolize need to put
	libltdl/configure.ac in the parent package so that *it* can
	subconfigure libltdl.  That way we don't put any constraints on
	the build system used by the parent package because the
	libtoolized libltdl subtree is a self-contained sub-project:

	* libltdl/Makefile.am (EXTRA_DIST): Add configure.ac.
	(nobase_ltdldata_DATA): Change back to libltdl's own
	configure.ac.

2004-07-30  Gary V. Vaughan  <gary@gnu.org>

	My thanks to Alexandre Duret-Lutz <adl@gnu.org> for the insight
	required to write this changeset -- especially that ltmain.sh is
	the same on any machine for a given release, which I hadn't
	noticed for some bizarre reason: It turns out that generating
	distributed files from configure causes no end of hassle, as
	evidenced by the many patches I've generated over the last few
	days to try and get the dist and distcheck make rules to work.
	Instead of all that hair, we now simply generate our distributed
	files (now including ltmain.sh) with make rules -- and since
	automake creates make variables for all AC_SUBSTs, that is really
	easy.  The code looks a lot more like automake and autoconf
	Makefile.ams now, and doesn't have all the rough edges the earlier
	hacky solution suffered from.  We still generate libtool from
	config.status, but that is not a distributed file, and doesn't
	break the golden rule.  Besides, there is way more going on there
	than a bunch of substitutions:

	* Makefile.am (edit): New common sed substitutions for files now
	generated by make instead of config.status.
	(CLEANFILES): Clean new tmp files.
	(EXTRA_DIST): Add ltmain.sh.
	(vcl-tmp): Reinstated.
	(m4/ltversion.m4, config/ltmain.sh): New rules.  Generate from
	here instead of config.status.
	(libtoolize): Ditto.
	(libtool): Call config.status to regenerate if necessary.
	(dist-hook): Removed.
	* config/ltmain.in: Moved here from top_srcdir.
	* README-alpha: Update instructions to check AS_SHELL_SANITIZE is
	up to date.
	* bootstrap: Rewritten.  Generate m4/ltversion.m4 and
	config/ltmain.sh because configure depends on them.
	* configure.ac (AC_CONFIG_SRCDIR): Use libtoolize.in now that
	ltmain.in has moved.
	(AC_CONFIG_FILES): Don't generate distributed files,
	config/ltmain.sh and libtoolize from config.status.  We have make
	rules to do that now.

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

	* m4/libtool.m4, ltmain.in: readd the comments that I erased.

	* ltmain.in [darwin]: We already had a module var, there can be
	only one.

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

2004-07-29  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Ugh. More hair to
	help `make distcheck'; not only do we have to make a copy of
	ltmain.sh available in the source tree, but we have to be really
	careful about permission bit twiddling when we copy it across into
	the possible read-only $(top_srcdir)/config directory!

	* tests/tagtrace.test: Skip this test when running a VPATH build
	against a read-only source tree (as in distcheck for example),
	since autoconf wants to write temporary files in $top_srcdir
	otherwise.

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Automake assumes,
	quite rightly for every project except libtool, that there will be
	an ltmain.sh in the source tree.
	(EXTRA_DIST): As do the dist rules it generates.
	(dist-hook): Even though we definitely don't want to distribute
	our local ltmain.sh.

	* config/config.guess, config/config.sub: Don't check these in,
	they cause spurious conflicts on cvs commit and update, and are
	added by bootstrap in any case.

	* configure.ac (AC_INIT): Revert an accidental commit from my
	testing of package_revision.

2004-07-29  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/libtool.texi (Tags): Document CC.
	* m4/libtool.m4 (_LT_SETUP): Register CC as supported tag so that
	Automake uses it.

2004-07-28  Gary V. Vaughan  <gary@gnu.org>

	Fix a long-standing bug where macro_version was always empty in
	the generated m4/ltversion.m4.  Except for CVS revisions:

	* ltmain.in (package_revision): Don't try to deduce it from
	TIMESTAMP, since that is empty for release versions; simply
	substitute it...
	* configure.ac (package_revision): ...from here, having
	precalculated it before resetting TIMESTAMP for release versions.
	* bootstrap: Force regeneration of m4/ltversion.m4, but retain
	timestamps if there is no change to the content.

2004-07-28  Gary V. Vaughan  <gary@gnu.org>

	To take full advantage of this, libtool must be bootstrapped with
	CVS autoconf, otherwise pdksh chokes on some nested escaped quotes
	from libtool.m4.  Using CVS autoconf protects configure from
	non-bourne compatible shells in the same way this changeset
	protects libtool and libtoolize:

	* libtoolize.in: Include latest CVS autoconf AS_SHELL_SANITIZE
	expansion to make various shells fully bourne compatible.
	* ltmain.in: Ditto.
	* m4/libtool.m4 (AC_PATH_TOOL_PREFIX): Remove spurious quotes, the
	RHS of = assignment is not IFS split.
	(_LT_LANG_CXX_CONFIG): Ditto.
	(AC_LIBTOOL_POSTDEP_PREDEP): Ditto.

2004-07-27  Gary V. Vaughan  <gary@gnu.org>

	This change fixes another VPATH build bug, where the vcl.tmp
	target forced a rebuild of stamp-vcl in the build tree (and
	hence regeneration of m4/ltversion.m4, thus an automake driven
	rebootstrap that doesn't know about $fakes) requiring a fresh
	./bootstrap after every cvs/tla update:

	* Makefile.am (vcl.tmp): Removed.
	(stamp-vcl): Adopt former vcl.tmp target rules.

2004-07-25  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Make sure that dependency libraries of -dlpreopened
	libraries are propogated properly.

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

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

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

	* ltmain.in [darwin](func_extract_archives): $SED not sed.

	* ltmain.in [darwin](func_extract_archives): Clean up last commit
	a little, some suggestions are from Albert Chin, those that are
	broken are mine.

	* libltdl/Makefile.am, libltdl/loaders/Makefile.am: Look for
	included files in the right places.

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

	* ltmain.in [darwin](func_extract_archives): Because fat archives
	on darwin can not be extracted using ar, we need to use lipo to
	extract the thin archives and then use lipo again to generate the
	individual fat objects. This should allow people to run configure
	with CC set to "cc -arch ppc -arch ppc64" or "cc -arch ppc -arch
	i386" or whatever to match the toolchain they have available.

2004-07-18  Greg Eisenhauer  <eisen@cc.gatech.edu>

	* libltdl/loaders/Makefile.am: Use AM_MAKEFLAGS not MAKEFLAGS.

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

	* libltdl/Makefile.am: Ensure that lt__dirent.h is part of the dist,
	also make failed looking for configure.ac, look for
	$(top_srcdir)/configure.ac instead.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/lt__private.h (lt_dlhandle_struct): Renamed to
	lt__handle to better reflect the naming scheme.
	* libltdl/ltdl.h (lt_dlhandle): Be truly opaque with a void *.
	* libltdl/lt_dlloader.c (lt_dlloader_remove): Party to
	lt__private.h, so use internal lt__handle instead of opaque
	lt_dlhandle.
	* libltdl/ltdl.c (LT_DLGET_FLAG, LT_DLSET_FLAG): Add a cast to
	internal lt__handle type.
	(try_dlopen, tryall_dlopen, load_deplibs, unload_deplibs): Ditto.
	(lt_dlexit, lt_dlclose, lt_dlsym): Use lt__handle to iterate
	throught the handle list.
	(try_dlopen): Use lt__zalloc instead of MALLOC and memset.
	* libltdl/ltdl.h (lt_dlcaller_id): Be truly opaque with a void *.
	(lt_dlhandle_interface): New callback type for filtering handles
	according to the interface they present.
	* libltdl/ltdl.c (lt_dlcaller_register): Take an id and an
	interface check callback, and generate a caller_id.
	(iterator): New static variable for the use of...
	(lt_dlhandle_first): New function.  Set the iterator for
	subsequent calls to lt_dlhandle_next.
	(lt_dlhandle_next): Either work as before when iterator is unset,
	or else skip handles that fail the interface check in iterator set
	by lt_dlhandle_first.
	* libltdl/ltdl.h (lt_dlhandle_first): Declaration.
	* doc/libtool.texi (User defined module data): Document the new
	APIs.
	* NEWS: Updated.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	Split lt_dlloader management into a separate file, and factor
	`loaders' list management into a new SList ADT.  In the process,
	the API for writing loaders is a little cleaner, so all the
	existing loaders were tweaked to take advantage of that:

	* libltdl/slist.h, libltdl/slist.c: New files implementing a
	generic singly linked list container ADT.  The ADT is purely
	internal, and none of its API's are visible from an installed
	libltdl.
	* libltdl/lt_dlloader.h (lt_dlloader): Removed next field again
	:-) Renamed to lt_dlvtable for API.  Changed all callers.
	(lt_dlloader_get): New function to turn an lt_dlloader into its
	associated lt_dlvtable.
	(lt_dlloader_add): Removed unused data parameter.  The caller
	data belongs to (and is set by) the loader itself, not the
	loader's client.  Changed all callers.
	(lt_dlloader_name, lt_dlloader_data): Removed.  Use
	lt_dlloader_get instead!
	* libltdl/lt__private.h: Include slist.h.
	(lt__alloc_die_callback): Add missing LT_SCOPE to declaration.
	(lt_dlhandle_struct): Use lt_dlvtable instead of opaque
	lt_dlloader.
	* libltdl/ltdl.c (lt_dlexit): Rewritten for the new loader API.
	(loaders, lt_dlloader_add, lt_dlloader_remove, lt_dlloader_next,
	lt_dlloader_find): Moved from here...
	* libltdl/lt_dlloader.c ((loaders, lt_dlloader_add,
	lt_dlloader_remove, lt_dlloader_next, lt_dlloader_find): ...to
	here.  And rewritten in terms of new SList interface.
	* libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Rewritten in terms of
	new lt_dlloader interface.
	* libltdl/Makefile.am (libdlloader_la_SOURCES): Add slist.h and
	slist.c.  Move lt_dlloader.h from here...
	(pkginclude_HEADERS): ...to here.
	(libltdl_la_SOURCES): Add lt_dlloader.c and lt_dlloader.h.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	Collapse two almost identical structures into one:

	* libltdl/lt_dlloader.h (lt_dlloader): Add next field.
	* libltdl/ltdl.c (lt_user_dlloader): Remove entirely.  Change all
	callers to use lt_dlloader instead.  Add a compatibility macro.
	(lt_dlloader_add): Remove copy and allocate stage, just hook
	directly into the loaders list.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	A cleaner way to access the private fields of an lt_dlhandle
	than my move of the module field into lt_dlinfo:

	* libltdl/ltdl.c (lt_caller_data, lt_dlhandle_struct): Move from
	here...
	* libltdl/lt__private.h (lt_caller_data, lt_dlhandle_struct):
	...to here.  And put the module field back here...
	* libltdl/ltdl.h (lt_dlinfo): ...instead of here.
	* libltdl/loaders/loadlibrary.c (vm_open): Adjust.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/lt__private.h (streq, strneq): New macros to make strcmp
	calls as used for simple comparison easier to read.
	* libltdl/loaders/dyld.c, libltdl/loaders/preopen.c,
	libltdl/ltdl.c: Use them!

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	This pervasive changeset makes two intertwined deep changes to the
	operation of libtool (neither would work alone).  First, there is
	a new feature that allows libraries to preopen modules.  This
	entails a backwards incompatible change to the libltdl API for
	separating out the preloaded symbol lists by owner.  Second, in
	the tradition of "eating our own dogfood", libltdl now preloads
	its own dlloaders.  The internal API for dlloaders has also had to
	change in a backwards incompatible way in support of the new
	library preloading feature.  If you don't use preloaded libraries,
	you needn't change your project sources, though you will need to
	recompile against the new libltdl.  The API changes are mostly
	confined to dlloaders, so you probably needn't worry about those
	(unless you have written a custom loader that you want libltdl to
	use):

	* configure.ac (AC_CONFIG_FILES): Add libltdl/loaders/Makefile.
	* libltdl/configure.ac (AC_CONFIG_FILES): Add loaders/Makefile.
	* libltdl/loaders: New directory for module loaders, to simplify
	Makefile rules, and to give the loaders themselves names that are
	unique in the first few characters.
	* libtoolize.in (func_copy_all_files): Copy recursively to pick up
	the loaders directory contents.
	* libltdl/loaders/Makefile.am: New file.  Move module building
	rules to here...
	* libltdl/Makefile.am: ...from here.
	(VERSION_INFO): Bumped version info to signify interface changes.
	(libltdl_la_CPPFLAGS, libltdlc_la_CPPFLAGS): Set LTDLOPEN
	appropriately for each library.
	* libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
	libltdl/loader-dyld.c, libltdl/loader-load_add_on.c,
	libltdl/loader-loadlibrary.c libltdl/loader-preopen.c,
	libltdl/loader-shl_load.c: Moved from here...
	* libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
	libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
	libltdl/loaders/loadlibrary.c libltdl/loaders/preopen.c,
	libltdl/loaders/shl_load.c: ...to here.
	(get_vtable): New entry function for each.
	* libltdl/loaders/preopen.c (lt_dlsymlists_t): Replaced by...
	(symlist_chain): ...a new structure which maps lists of preloaded
	symbols from the object that loads them.
	(lt_dlpreload_open): New function to automatically open all
	preloaded modules belonging to a named object (ORIGINATOR).
	* libltdl/lt__alloc.c (lt__zalloc): New function to return a block
	of zeroed out new memory.
	* libltdl/lt__alloc.h (lt__zalloc): Prototype it.
	* libltdl/lt__private.h (lt__alloc_die_callback): Add missing
	prototype.
	(lt__error_strings): Make this opaque to callers.
	* libltdl/lt_error.c (lt__error_strings): Move the implementation
	to here.
	* libltdl/lt_dlloader.h (lt_user_dlloader): Add extra fields to
	make originator focused preloading possible.  *BREAKS BACKWARDS
	COMPATIBILITY*
	(lt_dlloader_add): Take advantage of new fields to simplify
	paramater list.
	* libltdl/lt_system.h (LT_STR): New ANSI stringification macro.
	(LT_CONC): Fix it to work from within macros.
	* libltdl/ltdl.c (loader_init, loader_init_callback): Simplify
	dlloader loading.
	(get_vtable, preloaded_symbols): Point these at the preopen.c
	symbols to bootstrap the loader chain.
	(lt_dlinit): Load the preopen dlloader manually, and then use it
	to load any other preloaded dlloaders.
	(lt_dlloader_add): Simplify parameter list. Populate new
	fields. Chain new loaders according to priority field.
	* libltdl/ltdl.h (lt_dlsymlist): Add a new originator field.
	(lt_dlpreload_callback_func): Type of a callback for automatic
	lt_dlpreload_open loading.
	(LTDL_SET_PRELOADED_SYMBOLS): Adjust to hook into preloaded
	symbols from the "@PROGRAM@" originator.
	* tests/demo/dlmain.c (main): Use mangled preloaded_symbols symbol.
	* tests/pdemo/longer_file_name_dlmain.c (main): Ditto.
	* ltmain.in: Don't spew spurious warnings when dlopening and
	dlpreopening modules.
	(func_generate_dlsyms): Factored out from multiple copies in the
	rest of the code. Generate originator keyed symbol lists.
	(func_extract_archives): Also factored.  Extract the contents of
	convenience archives for linking with dependent libraries when
	--whole-archive is not available.
	[darwin]: Don't try to link $old_library unless it exists, and
	$lib is a bundle.
	* m4/ltdl.m4 (AC_LTDL_DLLIB): Check for all possible dynamic
	loading libraries/apis rather that stopping when an acceptable one
	is discovered.
	(LT_DLLOADERS): New variable for holding dlloaders that can be
	preloaded.
	* doc/libtool.texi: Document interface changes.
	* NEWS: Updated.

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

	* m4/libtool.m4 [darwin]: Set whole_archive_flag_spec to '' for xlc,
	or it does not pass it's tests. xlc passes -noall_load (the default)
	and when -all_load is also specified Apple's /usr/bin/libtool barfs
	and dies.

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

	* libltdl/ltdl.h (lt_dlinfo): Move private module field to here...
	* libltdl/ltdl.c (lt_dlhandle_struct): ...from here.  Changed all
	callers.
	* libltdl/loader-loadlibrary.c (sys_wll_open): Use new inteface to
	scan loaded handle->info.module fields for previously loaded
	modules.
	* doc/libtool.texi (User defined module data): Document changes to
	the interface.
	* NEWS: Updated.
	Reported by Chuck Wilson <cwilson@ece.gatech.edu>

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

	* m4/libtool.m4: Fixes for the OpenBSD support

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-21  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (libtoolize_flags): With the --ltdl option, we
	libtoolize the libltdl subdirectory automatically.
	* m4/ltdl.m4 (AC_WITH_LTDL): Fix overquoted args.

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

	* ltmain.in (dependency_libs) [darwin]: Remove -framework stuff from
	dependency_libs. Instead, invent a new .la var "inherited_linker_flags"
	to keep any linker flags which should be used when linking the library,
	but are outside the usual -L -l, -R etc that can be used in
	dependency_libs. Any unusual flags in dependency_libs cause recent
	versions of libtool to die with "cannot find the library `'", so
	it is required to move frameworks out of there. :(

2004-06-21  Gary V. Vaughan  <gary@gnu.org>

	From Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
	* libtoolize.in: Quote $# to make sh.test happy again.

	* m4/ltdl.m4 (AC_WITH_LTDL): Remove redundant AC_REQUIRE calls.
	Either set variables to allow a client to link with the installed
	libltdl, or else compile a local libltdl as a convenience library.
	* libtoolize.in (opt_ltdl): Removed in favour of...
	(ltdldir): ...this, which is defaulted to "libltdl" or can be set
	by the user with an argument to --ltdl.
	(Main): Use it!
	* doc/libtool.texi (Distributing libltdl): Improved documentation
	on libltdl.
	(Invoking libtoolize): Document new optional --ltdl target
	directory argument.

2004-06-17  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [darwin*]: Fix a typo
	in allow_undefined_flag: s,${Wl},${wl},g

	* libtoolize.in (func_scan_files): Accept AC_WITH_LTDL as an
	indication that libltdl is being used.
	(Main): Without AC_CONFIG_MACRO_DIR, don't just dump all the
	macro files in `.' since they are never used, and aclocal will
	copy them from $aclocaldir into aclocal.m4 anyway.
	Reported by Alexandre Duret-Lutz <adl@gnu.org>

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

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

2004-06-16  Gary V. Vaughan  <gary@gnu.org>

	libltdl uses LIBOBJS, which leak out into a parent project if both
	share the same configure.ac.  Libtool itself doesn't compile any
	code, so it is okay to do it during bootstrap, but other projects
	need to treat libltdl as a configurable subproject to keep their
	respective LIBOBJS separate:

	* libltdl/configure.ac: New file, based on configure.ac.
	* libltdl/Makefile.am (AC_LOCAL_AMFLAGS): Use our own m4
	directory.
	(ltdldata_DATA): List *all* the files that libtoolize --ltdl will
	install.

2004-06-16  Gary V. Vaughan  <gary@gnu.org>

	Automake 1.9 won't have the AC_PROG_EGREP bug (aclocal used to
	pull an old installed libtool.m4 as well as the bootstrap
	m4/libtool.m4 if an AC_DEFUN was removed), and we have
	lt~obsolete.m4 to work around it in the mean time.  libtoolize
	can install macro files from $prefix/share/aclocal perfectly well
	without us needing to move to a whole other directory:

	* Makefile.am (pkgmacro_DATA): Renamed to aclocal_DATA, so m4
	files are installed to $prefix/share/aclocal again.
	(install-data-local): Don't remove just installed macros!
	* libtoolize.in (pkgmacrodir): Renamed to aclocaldir.
	(func_copy_some_files): New function factored out of...
	(func_copy_all_files): ...here.  Adjust to use func_copy_some_files.
	(re_pkgaux_files): Renamed to glob_pkgaux_files, since it is not
	a regular expression.
	(re_pkgmagro_files): Replaced with...
	(pkgmacro_files): ...a colon delimited list of libtool installed
	m4 files from aclocaldir.
	(Main): Copy macro files from aclocaldir again.
	* NEWS: Updated.

2004-05-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltmain.sh (check_executable): The WIN32 API and MinGW do not support
	S_IXOTH and S_IXGRP so use of these modes should be conditional.

2004-05-21  Gary V. Vaughan  <gary@gnu.org>

	* tests/tagtrace.test: Forgot to add this file to the repository
	for Alexandre's 2004-05-16 patch below.

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

	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Make this an m4_defun,
	test the tags compiler to see if it is GCC, not the CC compiler.

2004-05-16  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/libtool.texi (Invoking libtool): Mention --tag=TAG.
	(Tags, Trace interface): New nodes.
	* m4/libtool.m4 (LT_SUPPORTED_TAG): New macro.
	(_LT_LANG): Call it.
	* tests/tagtrace.test: New file.
	* tests/Makefile.am
	(TESTS): Add tagtrace.test.
	* tests/defs: Define AUTOCONF.

2004-05-14  Mike Gorchak  <lestat@i.com.ua>

	* ltmain.in: Add new qnx version type support.
	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Use it.  Set
	ldqnx.so linker type.
	(AC_DEPLIBS_CHECK_METHOD): QNX6 uses GNU C++, with deplib
	checking, so use pass_all.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Use -shared for QNX.
	(_LT_LANG_CXX_CONFIG): QNX can make shared libraries.
	* m4/ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): QNX opens deplibs on
	dlopen.
	* NEWS: Updated.

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

	* m4/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-22  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/argz.h: Moved from here...
	* libltdl/argz_.h: ...to here, so as not to shadow system
	argz.h when we `#include <argz.h>' for example.
	#include stdlib.h and sys/types.h to ensure we get a size_t
	definition.
	* libltdl/argz.c (HAVE_CONFIG_H): Set it up how ltdl likes it when
	used by another client.
	* m4/argz.m4: New file.
	(gl_FUNC_ARGZ): Try to find an error_t definition, and a system
	argz.h.
	* m4/ltdl.m4: Use it.
	(AC_LTDL_FUNC_ARGZ): Removed.
	* libltdl/lt__glibc.h: #include <argz.h> to pick up either the
	system argz.h or our libltdl/argz.h if necessary.
	* libltdl/Makefile.am (libltdl_la_SOURCES): Move argz.h from
	here...
	(ltdldata_DATA): ...here. Along with argz.c.
	(argz.h): Generate from argz_.h if the system file is missing.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	According to Howard Chu <hyc@highlandsun.com>:
	Applications should assume that the native dlopen is NOT
	thread-safe, and take care of locking themselves. All application
	calls into libltdl should thus be protected by the caller.

	* libltdl/lt_mutex.c, libltdl/lt_mutex.h: Removed.
	* libltdl/Makefile.am (pkginclude_HEADERS): Removed lt_mutex.h.
	(libltdl_la_SOURCES): Removed lt_mutex.c and lt_mutex.h.
	* libltdl/ltdl.h: Don't include lt_mutex.h.
	* libltdl/lt__private.h (LT__MUTEX_GETERROR, LT__MUTEX_SETERROR)
	(LT__MUTEX_SETERRORSTR): Renamed to...
	(LT__GETERROR, LT__SETERROR, LT__SETERRORSTR): ...this.  Changed
	all callers.
	(LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, lt_dlmutex_lock)
	(lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror):
	Removed.  Changed all callers.
	* doc/libtool.texi (Thread Saftey in libltdl):
	* NEWS: Updated.

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

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

2004-04-19  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Use cc rather than ld to created
	a shared library on HP-UX 11.x. On HP-UX 10.x, the
	C compiler doesn't grok -b so we continue to use ld.

	* m4/libtool.m4: Use cc rather than ld to create a
	shared library on Solaris. When using the Sun
	Workshop compiler 5.0 (and I presume any previous
	version), revert to ld due to compiler errors.

	* m4/libtool.m4: Use cc rather than ld to created
	a shared library on Tru64 UNIX.

	* m4/libtool.m4: Use cc rather than ld to created
	a shared library on IRIX.

	* libltdl/loader-shl_load.c: Fix typos during reorg.

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

	* doc/libtool.texi (LT_INIT): Properly display options in a table.

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-17  Peter O'Gorman  <peter@pogma.com>

	* libltdl/loader-dyld.c: Fix compilation issues. Set Original author
	to me.

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

	* m4/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-04-15  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (_LT_LANG_DEFAULT_CONFIG): Remove code to handle 'none'
	and 'all' options, this now always assumes automatic mode as that
	works so well.
	(_LT_LANG_DEFAULT): Remove definition
	* m4/ltoptions.m4: Remove 'no-lang', 'auto-lang' and 'all-lang' options.
	* configure.ac: Invoke LT_LANG for each desired supported language.
	* doc/libtool.texi: Remove documentation for the LT_INIT options,
	rewrite LT_LANG documentation.

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

	* bootstrap: Delete acinclude.m4.

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

	* libtoolize.in (configure_ac): Don't complain about the lack of
	aclocal.m4.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

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

	* m4/ltdl.m4 (AC_LIB_LTDL): Remove AC_REPLACE_FUNCS for memmove
	and strcpy.

	* libltdl/lt__pre89.h, libltdl/memcpy.c, libltdl/memmove.c,
	libltdl/strchr.c, libltdl/strcmp.c, libltdl/strrchr.c: Remove
	half-assed pre-c89 support entirely.
	* libltdl/lt__private.h: Don't refer to lt__pre89.h.
	* libltdl/Makefile.am (ltdldata_DATA): Remove references to
	deleted files.
	* NEWS: Mention it.

	* libltdl/lt__pre89.h, libltdl/ltdl.c, libltdl/ltdl.h, libltdl/argz.c,
	libltdl/argz.h, libltdl/lt__glibc.h, libltdl/lt_dlloader.h,
	libltdl/lt__dirent.c, libltdl/lt__dirent.h, libltdl/lt__private.h,
	libltdl/lt__alloc.c, libltdl/lt__alloc.h, libltdl/lt_system.h,
	libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
	libltdl/loader-dyld.c,  libltdl/loader-loadlibrary.c,
	libltdl/loader-shl_load.c, libltdl/lt_error.h, libltdl/lt_mutex.h:
	Autoconf either defines to 1 or undefs the discovery macros it
	puts in config.h, and many (non-GNU) compilers throw a spurious
	warning when testing an #undef macro with #if.  For consistency,
	while we are touching all these lines, use defined(MACRO) style
	throughout.
	Reported by Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

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

	Factor out the individual loaders, in preparation for preloading
	them as libtool modules.  Currently loader-preopen.c is linked
	unconditionally and other appropriate loaders discovered by
	AC_LTDL_DLLIB are built and linked in:

	* libltdl/Makefile.am (libltdl_la_SOURCES): Add loader-preopen
	module.
	* m4/ltdl.m4 (AC_LTDL_DLLIB): Use AC_LIBOBJ to add appropriate
	loaders to libltdl.
	* libltdl/lt_system.h (LT_SCOPE): Moved to here.
	* libltdl/ltdl.h (lt_dlloader, lt_user_data, lt_module)
	(lt_module_open, lt_module_close, lt_find_sym, lt_dlloader_exit)
	(struct lt_user_dlloader, lt_dlloader_next, lt_dlloader_find)
	(lt_dlloader_name, lt_dlloader_data, lt_dlloader_add)
	(lt_dlloader_remove): Moved declarations...
	* libltdl/lt_loader.h: ...to here.
	* libltdl/ltdl.c: Include lt_loader.h.  Move loader implementation
	code from here...
	* libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
	libltdl/loader-dyld.c, libltdl/loader-load_add_on.c,
	libltdl/loader-loadlibrary.c, libltdl/loader-preopen.c,
	libltdl/loader-shl_load.c: ...to here.
	* tests/cdemo/Makefile.am, tests/demo/Makefile.am,
	tests/depdemo/Makefile.am, tests/f77demo/Makefile.am,
	tests/mdemo/Makefile.am, tests/mdemo2/Makefile.am,
	tests/pdemo/Makefile.am, tests/tagdemo/Makefile.am (AM_CPPFLAGS):
	Add -I$(top_srcdir)/../.. so that libltdl include files can be
	written as #include <libltdl/lt_dlloader.h> and found correctly.

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

	Factor out the mutex handling and error handling into their own
	modules.  Mutex handling is not currently useful in combination
	with posix threads, and should be easier to replace if it is in a
	separate module.  Additionally, we can factor out the loaders in
	such a way as to depend on only the portability layer and these
	new mutex and error modules now:

	* libltdl/Makefile.am (pkginclude_HEADERS): Install lt_error.h and
	lt_mutex.h to $includedir/libltdl.
	(libltdl_la_SOURCES): Build lt_error and lt_mutex objects.
	* libltdl/ltdl.h (LT_SCOPE): Moved from here...
	* libltdl/lt_system.h (LT_SCOPE): ...to here.
	* libltdl/ltdl.c (lt_dlerror_strings, LT_DLSTRERROR): Moved from
	here...
	* libltdl/lt__private.h (lt__error_strings, LT__STRERROR): ...to
	here as additional internal interfaces to lt_error.  Changed all
	callers.
	* libltdl/ltdl.c (LT_DLMUTEX_LOCK, LT_DLMUTEX_UNLOCK)
	(LT_DLMUTEX_SETERROR, LT_DLMUTEX_GETERROR, lt_dlmutex_lock_func)
	(lt_dlmutex_unlock_func, lt_dlmutex_geterror_func)
	(lt_dllast_error): Moved from here...
	(LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, LT__MUTEX_SETERRORSTR)
	(LT__MUTEX_GETERROR, lt__mutex_lock_func, lt__mutex_unlock_func)
	(lt__mutex_geterror_func, lt__last_error): ...to here as
	additional internal interfaces to lt_mutex.  Changed all callers.
	(LT_MUTEX_SETERROR): Take an errorcode rather than a string.
	Changed all callers.
	* libltdl/ltdl.c, libltdl/ltdl.h (lt_dlmutex_register): Moved from
	here...
	* libltdl/lt_mutex.c, libltdl/lt_mutex.h (lt_dlmutex_register):
	...to here. New files.
	* libltdl/ltdl.c, libltdl/ltdl.h (lt_dladderror, lt_dlseterror)
	(lt_dlerror_table):
	Moved from here...
	* libltdl/lt_error.c, libltdl/lt_error.h (lt_dladderror)
	(lt_dlseterror, lt_dlerror_table): ...to here. New files.

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

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

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

	* libltdl/ltdl.c (argz_append, argz_create_sep, argz_insert)
	(argz_next, argz_stringify): Move from here...
	* libltdl/argz.c: New file. ...to here.
	* libltdl/lt__glibc.h: New file. Rename global symbols into the
	lt__ namespace.
	* libltdl/lt__private.h: Include lt__glibc.h.
	* libltdl/Makefile.am (libltdl_la_SOURCES): Add new files.
	(AM_CPPFLAGS): Add -DLTDL.
	* libltdl/argz.h (argz_append, argz_create_sep, argz_insert)
	(argz_next, argz_stringify): New file. Declare argz functions
	here, including lt__glibc.h when LTDL is defined to rename global
	symbols for libltdl.
	* m4/ltdl.m4 (AC_LTDL_FUNC_ARGZ): Add argz to AC_LIBOBJ if any of
	our argz_* functions are missing from the system libraries.

	* libltdl/ltdl.c: Move standard headers and preprocessor guards
	from here...
	* libltdl/lt__private.h: ...to here.  New file to declare ltdl's
	internal interfaces.
	* libltdl/ltdl.c: Include lt__private.h.
	* m4/ltdl.m4 (AC_LIB_LTDL): Add lt_dirent to AC_LIBOBJ if all of
	opendir, readdir and closedir are missing.
	(AC_CHECK_HEADERS): Remove assert.h, ctype.h, errno.h, malloc.h,
	stdio.h and stdlib.h; these headers are all available in standard
	c89 environments and newer.
	* libltdl/lt__private.h: Include them here unconditionally.
	* libltdl/lt__dirent.c (opendir, readdir, closedir): New file.
	Windows dirent emulation functions moved to here...
	* libltdl/ltdl.c (opendir, readdir, closedir): ...from here.
	* libltdl/lt__dirent.h: New file.  Rename the global symbols from
	lt__dirent.c into the lt__ namespace so they don't clash with
	other libraries.

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

	Factor out the bottom portability layer from ltdl.  Code in this
	layer has global symbols renamed by lt__pre89.h, and may not
	refer to any symbols except those provided by the system libraries
	or other code in the portability layer:

	* libltdl/lt__pre89.h: New file.  Rename all the symbols from
	LTLIBOBJS into the lt__ namespace so that they don't clash with
	other libraries.
	* libltdl/ltdl.c (rpl_memcpy, rpl_memmove, rpl_strchr, rpl_strcmp)
	(rpl_strrchr): Moved from here...
	* libltdl/memcpy.c (memcpy): ...to here, and fixed void *
	dereference bug...
	* libltdl/memmove.c (memmove): ...to here, and fixed void *
	dereference bug...
	* libltdl/strchr.c (strchr): ...to here...
	* libltdl/strcmp.c (strcmp): ...here...
	* libltdl/strrchr.c (strrchr): ...and here.
	* libltdl/Makefile.am (libltdl_la_SOURCES): Add lt__pre89.h.
	(libltdl_la_LIBADD, libltdlc_la_LIBADD): Add $(LTLIBOBJS).
	(ltdldata_DATA): Add replacement sources files.
	* m4/ltdl.m4 (AC_LIB_LTDL): Do careful config.h and LTLIBOBJ
	setting for missing pre89 functions.

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

	* libltdl/ltdl.h (LT_PARAMS): Removed.  Changed all users to
	ANSI prototypes.
	(lt_ptr): Keep backwards compatibility stub.
	* libltdl/ltdl.c, libltdl/ltdl.h: Use ANSI function declarations
	throughout.  s/lt_ptr/void */g.

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

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

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

	There was no clean separation of abstraction layers in libltdl.
	The first step in fixing this is to factor out the memory
	management abstraction, making a start on removing promiscuity
	from the underlying portability layer:

	* doc/libtool.texi (Libltdl interface): Remove lt_dlmalloc,
	lt_dlrealloc and lt_dlfree references.  The memory management
	layer used by libltdl is now private.
	* libltdl/lt_system.h: New installed header for system portability
	abstraction.
	* libltdl/ltdl.h: Use it.
	* libltdl/lt__alloc.c, libltdl/lt__alloc.h: New module above
	system portability layer to abstract ltdl's memory management.
	* libltdl/ltdl.c: Use lt__alloc.h.
	(closedir): Use free.
	(opendir): Use malloc/free.
	(lt__xalloc_die_callback): Report memory failures through
	lt_dlerror.
	(lt_dlinit): Use it to initialise memory management.
	(LT_DLMALLOC, LT_DLREALLOC, LT_DLFREE, LT_EMALLOC, LT_EREALLOC)
	(rpl_strdup, rpl_realloc, lt_estrdup, lt_emalloc, lt_erealloc):
	Removed in favour of...
	(lt__strdup, lt__memdup, MALLOC, REALLOC, FREE): ...these calls
	from libltdl/lt__alloc.h.  Changed all callers.
	(rpl_argz_append, rpl_argz_create_sep, rpl_argz_insert): As part
	of the portability layer, these functions no longer use libltdl
	memory management API.
	(free_vars): Factored out.
	(LT_DLMEM_REASSIGN): While redoing memory handling, renamed...
	* libltdl/lt__alloc.h (MEMREASSIGN): ...to this.
	* libltdl/Makefile.am (AUTOMAKE_OPTIONS): Let automake track
	dependencies automatically.
	(pkgincludedir): Override from parent package's setting.
	(pkginclude_HEADERS): Install lt_system.h.
	(libltdl_la_SOURCES): Add new files.
	* NEWS: Updated.
	Reported by Dalibor Topic <robilad@kaffe.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.

	* NEWS: Add a news item about xlc support that I forgot yesterday.

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

	* m4/libtool.m4, ltmain.in (darwin): Support IBM's xlc and xlc++.

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

	* m4/libtool.m4 (_LT_LANG_C_CONFIG): If $compiler is not set, then
	don't call the macros that test it.
	(_LT_LANG_CXX_CONFIG): Ditto.
	(_LT_LANG_F77_CONFIG): Ditto.
	(_LT_LANG_GCJ_CONFIG): Ditto.
	(_LT_LANG_RC_CONFIG): Ditto.

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

	* libtoolize.in (func_scan_files): sed BRE have no alternation, so
	break LT_INIT matcher out.
	(func_serial): Don't escape literal parens for grep BRE.

	* m4/libtool.m4 (LT_INIT): aclocal can't see AC_DEFUN_ONCE, so use
	AC_DEFUN and m4_define.
	* libtoolize.in (func_serial): No longer accept AC_DEFUN_ONCE...
	(func_grep): ...so mere grep is sufficient again...
	(EGREP): ...and this is no longer required.

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

	* m4/libtool.m4: Use LT_INIT as #serial tag.
	* libtoolize.in: Grok LT_INIT!  Pass A[CM]_PROG_LIBTOOL to...
	(func_serial_update): ...here, we now take an additional parameter
	containing another regex to match ancient serialed files.
	(func_serial): Accept AC_DEFUN_ONCE of the #serial tag...
	(func_grep): ...which requires egrep...
	(EGREP): ...substituted by config.status.
	(func_scan_files): Set seen_libtool if LT_INIT goes by.

	* Makefile.am (pkgmacro_DATA): Install ltoptions.m4.

	* libltdl/Makefile.am (AM_CPPFLAGS): Also check $top_builddir for
	config.h.
	(ltdl.o): config.h is in $top_builddir.

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

	* NEWS: Explain more fully why we no longer load libraries
	with global symbol resolution.
	* doc/libtool.texi (libtool script contents): Add missing
	documentation for 'inherit_rpath' variable.

	* configure.ac: Catch errors during calls to AC_PROG_CXX,
	AC_PROG_CXXCPP and AC_PROG_F77 before LT_INIT.  Only set the
	HAVE_CXX and HAVE_F77 conditions to true if an error didn't
	occur (AC_PROG_CXX leaves CXX="g++" even if it didn't find one).
	Set HAVE_GCJ and HAVE_RC to true correctly as well.
	* m4/libtool.m4 (LT_PROG_GCJ): If AC_PROG_GCJ or AM_PROG_GCJ are
	defined, expand to the definition of those instead of our own.
	Define GCJ to '' instead of 'no' if not found.
	(LT_PROG_RC) Define RC to '' instead of 'no' if not found.
	(_LT_LANG_GCJ_CONFIG): Require LT_PROG_GCJ to be expanded first.
	(_LT_LANG_RC_CONFIG): Require LT_PROG_RC to be expanded first.

	* libltdl/ltdl.c (sys_dl_open): Don't load libraries with global
	symbol resolution.
	* NEWS: Updated.

2004-03-24  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Add new variable, inherit_rpath, if the
	RPATHs of the libraries being linked are inherited in
	the output file. For systems with a linker exhibiting
	this feature, programs/libraries must be relinked at
	installation time.

	* m4/libtool.m4: 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.
	* tagdemo/Makefile.am, tagdemo/main.cpp, tagdemo/conv.h,
	tagdemo/conv.cpp: Augment tagdemo test to link a convenience
	library with a libtool library.

	* ltmain.in: Piecewise linking doesn't work when the output
	file is an absolute path, use the basename only instead.

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

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-22  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (_LT_CONFIG): Remove unneeded else condition
	code, now the support determination is done in m4.
	(_LT_LANG): Correct comment, unexpected leak from keybuk-lt-tag.patch.

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

	* libltdl/Makefile.am (libltdl_la_LDFLAGS): Increment CURRENT
	and AGE of libltdl, warranted by the addition of lt_dlhandle_find()
	since 1.5.2.

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

	Further sweeping changes to the user interface to libtool from
	`configure.ac' to allow users to better control the list of
	supported languages.  Three LT_INIT options 'no-lang', 'all-lang'
	and 'auto-lang' (the default) control the initial list and others
	may be added with LT_LANG.

	* m4/libtool.m4 (_LT_CONFIG): Renamed AC_LIBTOOL_CONFIG to _LT_CONFIG
	which is more consistent with our own namespace and gets us further out
	of Autoconf's.
	(_LT_LIBTOOL_TAGS): Output available_tags variable based entirely
	on the value of _LT_TAGS.
	(_LT_COPYING): Call _LT_LIBTOOL_TAGS to output available tags,
	always append tag configuration if the tag is available.
	(LT_LANG): New macro to enable support for a language that accepts
	tag names (eg. "CXX") or human language names (eg. "C++").
	(_LT_LANG): Internal support macro for above that appends the
	tag to _LT_TAGS and calls the appropriate config macro.
	(LT_INIT): Ensure that LT_LANG is not called before LT_INIT.
	(AC_LIBTOOL_TAGS): Removed, call LT_LANG for each language now.
	(_LT_AC_TAG_CHECK): Removed, _LT_LANG handles duplicate calls.
	(_LT_LANG_DEFAULT_CONFIG): Macro to set initial language support
	based on options passed to LT_INIT.
	(_LT_SETUP): Call _LT_LANG_DEFAULT_CONFIG.
	(_LT_AC_TAG_CONFIG): Removed, handled by _LT_LANG_DEFAULT_CONFIG.
	(_LT_AC_LANG_CXX, _LT_AC_LANG_F77, _LT_AC_LANG_GCJ): Removed,
	automatic language support inclusion now handled by
	_LT_LANG_DEFAULT_CONFIG.
	(AC_LIBTOOL_CXX): Obsolete macro, update to LT_LANG(C++).
	(AC_LIBTOOL_F77): Obsolete macro, update to LT_LANG(Fortran 77).
	(AC_LIBTOOL_GCJ): Obsolete macro, update to LT_LANG(Java).
	(AC_LIBTOOL_LANG_C_CONFIG_: Removed.
	(_LT_AC_LANG_C_CONFIG): Renamed to _LT_LANG_C_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(_LT_SETUP): Replace call to AC_LIBTOOL_LANG_C_CONFIG with call to
	new _LT_LANG_C_CONFIG macro.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Removed.
	(_LT_AC_LANG_CXX_CONFIG): Renamed to _LT_LANG_CXX_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(AC_LIBTOOL_LANG_F77_CONFIG): Removed.
	(_LT_AC_LANG_F77_CONFIG): Renamed to _LT_LANG_F77_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(AC_LIBTOOL_LANG_GCJ_CONFIG): Removed.
	(_LT_AC_LANG_GCJ_CONFIG): Renamed to _LT_LANG_GCJ_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(AC_LIBTOOL_LANG_RC_CONFIG): Removed.
	(_LT_AC_LANG_RC_CONFIG): Renamed to _LT_LANG_RC_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(LT_AC_PROG_GCJ): Renamed to LT_PROG_GCJ.
	(LT_AC_PROG_RC): Renamed to LT_PROG_RC.
	* m4/ltoptions.m4: Define new 'no-lang', 'auto-lang' and 'all-lang'
	options which set the default for _LT_LANG_DEFAULT_CONFIG.
	* m4/lt~obsolete.m4: Removed AC_LIBTOOL_CONFIG, _LT_AC_LANG_C_CONFIG,
	_LT_AC_LANG_GCJ_CONFIG, _LT_AC_LANG_RC_CONFIG; all of which are no
	long referenced in any way.
	* configure.ac: Enable all languages.
	* tests/cdemo/configure.ac, tests/demo/configure,ac,
	tests/depdemo/configure.ac, tests/f77demo/configure.ac,
	tests/mdemo/configure.ac, tests/pdemo/configure,ac,
	tests/tagdemo/configure.ac: Remove calls to AC_LIBTOOL_TAGS,
	the default 'auto-lang' mode now does the right thing.
	* doc/libtool.texi (The LT_INIT macro): Add documentation for
	new LT_INIT options and the LT_LANG macro, replacing the old
	documentation of AC_LIBTOOL_TAGS which is no more.
	* NEWS: Updated.

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

	* m4/libtool.m4: Removed AC_BEFORE references to AC_LIBTOOL_SETUP
	which is no more.
	* m4/lt~obsolete.m4: As AC_LIBTOOL_SETUP is no longer referenced,
	it can be removed from this file.  Remove _AC_PROG_LIBTOOL also.

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  Michael Pruett  <michael@68k.org>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS0 [irix]: Define
	archive_expsym_cmds so that --export-symbols will work.

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

	* 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-14  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Autoconf and LTLIBOBJS): The correct version
	of Autoconf is 2.54.
	From Alexandre Duret-Lutz  <adl@src.lip6.fr>

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

	* doc/libtool.texi (Using Automake): Cite correct Automake version
	for -dlopen quoting.
	(Autoconf and LTLIBOBJS): Cite correct Autoconf	versions
	throughout.
	(Distributing libltdl): Use AM_CPPFLAGS; INCLUDES is deprecated.
	From Alexandre Duret-Lutz  <adl@src.lip6.fr>

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

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

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

	* libtoolize.in: Remove --ltdl-tar.  It doesn't work with the
	current implementation, and seems more or less pointless.
	* doc/libtool.texi (Invoking libtoolize): Updated.
	* NEWS: Updated.

	* doc/libtool.texi: This manual has not been maintained properly
	for a number of years.  Much of what it said was outdated, or
	plain wrong with reference to modern autotools.  This change
	represents a first pass edit to clean up the obviously wrong.

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-03-02  Patrick Welche  <prlw1@newn.cam.ac.uk>

	* doc/libtool.texi (LT_INIT): Dumb typos fixed.

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

	* ltmain.in <install mode>: Add missing --help doc for
	-inst-prefix option.

	* ltmain.in <link mode>: Add missing --help doc for -shrext
	option.

	* ltmain.in (IFS): Move '\n' to beginning of IFS so that emacs
	doesn't offer to strip trailing ' \t' on every save.

	* ltmain.in: Add missing --help doc for --preserve-dup-deps.

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

	* Makefile.maint (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-20  Gary V. Vaughan  <gary@gnu.org>

	Sweeping changes to the user interface to libtool from
	`configure.ac' to be more like AC_INIT and accept a space
	delimited list of options.  Instead of calling `AC_LIBTOOL_DLOPEN;
	AC_PROG_LIBTOOL', we now recommend `LT_INIT([dlopen])':

	* m4/libtool.m4	(AC_PROG_LIBTOOL, _AC_PROG_LIBTOOL)
	(AC_LIBTOOL_SETUP): Removed.  Added AU_DEFUNs.
	(LT_INIT): Replace with an Autoconf like interface which accepts a
	version number as a minimum required libtool release at configure
	time.
	* m4/ltoptions.m4: New file inspired by automake/m4/amoptions.m4,
	which additionally flags an error if the configuring libtool
	macros are not new enough according to LT_INIT.
	(LT_OPTION_DEFINE): New macro to declare option handlers.
	(dlopen, win32-dll, shared, disable-shared, static)
	(disable-static, fast-install, disable-fast-install, pic-only)
	(no-pic): Newly LT_OPTION_DEFINEd option handlers that use...
	(_LT_ENABLE_SHARED, _LT_ENABLE_STATIC, _LT_ENABLE_FAST_INSTALL)
	(_LT_WITH_PIC, _LT_WIN32_DLL): New macros to handle
	LT_LIBTOOL_INIT options...
	* m4/libtool.m4 (AC_ENABLE_SHARED, AC_ENABLE_STATIC)
	(AC_ENABLE_FAST_INSTALL, AC_LIBTOOL_DLOPEN, AC_LIBTOOL_WIN32_DLL):
	...to replace these user interface macros, now defined as
	AU_DEFUNs.
	(AC_DISABLE_SHARED, AC_DISABLE_STATIC, AC_DISABLE_FAST_INSTALL):
	Removed.  No longer required with LT_INIT_LIBTOOL interface.
	Added AU_DEFUNs.
	(AM_ENABLE_SHARED, AM_DISABLE_SHARED, AM_ENABLE_STATIC)
	(AM_DISABLE_STATIC): Changed AU_DEFUNs to match new interface.
	(_LT_SETUP): Internal to LT_INIT, replaces AC_LIBTOOL_SETUP.
	* m4/lt~obsolete.m4 (AC_LIBTOOL_SETUP, _AC_PROG_LIBTOOL)
	(_LT_PROG_LTMAIN):  More AC_DEFUNs that have been retracted.
	* configure.ac: Use new interface.
	* doc/libtool.texi: Document new interface.
	* NEWS: Updated.

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  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (m4/ltversion.m4): Generate serial number by
	removing initial '1.' from the revision, replace @MACRO_SERIAL@
	with this new variable.
	* m4/ltversion.in: Use @MACRO_SERIAL@ for the serial number
	as some shells don't like a '.' when using test.

	* m4/ltversion.in: Add a serial number to this file otherwise
	libtoolize will refuse to copy it into $pkgdatadir, where it
	is needed by m4/libtool.m4.

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

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

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

	* ltmain.in, libtoolize.in, commit, config/mailnotify: Correctly
	quote usage of $basename and $dirname to avoid (unlikely) path
	expansion.

	* tests/sh.test: Test the config/ltmain.sh and libtoolize in the
	build directory not the source directory, where they won't exist
	during 'make distcheck'.
	* ltmain.in: Revert one line of previous intendation clean-up
	to enable one of the sh.test checks to pass.

	* tests/cdemo/configure.ac: Drop AC_PREREQ back to 2.54, this
	was debris from Gary's cvsapply going mad and wasn't backed
	out.

	* Makefile.am (pkgmacro_DATA): We have to distribute
	m4/ltversion.m4 because it can be needed before the Makefile
	that generates it exists.

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>

	* Makefile.maint, Makefile: Move rules intended for Libtool
	maintainers only out of the Makefile we distribute and into one
	that we only need keep in CVS.
	* README-alpha: Add -fMakefile.maint to the instructions where
	needed.

2004-02-12  Albert Chin-A-Young  <china@thewrittenword.com>
	Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Fix typo: duplcations -> duplications,
	Fix indentation of a handful of badly indented blocks,
	Fix last remaining use of 'grep' to $GREP,
	Remove unnecessary trailing slash where we break a line on a
	command separator.
	* m4/libtool.m4: Also remove unnecessary trailing slash where
	we break a line on a command separator.

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

	* m4/ltoptions.m4: This got committed by an over-keen Gary,
	but the support for this isn't ready yet and if aclocal decides
	to m4_include this (which it will) you'll get a non-functioning
	libtool.  Removed.

	* ltmain.in: Remove duplicated version checking block.

	* bootstrap, m4/libtool.m4: Argh, Gary went crazy after cvsapply
	went crazy and backed out more than he should've.  This patch puts
	some of it back again.

	* ltmain.in, libtoolize.in, commit, config/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.

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

	* ltmain.in: Fix typo: macro's -> macros.

	* ltmain.in: Correct definition of basename sed expression to
	not include single quotes.

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

	* libtoolize.in: Use $progpath as for ltmain.in to work around the
	IRIX bug described below.
	* commit, config/mailnotify: Ditto. 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-12  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (EXTRA_DIST): Remove config/mailnotify after all; it
	is of no use in a distribution tarball.

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

	* commit: Fix cut-n-paste error.

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

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

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

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

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

	* commit: Mail a nicer commit notification.

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

	* NEWS, bootstrap, configure.ac, ltmain.in, m4/libtool.m4:
	* m4/lt~obsolete.m4, tests/cdemo/configure.ac: Arghh.  cvsapply just
	went crazy and committed a bunch of stuff that shouldn't have been
	in the last changeset.  The patch backs it all out.

	* config/mailnotify: New file for mailing commit notifications,
	imported from cvs-utils.
	* commit: Updated from cvs-utils and tweaked for libtool.
	* Makefile.am (EXTRA_DIST): Add config/mailnotify.

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

	* bootstrap: Remove vcl.tmp, otherwise it can interfere with make.
	* Makefile.am (vcl.tmp): Move comment out of multi-line command,
	as this rule is called from bootstrap as if it were a Makefile.

	* m4/ltversion.in: New file to capture what version number macros
	are being used.
	* Makefile.am (m4/ltversion.m4): New rule to create it from
	m4/ltversion.in.
	(nodist_pkgmacro_DATA): Add m4/ltversion.m4.
	(EXTRA_DIST): Add m4/ltversion.in.
	* m4/libtool.m4 (AC_LIBTOOL_SETUP): AC_REQUIRE LTVERSION_VERSION
	from ltversion.m4.
	* bootstrap: Call the Makefile.am to create an initial
	m4/ltversion.m4.
	* ltmain.in: Diagnose version mismatches of various flavours.
	* TODO: Remove mismatch item.
	* NEWS: Updated.

	* Makefile.am ($(top_builddir)/config.status): Removed.
	* configure.ac (CONFIG_STATUS_DEPENDENCIES): This substitution is
	how automake-1.8 now informs all Makefiles when config.status
	needs to be rebuilt.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

	* configure.ac (AC_CONFIG_FILES): Generate libtoolize from here.
	* Makefile.am (libtool, libtoolize): These rules are redundant.
	Automake generates better rules for remaking these files.

	* m4/libtool.m4 (AC_LIBTOOL_SETUP): Catch unexpanded macros with
	beginning with LT_ and _LT_.
	* configure.ac (LT_MAJOR, LT_MINOR, LT_MICRO, LT_ALPHA): Renamed
	to lt_major, lt_minor, lt_micro, lt_alpha to save triggering the
	unexpanded macros error.

	* m4/libtool.m4 (AC_PROVIDE_IFELSE): Removed.  We now require
	Autoconf 2.58, which ships this macro anyway.

	* Makefile.am: Comment typo.

	* m4/libtool.m4 (LT_PREREQ): Declare the minimum release number
	that is required for the calling code.
	* doc/libtool.texi (AC_PROG_LIBTOOL): Document it.
	* NEWS: Updated.

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.
	* m4/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.
	(dist_pkgdata_DATA): List config.guess and config.sub here
	(pkgdata_SCRIPTS): instead of here.

2003-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-01-31  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (_LT_CONFIG_STATUS_DECLARE): Change `echo to
	`$echo, causes problems when builtin echo is broken. Reported
	by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.

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?)
	(FETCHFILES): Remove obsolete libltdl mentions.
	* README-alpha: Update CVS instructions as everything's changed
	on Savannah.
	(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; remove old reference
	to OLDVERSION.

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

	* NEWS: Include 1.5.2 release information.

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

	This fixes a bug in the libtoolize ltdl source installation rules,
	which were copying Makefile.in from the libtool tree into the
	package running libtoolize.  Now we explicitly list the files to
	copy to force the package to generate its own Makefile.in:

	* libltdl/Makefile.am (libltdl_la_SOURCES, libltdlc_la_SOURCES):
	Add ltdl.h.
	(ltdldatadir): New variable for installation directory of
	libtoolize --ltdl files.
	(ltdldata_DATA): Tell automake what files to copy there at install
	time (and remove at unistall time!).
	(local-install-files): Removed.  This hack is not required
	anymore, the automake generated install rules are much more
	advanced than this.
	* Makefile.am (install-data-hook, uninstall-local): Removed.
	Libltdl files for libtoolize are installed by their own Makefile
	now.

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

	* m4/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-22  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (LT_AC_PROG_EGREP): Wrapper for AC_PROG_GREP.
	AIX has a brain-dead grep that only handles lines < 2048
	characters.  Default GREP incase we are not using a future
	autoconf that sets it for us :-)  Changed all callers to use $GREP
	instead of grep, and to AC_REQUIRE LT_AC_PROG_EGREP.
	Declare GREP as a libtool config var.
	* ltmain.in: Use it.
	* tests/sh.test (scripts): Accept `if $GREP "^foo=bar"' by
	tightening the regexp.
	Reported by Albert Chin-A-Young  <china@thewrittenword.com>

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.

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

	* m4/libtool.m4 (AC_PROG_LD_RELOAD_FLAG): On darwin change the
	reload_cmds to use $CC, otherwise ld will thin out any fat
	objects.

2004-01-18  Benjamin Reed  <ranger@befunk.com>

	* ltmain.in: Fix handling of frameworks in search paths.  Also
	a one-liner fix to eval shrext in the libtool library search.

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

	* configure.ac (AM_INIT_AUTOMAKE): Require 1.8 for bootstrap, or
	else aclocal.m4 is huge, and m4 directory is not distributed.

	* configure.ac (AC_CONFIG_HEADERS): Create config.h in
	$top_srcdir.
	* m4/ltdl.m4 (AC_LIB_LTDL): Run AC_CONFIG_HEADERS for the user if
	necessary. Calculate filename from first argument to
	AC_CONFIG_HEADERS, and substitute as CONFIG_H.
	* libltdl/Makefile.am (AM_CPPFLAGS): Make sure we are searching in
	$top_srcdir for headers.
	(DEFS): Override the default HAVE_CONFIG_H with the config.h
	filename.
	(ltdl.lo): Reference config.h via $(CONFIG_H).
	* libltdl/ltdl.c (HAVE_CONFIG_H): Ditto.

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

	* m4/lt~obsolete.m4: Add a file containing aclocal-fooling
	macro definitions which stop the contents of an installed
	libtool.m4 ending up in our aclocal.m4 when we bootstrap.
	* Makefile.am (pkgmacro_DATA): Note that we don't need to add
	lt~obsolete.m4 to this list.

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

	* m4/libtool.m4 (_LT_COPYING): Factor out copyright message so it
	only needs to be updated in one place.
	(AC_LIBTOOL_CONFIG): Refactor to be more readable.  Only add
	tags if a compiler was found; ie if you have no gcj compiler,
	don't tack the GCJ tag onto the generated libtool script.

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

	* m4/libtool.m4: Quote shrext as it is evaled in ltmain.

2004-01-11  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-11  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (func_copy_all_files): s/xfunc_copy/Xfunc_copy.
	Now the test can actually succeed sometimes.

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

	* libtoolize.in: Break out of the command argument parse loop when
	-- is encountered.

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

	* libtoolize.in (func_copy_all_files): s/test "x/test "X/ to keep
	tests/sh.test happy.

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

	* Makefile.am (aclocal_macros, aclocal_DATA): Removed.
	(EXTRA_DIST): Remove m4 macro files; they are automatically
	added by automake.
	(pkgmacrodir): Where to install libtool macro files.
	(pkgmacro_DATA): List installable libtool macro files.
	(install-data-local): Remove previous versions of ltdl.m4 and
	libtool.m4 from their old location.
	* libtoolize.in: Use new pkgmacrodir installed macros when
	libtoolizing a project.  Treat libtool.m4 and ltdl.m4 specially,
	and func_serial_update() any other files from pkgmacrodir.
	(pkgmacrodir): Where to find installed libtool macro files.
	(aclocaldir): Removed.
	(func_copy_all_files): Add an optional callback parameter to
	control how files are copied.  If the callback is passed, don't
	tell it whether it can copy or not.
	(func_serial): Exchange parameters and make macro_regex optional,
	so that this function can be used to extract serial numbers from
	files with the traditional /^# serial [1-9][0-9]*$/ syntax.
	Changed all callers.
	(func_serial_update): Make macro_regex optional last parameter, so
	that this function can be used as a callback for
	func_copy_all_files().  Changed all callers.
	* m4/ltsugar.m4: Add a serial number.

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

	A complete rewrite of the m4 code involved in the generation of
	libtool via config.status.  The old way involved manually
	synchronising disparate bits of shell code in several macros, to
	quote a copy of a shell variable, put that in config.status, maybe
	add it to some quotation loops to prevent early expansion, and
	then add a block to _LT_CONFIG_COMMANDS to bring it into the
	libtool script.  The new way is to mark shell variables for
	propogation using _LT_DECL for language independent variables, or
	_LT_TAGDECL for those that need to be propogated in several
	language flavours.  The marking can be done in the macro that
	probes the variables, and this new m4 machinery takes care of
	synchronising all the other bits of code at autoconf time:

	* m4/ltsugar.m4:  New file.  Macros that are useful outside the
	context of libtool.  Initially, contains some generalised list
	management macros, and the scaffolding for dictionary type data
	storage and retrieval.
	* Makefile.am (aclocal_macros): Install ltsugar.m4.
	* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
	the libtool script, along with a comment, and hints for quoting
	and renaming.
	(_LT_TAGDECL): Similarly mark a tagged shell variable for export
	in each tag.
	(lt_decl_tag_varnames, lt_decl_quote_varnames)
	(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
	(lt_decl_all_varnames):  New utility macros for managing lists of
	shell variable names from _LT_DECL and _LT_TAGDECL.
	(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
	Expand to correctly quoted variable declarations in config.status
	from all marked shell variables.
	(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
	declaration for libtool tag section.
	(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
	variables to _LT_LIBTOOL_DECLARE.
	(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
	friends to generate all the variable passing shell code for
	config.status, to get marked variables from libtool.m4 into
	libtool itself eventually.
	(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
	configuration.  Changed all client macros to mark variables
	suitably rather than the hand pasting that was necessary
	previously.
	(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
	(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
	propogation to the libtool script.

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

	* libtoolize.in (seen_gettext): Removed unused variable.

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

	* libtoolize.in (func_scan_files): Don't assume the existence of
	aclocal.m4.  Make the comment more descriptive.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

	* NEWS: Note libtoolize changes.

	* ChangeLog.2003: New file, containing all the ChangeLog entries
	from 2003.  Trimmed ChangeLog accordingly.

	* ltmain.in: Output 2004 in the copyright from libtool --version.

2004-01-03  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-02  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4: Ensure that ${ZSH_VERSION+set} is properly escaped.

	* m4/libtool.m4 (CDPATH): Change the CDPATH setting so that it
	allows for zsh differences, as noted in the autoconf manual's
	Portable Shell - Special Shell Variables section.

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

	* .cvsignore: Ignore stamp-vcl created by the Makefile.

2004-01-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
	Joe Orton  <joe@manyfish.co.uk>

	* m4/libtool.m4 (AC_LIBTOOL_CONFIG): Add extra blackslash
	in front of all the inner double-quotes as this is removed
	on Solaris, IRIX and AIX leading to broken definitions
	in config.status.

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

	* NEWS: Next release will be in 2004.

Continued in ChangeLog.2003
