2010-08-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Silence order-only configure test for AIX make.
	* configure.ac: Also drop standard output, for AIX 5.1 make.

2010-08-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* NEWS: Only bootstrapping needs new Automake and Autoconf.

2010-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	check-interactive and check-noninteractive for both testsuites.
	* Makefile.am (COMMON_TESTS, TESTS): Split into ...
	(NONINTERACTIVE_TESTS, INTERACTIVE_TESTS): ... these new
	variables.
	(check-interactive-new): Rename from check-interactive.
	(check-noninteractive-new): Rename from check-noninteractive.
	(check-interactive-old, check-noninteractive-old): New targets.
	(check-interactive, check-noninteractive): Depend on the
	respective targets for the old and the new test suites.
	* doc/libtool.texi (Test descriptions): Simplify description
	about check-interactive and check-noninteractive.  Add index
	entries.

	Adjust docs for renaming and for parallel-tests.
	* README: Update example TESTS setting.
	* README.alpha: Likewise.
	* doc/libtool.texi (Test descriptions): Update for test renaming,
	adjust descriptions accordingly.

	Update VERBOSE handling for parallel-tests driver.
	* tests/defs.m4sh: Default to verbose output, drop now-unneeded
	handling of 'VERBOSE=no'.
	* README: Update example usage.
	* README.alpha: Likewise.
	* doc/libtool.texi (Test descriptions, When tests fail): Remove
	unneeded VERBOSE recommendations.  Point to per-test log files
	and test-suite.log summary file.

	Enable parallel-tests test driver for the old testsuite.
	* configure.ac: New configure test to find out whether `make'
	supports order-only prerequisites; set @ORDER@ accordingly.
	(AM_INIT_AUTOMAKE): Enable parallel-tests option.
	* tests/defs.m4sh (prefix): Derive install prefix for tests
	from the test name, to avoid clashes.
	* Makefile.am (CXX_TESTS, F77_TESTS, FC_TESTS, COMMON_TESTS):
	Reformat.  Adjust for renamed tests.  Add dependencies between
	the respective log files of the tests, to ensure proper ordering.
	Use order-only dependencies if possible, between test groups that
	use the same directory.
	(clean-local-legacy): Remove `_inst-*' directories as well.
	Prompted by suggestion from Bob Friesenhahn.

	New alias scripts for old tests run more than once.
	* tests/cdemo-shared-exec.test, tests/cdemo-shared-make.test,
	tests/cdemo-static-exec.test, tests/cdemo-static-make.test,
	tests/cdemo-undef-exec.test, tests/cdemo-undef-make.test,
	tests/demo-nofast-exec.test, tests/demo-nofast-inst.test,
	tests/demo-nofast-make.test, tests/demo-nofast-unst.test,
	tests/demo-nopic-exec.test, tests/demo-nopic-make.test,
	tests/demo-pic-exec.test, tests/demo-pic-make.test,
	tests/demo-shared-exec.test, tests/demo-shared-inst.test,
	tests/demo-shared-make.test, tests/demo-shared-unst.test,
	tests/demo-static-exec.test, tests/demo-static-inst.test,
	tests/demo-static-make.test, tests/demo-static-unst.test,
	tests/depdemo-nofast-exec.test, tests/depdemo-nofast-inst.test,
	tests/depdemo-nofast-make.test, tests/depdemo-nofast-unst.test,
	tests/depdemo-shared-exec.test, tests/depdemo-shared-inst.test,
	tests/depdemo-shared-make.test, tests/depdemo-shared-unst.test,
	tests/depdemo-static-exec.test, tests/depdemo-static-inst.test,
	tests/depdemo-static-make.test, tests/depdemo-static-unst.test,
	tests/f77demo-shared-exec.test, tests/f77demo-shared-make.test,
	tests/f77demo-static-exec.test, tests/f77demo-static-make.test,
	tests/fcdemo-shared-exec.test, tests/fcdemo-shared-make.test,
	tests/fcdemo-static-exec.test, tests/fcdemo-static-make.test,
	tests/mdemo-shared-exec.test, tests/mdemo-shared-inst.test,
	tests/mdemo-shared-make.test, tests/mdemo-shared-unst.test,
	tests/mdemo-static-exec.test, tests/mdemo-static-inst.test,
	tests/mdemo-static-make.test, tests/mdemo-static-unst.test,
	tests/tagdemo-shared-exec.test, tests/tagdemo-shared-make.test,
	tests/tagdemo-static-exec.test, tests/tagdemo-static-make.test,
	tests/tagdemo-undef-exec.test, tests/tagdemo-undef-make.test:
	New files.

	Require Automake 1.11.1 for Libtool, enable color-tests.
	* configure.ac (AM_INIT_AUTOMAKE): Require 1.11.1.  Enable
	color-tests.
	(LTDL_SUBDIR_LIBOBJS): Remove now-obsolete conditional and
	feature test for Autoconf 2.59 and Automake 1.9.x workaround.
	* Makefile.am: Simplify accordingly.
	* bootstrap: Remove obsolete WORKING_LIBOBJ_SUPPORT workarounds
	for Autoconf 2.59 and Automake 1.9.6.

2010-08-21  Rainer Tammer <tammer@tammer.net>  (tiny change)

	Avoid issues with AIX resident shared libraries in old testsuite.
	* tests/defs.m4sh [aix]: Remove file mode permission for others,
	so shared libraries are not kept in memory after execution.
	Fixes failures of repeated mdemo-inst.test with on AIX 5.3.

2010-08-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Skip part of versioning test on AIX.
	* tests/versioning.at (versioning): The AIX linker always
	records the unversioned library name, even with runtimelinking,
	so skip the execution test for the incompatibly upgraded
	library.
	Report by Rainer Tammer.

	Remove dead code from versioning test.
	* tests/versioning.at (versioning): No need to build unused
	prog3.

2010-08-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Don't hide the table of contents in the manual.
	* doc/libtool.texi: Move the table of contents to the beginning.
	Prompted by patch from Bruno Haible against Automake.

	Remove superfluous dependency in Makefile.am.
	* Makefile.am (tests/demo-conf.test): Remove dependency on
	libtool, this test is a primary source and not generated.

	Bump copyright years in manual.
	* doc/libtool.texi: Bump copyright years.

2010-08-13  Peter Rosin  <peda@lysator.liu.se>

	Allow the use of a listing file if the archiver supports it.
	* libltdl/m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE): Move detection
	of a suitable archiver...
	(_LT_PROG_AR): ...to here. New macro, also detect if the
	archiver supports a listing file with the new variable
	archiver_list_spec.
	* libltdl/config/ltmain.m4sh: If the archiver supports a listing
	file, use it when max_cmd_len is exceeded.  This is needed for
	tool chains such as MSVC which do not support piece by piece
	linking (-r -o).
	* doc/libtool.texi (libtool script contents): Update with
	archiver_list_spec description.

2010-08-10  Gary V. Vaughan  <gary@gnu.org>  (tiny change)

	Make testsuite compatible with Autoconf 2.62 again.
	* tests/getopt-m4sh.at (AT_CHECK): Autotest 2.62 chokes on unquoted
	'#' in AT_CHECK, so replace all uses with '@%:@' quadrigraph.
	Suggested by Eric Blake <eblake@redhat.com>
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

2010-08-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix more problematic code from "Add func_append_quoted and do..."
	* libltdl/config/ltmain.m4sh (func_mode_link): Revert back
	func_append instances that as assignments relied on the shell
	not performing word splitting on the right hand side of the
	assignment.

	Fix another typo on "Add func_append_quoted and do..."
	* libltdl/config/ltmain.m4sh (func_mode_link): Fix regression in
	computation of finalize_rpath introduced in v2.2.10-40-g0da7d80,
	fixing several testsuite failures on AIX.
	Report by Rainer Tammer.

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

	Avoid unwanted error message in configure output.
	* libltdl/m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Try print
	in subshell, so eventual `print: not found' is hidden reliably.

	Fix compilation of program sources on AIX.
	* tests/lt_dlopenext.at (lt_dlopenext error messages): Do not
	use $LIBTOOL when compiling plain object, AIX by default does
	not enable static archives.
	* tests/ltdl-libdir.at (libdir of installed modules): Likewise.
	Report by Rainer Tammer.

	Do not call toplevel configure in non-VPATH build.
	* tests/deplibs-mingw.at (deplibs without file command): Use
	LT_AT_CONFIGURE for consistency, update comment about why it
	might fail.
	* tests/pic_flag.at (override pic_flag at configure time): Skip
	test if we are building in-tree.
	Report by Rainer Tammer.

	Allow running pic_flag test with different shell.
	* tests/testsuite.at (LT_AT_CONFIGURE): Accept optional second
	argument specifying the configure script to run.
	* tests/pic_flag.at (override pic_flag at configure time):
	Use LT_AT_CONFIGURE.

	Ensure not to reverse preserving of --debug for relinking/finish.
	* libltdl/config/ltmain.m4sh (func_check_version_match): Only
	preserve '--debug' switch if $opt_debug is not equal to ':'.
	* tests/help.at (debug tracing): New test group.
	Report by Rainer Tammer.

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

	Fix AC_NO_EXECUTABLES test failure on AIX.
	* libltdl/m4/libtool.m4 (_LT_SYS_MODULE_PATH_AIX): Wrap link
	test in AC_CACHE_VAL, using cache variable $lt_cv_aix_libpath.
	* tests/no-executables.at (AC_NO_EXECUTABLES): Preset it, to
	avoid link test.
	Bug report by Rainer Tammer.

	Fix ltdl-libdir test for C++ compilers.
	* tests/ltdl-libdir.at (libdir of installed modules): Declare
	module function as extern "C".

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

	Let `libtool' without arguments point to `--help' again.
	* libltdl/config/ltmain.m4sh (func_check_version_match):
	Remove duplicate and wrong error check.
	* tests/help.at (standard command line options): Extend test.
	Report by Rainer Tammer.

	Avoid syntax error due to shift of nonexistent parameter.
	* libltdl/config/ltmain.m4sh <command-line handling>: Only shift
	if there is a positional parameter to shift.  Fixes `libtool
	--help' when dash is used.
	Report by Rainer Tammer.

	Fix testsuite errors due to shell quoted parameter expansion issue.
	* tests/getopt-m4sh.at (_LT_AT_GETOPT_M4SH_SETUP): Insert space
	between double-quoted and unquoted shell parameter, as bash
	4.0.28 doesn't add one in its output if the expansion of the
	second one starts with a space.
	(short option splitting, enhanced shell short option splitting)
	(long option splitting, XSI long option splitting): Add space in
	expected output.
	Fixes testsuite failures on AIX, FreeBSD, etc.
	Report by Rainer Tammer.

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

	Fix build failure with AIX sh due to shell quoting error.
	* libltdl/config/ltmain.m4sh (func_append_quoted): Document
	that this function inserts a separator space.
	(func_mode_compile): Do not pass extra space here.
	Fixes regression introduced in v2.2.10-49-gc13532a.
	Report by Rainer Tammer.

2010-08-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix pic_flag test unportabilities.
	* tests/pic_flag.at (override pic_flag at configure time): Skip
	test if the compiler produces a warning containing `fpic'.
	Do not use nonportable `grep -e', for Solaris.
	Report by Charles Wilson.

2010-08-01  Paolo Bonzini  <bonzini@gnu.org>

	Fix bug in postdeps computation
	* libltdl/m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Actually
	concatenate $prev and $p.

2010-07-26  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Don't always skip XSI tests
	* tests/getopt-m4sh.at: Use new signature as implemented by
	de8a0992b21b76a13c302cf48588ad5f6042595c, when determining
	whether to test Extended-shell functions.

2010-07-18  Peter Rosin  <peda@lysator.liu.se>

	* tests/stresstest.at: Link with main.lo when liba is shared
	and linking main with -no-install.

2010-07-18  Peter Rosin  <peda@lysator.liu.se>

	* tests/stresstest.at [MSVC]: dllimport all imported
	variables.

2010-07-17  Peter Rosin  <peda@lysator.liu.se>

	dllimport the variable for MSVC in link-order.at
	* tests/link-order.at [MSVC]: Makes the test pass by dllimporting
	imported variables when working with shared libraries.

2010-07-08  Peter Rosin  <peda@lysator.liu.se>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Make preloading heed libname_spec.
	Fixes testsuite failure for lt_dladvise.at on MSYS/MSVC.
	* libltdl/ltdl.c (libprefix): New static variable describing
	the prefix of static archives.
	(try_dlopen): Use libprefix.
	* libltdl/m4/ltdl.m4 (_LTDL_SETUP): Export prefix of static
	archives to config.h. Also fix assignment of LTDLOPEN to be more
	efficient and less error prone while at it.

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

	Rename _LT_PROG_XSI_REPLACE macro to _LT_PROG_FUNCTION_REPLACE.
	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Rename to
	_LT_PROG_REPLACE_SHELLFNS.
	(_LT_PROG_XSI_REPLACE): Rename to _LT_PROG_FUNCTION_REPLACE.
	(_LT_PROG_FUNCTION_REPLACE): Change decorator comment to use
	'Extended shell' rather than 'XSI' on successful replacement.
	* libltdl/config/general.m4sh (func_dirname, func_basename)
	(func_dirname_and_basename, func_stripname): Change decorator
	comment to use 'extended shell' rather than 'XSI' on fallback
	implementations.
	* libltdl/config/getopt.m4sh (func_split_short_opt)
	(func_split_long_opt): Ditto.
	* libltdl/config/ltmain.m4sh (func_append, func_append_quoted)
	(func_arith, func_len, func_lo2o, func_xform): Ditto.
	* tests/getopt-m4sh.at (_LT_AT_XSI_FUNC_EXTRACT): Rename to
	_LT_AT_EXTENDED_SHELL_FUNC_EXTRACT.
	(_LT_AT_EXTENDED_SHELL_FUNC_EXTRACT): Change regular expression to
	match new replacable function decorator comments.

2010-07-08  Peter Rosin  <peda@lysator.liu.se>

	Optimize assignment of output_la.
	* libltdl/config/ltmain.m4sh (func_mode_link): Save two fork/exec
	instances.
	Report by Ralf Wildenhues.

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

	Fix a cut-n-pasto in "2010-07-07 Charles Wilson" patch.
	* libltdl/config/ltmain.m4sh (func_mode_link): Remove spurious
	variable dereference.

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

	Tidy m4 comment header underline.
	* libltdl/m4/libtool.m4 (_LT_CHECK_SHAREDLIB_FROM_LINKLIB): Make
	sure hyphens in function name comment header underline line up.

2010-07-07  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[cygwin|mingw] fix dlpreopen with --disable-static
	* libltdl/config/general.m4sh (func_tr_sh): New function.
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms) [cygwin|mingw]:
	Obtain DLL name corresponding to import library by using value
	stored in unique variable libfile_$(transliterated implib name).
	If that fails, use $sharedlib_from_linklib_cmd to extract DLL
	name from import library directly. Also, properly extract dlsyms
	from the import library.
	(func_mode_link) [cygwin|mingw]: Prefer to dlpreopen DLLs
	over static libs when both are available.  When dlpreopening
	DLLs, use linklib (that is, import lib) as dlpreopen file,
	rather than DLL. Store name of associated la file in
	unique variable libfile_$(transliterated implib name)
	for later use.
	(func_win32_libid): Accomodate pei-i386 import libs
	as well as pe-i386.
	(func_cygming_dll_for_implib): New function.
	(func_cygming_dll_for_implib_fallback): New function.
	(func_cygming_dll_for_implib_fallback_core): New function.
	(func_cygming_gnu_implib_p): New function.
	(func_cygming_ms_implib_p): New function.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Adjust sed
	expressions for lt_cv_sys_global_symbol_to_c_name_address and
	lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
	as trailing space after module name is optional.
	(_LT_LINKER_SHLIBS) [cygwin|mingw][C++]:
	Set exclude_expsyms correctly for $host. Simplify regular
	expression in export_symbols_cmds.
	(_LT_LINKER_SHLIBS) [cygwin|mingw|pw32][C]: Set exclude_expsyms
	correctly for $host. Enable export_symbols_cmds to identify
	DATA exports by _nm_ prefix.
	(_LT_CHECK_SHAREDLIB_FROM_LINKLIB): New macro sets
	sharedlib_from_linklib_cmd variable.
	(_LT_DECL_DLLTOOL): New macro ensures DLLTOOL is always set.

2010-07-05  Peter Rosin  <peda@lysator.liu.se>

	* tests/export.at [MSVC]: dllimport all imported variables.

2010-07-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
	    Peter Rosin  <peda@lysator.liu.se>

	Support for response files with $NM.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS)
	<nm_file_list_spec>: New tag variable. Set it to '@' if input
	files can be passed to $NM in a file named with the '@' option.
	* libltdl/config/ltmain.m4sh (func_mode_link): When
	nm_file_list_spec is nonempty, use it to avoid skipped_export.
	* doc/libtool.texi (libtool script contents): Document
	new variable.

2010-07-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix ccache test for MSVC.
	* tests/static.at (ccache -all-static): Ignore compiler stderr.
	Reported by Peter Rosin.

2010-07-03  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Avoid false failures caused by filesystem interaction
	* tests/dlloader-api.at (dlloader API): Use uglified names for
	pseudo-modules.

2010-07-03  Peter Rosin  <peda@lysator.liu.se>

	Fix typo in "Add func_append_quoted and do..."
	* libltdl/config/ltmain.m4sh (func_mode_compile): Use
	func_append_quoted instead of func_append.

2010-07-02  Peter Rosin  <peda@lysator.liu.se>

	Don't trigger file name expansion when embedding manifests.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
	[ cygwin, mingw, cegcc ] <cl*>: Remove all spaces in the
	case statement of postlink_cmds to make file name expansion
	more unlikely.
	(_LT_LANG_CXX_CONFIG): Likewise, but also add the missing |.

2010-07-01  Peter Rosin  <peda@lysator.liu.se>

	Fix regression caused by "Add func_append_quoted and do..."
	* libltdl/config/ltmain.m4sh (func_mode_link): Remove leftover
	"_libs" trash.

2010-06-28  Peter Rosin  <peda@lysator.liu.se>

	For MSVC, embed the manifest as a resource in the executable.
	Fixes a lot of testsuite failures with MSVC 2003 (v8.0) and
	above (and perhaps also MSVC .Net) related to running programs
	that have been moved (e.g. installed) without their manifests
	also having been moved.
	* libltdl/m4/libtool.m4 (_LT_PATH_MANIFEST_TOOL): New macro
	that locates the Manifest Tool (mt) and verifies that it is
	indeed the manifest tool. The result is stored in the new
	variable MANIFEST_TOOL.
	(_LT_LINKER_SHLIBS) <postlink_cmds>: New tag variable.
	[ cygwin, mingw, cegcc ] <cl*>: Embed the manifest file as a
	resource. Make sure the embedding work regardless of if the
	@OUTPUT@ file name includes a trailing $EXEEXT.
	(_LT_LANG_CXX_CONFIG): Likewise.
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG): Require the above
	_LT_PATH_MANIFEST_TOOL.
	* libltdl/config/ltmain.m4sh (func_mode_link): After linking
	a program, replace @OUTPUT@ in $postlink_cmds and then execute
	the commands.
	* doc/libtool.texi (libtool script contents): Document
	new postlink_cmds variable.
	(LT_INIT): Add that the MANIFEST_TOOL environment variable can
	be used to override the manifest tool to use.
	* tests/exeext.at: New. Make sure linking with both -o prog
	and -o prog$EXEEXT works.
	* Makefile.am (TESTSUITE_AT): Update.
	(TESTS_ENVIRONMENT): Propagate $(MANIFEST_TOOL) to the
	testsuite.
	* NEWS: Add note of the new MANIFEST_TOOL environment variable.

2010-06-24  Peter Rosin  <peda@lysator.liu.se>

	Add MSVC support.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG) [mingw, cygwin]: Add
	support for the Microsoft C/C++ Compiler (cl) relying on help
	from the compile script in Automake.
	* NEWS: Add note of the above.

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

	Skip `enhanced shell option appending' test when not available.
	* tests/getopt-m4sh.at [enhanced shell option appending]:
	_LT_AT_XSI_FUNC_EXTRACT will not be able to find the enhanced
	libtool func_append function if the replacement wasn't substituted
	by configure, since the decorator comments will be different - in
	that case simply skip the test.

2010-06-30  Gary V. Vaughan  <gary@gnu.org>

	Add func_append test cases for smart and retarded implementations.
	* tests/getopt-m4sh.at (_LT_AT_FALLBACK_FUNC_EXTRACT): New
	macro to extract a fallback function implementation from
	ltmain.m4sh.
	[option appending]: Use it for a test of the fallback
	implementation of func_append.
	[enhanced shell option appending]: And also test the enhanced
	implementation.
	* libltdl/config/ltmain.m4sh (func_append_quoted): Fix missing \\
	to escape a quoted space for eval.
	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Fix missing $ in
	dereference of func_append inline replacement for retarded
	shells.

2010-06-29  Gary V. Vaughan  <gary@gnu.org>

	Correct func_split_short_opt comment cut-n-pasto.
	* libtool/config/getopt.m4sh (func_split_short_opt): Fix
	the function comment.

	Use a real XSI compliant func_split_short_opt substitution.
	* libtool/m4/libtool.m4 (_LT_CHECK_SHELL_FEATURES): Remove
	test ${foo:n:m} substrings, instead adding a ${foo%??} check
	to the existing XSI tests.
	(_LT_PROG_XSI_SHELLFNS): Remove the ${foo:n:m} based
	func_split_short_opt substitution in favour of a properly
	XSI compliant substitution.
	Suggested by Paolo Bonzini.

2010-06-28  Gary V. Vaughan  <gary@gnu.org>

	Add func_append_quoted and do inline func_append substitutions.
	* libtool/config/ltmain.m4sh: Replace all occurrences of
	`foo="$foo bar"' with func_append. No decorator comment was
	added since /func_append [a-zA-Z0-9_]* "/ is already an
	excellent match regexp, and additional comments would only
	complicate things.
	(func_append_quoted): New function that quotes a value with
	func_quote_for_eval before appending it.  To avoid quoting the
	whitespace in the passed value, a single whitespace is added
	automatically.  Changed callers where possible.
	* libtool/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Perform a
	`+=' implementation substitution for func_append_quoted.  More
	importantly, systematically replace matching func_append calls
	with inline `+=' when supported (for maximum speed), and
	longhand `foo="$foo bar"' otherwise to avoid the function
	overhead.

	Add an XSI replacement for func_split_short_opt, with test cases.
	* libltdl/config/getopt.m4sh (m4go_shortnoargs): Remove 'v' now
	that getopt.m4sh doesn't steal that letter for the --version
	short option.
	* libltdl/config/ltmain.m4sh (M4SH_GETOPTS): We can now use 'v'
	as a short option for '--verbose'.
	* libltdl/config/getopt.m4sh (m4go_printopts): Add back in the
	leading '-' for remaining non-argument short options.
	(func_split_short_opt): Use the correct sed script variable.
	* libltdl/m4/libtool.m4 (_LT_CHECK_SHELL_FEATURES): Also ensure
	that XSI substring extraction is supported.
	(_LT_PROG_XSI_SHELLFNS): Use XSI substring extraction to split
	short options to avoid unnecessary forks if the host shell
	supports that.
	* tests/getopt-m4sh.at: New tests for getopt.m4sh coverage.
	* Makefile.am (TESTSUITE_AT): Add getopt-m4sh.at.
	(TESTS_ENVIRONMENT): Pass M4SH and SED for substition into the
	m4sh expansion performed in tests/getopt-m4sh.at.

2010-06-27  Gary V. Vaughan  <gary@gnu.org>

	Add missing case branch terminators.
	* libltdl/config/ltmain.m4sh: Fixed everal case branches with
	missing ';;' terminators.

	Use TAB-SPACE in preference to SPACE-TAB.
	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_REPLACE): Some editors
	might optimise away the SPACE in SPACE-TAB sequences, so use
	TAB-SPACE just in case.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	Amend a missed opt_mode rename instance in ltmain.m4sh.
	* libltdl/config/ltmain.m4sh <mode>: Rename to opt_mode.

	Fix portability regressions in today's earlier changeset.
	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_REPLACE): `sed -i' is not
	portable; use `mv -f ...|| cp -f ...' instead.
	Add an initial backslash to sed `c' substitutions with leading
	whitespace, so that indentation is not removed by some non-POSIX
	compliant sed implementations.
	(_LT_PROG_XSI_SHELLFNS): Display a diagnostic warning message if
	one or more XSI function replacements failed.

	getopt.m4sh generated libtool option parser, and XSI improvements.
	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Moved portable
	shell versions of various utility functions from here...
	* libltdl/config/getopt.m4sh (func_split_long_opt): ...to here...
	* libltdl/config/general.m4sh (func_dirname, func_basename)
	(func_dirname_and_basename, func_strip_name): ...here...
	* libltdl/config/ltmain.m4sh (func_append, func_arith, func_len)
	(func_lo2o, func_xform): ...and here.
	* libltdl/config/libtool.m4 (_LT_PROG_XSI_REPLACE): New macro that
	expands into a sed command for replacing the contents of a
	suitably decorated shell function with an alternate XSI
	implementation.
	(_LT_PROG_XSI_SHELLFNS): Use it to replace the portable shell
	versions of the functions above with equivalent XSI
	implementations that avoid unnecessary forks if the host shell
	supports that.
	* libltdl/config/ltmain.m4sh: Replace hand written shell code
	with a call to M4SH_GETOPTS. Rename some option variables in
	the client code to match the generated option parser settings.
	* libltdl/config/general.m4sh (func_echo, func_error)
	(func_warning): Use $opt_mode instead of obsoleted $mode in
	message leader.
	* libltdl/config/getopt.m4sh (m4_version_prereq): This file
	requires m4sugar.m4 from Autoconf-2.61 or newer. 

2010-06-24  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[cygwin] Refactor C++ exception handling for Win32 correctness
	* tests/exception.at (common.h): New file, refactored from
	(module.h): Move declaration of modexc to libcommon.
	Include common.h. Use explicit import/export markings for
	symbols when building on win32 or cygwin.
	(common.cpp): New file.
	(module.cpp): Ensure correct symbols markings when including
	module.h.
	(lib.h): Use explicit import/export markings for symbols
	when building on win32 or cygwin.
	(lib.cpp): Ensure correct symbol markings when including lib.h.
	(main.cpp): Include common.h.
	(commands): Ensure correct symbol markings when compiling
	main.cpp, and lib.cpp, and module.cpp. Add command to compile
	common.cpp, and to link libcommon.la.  Add libcommon.la when
	linking module.la and main.  Add command to install libcommon.la.

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

	Ensure getopts.m4sh is compatible with Autoconf-2.61 and newer.
	* libltdl/config/getopt.m4sh (m4_chomp): Ensure this macro is
	implemented even if Autoconf's m4sugar.m4 doesn't provide it.
	(m4go_expand): New macro based on Autoconf-2.64 m4_expand. Use
	it everywhere incase m4sugar.m4 doesn't have an implementation.
	(m4_ifnblank): Replace all uses with m4_ifval, which was
	available long before m4_ifnblank was introduced.

2010-06-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix clean mode for HP-UX 11.31 sh.
	* libltdl/config/ltmain.m4sh (func_mode_uninstall): Do not try
	to match a null string in a case pattern, even with surrounding
	spaces.  Fixes `lt_dlopenadvise library loading' test.

	Add comment for exception handling module unloading issue.
	* tests/exceptions.at (C++ exception handling): Add comment
	for last patch.

	Fix flags test failure when ld is used as linker.
	* tests/flags.at (passing CC flags through libtool): When $LD
	is used for linking libraries, ensure flags passed with `-Wc,'
	are not passed through to $LD, but flags passed with `-Wl,' use
	$wl when linking programs.  Fixed testsuite failure on HP-UX
	10.20.

2010-06-19  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[cygwin] Fix segfault in C++ exception handling test
	* tests/exceptions.at (main.cpp:exceptions_in_module):
	Move dlclose outside catch block; otherwise __cxa_end_catch
	(part of the cygwin g++ ABI) accesses pointers to data inside
	unloaded DLL. This is a platform ABI-specific bug, but is
	likely common to many platforms' g++ and/or other C++
	compilers.

2010-06-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix srcdir computation for manual runs of old tests.
	* tests/defs.m4sh: Strip trailing `/tests' from srcdir, to allow
	`$srcdir/tests/FOO.test' to be run from the top build directory.

	Clean up @var handling in the manual.
	* doc/libtool.texi: Throughout the manual, replace @var with
	@samp or @code as appropriate, ensure the argument of remaining
	@var uses are lower-case.

	Let the bootstrap script fail upon errors.
	* bootstrap: Enable errexit.

	Fix execute mode test for OSF/1 5.1.
	* tests/execute-mode.at (execute mode): Do not use grep -F
	with an empty pattern.
	* THANKS: Update.
	Report by Jay K.

	Use config.cache variable for PIC flag, to allow override.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) <lt_prog_compiler_pic>:
	Save result, and allow override, through cache variable
	lt_cv_prog_compiler_pic{,_CXX,_F77,_FC}.  The cache variable
	needs to contain an eventual -DPIC.
	* tests/pic_flag.at (override pic_flag at configure time):
	New file, new test.
	* Makefile.am (TESTSUITE_AT): Update.
	* NEWS, THANKS: Update.
	Suggestion by Joakim Tjernlund and Paolo Bonzini.

2010-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Optimize func_ltwrapper_scriptname to assume a cwrapper.
	* libltdl/config/ltmain.m4sh (func_ltwrapper_scriptname): Do not
	call func_ltwrapper_executable_p again here, this function is
	documented to allow being called with wrapper executables.

	Fix bootstrap script to cope with changed AC_INIT arguments.
	* bootstrap: When extracting PACKAGE and VERSION from AC_INIT
	arguments, be sure to remove a 'GNU ' prefix and lowercase the
	package name for PACKAGE.  Also set PACKAGE_NAME and PACKAGE_URL
	appropriately for GNU software.  Pass these variables to the
	make commands creating tests/package.m4 and other files.
	* Makefile.am (edit): Fix substitution of PACKAGE_NAME and
	PACKAGE_STRING.
	* libltdl/config/announce-gen.m4sh: Use @PACKAGE@ not
	@PACKAGE_STRING@.

2010-06-15  Peter Rosin  <peda@lysator.liu.se>

	On Windows, find potential libs regardless of file name case.
	* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD),
	libltdl/config/ltmain.m4sh (func_mode_link): On Windows,
	find potential libs regardless of file name case.
	* tests/nocase.at: New test, to check for regressions
	of the above.
	* Makefile.am: Add above new test.
	* doc/libtool.texi (libtool script contents): Document
	new variables.
	* NEWS: Updated.

2010-06-15  Philip Allison  <philip.allison@smoothwall.net>  (tiny change)

	Avoid GCC -Wall compiler warning in dlopen self test.
	* libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Fix unused
	variable warning in test program.
	* THANKS: Update.

2010-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix cleaning of uninstalled w32 shell wrapper in subdirs.
	* libltdl/config/ltmain.m4sh (func_mode_uninstall): Do not
	override global objdir variable, instead use odir for the
	directory of to-be-removed files.  Drop unneeded origobjdir.
	Report by Charles Wilson.

2010-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Enable colored Autotest testsuite output if available.
	* tests/testsuite.at: Move AT_INIT call down to late in the
	file, all prior code can go beforehand.
	Call AT_COLOR_TESTS if defined.

2010-06-14  Peter O'Gorman  <peter@pogma.com>

	Pass resident test with --disable-shared too.
	* tests/resident.at: use LTDL_SET_PRELOADED_SYMBOLS.

2010-06-13  Peter O'Gorman  <peter@pogma.com>

	Test with --disable-shared at release time too.
	* HACKING: Note it.

	Avoid failure for --disable-shared.
	* tests/lt_dladvise.at: Hack.

	Use LTDL_SET_PRELOADED_SYMBOLS to avoid failure.
	* tests/exceptions.at: Use it.

2010-06-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Print Libtool project URL in program --help output.
	* configure.ac (AC_INIT): Set PACKAGE argument to `GNU Libtool',
	so Autoconf knows this is GNU software.  For Autoconf < 2.64,
	if AC_PACKAGE_URL is not defined, substitute PACKAGE_URL.
	* Makefile.am (edit): Substitute PACKAGE_URL.
	($(srcdir)/tests/package.m4): Also depend on Makefile.am.
	Define AT_PACKAGE_URL, for `tests/testsuite --help' output.
	* libltdl/config/getopt.m4sh (func_help): Also extract comment
	lines that mention a home page and general GNU help.
	* libltdl/config/ltmain.m4sh: Use @PACKAGE_BUGREPORT@ instead of
	hard-coded list address.  Also mention Libtool home page and
	general GNU help web page.
	* libtoolize.m4sh: Likewise.

2010-06-12  Peter Rosin  <peda@lysator.liu.se>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Improve libdir usage from within ltdl on MinGW.
	* libltdl/ltdl.c (parse_dotla_file) [__WINDOWS__]: Read the
	libdir entry in the .la file, but accept it only if it is not
	a unix-style absolute name.
	* tests/ltdl-libdir.at: New test that checks if ltdl finds an
	installed module via the libdir variable in the .la file.  On
	MinGW, use a Windows-style libdir name including drive spec.
	* Makefile.am: Add above.

2010-06-11  Peter O'Gorman  <peter@pogma.com>

	Skip bindir install test if we're not building shared.
	* tests/bindir.at: Skip install test if necessary.
	* THANKS: Update.
	Report by Michael E Faenza.

2010-06-11  Gary V. Vaughan  <gary@gnu.org>

	Use getopt.m4sh to generate libtoolize option parser.
	* libtoolize.m4sh: Replace hand written shell code with a
	call to M4SH_GETOPTS.  Move some premature initialization
	from the preamble to the main part of the script.  Exit with
	an error on spurious additional non-option arguments.
	(envopts): Integrate LIBTOOLIZE_OPTIONS pre-parsing into the
	main option parsing loop.
	(opt_copy): Use in place of and in the reverse sense of the
	old opt_link variable.

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

	Create reloadable object files with non-pic objects too.
	* libltdl/config/ltmain.m4sh: When not building a shared
	library, use the non-pic objects to create a reloadable
	object, because pic objects do not exist.

2010-06-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Ensure libltdl is up to date for check-local.
	* Makefile.am (LTDL_BOOTSTRAP_DEPS): New variable.
	(all-local): Use it to simplify dependencies.
	(testsuite_deps_uninstalled): Add $(LTDL_BOOTSTRAP_DEPS).
	Report by Peter Rosin.

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

	Support shell tracing inside functions even with ksh.
	* libltdl/config/getopt.m4sh: Set $opt_debug to be either `:'
	or `set -x' depending on whether --debug was parsed to match
	usage in libtoolize.m4sh and ltmain.m4sh.
	* clcommit.m4sh, libltdl/config/announce-gen.sh: Instead of
	`$opt_debug && ...', use `test "$opt_debug" != ":" && ...'.
	* clcommit.m4sh, libltdl/config/announce-gen.m4sh,
	libltdl/config/getopt.m4sh, libltdl/connfig/mailnotify.m4sh:
	Execute at the start of functions to cater to ksh, which
	resets `-x' inside shell functions.

	Fix a typu in HACKING.
	* HACKING (Release Procedure): s/Makeflie/Makefile/.

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

	Factorize testing gcj installation in the testsuite.
	* tests/testsuite.at (LT_AT_TAG): For the GCJ tag, actually
	try to compile a .java file when deciding whether to skip.
	(LT_AT_EXEC_TAG): New macro, to also ensure runnability.
	* tests/convenience.at (Java convenience archives): Use
	LT_AT_EXEC_TAG, simplify accordingly.
	* tests/flags.at (passing lt_tag flags through libtool): Use
	m4_defn for tag so LT_AT_TAG works.
	* tests/infer-tag.at (GCJ inferred tag): Simplify.
	* THANKS: Update.
	Report by Warren Dodge.

2010-06-09  Peter O'Gorman  <peter@pogma.com>

	Skip demo-nopic tests if SELinux policy will cause failure.
	* tests/demo-nopic.test: Check SELinux policy and skip if
	necessary.

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

	Set SCM version number to 2.2.11a.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.11a.
	* NEWS: Updated.

	GNU Libtool 2.2.10 was released.

	Prepare for next release.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version number
	to 2.2.10.
	* NEWS: Update version number.

	Fix a quoting bug with ./commit -a 'A U Thor'.
	* clcommit.m4sh (func_commit): Use func_show_eval when calling
	git, so that the previously func_quote_for_eval()ed $git_flags is
	expanded properly.

2009-09-15  Peter Rosin  <peda@lysator.liu.se>

	Don't try the MSYS libdir path on MinGW.
	* libltdl/ltdl.c (parse_dotla_file) [mingw]: The absolute
	libdir path in the .la file is recorded as an MSYS (POSIX
	style) path. Make sure it isn't tried when locating the
	shared library.
	* NEWS: Updated.

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

	Simplify license variations, and add missing license texts.
	* ChangeLog, ChangeLog.1996, ChangeLog.1997, ChangeLog.1998,
	ChangeLog.1999, ChangeLog.2000, ChangeLog.2001, ChangeLog.2002,
	ChangeLog.2003, ChangeLog.2004, ChangeLog.2005, ChangeLog.2006,
	ChangeLog.2007, ChangeLog.2008, ChangeLog.2009, NEWS: Add
	all-permissive license.
	* HACKING, README, README.alpha, TODO: Relax license to RMS
	encouraged all-permissive terms.
	* libltdl/README: Ditto. I added the original license text in
	2007, and there's no need for it to be so long for such a trivial
	file.
	* libltdl/config/getopt.m4sh, libltdl/general.m4sh: Cvs-utils is
	dead, and I am the author of these files, so consolidated license
	terms to match regular Libtool licensing.
	* HACKING (Licensing Rules): Update wording, and list of files for
	the all permissive license.
	(GPL with CVS-Utils exception clause): Removed.  No files have these 
	license any more.
	(GPL with Libtool exception clause): Ditto, only libltdl/README
	used to be distributed with this variation.
	* AUTHORS: Add GPL license text.
	
	Fix a type in the 2.2.8 release notes.
	* NEWS: s/ romoted/ promoted/ in the 2.2.8 release notes.

	Don't warn about the blank line inserted into git commit message.
	* clcommit.m4sh: When searching for accidental commits of mutliple
	changes, ignore the second line of the message, which we inserted
	earlier to support "git log --oneline".

	Enable correct extraction of multiline copyright from --version.
	* libltdl/config/getopt.m4sh: Wrap copyright notice at 76
	columns.
	(func_version): Don't omit spaces when merging multiline copyright
	notices.
	* clcommit.m4sh, libtoolize.m4sh: Wrap copyright notice at 76
	columns.

	* NEWS (2.2.8): BlueGene compiler tests were performed on BG/P
	systems, not BG/L.
	Reported by Christian Rössel <christian.roessel@gmx.de>

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

	Fix testsuite helper macros to not hide failure.
	* tests/testsuite.at (LT_AT_CONFIGURE, LT_AT_MAKE):
	Do not wrap AT_CHECK in a subshell, so that failures are
	properly propagated; instead, move environment changes inside
	the AT_CHECK code.
	Report and analysis by Peter Rosin.

	Avoid autom4te warning about unnamed diversion.
	* libltdl/config/getopt.m4sh: Use diversion name KILL not -1.

2010-06-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Make versioning test stricter for w32, enable shared libs.
	* tests/versioning.at (versioning): Add -no-undefined to
	LDFLAGS.
	(test_uninstalled): Also move $bindir out of the way
	temporarily.

	Fix versioning test for LDFLAGS=-Wl,--as-needed.
	* tests/versioning.at (versioning): For the library update
	hypotheses, ensure the unchanged library libb isn't accidentally
	relinked against the new liba, by not reinstalling libb.
	Fixes testsuite failure for the incompatible update case with
	LDFLAGS=-Wl,--as-needed.
	* THANKS: Update.
	Report by Ryan Hill.

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

	Rewrite manual intro to be gender-neutral.
	* doc/libtool.texi (Introduction): Use gender-neutral
	formulation when addressing developers.

2010-06-05  Gary V. Vaughan  <gary@gnu.org>

	Update and simplify all m4sh scripts to use latest getopt.m4sh.
	* clcommit.m4sh, libltdl/config/mailnotify.m4sh: Rewrite option
	parsing loop over M4SH_GETOPTS macro, and adjust all clients of
	option variables to use generated option names.

	Add missing quote for literal ? in a shell case statement.
	* libltdl/config/getopt.m4sh (m4go_shortnoargs): Quote initial ?
	correctly for use in a shell case statement.

	Quote command line arguments after --rcfile properly.
	* libltdl/config/announce-gen.m4sh (--rcfile): Quote remaining
	arguments shell variable expression correctly for eval.
	
	Shift correctly in numbered option argument collection.
	* libltdl/config/getopt.m4sh (_m4go_option): Argument list also
	needs to be `shift'ed in the shell option loop after processing a
	numbered argument collection.

	Fetch from new upstream host for config.guess and config.sub.
	* Makefile.maint (WGET_CGIT): Location of newest config.guess and
	config.sub upstream.
	(fetch): Fetch config.guess and config.sub from WGET_CGIT, rather
	than no-longer-updating WGET_SGO location.

	Update generated upload directive file format to v1.1.
	* Makefile.maint (git-dist, diffs): Update to generate v1.1 format
	directive files for ftp://ftp-upload.gnu.org/incoming/ftp.

	Fix web manual generation details in release instructions.
	* HACKING (Release Procedure): Move the instruction for generating
	web manuals for a new release to before the instruction that bumps
	the version numbers to the post release values.

	Set SCM version number to 2.2.9a.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.9a.
	* NEWS: Updated.

	GNU Libtool 2.2.8 was released.

	Prepare for next release.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.8.
	* NEWS: Update version number.
	* INSTALL, libltdl/config/install-sh, libltdl/config/config.guess,
	libltdl/config/config.sub, libltdl/config/texinfo.tex: Updated
	from canonical source.

	Provide an m4sh reimplementation of announce-gen.
	* libltdl/config/getopt.m4sh (M4SH_GETOPTS): New macro that takes
	a quoted m4 list of command line options to be parsed, and
	generates the shell code to parse those options and collect the
	results into appropriately named 'opt_xxx' shell variables.  Also,
	add some private supporting macros, and improve the comments
	radically.
	* libltdl/config/announce-gen.m4sh: New file, to generate and
	optionally post (an enhancement over the gnulib perl script of the
	same name) a release announcement.
	* Makefile.maint (announce-gen): Build a new announce-gen script
	in the build directory, from the contents of
	libltdl/config/announce-gen.m4sh.
	* HACKING (Release Procedure): Update the instructions to use
	announce-gen.
	(Alpha release note template, Full release note template):
	Removed.

2010-05-22  Gary V. Vaughan  <gary@gnu.org>

	Support "git log --oneline" in generated commit messages.
	* clcommit.m4sh (func_check_commit_msg): Insert an empty line
	between the ChangeLog entry summary line and the ChangeLog entry
	body, so that "git log --oneline" works properly.
	Bump copyright and version number.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

2010-05-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* HACKING: Set Reply-To: in announcement emails.

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

	Set SCM version number to 2.2.7c.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.7c.
	* NEWS: Updated.

	GNU Libtool 2.2.7b  was released.

	Prepare for next release candidate.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.7b.
	* libltdl/m4/libtool.m4, libltdl/m4/ltdl.m4,
	libltdl/m4/ltoptions.m4, libltdl/m4/lt~obsolete.m4: These files
	have been updated without a serial bump since the last release.
	* libltdl/Makefile.inc (LTDL_VERSION_INFO): Bump Revision, to
	account for bugfixes since the last release.
	* libltdl/config/install-sh, libltdl/config/config.guess,
	libltdl/config/config.sub, libltdl/config/texinfo.tex,
	INSTALL: Updated from canonical source.
	* NEWS: Update with missing entries from ChangeLog.
	* HACKING: Note workaround for developer tool-path leakage bug.

	Skip some tests in --disable-ltdl-install mode.
	* tests/dlloader-api.at, tests/exceptions.at,
	tests/lalib-syntax.at, tests/loadlibrary.at,
	tests/lt_dlopenext.at, tests/resident.at: Detect when these
	tests try to link against the not installed libltdl.la, and
	skip rather than FAIL.

2010-05-05  Peter Rosin  <peda@lysator.liu.se>

	Clarify versioning algorithm documentation.
	* doc/libtool.texi (Updating version info): Be explicit
	about setting age to zero on interface change.
	Reported by Jef Driesen <jefdriesen@hotmail.com>

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

	Ranlib is required with -force_load and fat archives.
	* libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Run
	ranlib.
	Reported by Jeremy Huddleston <jeremyhu@apple.com>

2010-04-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix incompatible struct declarations.
	* doc/libtool.texi (Dlpreopening): Remove broken documentation
	of lt_dlsymbol and lt_dlsymlist.  Document typedef lt_dlsymlist
	and symbol lt_preloaded_symbols according to the implementation.
	* tests/demo/dlmain.c (lt_symlist): Make struct anonymous ...
	(lt_dlsymlist): ... and typedef to this name.
	(lt_preloaded_symbols, main): Adjust.
	* tests/pdemo/longer_file_name_dlmain.c: Likewise.

2010-04-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Use linker_flags not compiler_flags with $LD.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [linux]
	<archive_cmds, archive_expsym_cmds>: With xlf and bgxlf
	compilers, when linking with $LD, use $linker_flags not
	$compiler_flags.

2010-03-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Add FAQ, and FAQ entry for flags stripped at library link time.
	* doc/libtool.texi (FAQ, Stripped link flags): New nodes.
	(Wrapper executables): Replace bug address with macro.
	(Compile mode, Link mode): Document `-Wc,' and `-Xcompiler '
	semantics better.
	* libltdl/config/ltmain.m4sh (func_mode_link): Rewrite comment
	for the flags that are passed through.
	Prompted by reports from Simon Richter <Simon.Richter@hogyros.de>,
	Török Edwin <edwintorok@gmail.com> and
	Åke Sandgren <ake.sandgren@hpc2n.umu.se>.

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

	Fix preloader symbol list declaration in libltdl.
	* libltdl/ltdl.c (preloaded_symbols): Fix declaration to include
	array brackets.
	(lt_dlinit): Do not take address of preloaded_symbols.

	Fix typo in libtool --help output.
	* libltdl/config/ltmain.m4sh (func_mode_help): Fix typo in help
	output.

	Fix a couple of documentation errors.
	* doc/libtool.texi (Autoconf macros): Improve hyphenation.
	(Using libltdl): libltdl uses the Lesser General Public License,
	not the Library General Public License.

	Do not use @sc nor @acronym in the manual.
	* doc/libtool.texi: Remove all usage of @sc.

2010-03-19  Chris Demetriou  <cgd@google.com>

	Sort output of 'find' to enable deterministic builds.
	* libltdl/config/ltmain.m4sh (func_extract_archives): Sort
	output of 'find'.
	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Likewise.
	* THANKS: Update.

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

	Unconditionally normalize LC_ALL, LANGUAGE in libtool script.
	* libltdl/config/ltmain.m4sh: Unconditionally set LC_ALL and
	LANGUAGE to 'C', to avoid semantic differences on MinGW under
	Chines locale.  SCO issues with e.g. LANG=C are not known to
	be relevant today any more.
	Report by Pete Batard <pbatard@gmail.com> and Xiaofan Chen
	<xiaofanc@gmail.com>.

2010-03-17  Peter Rosin  <peda@lysator.liu.se>

	Preserve the last error when restoring the error mode.
	* libltdl/loaders/loadlibrary.c (wm_open): Don't rely on
	SetThreadErrorMode (or SetErrorMode) to not clobber the last
	error.
	Report by Ralf Wildenhues.

	Use Get/SetThreadErrorMode if they are available.
	* libltdl/loaders/loadlibrary.c (wrap_geterrormode): Replaced...
	(wrap_getthreaderrormode): ...by this function that checks
	first for GetThreadErrorMode, then GetErrorMode and makes use
	of either of those or...
	(fallback_getthreaderrormode): ...else falls back to this
	replacement function that implements the old workaround, which
	was previously implemented in...
	(fallback_geterrormode): ...this now renamed function.
	(geterrormode): Replaced...
	(getthreaderrormode): ...by this function pointer that points
	at either of wrap_getthreaderrormode, GetThreadErrorMode,
	GetErrorMode or fallback_getthreaderrormode.
	(wrap_setthreaderrormode): New function that checks if
	SetThreadErrorMode is supported by the system and makes use of
	it if it is.
	(fallback_setthreaderrormode): New function that is used
	otherwise that implements the old version using SetErrorMode.
	(setthreaderrormode): New function pointer that points at
	either of wrap_setthreaderrormode, SetThreadErrorMode or
	fallback_setthreaderrormode.
	(vm_open): Adjust to the above.

2010-02-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Detect Sun compiler suite with 'sun'-prefixed names.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LANG_CXX_CONFIG)
	(_LT_SYS_HIDDEN_LIBDEPS) [solaris]: Accept compiler names sunCC,
	sunf77, sunf90, sunf95 in addition to CC, f77, f90, f95.
	* NEWS: Update.
	Report by Vadim Zeitlin.

2010-02-28  Pierre Ossman  <ossman@ossman.lkpg.cendio.se>  (tiny change)
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	Fix deplibs check fallback for 64-bit Windows and Windows CE.
	* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD): Accept file formats
	'pe-arm-wince' and 'pe-x86-64'.  Add note about consistency with ...
	* libltdl/config/ltmain.m4sh (func_win32_libid): ... the respective
	pattern here; sync pattern from the former.
	* tests/deplibs-mingw.at (deplibs without file command): New
	file, new test.
	* Makefile.am (TESTSUITE_AT): Update.
	* NEWS: Update.

2010-02-24  Scott McCreary  <scottmc2@gmail.com>  (tiny change)

	Update search path on Haiku for legacy system directory.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [haiku]
	<sys_lib_dlsearch_path_spec>: Replace legacy
	/boot/beos/system/lib directory with /boot/system/lib.
	* THANKS: Update.

2010-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	manual: fix detailmenu ordering.
	* doc/libtool.texi (Top): Add section for `Linking executables'
	in the detailmenu.

2010-02-21  Charles Wilson <libtool@cwilson.fastmail.fm>

	Guard against strerror()==NULL
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src:main):
	Check return value of strerror() using nonnull().
	(func_emit_cwrapperexe_src:find_executable): Ditto.
	(func_emit_cwrapperexe_src:chase_symlinks): Ditto.

2010-02-21  Charles Wilson <libtool@cwilson.fastmail.fm>

	Document wrapper changes.
	* NEWS: Indicate new feature and incompatibility.
	* doc/libtool.texi [detailmenu]: Add reference to subsection
	'Wrapper executables for programs', in Platform Quirks category.
	[Linking executables]: Mention wrapper executables, in
	addition to wrapper scripts. Add menu referencing subsection
	'Wrapper executables for programs'.
	[Wrapper executables for programs]: New subsection. Documents
	cwrapper rationale and command line options.

2010-02-21  Charles Wilson <libtool@cwilson.fastmail.fm>

	Add --lt-* options to shell wrapper
	* libltdl/config/ltmain.m4sh (func_emit_wrapper): Call
	func_parse_lt_options early. Use func_exec_program.
	(func_emit_wrapper:func_parse_lt_options): New function.
	(func_emit_wrapper:func_lt_dump_args): New function.
	(func_emit_wrapper:func_exec_program_core): New function.
	(func_emit_wrapper:func_exec_program): New function.

2010-02-21  Charles Wilson <libtool@cwilson.fastmail.fm>

	Enable runtime cwrapper debugging; add tests
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src):
	Update comments. Initialize program_name. Eliminate _LENGTH
	variables for string constants. In debug mode, print a
	banner with known content before any other output. Remove
	LTWRAPPER_DEBUGPRINTF macro. Add constants and variables
	to support new --lt-debug option.
	(func_emit_cwrapperexe_src:ltwrapper_debugprintf): Renamed to...
	(func_emit_cwrapperexe_src:lt_debugprintf): this. Only print
	messages if lt_debug != 0. Ensure appearance of messages
	conforms to GCS.
	(func_emit_cwrapperexe_src:lt_fatal): Ditto.
	(func_emit_cwrapperexe_src:lt_error_core): Ditto.
	(func_emit_cwrapperexe_src): Update all callers to lt_fatal.
	Update all users of LTWRAPPER_DEBUGPRINTF (()) to call
	lt_debugprintf () directly.
	(func_emit_cwrapperexe_src:main): Consolidate option parsing.
	Ensure first use of lt_debugprintf occurs after option parsing.
	Add stanza to parse for --lt-debug and set lt_debug variable.
	Use strcmp rather than strncmp, where safe.
	* tests/cwrapper.at: Add new tests for --lt-debug and
	-DLT_DEBUGWRAPPER.

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

	Use --email with gendocs.sh.
	* Makefile.maint (web-manual): Pass bug reporting address to
	gendocs.sh.

	Make testsuite code C++ clean again.
	* tests/resident.at (resident modules): Fix for C++.

2010-01-29  Peter Rosin  <peda@lysator.liu.se>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Testsuite exposure for dlloader API.
	* tests/dlloader-api.at: New file, new test.
	* Makefile.am (TESTSUITE_AT): Update.

2010-01-29  Peter Rosin  <peda@lysator.liu.se>

	* tests/loadlibrary.at: Fix C++ issues.

2010-01-20  Peter Rosin  <peda@lysator.liu.se>

	Report proper errors from the loadlibrary loader.
	* libltdl/loaders/loadlibrary.c (loadlibraryerror): New
	helper function that returns the latest Windows error as a
	string, or the provided default string on failure to do so.
	(LOADLIB_SETERROR): New macro that wraps previous to make it
	easy to use.
	(vm_open, vm_close, vm_sym): Make use of previous.
	(LOCALFREE): New macro to help free the Windows error string.
	(vl_exit): Make use of previous.
	* tests/loadlibarry.at: New file, new test that makes sure
	the loadlibrary loader reports non-standard error messages.
	* Makefile.am (TESTSUITE_AT): Add above test.

2010-01-02  Peter Rosin  <peda@lysator.liu.se>

	Use GetErrorMode if it is available.
	* libltdl/loaders/loadlibrary.c (wrap_geterrormode): New
	function that checks if GetErrorMode is supported by the
	system and makes use of it if it is.
	(fallback_geterrormode): New function that is used otherwise
	that implements the old workaround.
	(geterrormode): New function pointer that points at either
	of the above or directly at GetErrorMode.
	(vm_open): Make use of the above.

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

	Ensure functions from resident modules work in atexit handlers.
	* tests/resident.at (resident modules): New file, new test.
	* Makefile.am (TESTSUITE_AT): Adjust.
	Report by Bob Friesenhahn.

	Testsuite exposure for relative output file names and deplibs.
	* tests/deplib-in-subdir.at (deplib in subdir): New file, new
	test.
	* Makefile.am (TESTSUITE_AT): Update.
	Prompted by report from Bob Friesenhahn.

2010-01-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
	    Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	Testsuite exposure for C++ exception handling.
	* tests/exceptions.at (C++ exception handling): New file, new
	test.
	* Makefile.am (TESTSUITE_AT): Update.
	Report by Bob Friesenhahn.

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

	Bump copyright years.
	* ChangeLog.2009: New, rotated from ...
	* ChangeLog: ... here.
	* Makefile.am (EXTRA_DIST): Add ChangeLog.2009.
	* NEWS, libltdl/config/ltmain.m4sh: Bump copyright years.
	* libltdl/m4/libtool.m4 (_LT_COPYING, LT_OUTPUT): Likewise.
	* libtoolize.m4sh: Likewise.

Continued in ChangeLog.2009
-- 
  Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
  2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.

  This file is part of GNU Libtool.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without warranty of any kind.

vim:tw=72
