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

	LTO: consistently accept -fwhopr* and -flto* for GCC.
	* libltdl/config/ltmain.m4sh (func_mode_link): Accept -fwhopr*.
	* libltdl/m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Also match
	-flto*.

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

	tests: avoid spurious test failure due to library mode on HP-UX.
	* tests/help.at (debug tracing): Use $lt_INSTALL not cp for
	install mode, the latter will not overwrite an existing library
	with mode 555.

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

	tests: avoid spurious pic_flag test failure on HP-UX 10.20.
	* tests/pic_flag.at (override pic_flag at configure time):
	Match HP-UX 10.20 cc warning about unknown options, to skip
	the test.

	tests: fix localization test for GCC on HP-UX 11.00.
	* tests/localization.at (localized compiler messages): Be sure
	to switch the locale only for the actual compiler commands, so
	we don't pick up warnings from helper tools such as diff which
	may not have the locale installed.

	Avoid leaking make flags into testsuite results.
	* tests/defs.m4sh: Unset MFLAGS, MAKEFLAGS, MAKELEVEL, __MKLVL__
	and MAKE_JOBS_FIFO.
	* tests/testsuite.at: Likewise.
	Fixes warnings in test logs when the user uses 'make -jN check'
	and inner $MAKE invocations can't connect to the job server.
	Fixes spurious failures of configure-iface.at and of
	demo-noinst-link tests with BSD and Tru64 make if the user uses
	'make -k', as the exit status of the latter is not reliable.

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

	Remove announce-gen.m4sh and mailnotify.m4sh.
	* libltdl/config/announce-gen.m4sh: Removed.  This script has
	no apparent connection to libtool functionality, and mostly
	duplicates the better maintained gnulib announce-gen script.
	* libltdl/config/mailnotify.sh: Removed. This script was used
	by only clcommit.m4sh and announce-gen.m4sh, both of which are
	now removed too.
	* Makefile.maint (announce-gen, libltdl/config/mailnotify):
	Targets removed.
	* bootstrap: Remove the mailnotify regeneration warning.
	* HACKING (Release Procedure): Remove references to
	announce-gen.
	(Alpha release note template, Full release note template):
	Reinstated from before announce-gen was introduced.

	Remove clcommit.m4sh.
	* clcommit.m4sh: Removed. This script was written to help keep
	ChangeLog and commit messages in sync when committing to CVS,
	and is an anachronism now that Libtool uses git.
	* Makefile.maint (commit): Target removed.
	* bootstrap: Don't generate commit.
	* HACKING (Release Procedure): Adjusted.

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

	archive-in-archive.at passes with Microsoft lib.
	* tests/archive-in-archive.at: Tighten test to check that the desired
	object files are indeed part of the archive. Microsoft lib still
	passes, so remove the expected failure for that case.

	Dump archiver output to the log when testing @file support.
	* libltdl/m4/libtool.m4 (_LT_PROG_AR): Redirect stdout to config.log
	when testing for @file support.
	Suggested by Ralf Wildenhues.

	Silence archiver output when testing @file support.
	* libltdl/m4/libtool.m4 (_LT_PROG_AR): Redirect stdout and stderr
	to the bit bucket when testing for @file support.

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

	Remove double `Generated from foo.m4sh' lines.
	We now require a modern Autoconf to bootstrap libtool, which
	will add the `Generated by ...' boiler-plate automatically,
	so we can remove the hand-rolled @configure_input@
	substitutions we had been doing:
	* clcommit.m4sh, libtoolize.m4sh, tests/defs.sh,
	libltdl/config/announce-gen.m4sh, libltdl/config/ltmain.m4sh,
	libltdl/config/mailnotify.m4sh: Remove @configure_input@.
	* Makefile.am (edit): Remove configure_input substitution.
	(libtoolize, libltdl/config/ltmain.sh, libltdl/m4/ltversion.m4)
	(tests/defs): Don't set `$input' shell variable.
	* Makefile.maint (announce_gen, libltdl/config/mailnotify)
	(commit): Likewise.

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

	Extract the archive name from the .la file and use $AR (not ar).
	* Makefile.am: Pass AR through to the testsuite.
	* tests/archive-in-archive.at: Bump copyright year. Extract archive
	name from the .la file instead of hardcoding the name, and allow
	different archivers. Also clarify that the tested functionality is
	currently broken.

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

	tests: skip -Wall -Werror with Tru64 cc in cwrapper test.
	* tests/cwrapper.at (cwrapper for uninstalled executables):
	Use a link test rather than a compile test to flesh out unknown
	compiler flags starting with -W; Tru64/OSF1 cc will happily
	accept `-Wall -Werror' as indication to pass flags on to
	subprocesses.

	tests: avoid getopt-m4sh failures when autom4te is not available.
	* tests/getopt-m4sh.at (_LT_AT_GETOPT_M4SH_SETUP):
	Check $M4SH --version, skip on failure.

	tests: mark 'syntax of .la files' as XFAIL, expose failure.
	* tests/lalib-syntax.at (syntax of .la files): Assert that the
	string returned by lt_dlerror after a failure is non-NULL, so
	the failure shows up on systems other than Solaris.  Mark test
	as expected to fail.
	Suggested by Bob Friesenhahn.

2010-08-30  Eric Blake  <eblake@redhat.com>

	Simplify recent configure quoting portability workaround.
	* configure.ac: Simplify setting of timestamp_string.

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

	Update path conversion warning messages
	* libltdl/config/ltmain.m4sh (func_convert_file_check): Update
	comments and warning message.
	(func_convert_path_check): Update warning message.

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

	Fix typo when renaming path conversion functions.
	* tests/testsuite.at: Ensure to_host_file_cmd is passed as a
	variable setting on the configure line for (new testsuite) tests.

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

	Support GCC LTO on GNU/Linux.
	* libltdl/config/ltmain.m4sh (func_mode_link): Allow through
	flags matching -O*, -flto*, -fwhopr, -fuse-linker-plugin.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Drop symbols
	starting with __gnu_lto.
	(_LT_LINKER_SHLIBS) [linux] <archive_cmds, archive_expsyms_cmds>:
	Add $pic_flag for GCC.
	(_LT_LANG_CXX_CONFIG) [linux] <archive_cmds, archive_expsyms_cmds>:
	Likewise.
	(_LT_SYS_HIDDEN_LIBDEPS): Ignore files matching *.lto.o.
	* NEWS: Update.

	Disable GCC LTO for verbose library extraction.
	* libltdl/m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Temporarily
	append -fno-lto or -fno-whopr to CFLAGS if CC or CFLAGS (which
	are substituted with the per-language variables here) contain
	-flto or match -fwhopr*, respectively.

	Save and restore CFLAGS properly inside libtool.m4 macros.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Use different
	temporary variables for saved and restored values of $LIBS,
	$CFLAGS, to avoid overlap with the *_CONFIG macros.
	(_LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG)
	(_LT_LANG_GCJ_CONFIG, _LT_LANG_RC_CONFIG): Also save and restore
	$CFLAGS, and override it with per-language flags, so that in
	case output_verbose_link_cmd uses $CFLAGS, the right flags are
	used.

	Work around yet another shell quoting portability issue.
	* configure.ac: Avoid nonportable quoted alternate variable
	value in unquoted here document, so Solaris 10 sh and Tru64
	ksh do not print spurious extra quotes.

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

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

	Minor sysroot fixups.
	* libltdl/m4/libtool.m4 (_LT_WITH_SYSROOT): Fix typo.
	* tests/sysroot.at: Search also for crt0.o to accommodate cygwin.

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

	[cygwin|mingw|cross-compile]: Path conversion support.
	* configure.ac: Ensure to_host_file_cmd is available to Makefile.
	* TODO: Document QoI issue with file name conversion functions.
	* libltdl/m4/libtool.m4 (_LT_PATH_CONVERSION_FUNCTIONS): New function
	sets libtool variable $to_host_file_cmd, and employs cache.
	(_LT_SETUP): Require it.
	* tests/testsuite.at: Ensure to_host_file_cmd is passed as a
	variable setting on the configure line for (new testsuite) tests.
	* Makefile.am (TESTS_ENVIRONMENT): Ensure to_host_file_cmd is
	included so that it is passed to (old testsuite) tests.
	* libltdl/config/general.m4sh: Define $lt_sed_naive_backslashify here.
	* libltdl/config/ltmain.m4sh ($to_host_file_cmd, $to_host_path_cmd):
	New variables.
	(func_cygpath): New function.
	(func_init_to_host_path_cmd): New function.
	(func_to_host_path): Renamed to...
	(func_to_host_file): Refactored to... (now uses $to_host_file_cmd).
	(func_convert_core_file_wine_to_w32): Here. New function.
	(func_convert_core_msys_to_w32): Here. New function.
	(func_convert_file_check): Here. New function.
	(func_convert_file_noop): Here. New function.
	(func_convert_file_msys_to_w32): Here. New function.
	(func_convert_file_cygwin_to_w32): Here. New function.
	(func_convert_file_nix_to_w32): Here. New function.
	(func_convert_file_msys_to_cygwin): New function.
	(func_convert_file_nix_to_cygwin): New function.
	(func_to_host_pathlist): Renamed to...
	(func_to_host_path): Refactored to... (now uses $to_host_path_cmd
	and func_init_to_host_path_cmd).
	(func_convert_path_check): Here. New function.
	(func_convert_path_front_back_pathsep): Here. New function.
	(func_convert_core_path_wine_to_w32): Here. New function.
	(func_convert_path_noop): Here. New function.
	(func_convert_path_msys_to_w32): Here. New function.
	(func_convert_path_cygwin_to_w32): Here. New function.
	(func_convert_path_nix_to_w32): Here. New function.
	(func_convert_path_msys_to_cygwin): New function.
	(func_convert_path_nix_to_cygwin): New function.

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

	Fix symlist variable path to use _WIN32 instead of __WINDOWS__.
	* libltdl/config/ltmain.m4sh, libltdl/libltdl/lt_system.h,
	libltdl/m4/libtool.m4, tests/demo/foo.h, tests/pdemo/foo.h:
	Change __WINDOWS__ to _WIN32.
	Report by Charles Wilson.

	Add $pic_flag to archive_cmds and archive_expsym_cmds.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
	<archive_cmds, archive_expsym_cmds>
	[GNU ld, netbsd]: Add $pic_flag if ELF.
	[GNU ld, solaris]: Likewise.
	[GNU ld, default case]: Likewise.
	[!GNU ld, freebsd, dragonfly]: Add $pic_flag.
	[!GNU ld, GCC, hpux9]: Add $pic_flag.
	[!GNU ld, GCC, hpux10]: Replace -fPIC with $pic_flag
	[!GNU ld, GCC, hpux11, !hppa*64]: Replace -fPIC with $pic_flag.
	[!GNU ld, GCC, irix5, irix6, nonstopux]: Add $pic_flag.
	[!GNU ld, GCC, osf4, osf5]: Likewise.
	[!GNU ld, GCC, solaris]: Likewise.
	(_LT_LANG_CXX_CONFIG) <archive_cmds, archive_expsym_cmds>
	[hpux9]: Add $pic_flag if $GXX.
	[hpux10, hpux11, !hppa*64]: Replace -fPIC with $pic_flag.
	[irix5, irix6]: Add $pic_flag if $GXX.
	[osf4, osf5]: Likewise.
	[solaris]: Add $pic_flag if $GXX and not GCC 2.7.

	Uniform const'ness of symlist variable lt_preloaded_symbols.
	On some systems, lt_preloaded_symbols may not be declared
	const due to relocation issues.  C99 requires qualification to
	match for compatible declarations, so ensure we declare
	const'ness in the same way everywhere; link-time optimization
	may otherwise rightfully complain about inconsistencies.
	Since ltdl.h may not depend upon config.h, rely on system
	defines for choosing const'ness.
	* NEWS: Update.
	* doc/libtool.texi (Dlpreopening): Document this issue.
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms):
	[__WINDOWS__, __CYGWIN__, _WIN32_WCE]: Define LT_DLSYM_CONST
	according to system defines.  Remove old shell cruft.  Use
	LT_DLSYM_CONST for lt_${my_prefix}_LTX_preloaded_symbols.
	* libltdl/libltdl/lt_system.h (LT_DLSYM_CONST): Likewise,
	define LT_DLSYM_CONST according to system defines.
	* tests/demo/foo.h (LT_DLSYM_CONST): Likewise.
	* tests/pdemo/foo.h (LT_DLSYM_CONST): Likewise.
	* tests/demo/dlmain.c (lt_dlsymlist): Use LT_DLSYM_CONST.
	* tests/pdemo/longer_file_name_dlmain.c (lt_dlsymlist):
	Likewise.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Likewise
	for configure test code.
	* libltdl/ltdl.c (preloaded_symbols): Use LT_DLSYM_CONST.
	* libltdl/ltdl.h (LTDL_SET_PRELOADED_SYMBOLS): Likewise.

2010-08-28  Dave Korn  <dave.korn.cygwin@googlemail.com>

	Ensure cwrapper magic string is not optimized away.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src):
	Declare MAGIC_EXE as volatile.
	Report by Charles Wilson.

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

	Fix quoting in non-XSI func_xform, for IRIX sh.
	* libltdl/config/ltmain.m4sh (func_xform): Remove spurious extra
	M4 quotes.

	Fix response file test for unreliable exit status of IRIX ar.
	* libltdl/m4/libtool.m4 (_LT_PROG_AR): IRIX ar will not fail
	over a command-line argument specifying a nonexistent file (such
	as `@FILE'), so ensure failure with a reponse file containing
	a nonexistent file.  Also, use lt_* variable prefix for
	temporary variables.

	Fix AC_LANG_PROGRAM warnings from git Autoconf.
	* libltdl/m4/libtool.m4 (_LT_SYS_MODULE_PATH_AIX): Fix
	underquoted AC_LANG_PROGRAM call.
	(LT_PROG_AR): Use AC_LANG_PROGRAM.
	(_LT_LINKER_SHLIBS) [irix, GCC]: Use the right source for the
	given language.
	* NEWS: Update.

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

	fix AIX testsuite regression
	* libltdl/config/ltmain.m4sh (func_resolve_sysroot): Partly
	revert v2.2.10-83-gc45a288: Do not absolutize path here, only do
	sysroot replacement.
	(func_mode_link): Adjust.

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

	fix --mode=finish
	* libltdl/config/ltmain.m4sh (func_mode_finish): Invert then/else
	blocks of the "if $opt_dry_run" conditional.

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

	improve code for sysroot --mode=finish
	* libltdl/config/ltmain.m4sh (func_mode_finish): Change sysroot_regex
	and sysroot_cmd delimiter from pipe to slash.  Wrap the entire for
	loop with "if $opt_dry_run...fi" and print an explanatory message
	for the --dry-run case.

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

	add libtool --mode=finish mode for sysroot
	* doc/libtool.texi (Finish mode): Document behavior when *.la files
	are passed.
	* libltdl/config/ltmain.m4sh (func_mode_finish): Eliminate sysroot
	or `=' signs representing it from files in $libs.
	* tests/sysroot.at (SYSROOT_TESTS): Test for presence of sysroot
	references before running libtool --mode=finish, and for absence
	afterwards.

	reorganize parsing of --mode=finish arguments
	* libltdl/config/ltmain.m4sh (func_mode_finish): Split arguments for
	directories and *.la files.

	fix sysroot handling for deplibs of preopened libtool libs
	* libltdl/config/ltmain.m4sh: Pass $dependency_libs of preopened libtool
	through func_resolve_sysroot.

	fix sysroot tests to pass on Fedora 13
	* tests/sysroot.at: Link $prefix/include into the sysroot as well, as
	required by newer GCC.

2010-07-29  Paolo Bonzini  <bonzini@gnu.org>

	initial version of the NEWS entry
	* NEWS: Document sysroot support.

	add sysroot test
	* Makefile.am (TESTSUITE_AT): Add tests/sysroot.at.
	* tests/sysroot.at: New.

	emit sysrooted paths when installing .la files
	* libltdl/config/ltmain.m4sh (func_replace_sysroot): New.
	(func_mode_link): Prepend paths in $libdir with the sysroot.  Further,
	replace the sysroot with = (using func_replace_sysroot) whenever
	such a path is written in a .la file.

	process postdeps to include sysrooted paths
	* libltdl/m4/libtool.m4 (_LT_FUNC_STRIPNAME_CNF): New (from Charles Wilson).
	(_LT_SYS_HIDDEN_LIBDEPS): Require it.  Use func_stripname_cnf to convert
	sysroot (-L= and -R=) usage in postdeps.  Adjust the code because -L, -R
	and -l flags will now always be separated from the rest of the argument.

	handle sysrooted paths when reading dependencies to la files
	* libltdl/config/ltmain.m4sh (func_mode_execute, func_mode_install,
	func_mode_link): Whenever a .la file occurs in another .la file,
	expand the sysroot path in it.

2010-07-28  Paolo Bonzini  <bonzini@gnu.org>

	teach libtool -L= and -R=
	* libltdl/config/ltmain.m4sh (func_resolve_sysroot): New.
	(func_mode_link): Always pass result of stripping -L and -R to
	func_resolve_sysroot before using it.  Remove absolute path expansion
	when func_resolve_sysroot subsumes it.  Expand sysroot in -rpath.
	When processing dependent libraries also resolve sysroot paths there.

	add --with-sysroot
	* libltdl/m4/libtool.m4 (_LT_HOST_NONCANONICAL, _LT_WITH_SYSROOT): New.
	(LT_SETUP): Require _LT_WITH_SYSROOT.

	handle sysroot flags
	* libltdl/config/ltmain.m4sh (func_mode_link): Recognize --sysroot
	option.

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

	* NEWS: Only bootstrapping needs new Automake and Autoconf.

	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-23  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Fix syntax for cygwin-cross
	libltdl/m4/argz.m4: Add quotes around variable, which
	may contain the multiword value 'guessing no'.

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

	configure: use Autobuild AB_INIT if available.
	* configure.ac: Call AB_INIT if it is defined, with
	$autobuild_mode as argument, to be set at configure time.
	Set AB_VERSION to the Libtool version string.
	* HACKING: Update.

	Fix getopt tests to skip with Autoconf < 2.61.
	* tests/getopt-m4sh.at (_LT_AT_GETOPT_M4SH_SETUP): Skip the test
	if 'autom4te --language=m4sh' exits 63 because version 2.61 is
	required.  Allows the testsuite to complete successfully with
	Autoconf 2.59 and Automake 1.9.6.

	Tidy and fix clean and distclean rules for old testsuite.
	* Makefile.am (clean-local-legacy): Use $(CONF_SUBDIRS) instead
	of hard-coding the list of test directories.  Use
	$(AM_MAKEFLAGS).
	(fake-distclean-legacy): New phony rule, to create fake Makefile
	files if needed so that the automake-generated
	distclean-recursive rule can work properly.
	(distclean_recursive): New helper variable.
	(distclean-recursive): Depend on fake-distclean-legacy.

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

	Fix sed_make_literal_regex.
	* libltdl/config/general.m4sh (sed_make_literal_regex): Fix
	definition.

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

	Factor the sed command used to make a regex from a literal.
	* libltdl/config/general.m4sh (sed_make_literal_regex): New.
	* libltdl/config/ltmain.m4sh
	(func_cygming_dll_for_implib_fallback_core): Use it.  Suggested
	by Ralf Wildenhues.

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
