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

	maint: don't run help2man on programs not-yet-built.
	* Makefile.am (doc/libtool.1, doc/libtoolize.1): Added a
	comment about why the dependencies here have to be a mite
	bizarre.
	(distcheck): Added a workaround for the bug described.

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

	tests: remove unused `aux_dir' variable from `getopt-m4sh.test'.
	* tests/getopt-m4sh.at (aux_dir): Remove unused variable.

	tests: DRYing out `tests/sh.test'.
	* Makefile.am (libtool_m4): Canonical location of libtool.m4 file.
	(lt_aclocal_m4_deps): Use it.
	(check_scripts): New variable for list of scripts to be checked
	by `tests/sh.test'.
	(legacy_tests_edit): New sed script to substitute `libtool_m4'
	and `check_scripts' into `tests/defs'.
	(tests/defs.in): Use it.
	* tests/defs.m4sh (scripts): Calculate absolute paths of each
	entry in `check_scripts' before changing directories.
	(libtool_m4): Save location of `libtool.m4'.
	(macro_dir, aux_dir): Removed. No longer required by any test.
	* tests/sh.test: Remove loop around just `$macro_dir/libtool.m4'
	in favour of a single reference to `$libtool_m4' from above.

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

	maint: pass directory declarations in configure.ac into Makefile.
	* configure.ac (AC_CONFIG_AUX_DIR, LT_CONFIG_LTDL_DIR)
	(AC_CONFIG_MACRO_DIR): Append code to these functions to
	capture and propagate their directory arguments to Makefile.
	* Makefile.am (aux_dir, ltdl_dir, macro_dir): Remove declarations.
	* bootstrap (my_sed_trace): Also capture LT_CONFIG_LTDL_DIR into
	`$ltdl_dir'.
	<Makefile>: Output the extracted values of `aux_dir', `ltdl_dir'
	and `macro_dir' at the top of the quick'n'dirty bootstrap
	Makefile.

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

	maint: factor out ltmain.sh variable deletion.
	* Makefile.am (ltmain_sh_edit): Expand upon bootstrap edit by
	adding the extra line to delete boilerplate variable settings
	from libltdl/config/general.m4sh that don't apply here.
	(libltdl/config/ltmain.sh): Use it.

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

	maint: DRYing out `Makefile.am' file paths.
	* Makefile.am (aux_dir, macro_dir): Include `$(srcdir)' in
	declaration. Adjust all references.
	(doc_dir, ltdl_dir, m4sh_dir, tests_dir): New single location
	to hold directory paths, all including `$(srcdir)', to reduce
	typing.
	(LT_M4SH): Use `$m4sh_dir' as include directory.
	(defs): This one is for a file in the build-tree, so no
	leading `$(srcdir)'.

	CLEANUP: fix error from pushing too far up the branch.
	* Makefile.am (install-data-local): Undo character transposition
	from too early push of untested v2.4-17-gaf74d58.

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

	maint: use macro_dir consistently in all files.
	* Makefile.am: Replace all uses of m4dir with macrodir to
	match AC_CONFIG_MACRO_DIR.
	* libltdl/config/libtoolize.m4sh: Replace all uses of macrodir
	with macro_dir.
	* tests/defs.m4sh, tests/sh.test: Likewise.

	maint: use aux_dir consistently in all files.
	* Makefile.am, Makefile.maint: Replace all uses of auxdir
	with aux_dir to match AC_CONFIG_AUX_DIR.
	* libltdl/config/libtoolize.m4sh: Likewise.
	* tests/defs.m4sh, tests/getopt-m4sh.at: Likewise.

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

	Makefile: try to be robust against shell meta-chars in filenames.
	* Makefile.am: In each rule body, unless a make variable needs
	to be seen as multiple words by the shell (for word-splitting
	loops, or because it contains several commands), quote it. Use
	single quotes unless the shell needs to perform variable inter-
	polation, in which case use double quotes.

	maint: let make employ user's `SED' setting.
	* Makefile.am: Replace hard-coded `sed' with `$(SED)' through-
	out.

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

	maint: simplify and improve safety of bootstrap process.
	* Makefile.am (bootstrap_files): List files that need to be
	generated at bootstrap time before `./configure && make' can
	work.  It turns out that this is considerably fewer files than we
	had thought necessary previously.
	(bootstrap-deps-prep): Ensure minimum set of required substitution
	variables are non-empty.
	(bootstrap-deps): Depend on `bootstrap' files.
	* bootstrap (Generate bootstrap dependencies): Now that
	`Makefile.am' is entirely responsible for rebuilding files at
	bootstrap time, we need only specify the new `bootstrap-deps'
	target, and supply values for the substitutions checked by
	`bootstrap-deps-prep'.
	* configure.ac (AC_CONFIG_SRCDIR): `libtoolize.in' is not here yet
	right after running `bootstrap'.  So rely on the presence of
	`libtoolize.m4sh', which is always there.

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

	build: eliminate superfluous temporary files from `Makefile.am'.
	* Makefile.am (CLEANFILES): Remove temporary file entries.
	(libtoolize.in, libltdl/config/ltmain.sh, libltdl/m4/ltversion.m4)
	(tests/defs, tests/testsuite): Factor away temporary files.

	build: eliminate `ltmain.in' and `libtoolize.in' intermediate files.
	* Makefile.am (libltdl/config/ltmain.sh, libtoolize.in): Pipe
	the output of `$(LT_M4SH)' directly into `$(bootstrap_edit)' to
	avoid use of superfluous intermediate file.

	build: don't hardcode repeated long paths in Makefile rules.
	According to the DRY principle, scattering several copies of
	something across a file or project leads to pain.  Let's not
	do that!
	* Makefile.am (Makefile_in, Makefile_inc, defs_in, defs_m4sh),
	(libtoolize_in, ltmain_m4sh, ltversion_in): New variables to
	hold the location of important files and targets.
	(EXTRA_DIST): Add the distributed ones by variable.
	(libtoolize, libltdl/Makefile.am, libltdl/m4/ltversion.m4)
	(libltdl/config/ltmain.sh, libltdl/stamp-mk, tests/defs)
	(tests/defs.in): Use the new variables to reduce noise and
	repetition.

	build: make better use of automatic variables in `Makefile.am'.
	* Makefile.am (libtoolize, libtoolize.in, libltdl/Makefile.am)
	(libltdl/config/mkstamp, libltdl/config/ltmain.m4sh)
	(libltdl/m4/ltversion.m4, tests/testsuite, tests/defs.in):
	Make better use of automatic variables.

	build: name temporary files in `Makefile.am' consistently.
	Sadly, we still have to jump through hoops for MICROS~1's very
	old, very broken 8.3 naming convention, so we have to be careful
	to be unique in the first 8 letters, and not to use two periods
	in a filename, otherwise we could use the much more elegent
	`temporary files use "$@T"' idiom:
	* Makefile.am (libltdl/m4/ltversion.m4): Rename temporary file
	to `ltversion.tmp'.
	(libltdl/config/ltmain.sh): Rename temporary file to
	`libltdl/config/ltmain.tmp'.
	(libtoolize): Rename temporary file to `libtoolize.tmp'.
	(tests/defs): Rename temporary file to `tests/defs.tmp'
	(tests/testsuite): Rename temporary file to `tests/testsuite.tmp'.
	(CLEANFILES): Append temporary files as we create rules that
	use them.

	build: factor Makefile.am `m4sh' invocations to LT_M4SH.
	* Makefile.am (LT_M4SH): Now that all directories are listed as
	fully qualified paths, the search path argument to M4SH is always
	the same, so factor it out into a variable.  Adjust all callers.

	build: avoid unnecessary directory changes in Makefile rules.
	* Makefile.am (doc/notes.txt, libltdl/m4/ltversion.m4,
	(libltdl/config/ltmain.m4sh, libtoolize.in, libltdl/Makefile.am)
	(libltdl/config/mkstamp, tests/testsuite, tests/defs.in): Avoid
	unnecessary `cd' commands by using fully qualified paths to files
	outside of current directory.

	build: compare `revision' rather than `correctver' in Makefile.am.
	* Makefile.am (rebuild): Set the shell variable `revision' rather
	than `correctver' for clarity of purpose.
	(bootstrap_edit, libltdl/config/ltmain.sh): Adjust.
	(libltdl/m4/ltversion.m4): Likewise, and alse, instead of munging
	the serial number comment line with set, extract `macro_version'
	from this file, and compare it directly with `revision'.
	(libtool): Likewise for `package_revision'.

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

	libtool: remove redundant unsubstituted shell var defaults.
	* Makefile.am (libltdl/config/ltmain.sh): Boilerplate code from
	libltdl/config/general.m4 sets some default shell variables
	designed to be substituted by `$(configure_edit)'.  Actually,
	`libtool' uses the language tag values for those variables, and
	`ltmain.m4sh' is not passed through `$(configure_edit)', so they
	are just noise.  Edit them out at bootstrap time.

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

	maint: don't leak developer GREP, SED etc into distribution file.
	* Makefile.am: Having rearranged the file, now apply the actual
	changes to follow-up.
	(edit): Split into two parts...
	(bootstrap_edit): ...substitutions that should happen at bootstrap
	time...
	(configure_edit): ...and substitutions that should not happen until
	configure time.
	* Makefile.am (libltdl/m4/ltversion.m4, libltdl/config/ltmain.sh)
	(libtoolize.in, tests/package.m4): Use bootstrap_edit.
	(libtoolize, tests/defs): Use configure_edit.
	* HACKING (Release Procedure): Remove the note to workaround the
	bug fixed by this changeset.
	* NEWS (Bug fixes): Mention that this bug is now fixed.
	Reported by Joerg Sonnenberger.

	maint: rearrange Makefile.am in preparation for a follow-up patch.
	* Makefile.am (Libtool scripts.): Move this section below the
	`Bootstrap.' section...
	(libtoolize.in): ...except this one which is generated at
	bootstrap time, and was added into the `Bootstrap.' section.
	(Libltdl.): Move this section below the `Libtool scripts.'
	section.

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

	msvc: don't try to export import descriptors.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin, mingw]
	[pw32, cegcc] <cl*, exclude_expsyms>: Don't export symbols in
	import libraries related to describing what dll(s) the import
	library is importing. Fixes problem in tests/demo-make.test
	and some other tests.

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

	Fix regression in command-line length computation.
	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN): Use `env echo' rather
	than possibly-undefined func_fallback_echo, to ensure we fork
	and exec for this test.
	* NEWS: Update.
	Regression introduced in v2.2.6-39-g9c3d4d8.

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

	Post-release administrivia.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	numbers to 2.4.1a.
	* NEWS: Add header line for next release.

	Release 2.4.
	* libltdl/Makefile.inc (LTDL_VERSION_INFO): We've added the
	static libprefix interface, so new version-info is C+1:0:R+1.
	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	numbers.
	* NEWS: Update version number.

	manual: web-manual index.html clashes with @node Index.
	* doc/libtool.texi (Index): Renamed to `Combined Index'.

	tests: ISO C++ forbids declaration of 'v1' with no type.
	* tests/lt_dlexit.at (lt_dlexit unloading libs): Added an
	explicit int type to declaration of 'v1' to prevent compilation
	failure with C++.

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

	tests: reloadable objects do not work on MSVC, SKIP test.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
	[cygwin, mingw, pw32, cegcc] <cl*, reload_cmds>: Indicate that
	reloadable objects do not work.
	* tests/duplicate_conv.at: Skip last test if reloadable
	objects do not work.
	* doc/libtool.texi (libtool script contents) <reload_cmds>:
	Document how to indicate that reloadable objects do not work.

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

	msvc: eliminate spaces in the library search path.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [mingw, cygwin]
	<cl*, sys_lib_search_path_spec>: The LIB path variable telling
	where MSVC looks for libraries is likely to contain directory
	names with spaces.  Convert those directory names to the short
	8.3 DOS form (i.e. without spaces) when storing them in
	sys_lib_search_path_spec, as that is a space separated variable.

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

	Revert to per-language libpath computation on AIX.
	* libltdl/m4/libtool.m4 (_LT_SYS_MODULE_PATH_AIX): Accept
	tagname argument.  Use global cache variable lt_cv_aix_libpath
	to override per-language tag variables for the libpath value.
	Fix the sed script to remove trailing space.
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG): Pass tag argument to
	_LT_SYS_MODULE_PATH_AIX.
	Tracked down and reported by Rainer Tammer.

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

	maint: edit-readme-alpha shouldn't try to re-edit during dist.
	* libltdl/config/edit-readme-alpha: If README is non-writable
	assume that it is being run from distcheck, and skip the edit
	with a warning (to help diagnose cases where the heuristic is
	not correct).  However, if README has already been edited to
	the alpha text, quietly skip without an error message.

2010-09-20  Eric Blake  <eblake@redhat.com>

	maint: drop autobuild requirement
	* HACKING: Update.

	build: ship autobuild.m4, to reduce bootstrap requirement
	* libltdl/m4/.gitignore: Drop autobuild.m4.
	* libltdl/m4/autobuild.m4: New file, copied from autobuild.
	* configure.ac (AB_INIT): Unconditionally call it.

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

	libltdl: Make sure preloaded symbols are declared extern "C".
	* libltdl/ltdl.h (LTDL_SET_PRELOADED_SYMBOLS): Move the
	declaration of lt__PROGRAM__LTX_preloaded_symbols to global
	scope and make sure it has "C" linkage.  Makes exceptions.at
	succeed on MSVC.

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

	tests: __declspec (dll{ex,im}port) in tests/exceptions.at
	* tests/exceptions.at (common.h, module.h, lib.h) [w32]: Use
	__declspec (dllimport) and __declspec (dllexport) instead of
	the less portable __attribute__ ((dllimport)) and
	__attribute__ ((dllexport)).  Makes the test compile on MSVC.

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

	tests: Import items from liba1 for MSVC.
	* tests/lt_dlexit.at (b1.c) [MSVC]: Import function f1 and
	variable v1 from liba1 when using them from modb1.  Makes the
	test pass on MSVC.

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

	tests: avoid distcheck failure with --disable-ltdl-install.
	* tests/ltdl-libdir.at (libdir of installed modules): Skip if
	$LIBLTDL does not exist.

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

	maint: use sed instead of maintaining 2 README files.
	* README.alpha: Deleted.  It was mostly identical to README.
	* libltdl/config/edit-readme-alpha: New script to edit the
	contents of README in the dist tree prior to tarring up.
	* Makefile.am (dist-hook): Run it before rolling alpha release
	tarball.

	maint: improve README's `Obtaining the Latest Sources'.
	* README (Obtaining the Latest Sources): Add instructions for
	obtaining stable, alpha and nightly snapshot tarballs.
	* README.alpha (Obtaining the Latest Sources): Adjust to match.

	maint: reformat README `The Test Suites' for consistency.
	* README (The Test Suites): Reformatted for consistency.
	* README.alpha (The Test Suites): Adjust to match.

	maint: improve `Reporting Bugs' in README and README.alpha.
	* README (Reporting Bugs): Rewritten to a more complete and
	concise guide to providing a good bug report.
	* README.alpha (Reporting Bugs): Adjust to match.

	maint: consolidate Introductions of README and README.alpha.
	* README (Introduction): Rewritten to a more logical order for
	first time users, incorporating some additional text that was
	previously only in README.alpha.
	* README.alpha (Introduction): Adjust to match.

	maint: copy the Version Numbering section into README.alpha.
	* README.alpha (Version Numbering): No less useful for users
	of alpha releases.  Copied from README.

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

	tests: actually detect missing 'test' in 'if "$foo" = ...'.
	* tests/sh.test: Remove extra backslash in regex.

	Copy over DLL_EXPORT handling from C to C++ for non-GCC on w32.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [mingw, cygwin, os2]
	[pw32, cegcc]: Copy over the DLL_EXPORT handling from C to C++.

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

	Fix order of PATH manipulation in cwrapper and shwrapper
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src:main): Call
	lt_update_exe_path before lt_update_lib_path, to ensure that the
	temporary rpath values (which include the OBJDIRs of uninstalled
	libtool libraries) precede installation and final -rpath directories.
	(func_emit_wrapper): Prepend $dllsearchpath to PATH before prepending
	$temp_rpath to $shlibpath_var; similar rationale as above.
	Reported by Jon Turney <jon.turney@dronecode.org.uk>

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

	Document libtool variable to_host_file_cmd.
	* doc/libtool.texi (libtool script contents:to_host_file_cmd):
	Document variable.
	(libtool script contents:to_tool_file_cmd): Prefer `build platform'
	to `build system'; Ditto `host platform'.

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

	Fix sh.test failure introduced in 72064249
	* libltdl/config/ltmain.m4sh (func_mode_link): Avoid poor
	syntax.

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

	tests: avoid localization failure due to unstable compiler messages.
	* tests/testsuite.at (LT_AT_NORMALIZE_COMPILER_OUTPUT):
	Attempt to normalize temporary file names in error messages.
	Fixes 'localized compiler messages' test failure on Darwin when
	creating fat (multi-ABI) libraries.

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

	Prefer $NM @file when the toolchain isn't native to $build.
	* libltdl/config/ltmain.m4sh (func_mode_link): Avoid calculating
	the command line length and take the @file branch *if* the file
	names needs to be converted for the toolchain and the @file
	branch works.  Fixes problems in stresstest.at when doing a cross
	from Cygwin to MinGW using MinGW native tools (a.k.a. a "faked"
	cross), and for the specific case of MSVC on Cygwin it makes the
	test pass.

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

	maint: improve README instructions for fetching latest version.
	* README, README-alpha (Obtaining the Latest Sources): New
	section, describing use of savannah repositories and bootstrap.
	* README.alpha (Reporting Bugs): Remove git instructions in
	favour of a reference to the new `Obtaining the Latest Sources'
	section.

2010-09-14  Eric Blake  <eblake@redhat.com>

	maint: ship .xz, not .lzma
	* configure.ac (AM_INIT_AUTOMAKE): Prefer better file format.
	* Makefile.maint (git-release, git-dist, prev-tarball)
	(new-tarball, diffs): Use correct extension.
	* HACKING: Update instructions.
	* .gitignore: Ignore .xz files.

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

	doc: avoid long lines in input and output, indexing fixes.
	* doc/libtool.texi (Linking libraries)
	(Module loaders for libltdl): Manually line-wrap examples, to
	avoid long lines.
	(Libltdl interface, User defined module data)
	(Module loaders for libltdl): Wrap long @deftypefun input lines
	using trailing '@'.  Use @deftypefun rather than @deftp where
	appropriate, and add spaces in @deftypefun lines to fix the
	index entries generated from these lines.
	(Cheap tricks): Use @smallexample rather than @example, to avoid
	long lines.

	docs: @file and @option markup fixes.
	* doc/libtool.texi (Creating object files, Linking libraries)
	(Linking executables, Link mode, Finish mode, Autoconf macros)
	(Using Automake, Inter-library dependencies, Dlpreopening)
	(Linking with dlopened modules, Finding the dlname)
	(Libltdl interface, Test descriptions, Multiple dependencies):
	Add @option where needed, replace @samp with @file as
	appropriate.

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

	* .gitignore: Ignore *.obj files for MSVC (and w32 in general).

	Adjust to moved auxiliary files and add compile.
	* HACKING (Maintenance Notes): Adjust to moved files.  Add the
	compile script.
	* Makefile.maint (fetch): Also fetch the compile script.

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

	tests: avoid empty AT_DATA contents, for zsh.
	* tests/libtoolize.at (libtoolize macro serial update)
	(libtoolize config files serial update, LIBTOOLIZE_OPTIONS):
	Do not create empty files with AT_DATA, the latter is documented
	to require a final newline.  Fixes testsuite failures with zsh
	4.3.10.

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

	When assigning $linklib value, honor [-all]-static[-libtool-libs]

	* libltdl/config/ltmain.m4sh (func_mode_link): When prefer_static_libs
	and static library exists, ensure old_library name is used as $linklib.
	Fixes failure on mingw when both static and shared libraries are
	present.

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

	tests: work around zsh use of $options variable.
	* tests/getopt-m4sh.at: Rename $options to $opts, the former is
	special for zsh 4.3.10.

	Fix AC_NO_EXECUTABLES test failure on IRIX 6.5.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [irix]: Cache result
	of link check for -Wl,-exported_symbol.
	* tests/no-executables.at (AC_NO_EXECUTABLES): Set
	lt_cv_irix_exported_symbol, to avoid link check.

2010-09-12  Jürgen Reuter  <juergen.reuter@physik.uni-freiburg.de>  (tiny change)
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Initial support for the NAG Fortran compiler on GNU/Linux.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux] <nagfor>:
	New set of entries, for NAG Fortran 5.1 and 5.2.
	* NEWS: Update.

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

	Fix getopt.m4sh to require Autoconf 2.62 or newer.
	* libltdl/config/getopt.m4sh (m4_version_prereq): Require 2.62,
	not 2.61.

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

	Correct typo: $sharedlib_from_linklib_cmd missing '_cmd'

	* libltdl/config/ltmain.m4sh (func_generate_dlsyms): Fix obvious
	typo, $sharedlib_from_linklib_cmd missing '_cmd'.

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

	Convert file name to toolchain format when invoking $NM.
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms)
	(func_win32_libid, func_cygming_gnu_implib_p)
	(func_cygming_ms_implib_p): When using the name lister to find
	symbols in files, convert the file names to a format appropriate
	for the tool. Fixes testsuite issues in mdemo-static-make.test
	and mdemo-make.test when doing a cross from Cygwin/Wine to MinGW
	using MinGW native tools (a.k.a. a "faked" cross).

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

	Fix dependency tracking for MSYS/MinGW.
	* libltdl/config/ltmain.m4sh (func_to_tool_file): Add lazy
	argument which allows the user to specify conversions that are
	not desired.
	(func_mode_compile): Don't convert source files on MSYS, as
	MSYS does it for us. This fixes a regression introduced by
	"Use func_to_tool_file instead of fix_srcfile_path".
	Reported by Charles Wilson.

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

	Mention adjustment of naming of MSVC import libraries in NEWS.
	* NEWS: Mention the change in import library naming on MSVC.

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

	Adjust naming of MSVC import libraries.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [mingw, cygwin]
	[pw32, cegcc] <cl*, library_names_spec>: Adjust naming of the
	import library from foo-<major-version>.lib to foo.dll.lib, to
	avoid clashes with the static library for unversioned libraries.
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG) [mingw, cygwin, pw32]
	[cegcc] <cl*, archive_expsym_cmds>: Explicitely name the import
	library to match the above.

	Fixup texi typo in previous.
	* doc/libtool.texi (libtool script content) <postlink_cmds>:
	Add missing 'code' command.

	Convert POSIX file names to toolchain format for MSVC
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[cygwin, mingw, pw32, cegcc] <cl*, postlink_cmds>: Make
	sure the -outputresource: file name for the manifest tool is
	in w32 format.
	<cl*, archive_expsym_cmds>: Likewise for the MSVC command file
	containing the exports and the output file name.
	* libltdl/config/ltmain.m4sh (func_mode_link): Precalculate the
	toolchain format of the output_objdir file name and store it in
	the tool_output_objdir variable. Also replace any occurrence of
	@TOOL_OUTPUT@ in postlink_cmds with the toolchain version of the
	@OUTPUT@ content.
	* doc/libtool.texi (libtool script content): Update description
	of postlink_cmds to mention @TOOL_OUTPUT@.

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

	Use func_to_tool_file instead of fix_srcfile_path.
	* libltdl/config/ltmain.m4sh (func_mode_compile): Replace the
	fix_srcfile_path hook with a call to func_to_tool_file.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin,mingw,pw32]
	[cegcc]: Drop fix_srcfile_path.
	* doc/libtool.texi (libtool script contents): Likewise.
	* NEWS: Mention that fix_srcfile_path has been replaced.

	Convert file names to toolchain format in $NM and $AR @files.
	* libltdl/config/ltmain.m4sh (func_mode_link): When listing
	symbols and when creating archives using command files (or
	response files), make sure that both the name of the command
	file and the content are made up of file names in a format
	appropriate for the tool. Fixes stresstest.at on MSYS when
	run with low command line length.

	Convert file names to toolchain format when linking.
	* libltdl/config/ltmain.m4sh (func_mode_link): When exporting
	symbols and when linking using command files (or response
	files), make sure that both the name of the command file and
	the content are made up of file names in a format appropriate
	for the tool. Fixes problems in stresstest.at on MSYS when run
	with low command line length.

	Add file name conversion from $build to toolchain.
	* configure.ac: Ensure to_tool_file_cmd is available to Makefile.
	* libltdl/m4/libtool.m4 (_LT_PATH_CONVERSION_FUNCTIONS): Add
	cache variable lt_cv_to_tool_file_cmd that describes how to
	convert file names from $build to toolchain format.
	* libltdl/config/ltmain.m4sh (func_to_tool_file): New function
	that utilizes the above.
	* Makefile.am: Ensure to_tool_file_cmd is included in
	TEST_ENVIRONMENT so that it is passed to (old testsuite) tests.
	* testsuite.at: Ensure to_tool_file_cmd is passed as a variable
	setting on the configure line for (new testsuite) tests.
	* doc/libtool.texi (libtool script content): Update with
	to_tool_file_cmd description.
	(Cygwin to MinGW Cross): Update to mention lt_cv_to_tool_file_cmd.

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

	Path conversion documentation
	* doc/libtool.texi (Platform quirks): Add new subsections
	'Cross compiling' and 'File name conversion'.

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
