
2010-12-20  Ian Lance Taylor  <iant@google.com>

	* libltdl/m4/libtool.m4 (LT_LANG): Add Go.
	(AC_PROG_GO): Provide.
	(_LT_SYS_HIDDEN_LIBDEPS): Add Go case.
	(_LT_LANG_GO_CONFIG): Define.
	(LT_PROG_GO): Define.
	(AC_PROG_GO): Define if not defined.
	* libltdl/config/ltmain.m4sh: Match *.go.
	* doc/libtool.texi (LT_INIT): Mention Go.
	(Tags): Mention Go.
	* configure.ac: Enable Go.
	* NEWS: Update.

2010-12-20  Brice De Bruyne  <bricedb@gmail.com>  (tiny change)

	Also turn off -fuse-linker-plugin for postdep_objects computation.
	* libltdl/m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Add
	-fno-use-linker-plugin to temporary compile flags if necessary,
	to fix C++ postdep_objects setting with -flto
	-fuse-linker-plugin.
	* NEWS, THANKS: Update.

2010-12-20  KO Myung-Hun  <komh@chollian.net>  (tiny change)

	Set command line length limit for OS/2.
	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN) [os2]
	<lt_cv_sys_max_cmd_len>: Set to 8192 to avoid long test.

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

	Fix PIC flags with mpif77 using ifort on GNU/Linux.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux]:
	Match Intel compiler also using $CC -V output, to avoid false
	negatives with compiler drivers like mpif77.
	Report by Christian Rössel.

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

	Fix PIC flags with MPI wrappers using Portland on GNU/Linux.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux]:
	Match Portland compilers also using $CC -V output, to avoid
	false negatives with MPI compiler drivers.
	Report by Christian Rössel.

	* libltdl/m4/libtool.m4 (_LT_SETUP): Fix quoting for
	PATH_SEPARATOR.

2010-12-15  KO Myung-Hun  <komh@chollian.net>  (tiny change)
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix PATH_SEPARATOR handling for OS/2.
	* Makefile.am (update_mans): Quote $(PATH_SEPARATOR).
	* libltdl/m4/libtool.m4 (_LT_SETUP): Add _LT_DECL for
	PATH_SEPARATOR.
	* libltdl/config/general.m4sh: Use PATH_SEPARATOR when computing
	$progpath.
	* THANKS: Update.

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

	Fix nvcc PIC setting on darwin.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC)
	<lt_prog_compiler_pic>: Prepend -Xcompiler to nonempty variable
	setting rather than hard-coding -Xcompiler -fPIC, for darwin.
	* NEWS, THANKS: Update.
	Report by Paweł Daniluk.

	Honor $AUTOCONF, $AUTOMAKE in --help output.
	* libltdl/config/getopt.m4sh (func_help): Use $AUTOCONF and
	$AUTOMAKE if set, for --version outout.

	docs: Libtool configuration diagram.
	* doc/libtool.texi (Integrating libtool): Add diagrams
	explaining the dependencies between Libtool files.
	Suggestion by Ethan Mallove.

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

	Eliminate hardcode_libdir_flag_spec_ld tag variable.
	* libltdl/config/ltmain.m4sh (func_mode_link): Set $wl to empty
	if $LD is used for creating shared libraries.  Do not use
	hardcode_libdir_flag_spec_ld any more.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	(_LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG, _LT_SYS_DYNAMIC_LINKER)
	<hardcode_libdir_flag_spec_ld>: Remove all instances of the tag
	variable.
	(_LT_LINKER_SHLIBS) [linux, xlf] <hardcode_libdir_flag_spec>:
	Set variable, including ${wl}.  Fixes hardcoding in programs
	created by XL Fortran on GNU/Linux.
	* NEWS, THANKS: Update.
	Report by Paul H. Hargrove.

	Rebuild menus in the manual.
	* doc/automake.texi: Rebuild menus (using ^C ^U ^A in emacs).
	Thanks to Ian Lance Taylor for the suggestion.

2010-11-07  Ollie Wild  <aaw@google.com>

	Modify --with-pic to support per-package configurations.
	* libltdl/m4/libtool.m4:  Modify --with-pic to accept a list of
	package names.  Modelled off --enable-shared.
	* tests/with-pic.at: New test.
	* Makefile.am (TESTSUITE_AT): Add tests/with-pic.at.
	* doc/libtool.texi (LT_INIT): Enhance documentation of
	--with-pic configure flag.
	* NEWS (New features): Mention that --with-pic now accepts a
	comma-separated list of package names.

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

	Fix cwrapper test failure with --disable-static.
	* tests/cwrapper.at (cwrapper and installed shared libraries):
	Compile program source without libtool, so we can be sure a
	non-PIC object will be created.

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

	docs: Windows DLLs and headers.
	* doc/libtool.texi (Platform quirks): Add new subsection
	'Windows DLLs'.

	* doc/libtool.texi (Platform quirks): Fix typo.

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

	docs: mention shell requirement for libtool script.
	* doc/libtool.texi (Invoking libtool): Document that the shell
	used to invoke libtool needs to be the same used to configure
	it.
	* THANKS: Update.
	Report by Markus Duft.

2010-10-15  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-10-15  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-10-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix linking from only convenience archives with gfortran on Darwin.
	* libltdl/m4/libtool.m4 (_LT_DARWIN_LINKER_FEATURES): Update
	macro comment header.
	[darwin, F77, FC] <compiler_needs_object>: Set to yes if
	whole_archive_flag_spec is nonempty.  Fixes convenience.at test
	suite failures with gfortran 4.2 on Darwin.
	* THANKS: Update.
	Report by Paul Laight.

	Fix bindir check logic, and relax non-bindir case for AIX.
	* tests/bindir.at (bindir install tests): Rewrite checks for
	place of the installed shared library in two separate tests,
	depending on whether -bindir is supposed to have an effect or
	not.  In the positive case, make the test stricter so that we
	reject libraries in $libdir.  In the negative case, do not
	require a major version number in the $libdir file name, for AIX
	without runtimelinking.  If tmpdir creation fails, skip the
	test.  Use fewer bindir directory names for testing, to speed
	up the test.  Also mention MSVC style DLL name in comment.
	Report by Peter Rosin.

	tests: remove unneeded 'bindir compile check' test.
	* tests/bindir.at (bindir compile check): Remove.

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

	tests: fix $EXEEXT typo.
	* tests/depdemo-relink.test (func_restore_files): Use $EXEEXT
	instead of $EXEXT.

2010-10-12  Simon Josefsson  <simon@josefsson.org>
	    Matěj Týč <matej.tyc@gmail.com>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	docs: improve description of -no-undefined.
	* doc/libtool.texi (Link mode): Fix -no-undefined description.
	(Inter-library dependencies): Use Windows not AIX as example
	system.  Clarify need for symbol resolution at library creation
	time.

2010-10-09  Paolo Bonzini  <bonzini@gnu.org>

	Add missing sysroot resolution.
	* libltdl/config/ltmain.m4sh (func_mode_link): Resolve sysroot
	when fetching the install directory of dependent libraries.
	Reported by Lionel Landwerlin <llandwerlin@gmail.com>,
	patch by Khem Raj <raj.khem@gmail.com>.
	* THANKS: Reorder entries, add Khem and Lionel.

2010-10-07  Roumen Petrov  <bugtrack@roumenpetrov.info>

	Add test case for 69e77671 (cwrapper PATH manipulation order)
	* tests/cwrapper.at: Add new test 'cwrapper and installed shared
	libraries.'

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

	cwrapper: split long lines when dumping the wrapper script.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src): If
	the wrapper script contains long lines, split them for
	readability and to conform with C standards.
	* tests/cwrapper.at (cwrapper string length): New test, making
	sure we don't regress.

	msvc: handle symbols from different files independently.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS)
	<dumpbin, lt_cv_sys_global_symbol_pipe>: Make all sections
	viable for symbol extraction again when the symbols from a new
	file starts.  Fixes tests/tagdemo-make.test for MSVC 10.
	* tests/dumpbin-symbols.at: New test, making sure we don't
	regress.
	* Makefile.am (TESTSUITE_AT): Update.

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

	tests: check if sys_lib_search_path_spec works on MSVC.
	* tests/search-path.at (sys_lib_search_path on w32): New test,
	making sure v2.2.10-207-g09142ea doesn't regress.

	Skip need_lib_prefix.at on systems without lib prefix on libraries.
	* tests/need_lib_prefix.at [MSVC, OS/2]: Skip this test on
	systems that do not have libraries prefixed with lib.

	tests: clean up importing and exporting on w32.
	Makes the touched tests pass for MSVC when DLLs are built.
	* tests/demo/Makefile.am, tests/pdemo/Makefile.am: Define
	BUILDING_LIBHELLO when building libhello.la.
	* tests/demo/foo.h, tests/pdemo/foo.h (nothing) <MSVC>: Export
	variable when building the libhello dll and import when using
	libhello.  For GCC and non-w32, and when building a static
	libhello, leave as an ordinary extern.
	* tests/pdemo/foo.h [Cygwin]: Remove unneeded and "dead" export
	and import logic (LIBFOO_DLL is always undefined).
	* tests/pdemo/longer_file_name_foo.c,
	tests/pdemo/longer_file_name_foo2.c (_LIBFOO_COMPILATION_): Not
	useful before, even less so now.  Removed.
	* tests/depdemo/l1/Makefile.am: Define BUILDING_LIBL1 when
	building libl1.la.
	* tests/depdemo/l2/Makefile.am: Define BUILDING_LIBL2 when
	building libl2.la.
	* tests/depdemo/l3/Makefile.am: Define BUILDING_LIBL3 when
	building libl3.la.
	* tests/depdemo/l4/Makefile.am: Define BUILDING_LIBL4 when
	building libl4.la.
	* tests/depdemo/l1/l1.h, tests/depdemo/l2/l2.h,
	tests/depdemo/l3/l3.h, tests/depdemo/l4/l4.h <MSVC>: Export
	variables when building the associated library dll and import
	when using the library.  For GCC and non-w32, and when building
	static libraries, leave as an ordinary extern.

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

	docs: do not refer to Libtool version with dlopen functionality.
	* doc/libtool.texi (Dlopened modules): Remove broken reference
	to what should have been Libtool 0.9g.
	Report by Roumen Petrov.

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.

2009-12-30  Peter Rosin  <peda@lysator.liu.se>

	* libltdl/ltdl.c (lt_dlerror): Remove meaningless conditional.

2009-12-29  Peter Rosin  <peda@lysator.liu.se>

	* libltdl/ltdl.c (file_not_found): Fix typos in code comment.

2009-12-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Replace last __oline__ instance.
	* libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Replace last
	__oline__ instance with $LINENO.

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

	Improve parsing of .la files in libltdl.
	* libltdl/ltdl.c (trim): Do not dump core upon missing quote in
	module .la file.
	* tests/lalib-syntax.at (syntax of .la files): New file, new
	test.
	* Makefile.am (TESTSUITE_AT): Add tests/lalib-syntax.at.
	Report by Bob Friesenhahn.

2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Sane fallback initialization of $ECHO from $as_echo.
	* libltdl/config/general.m4sh: Use 'printf %s\n' if $as_echo is
	unset.
	* tests/testsuite.at: Likewise.
	* THANKS: Update.
	Report by Vadim Zeitlin and Peter Rosin.

2009-12-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	lt_dlloader_remove and lt_dlloader_find accept const arguments.
	* libltdl/lt_dlloader.c (lt_dlloader_remove, lt_dlloader_find):
	Accept `const char *' arguments, as documented.  Cast them to
	`void *' for the slist machinery.
	* libltdl/libltdl/lt_dlloader.h: Adjust prototypes.

	Test and fix slist.c.
	* libltdl/libltdl/slist.h: Include stddef.h, for size_t.
	(slist_remove): Return pointer to SList, not void.
	* libltdl/slist.c: Include stdlib.h, for malloc and free.
	(slist_remove): Adjust prototype as above.
	(slist_sort): Do not loop forever on one-item list.
	* tests/slist.at (SList functionality): New file, new test.
	* Makefile.am (TESTSUITE_AT): Add tests/slist.at.

2009-11-30  Peter Rosin  <peda@lysator.liu.se>

	Please C++ compilers when calling strrchr.
	* libltdl/ltdl.c (has_library_ext): Match the return type of
	strrchr with the first argument to please C++ compilers.
	Report by Peter O'Gorman.

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

	Fix bindir and dlopen tests for C++ compilers (CC=g++).
	* tests/bindir.at (bindir basic lib test, bindir install tests):
	Include stdlib.h rather than declaring abort.
	* tests/lt_dlopenext.at (lt_dlopenext error messages): Use
	`extern "C"' annotation for dlsym'ed function in C++ mode.

2009-11-25  Peter Rosin  <peda@lysator.liu.se>

	Fix cross build issue in execute mode test.
	* tests/execute-mode.at: Skip test for cross builds.

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

	Enable symbol versioning with the GNU gold linker.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS): Accept 'GNU gold'
	in the version string.
	* NEWS, THANKS: Update.
	Report by Peter Fritzsche.

	Tighten regex for Portland C++ compiler for version 10.
	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [linux]:
	Match a dot after version 1 through 5, so 10 and up don't match,
	and use weak symbols.
	* THANKS: Update.
	Report by Jeff Squyres and Brent Leback.

2009-11-16  Peter O'Gorman  <peter@pogma.com>

	Update libltdl version to match 2.2.6b release.
	* libltdl/Makefile.inc: Make version 9:1:2

2009-11-14  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	Don't load module.la from current directory by default.
	* libltdl/ltdl.c (try_dlopen): Do not attempt to load an
	unqualified module.la file from the current directory (by
	default) since doing so is insecure and is not compliant with
	the documentation.
	* tests/testsuite.at: Qualify access to module.la file in
	current directory so that test passes.

2009-11-14  Peter O'Gorman  <peter@pogma.com>

	Only use preopen loader to load preopened archives
	* libltdl/ltdl.c: Limit checking of .a to preopen loader.
	* tests/lt_dlopen_a.at: Add test.
	* Makefile.am: Add test.

2009-11-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Recognize `pgfortran' as Portland compiler.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS):
	Accept `pgfortran*' too.
	Report by Jeff Squyres.

2009-11-04  Alexandre Oliva  <aoliva@redhat.com>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix verbose link extraction for multiply reconfigured GCC.
	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG)
	<output_verbose_link_cmd>: Drop GCC lines "Configured with" that
	may contain unrelated flags.

2009-11-02  Eric Blake  <ebb9@byu.net>

	Allow gcc builds with -Wall -Werror.
	* libltdl/ltdl.c (try_dlopen): Use strlen rather than LT_STRLEN on
	an array that will never be NULL.

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

	Fix func_normal_abspath sed script for Solaris.
	* libltdl/config/general.m4sh (pathcar, pathcdr, removedotparts)
	(collapseslashes, finalslash): Use single quotes, for clarity.
	(removedotparts): Avoid \{N,M\} after subexpression \(...\), for
	Solaris /bin/sed.

	Improve versioning algorithm documentation.
	* doc/libtool.texi (Updating version info): Repeat the
	algorithms in different, hopefully simpler terms.
	* THANKS: Update.
	Prompted by Richard B. Kreckel.

2009-11-01  Ingo Weinhold  <ingo_weinhold@gmx.de>  (tiny change)

	Support for the Haiku operating system.
	* libltdl/config/ltmain.m4sh (func_mode_link): Add cases for
	`*-*-haiku*' alongside `*-*-beos*'.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, LT_LIB_M, _LT_COMPILER_PIC)
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG): Add cases for
	`haiku*'.
	* NEWS, THANKS: Update.

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

	Fix quoting of AS, DLLTOOL, and OBJDUMP for the libtool script.
	* libltdl/m4/ltoptions.m4 (AC_LIBTOOL_DLOPEN): Quote values of
	$AS, $DLLTOOL, and $OBJDUMP, so they can contain arguments.
	* THANKS: Update.
	Report by Matthijs Kooijman.

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

	Initial support for the Cuda Compiler Driver on Linux.
	* libltdl/config/ltmain.m4sh (func_mode_compile): Accept source
	file extensions `.cu' and `.cup'.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_NO_RTTI, _LT_COMPILER_PIC)
	(_LT_LINKER_SHLIBS): Support for `nvcc' compiler driver.
	* NEWS, THANKS: Update.
	Report by Mahesh Narayanamurthi.

2009-09-12  Dave Korn  <dave.korn.cygwin@googlemail.com>

	Control where win32 DLLs get installed.
	* libltdl/config/general.m4sh (func_normal_abspath): New function.
	(func_relative_path): Likewise.
	* libltdl/config/ltmain.m4sh (func_mode_help): Document "-bindir".
	(func_mode_link): Accept new "-bindir" option and use it, if
	supplied, to place Windows DLLs.
	* tests/bindir.at: New file for install tests using "-bindir".
	* Makefile.am (TESTSUITE_AT): Add bindir.at.
	* doc/libtool.texi (Link Mode): Update documentation.
	* NEWS, THANKS: Update.

2009-09-11  Akim Demaille  <demaille@gostai.com>

	libtool: clean libconftest.a.
	* libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Here.

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

	func_win32_libid doesn't work with MS dumpbin
	* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD): The $NM
	interface is assumed to be BSD nm in func_win32_libid, so
	check for that before using it.

2009-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Allow dlopen self test to work with gcc's -fvisibility=hidden.
	* libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Declare default
	visibility for the symbol we are going to test dlopen (NULL)
	when a GCC version is used that understands the visibility
	attribute, under the assumption that if -fvisibility=hidden
	will be used, the user code will be sufficiently annotated
	for visibility of needed symbols from the main executable.
	* THANKS: Update.
	Report by Josh Hursey against OpenMPI.

	Fix and split recent testsuite addition for compile/link flags.
	* tests/flags.at (passing flags through libtool): Split into ...
	(passing CC flags through libtool)
	(passing CXX flags through libtool)
	(passing F77 flags through libtool)
	(passing FC flags through libtool)
	(passing GCJ flags through libtool): ... these five tests,
	factorized with m4_foreach.  Fix F77 and FC compile and link
	commands; add GCJ tag.  Use LT_AT_TAG to correctly skip tags
	for which no compiler exists.  Use $EXEEXT where appropriate.
	Drop unneeded use of reload_cmds.
	Reports by Peter Rosin and Peter O'Gorman.

2009-09-07  Peter O'Gorman  <peter@pogma.com

	Fix redirect in test case.
	* tests/darwin.at: Fix stderr redirect.

	Use darwin's -force_load flag if available for whole_archive_flag_spec
	* libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Check for
	-force_load and use it if there.
	* tests/darwin.at: Add a simple test.

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

	Testsuite keyword 'interactive' and check-* rules.
	* Makefile.am (testsuite_deps, testsuite_deps_uninstalled):
	New variables.
	(check-local, installcheck-local): Use them.
	(check-interactive, check-noninteractive): New rules.
	* tests/link-order2.at (Link order of deplibs),
	tests/static.at (static linking flags for programs): Add keyword
	`interactive'.
	* doc/libtool.texi (Test descriptions): Document all keywords
	used in the Libtool test suite.
	* NEWS: Update.

	Fix failure test in the presence of --with-pic or -prefer-pic.
	* tests/fail.at (Failure tests): Run non-PIC failure test only
	if pic_mode is 'default' or 'no', rather than 'default' or 'yes'
	and also -prefer-pic has not been passed in $CFLAGS.
	* THANKS: Update.
	Report by Donn Washburn.

	Add testsuite exposure for passing of compiler and linker flags.
	* tests/flags.at (passing flags through libtool): New file, new
	test, for bug fixed in previous commit.
	* Makefile.am (TESTSUITE_AT): Add tests/flags.at.

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

	Make -Wc,FLAG behave like -Xcompiler FLAG in link mode.
	* libltdl/config/ltmain.m4sh (func_mode_link): Remove "-Wc,"
	instead of replacing it with "$wl" when linking programs
	through the compiler driver, just as is the case when linking
	libraries.
	* NEWS: Update.

2009-08-23  Lennart Poettering  <lennart@poettering.net>  (tiny change)

	Shut up prototype warnings with recent GCC and -Wstrict-prototypes.
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms): Use recent
	GCC's diagnostic pragma to override a -Wstrict-prototypes
	setting for the symbol list code.
	* THANKS: Update.

2009-08-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Remove __oline__ from macros, for less spurious configure diffs.
	* libltdl/m4/libtool.m4 (_LT_ENABLE_LOCK, _LT_COMPILER_OPTION)
	(_LT_COMPILER_C_O, LT_PATH_NM): Replace __oline__ instances with
	$LINENO.
	* NEWS: Update.

2009-07-24  Roumen Petrov  <bugtrack@roumenpetrov.info>  (tiny change)

	Fixup 'execute mode' test for w32.
	* tests/execute-mode.at (execute mode): Add missing $EXEEXT.
	(LDFLAGS): Add -no-undefined.

2009-07-01  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net> (tiny change)
	    Charles Wilson  <libtool@cwilson.fastmail.fm>

	[CXX] Use correct export_dynamic_flag_spec for PE-COFF $hosts
	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [cygwin*|mingw*|pw32*|cegcc*]:
	Define export_dynamic_flag_spec as -Wl,--export-all-symbols here as well
	(see commit 5f2bbb494a2753afb2878c399cfd8316b7403a5b).

2009-06-29  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[mingw] Improve sys_lib_search_path_spec detection.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Fix handling
	of dos-style paths when parsing $CC -print-search-dirs output.

2009-06-28  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Finish adding alias for obsoleted AC_LIBTOOL_RC macro.
	* libltdl/m4/libtool.m4: Add reminder comment concerning
	aclocal-1.4 backwards compatibility.
	* libltdl/m4/lt~obsolete.m4: Remove unnecessary AC_DEFUN.

2009-06-27  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Add alias for obsoleted AC_LIBTOOL_RC macro.
	* libltdl/m4/libtool.m4: Add alias for obsoleted
	macro AC_LIBTOOL_RC.

2009-06-21  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Remove unneeded functions and options from cwrapper
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
	[lt_opt_process_env_set]: Remove.
	[lt_opt_process_env_prepend]: Remove.
	[lt_opt_process_env_append]: Remove.
	[lt_split_name_value]: Remove.
	[file scope]: Don't declare removed functions. Remove
	constants and defines related to eliminated commandline
	options.
	[main]: Remove code related to eliminated commandline
	options --lt-env-set, --lt-env-prepend, --lt-env-append.

2009-06-19  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net> (tiny change)
	    Charles Wilson  <libtool@cwilson.fastmail.fm>

	Ensure LT_PATH_LD works when called before LT_INIT
	* libltdl/m4/libtool.m4 (LT_PATH_LD): AC_REQUIRE _LT_PROG_ECHO_BACKSLASH.

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

	Add versioning tests.
	* tests/versioning.at (versioning): New file, new test.
	* Makefile.am (TESTSUITE_AT): Adjust.
	Prompted by bug report from Mike Gorchak.

2009-06-14  Mike Gorchak  <mike@malva.ua>  (tiny change)
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix versioning computation for QNX.
	* libltdl/config/ltmain.m4sh (func_mode_link): Set `$current'
	and `$age' properly for version_type `qnx'.

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

	Avoid spurious localization testsuite failure on HP-UX/ia64.
	* tests/localization.at (localized compiler messages): Skip test
	if the compiler warning output contains `locale', for HP-UX.

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

	Fix concurrent extraction of convenience libraries on Darwin.
	* libltdl/m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE): New libtool
	variable `lock_old_archive_extraction', set to `yes' on darwin.
	* doc/libtool.texi (libtool script contents): Document it.
	* libltdl/config/ltmain.m4sh (func_extract_an_archive): Lock
	`ar x' invocation if `lock_old_archive_extraction' is yes.
	* tests/darwin.at (darwin concurrent library extraction): New
	test.
	* NEWS: Update.
	Report by Akim Demaille.

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

	Fix testsuite failure of lt_dlopenadvise test on FreeMiNT.
	* tests/lt_dladvise.at (lt_dlopenadvise library loading): Do not
	build moddepend for systems without shared libraries.
	Report by Alan Hourihane.

	testsuite: avoid failures due to old Automake.
	* tests/configure-iface.at (installable libltdl)
	(--with-ltdl-include/lib, --with-included-ltdl):
	Speficy libmodule_la_SOURCES in Makefile.am as the default
	source file naming scheme changed in Automake 1.8.
	* tests/nonrecursive.at (_LT_AT_LTDL_SETUP): Require Automake
	1.9.6.
	* THANKS: Update.
	Report by Robert Garron.

	testsuite: add missing @LIBS@ in a link command line.
	* tests/old-m4-iface.at (AC_WITH_LTDL): Use @LIBS@ when linking.
	Report by Patrice Fromy.

	testsuite: cope when some installed libltdl.la has been removed.
	* tests/old-m4-iface.at (AC_WITH_LTDL): Pass --with-included-ltdl
	to configure, to ensure we do not accidentally link against a
	previously installed libltdl.so where the corresponding .la
	file has been removed, thus we do not add a run path, and the
	runtime linker then fails to find libltdl.so.7.
	* tests/configure-iface.at (--with-ltdl-include/lib): Remove -L
	flags from LDFLAGS to avoid picking up an installed libltdl
	outside of the default locations.
	* THANKS: Update.
	Prompted by report from Patrice Fromy.

2009-06-07  Vincent Torri  <vtorri@univ-evry.fr>  (tiny change)

	Fix C wrapper invocation for ceGCC hosts (cegcc and mingw32ce).
	* libltdl/config/ltmain.m4sh (func_mode_link): do not generate
	C wrapper for cegcc and mingw32ce hosts.
	(func_emit_cwrapperexe_src): remove useless check on
	__MINGW32CE__.

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

	Don't pick up double-quotes from /etc/ld.so.conf on Ubuntu.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]
	<sys_lib_dlsearch_path_spec>: Remove embedded double quotes from
	paths picked up from /etc/ld.so.conf.  Fixes libltdl compile
	failure on Ubuntu 7.10.
	* THANKS: Update.
	Report by Camilo La Rota.

2009-06-06  Richard Sandiford  <richards@transitive.com>

	Fix GNU nm invocation for AIX.
	* libldtl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
	<export_symbols_cmds>: Modify the GNU-nm-on-AIX version so that
	it adds weak defined symbols to the export list.

	Build AIX shared libraries with binutils 2.19.50+.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	<lt_use_gnu_ld_interface>: New variable to control whether the
	GNU ld or native ld interface is used.  Set to "no" for GNU ld
	2.19.50+ on AIX, otherwise mirror $with_gnu_ld.  Update the
	warning message that is printed when using GNU ld on AIX.
	Adjust the whole_archive_flag_spec value for GNU ld on AIX.
	* NEWS, THANKS: Update.

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

	Don't run compiler checks twice.
	libltdl/m4/libtool.m4 (_LT_PROG_FC, _LT_PROG_F77,
	_LT_PROG_CXX): Remove these macros.
	libltdl/m4/lt~obsolete.m4: Add removed macros here.
	libltdl/m4/libtool.m4 (_LT_LANG_FC_CONFIG, _LT_LANG_F77_CONFIG,
	_LT_LANG_CXX_CONFIG): Remove references to removed macros, and
	move functionality here.
	NEWS: Update.

2009-05-05  Rainer Emrich  <r.emrich@de.tecosim.com>  (tiny change)
	    Peter Rosin  <peda@lysator.liu.se>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix cross compilation for HPPA/64 with a BSD file command.
	* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD)
	[hpux10.20*, hpux11*, !ia64] <lt_cv_deplibs_check_method>:
	Match the dot in `PA-RISC 2.0' literally.  Adjust hppa*64*
	pattern to also match BSD `file' output, used in cross
	compilation setups.
	* THANKS: Update.
	Report and initial patch by Rainer Emrich, refined by Peter
	Rosin.

2009-05-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	libtoolize: ignore trailing junk on scriptversion line.
	* libtoolize.m4sh (func_install_update): Ignore semi-colon or
	comment-sign and all following characters when parsing a
	`scriptversion' line in one of the auxiliary scripts; recent
	Automake-provided script have a stylized comment to induce
	Emacs to use UTC.
	Exposed by the `libtoolize config files serial update' test.

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

	Skip localization test when setlocale is not functional.
	* tests/localization.at (localized compiler messages): Skip
	test when there is a warning about `LC_ALL'.
	* THANKS: Update.
	Report by Maciej Helminiak.

2009-05-02  Alan Hourihane  <alanh@fairlite.co.uk>  (tiny change)

	Improved support for FreeMiNT.
	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN) [mint]: Hard-code
	command line length limit to 8192, to avoid long test.
	* NEWS, THANKS: Update.

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

	Initial port for BlueGene BG/L.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG) [linux]: Detect bgxl*, bgf*, mpixl*
	compilers.
	* NEWS, THANKS: Update.
	Report, feedback and testing by John R. Cary and Christian
	Rössel.

	manual: fix grammaros.
	* doc/libtool.texi (Dlpreopening): Fix grammaro.
	(C header files): Remove duplicate word.

	Allow through -tp=* at link time, for pgcc.
	* libltdl/config/ltmain.m4sh (func_mode_link): Portlant Group
	pgcc uses `-tp=PROCESSOR' for target processor selection; allow
	the flag through at link time.
	Report by Ethan Mallove.

	Fix quoting of eval'ed variable.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Double-quote
	$lt_cv_sys_global_symbol_pipe for eval, like we do in ltmain,
	in order to preserve TABs and multiple adjacent whitespace.
	Report by Bruno Haible.

2009-04-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Cope better with missing `makeinfo' in `bootstrap'.
	* bootstrap: Update `./doc/notes.txt' last so missing `makeinfo'
	does not cause a broken tree.
	* THANKS: Update.
	Report by Christian Rössel.

2009-03-29  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>  (tiny change)
	    Charles Wilson  <libtool@cwilson.fastmail.fm>

	[cygwin] Improve operation with gcc4
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [cygwin*]:
	Add w32api to sys_lib_search_path_spec without overriding gcc's
	own search path.

2009-03-29  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>  (tiny change)
	    Charles Wilson  <libtool@cwilson.fastmail.fm>

	Use correct export_dynamic_flag_spec for PE-COFF $hosts
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) 
	[cygwin*|mingw*|pw32*|cegcc*]: Define export_dynamic_flag_spec
	as -Wl,--export-all-symbols, as required by GNU ld for PE-COFF.

2009-03-29  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Improve compatibility with older automake
	* libltdl/m4/lt~obsolete.m4: Add AC_DEFUNs for
	_LT_PREPARE_SED_QUOTE_VARS and _LT_PROG_ECHO_BACKSLASH.
	Report by Yaakov Selkowitz.

2009-03-20  Peter Rosin  <peda@lysator.liu.se>

	LT_OUTPUT should always create the libtool script.
	* libltdl/m4/libtool.m4 (LT_OUTPUT): Make LT_OUTPUT ignore the
	--no-create configure option, and assume that the user wants
	to use an up-to-date libtool script if the LT_OUTPUT macro is
	present.
	* tests/early-libtool.at: Make sure we do not regress.

2009-01-26  Peter Rosin  <peda@lysator.liu.se>

	Don't settle for any dumpbin/link program as name lister.
	* libltdl/m4/libtool.m4 (LT_PATH_NM): When locating dumpbin or
	link -dump, check if they appear to really be capable of name
	listing, in order to eliminate e.g. link from coreutils. This
	makes the name lister decision fall back on nm as the default if
	no acceptable candidate is found, which mainly happens on
	(arguably broken) cross compiles.
	* NEWS: Update
	* THANKS: Update
	Reports by Rudolf Leitgeb and Peter Kjellerstedt.

2009-03-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Document INNER_TESTSUITEFLAGS, drop leading space.
	* README: Document INNER_TESTSUITEFLAGS.
	* tests/cmdline_wrap.at (Run tests with low max_cmd_len):
	When using INNER_TESTSUITEFLAGS on the testsuite invocation,
	drop leading space after "-k libtool", so that the user may
	further limit the set of tests to be run.

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

	Fix low max_cmd_len template test on UnixWare.
	* libltdl/config/ltmain.m4sh (func_mode_link): When expanding
	$reload_cmds, always put objects in $reload_objs rather than
	adding them to the command line, to allow more general command
	lines in reload_cmds.  Ensure $reload_objs contains a leading
	space.
	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [sysv5*,
	sco3.2v5*, sco5v6*] <reload_cmds>: For CC, invoke prelinker
	before creating reloadable object.
	(_LT_CMD_RELOAD) <reload_cmds, reload_flag>: Declare as
	_LT_TAGDECL, not _LC_DECL.
	(_LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG)
	(_LT_LANG_GCJ_CONFIG) <reload_cmds, reload_flag>: Initialize
	from default (C tag) value.
	* THANKS: Update.
	Report and analysis by Tim Rice and John Wolfe.

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

	* doc/libtool.texi (Distributing libltdl, Test descriptions):
	Add missing parentheses.

2009-02-28  Tim Rice  <tim@multitalents.net>

	Fix C++ template handling for old archives on UnixWare 7.1.4.
	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [sysv5*,
	sco3.2v5*, sco5v6*] <old_archive_cmds>: For CC, add template
	prelink step before archiving.  Fixes template.at test failures.

2009-02-28  Török Edwin  <edwintorok@gmail.com>  (tiny change)
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Do not add bogus directory arguments to link command lines.
	* libltdl/config/ltmain.m4sh (func_mode_link): Ensure $path is
	always initialized before it is used.  Reported for zsh, for
	which $path contains $PATH entries even after "emulate sh", see
	<http://bugs.debian.org/517501>.

2009-02-28  Andreas Schwab  <schwab@suse.de>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Remove remaining references to CVS.
	* bootstrap: Remove references to CVS.
	* README.alpha: Likewise.
	* clcommit.m4sh: Likewise.
	* doc/libtool.texi: Bump copyright years.
	(libtool script contents): Describe macro_revision as revision
	without reference to CVS.

2009-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Do not pass $INSTALL via TESTS_ENVIRONMENT.
	* Makefile.am (TESTS_ENVIRONMENT): Set lt_INSTALL, not INSTALL,
	so that a bogus relative path to the install-sh script in the
	source tree is not propagated to the configure scripts of the
	old test suite.
	* tests/testsuite.at: Adjust.
	* tests/install.at (Install tests): Likewise.

2009-02-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
	    Kurt Roeckx <kurt@roeckx.be>

	New test for lt_dlopenext error message.
	* tests/lt_dlopenext.at (lt_dlopenext error messages): New file,
	with new test, with sources taken from the Autobook example.
	* Makefile.am: Update.

2009-02-03  Kurt Roeckx <kurt@roeckx.be>

	lt_dlopenext sets error upon successful library load.
	* libltdl/ltdl.c (lt_dlopenadvise): Fix bogus error on
	successful loading of library with lt_dlopenext.
	Report by Kaiwang Chen in <http://bugs.debian.org/510006>.

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

	Fix sed script in install.at.
	* tests/install.at (Install tests): Fix typo in sed script,
	fixes test failure on HP-UX.

	Fix $INSTALL in testsuite with relative path to install-sh.
	* tests/testsuite.at: If `$INSTALL' points to in-tree
	install-sh, override a possibly-relative path to it with an
	absolute one.

	install mode: do not pass `-m $install_override_mode' to cp.
	* libltdl/config/ltmain.m4sh (func_mode_install): New variable
	$install_cp, factor test when `cp' is used for installation.
	Do not pass mode override to cp.  Fixes `libtool --mode=install
	cp ...' on HP-UX; cp should not be used for libraries that might
	be needed by programs invoked during the installation process.

	Fix sed script portability issue in func_version.
	* libltdl/config/getopt.m4sh (func_version): Remove space in
	`/\./! {' sed command, to please HP-UX sed.

2009-01-31  Jeff Squyres <jsquyres@cisco.com>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	New test for bogus lt_dlopen error message.
	* tests/lt_dlopen.at (lt_dlopen error messages): New file, new
	test, marked as XFAIL for now.
	* Makefile.am: Adjust.
	Report and reproducible test case by Jeff Squyres.

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

	execute mode: do not transform *.lo or *.la arguments.
	* libltdl/config/ltmain.m4sh (func_mode_execute): Do not check
	arguments matching *.lo or *.la for script wrappers.
	* tests/execute-mode.at (execute mode): Add tests.
	* NEWS, THANKS: Update.
	Report by Paul Biggar.

	Nonexistent `main' does not guarantee link failure.
	* tests/fail.at (Failure tests): Use an unresolved symbol,
	rather than non-presence of `main', to provoke a link failure
	also on QNX.  Only check for failure of the libtool script if
	the link without libtool would have failed, too.
	Report by Mike Gorchak.

	Use AT_CHECK more liberally in duplicate members test.
	* tests/duplicate_members.at (duplicate members in archive
	tests): Wrap link commands in AT_CHECK, they might fail, as seen
	on QNX.
	* THANKS: Update.
	Report by Mike Gorchak.

2009-01-30  Akim Demaille  <demaille@gostai.com>

	Fix cwrapper warnings from MSVC 2005.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
	[file scope]: define _CRT_SECURE_NO_DEPRECATE.

2009-01-29  Akim Demaille  <demaille@gostai.com>

	Fix bootstrap with older libtool.m4 in reach of aclocal.
	* libltdl/m4/lt~obsolete.m4: Add stub definitions for
	_LT_REQUIRED_DARWIN_CHECKS and _LT_AC_PROG_CXXCPP.

	Fix func_exec_init.
	* tests/defs.m4sh (func_exec_init): Instead of using the undefined
	my_dir, call func_dirname_and_basename and use its result.
	(func_make): For consistency, don't use the useless local variable
	my_dir.

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

	Document --mode short-hands better, and test them.
	* doc/libtool.texi (Invoking libtool): Give examples for using
	the `--mode=MODE' short-hand `MODE', or abbreviations thereof.
	* libltdl/config/ltmain.m4sh: Mention the short-hand for MODE
	in the --help output.
	* tests/help.at (mode short-hands): New test group.
	Suggestion by Bruno Haible.

	func_version copes with multi-line copyright headers.
	* libltdl/config/getopt.m4sh (func_version): Slurp in copyright
	lines until a period is found.
	* libltdl/config/ltmain.m4sh: Multi-line copyright is ok to use
	now.
	* tests/help.at (standard command line options): New file, new
	tests.  Make this test group the first one for libtool tests,
	moving the banner ...
	* tests/duplicate_members.at: ... from here.
	* Makefile.am (TESTSUITE_AT): Add tests/help.at.

2009-01-29  Akim Demaille  <demaille@gostai.com>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Normalize compiler output due to compiler wrappers.
	* tests/testsuite.at (LT_AT_NORMALIZE_COMPILER_OUTPUT): New
	macro, to normalize ccache and distcc output.
	* tests/localization.at (localized compiler messages): Use it.

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

	Make modified libtool script in cwrapper test executable
	* tests/cwrapper.at: Make modified libtool script executable.
	Report by Roumen Petrov.

2009-01-28  Akim Demaille  <demaille@gostai.com>

	Clean space uses.
	* libtoolize.m4sh: Remove trailing spaces.
	Use <tab><sp>, as some editors remove "useless" spaces in
	<sp><tab>.

2009-01-26  Peter Rosin  <peda@lysator.liu.se>

	AWK is required, make sure it is set.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS: Make sure
	AWK is set (automake brings it in, but is not always used).
	Fixes old-m4-iface.at on MSYS/MSVC.

2009-01-25  Mike Frysinger  <vapier@gentoo.org>

	Fix typo in libtool install mode documentation.
	* libltdl/config/ltmain.m4sh (func_mode_help): Change -inst-prefix
	to -inst-prefix-dir.
	* doc/libtool.texi (Install mode): Likewise.

2009-01-24  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Add -Wall to cwrapper tests.
	* tests/cwrapper.at: Add -Wall existing tests. Add additional
	round of tests with -Wall alone.

2009-01-24  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[cygwin|mingw] cwrapper cleanups.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
	[file scope]: re-organized includes and portability
	macros. Avoid oldnames on MINGW32 and MSVC for
	setmode/stat/chmod/getcwd/putenv. Declare _putenv on
	MINGW32 when -ansi. Use namespaced macro LT_DEBUGWRAPPER.

2009-01-24  Peter Rosin  <peda@lysator.liu.se>

	Expand exit status test in LT_AT_NOINST_EXEC_CHECK correctly
	* tests/testsuite.at (LT_AT_NOINST_EXEC_CHECK): STATUS is
	argument $3, not $2.

2009-01-23  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Add tests for cwrapper with -std=c89 and -std=c99
	* tests/cwrapper.at: New file.
	* Makefile.am: Add tests/cwrapper.at.

2009-01-22  Peter Rosin  <peda@lysator.liu.se>

	Unify line endings in localization test.
	* tests/testsuite.at: Update copyright year.
	(LT_AT_UNIFY_NL): Add macro that unifies line endings on
	platforms that suffer from such confusion.
	* tests/localization.at: Use it. Update copyright year. Fixes
	the test on MSYS/MSVC.

2009-01-21  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[cygwin|mingw] Fix compile warnings when -std=c89.
	* libltdl/config/ltmain.m4sh (func_emit_wrapper_part1):
	move contents to...
	(func_emit_wrapper_part2): move contents to...
	(func_emit_wrapper): here.
	(func_emit_cwrapperexe_src) [file scope]: Remove
	variables script_text_part1 and script_text_part2.
	(func_emit_cwrapperexe_src) [lt_dump_script]: New function.
	(func_emit_cwrapperexe_src) [main]: Call it.

2009-01-21  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Minor cygwin cleanup
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms): Correct
	case pattern for cygwin.

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

	Avoid failure due to Cygwin path detection bug.
	* tests/execute-mode.at (execute mode): Ignore noise on stderr;
	Cygwin might consider `d\"e' to be a DOS-style path and warn.
	Report by Charles Wilson.

2009-01-19  Robert Millan  <rmh@aybabtu.com>

	Support GNU/kOpenSolaris.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG) [kopensolaris*-gnu]: Recognize
	GNU/kOpenSolaris.
	* libltdl/m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): Likewise.
	* NEWS, THANKS: Update.

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

	Another LT_AT_EXEC_CHECK fixup.
	* tests/shlibpath.at (shlibpath_overrides_runpath): Use
	LT_AT_EXEC_CHECK instead of AT_CHECK.

2009-01-19  Roumen Petrov  <bugtrack@roumenpetrov.info>  (tiny change)

	Add missing $EXEEXT to java test.
	* tests/convenience.at (Java convenience archives): Add $EXEEXT.

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

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

2009-01-14  Peter Rosin  <peda@lysator.liu.se>

	Fix flakey mdemo-dryrun test on MSYS (again!)
	* tests/mdemo-dryrun.test: ls -l in MSYS sometimes shows year,
	not time, for really fresh files. Add sleep 1 call at yet another
	strategic position. Makes the test pass reliably for MSYS/MinGW.

2008-12-19  Akim Demaille  <demaille@gostai.com>

	Fix copyright notice.
	* libltdl/config/ltmain.m4sh: Add missing comma.

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

	Add cache variables to link tests.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_LINKER_SHLIBS): Add cache variables to tests that
	require the linker to work.  For shlibpath_overrides_runpath,
	this also changes the semantics to let the result from the C
	compiler take precedence.
	* tests/no-executables.at (AC_NO_EXECUTABLES): New file.
	* Makefile.am: Update.
	* NEWS: Update.
	Report of shlibpath_overrides_runpath issue by Mike Frysinger,
	report of GCC issue by Andreas Schwab.

2008-11-28  Paolo Bonzini  <bonzini@gnu.org>

	Fix inadvertent commit.
	* bootstrap: Revert.

2008-11-28  Paolo Bonzini  <bonzini@gnu.org>

	Fix manual typo.
	* doc/libtool.texi (LT_INIT): Use correct config.status
	invocation.  Reported by Akim Demaille.

2008-11-28  Paolo Bonzini  <bonzini@gnu.org>

	Do not use $ECHO within eval-ed `...`, as %s\\n becomes %s\n.
	* HACKING: Document func_echo_all.
	* libltdl/m4/libtool.m4: Use it within backticks that appear in
	eval-ed variables.  Reported by Akim Demaille.

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

	Fix func_infer_tag $ECHO usage; some testsuite exposure.
	* libltdl/config/ltmain.m4sh (func_infer_tag): Use func_echo_all
	rather than $ECHO for possibly multiple arguments.
	* tests/infer-tag.at (inferred tag, CXX inferred tag)
	(F77 inferred tag, FC inferred tag, GCJ inferred tag): New file,
	new tests.
	* Makefile.am: Adjust.

	* tests/runpath-in-lalib.at (Runpath in libtool library files):
	Add $EXEEXT overlooked in patch yesterday.

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

	Fix expout and experr line ending issues.
	* tests/testsuite.at (LT_AT_HOST_DATA): Renamed from..
	(_LT_AT_TRANSLATE_TEXT_OUTPUT): ..this.
	(LT_AT_EXEC_CHECK, LT_AT_NOINST_EXEC_CHECK): Do not use
	_LT_AT_TRANSLATE_TEXT_OUTPUT any more.
	* tests/configure-iface.at: Use LT_AT_HOST_DATA instead of
	AT_DATA for `expout' files.
	* tests/lt_dladvise.at (lt_dlopenadvise library loading):
	Likewise.
	* tests/need_lib_prefix.at (enforced lib prefix): Likewise.
	Report by Roumen Petrov.

	Relax link-order2 test for systems with partial wrong order.
	* tests/link-order2.at (Link order of deplibs.): On w32 (and
	others, e.g., AIX), the wrongly linked executable picks up only
	one instance of the bad function instead of two; relax the test
	to accept this; we still require the right link order with the
	correctly linked executable.
	Reported by Roumen Petrov and others.

2008-11-23  Roumen Petrov  <bugtrack@roumenpetrov.info>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Add $EXEEXT to all linked programs in the new testsuite.
	* tests/convenience.at, tests/ctor.at, tests/darwin.at,
	tests/deplibs-ident.at, tests/duplicate_conv.at,
	tests/duplicate_deps.at, tests/duplicate_members.at,
	tests/export.at, tests/fail.at, tests/indirect_deps.at,
	tests/inherited_flags.at, tests/link-order.at,
	tests/link-order2.at, tests/lt_dladvise.at, tests/lt_dlexit.at,
	tests/need_lib_prefix.at, tests/runpath-in-lalib.at,
	tests/search-path.at, tests/shlibpath.at, tests/static.at,
	tests/stresstest.at, tests/template.at, tests/testsuite.at:
	Use $EXEEXT throughout, except in Makefile.am snippets where
	automake takes care of it, and in testsuite macros that take
	care of the extension.
	Reports by Roumen Petrov and Alon Bar-Lev.

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

	Adjust executable run tests to cwrapper changes.
	* tests/testsuite.at (LT_AT_EXEC_CHECK): Accept fifth argument
	ARGS-OR-STATUS-ADJUST, for command-line arguments and/or exit
	status flattening.  Rewrite to prefer the executable with the
	`.exe' prefix over one without.  Test exit status against
	expected exit status, not against zero, when determining whether
	this may be a cross-compilation-induced result.
	(LT_AT_NOINST_EXEC_CHECK): Likewise.
	* tests/static.at (static linking flags for programs): Adjust
	calls.
	Report by Roumen Petrov.

	No trailing period in Autotest test group names.
	* tests/link-order.at (Link order test): Drop trailing period
	from test name.
	* tests/link-order2.at (Link order of deplibs): Likewise.

2008-11-23  Vincent Torri  <vtorri@univ-evry.fr>  (tiny change)

	Fix func_emit_cwrapperexe_src for WinCE: no errno support.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
	[__MINGW32CE__]: Do not use errno, do not include errno.h and
	remove calls related to errno when using the mingw32ce compiler.

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

	No libm in WinCE.
	* libltdl/m4/libtool.m4 (LT_LIB_M) [cegcc*]: This system has
	only a dummy libm, ignore.
	Report by Vincent Torri.

	Fix import library detection for WinCE.
	* libltdl/config/ltmain.m4sh (func_win32_libid): Work for
	pe-arm-wince import libraries.
	* NEWS: Update.
	Report by Vincent Torri.

2008-11-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
	    Eric Blake  <ebb9@byu.net>

	Fix $ECHO test to not influence other _AS_DETECT_SUGGESTED code.
	* libltdl/m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Fix test to
	not influence further tests registered with _AS_DETECT_SUGGESTED
	and do not use a PATH below /tmp, to avoid influence by a third
	party.

2008-11-23  Alon Bar-Lev  <alon.barlev@gmail.com>  (tiny change)

	Fix func_win32_libid for 64-bit Windows.
	* libltdl/config/ltmain.m4sh (func_win32_libid): Accept file
	format 'pe-x86-64'.
	* NEWS: Update.

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

	Avoid newlines in some AT_CHECK commands.
	* tests/standalone.at (linking libltdl without autotools): Wrap
	lines with dnl, to avoid turning off tracing of AT_CHECK.
	* tests/subproject.at (linking libltdl without autotools):
	Likewise.

	Replace uses of $SED $basename.
	* libltdl/config/ltmain.m4sh (func_mode_link): Replace instances
	of `$ECHO ... | $SED' with calls to func_basename.
	* libtoolize.m4sh (func_copy, func_serial)
	(func_massage_aclocal_DATA): Likewise, replace with
	func_dirname_and_basename.
	* tests/defs.m4sh (func_configure_nofail, func_make, func_exec):
	Likewise.

	No need to prepend $progname with './'.
	* libltdl/config/general.m4sh (func_dirname_and_basename): $ECHO
	copes with leading hyphens now, so do not mangle $progname any
	more.

	Revenge of the $ECHO. Kill most uses of Xsed.
	* libltdl/config/general.m4sh: Replace all uses of `$ECHO "X..."
	| $Xsed' with `$ECHO "..." | $SED', and employ further trivial
	simplifications.  Replace $ECHO with echo where appropriate.
	(func_echo_all): New function.
	* libltdl/config/getopt.m4sh: Likewise simplifications.
	* libltdl/config/ltmain.m4sh: Likewise.
	* libltdl/m4/libtool.m4: Likewise.
	(LT_CMD_MAX_LEN): Use func_fallback_echo, to ensure that the
	command line is passed through an exec* function.
	* libtoolize.m4sh: Likewise simplifications.  Use func_echo_all
	to implement --dry-run.
	* tests/defs.m4sh: Likewise simplifications.
	* tests/quote.test: Likewise simplifications.

	Fix matching of Sun Fortran compiler on Linux.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [ linux ]: Also
	match `Sun Ceres Fortran' compiler; reorder with C compiler
	matching.
	* THANKS: Update.
	Report by Ethan Mallove.

2008-11-21  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Fix --verbose option; add new --no-{silent|quiet|verbose} options.

	* libltdl/config/ltmain.m4sh (usage): Document
	new options --no-silent/--no-quiet and --no-verbose.
	(func_enable_tag): Handle new options.
	Modified --verbose to actually activate opt_verbose.
	New behavior: --silent disables both "normal" output and
	func_verbose output.  --verbose enables both "normal"
	output and func_verbose output. --no-silent enables
	"normal" output, but does not affect func_verbose output.
	--no-verbose disables func_verbose output, but does not
	affect "normal" output.
	* NEWS: announce new options --no-silent/--no-quiet, and
	--no-verbose.
	* doc/libtool.texi: document new options --no-silent/--no-quiet
	and --no-verbose.

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

	Fix match patterns for cegcc*.
	* libltdl/config/ltmain.m4sh (func_mode_link): Match '*cegcc*'
	instead of '*cegcc' for $host_os.
	* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD): Likewise.
	* tests/lt_dladvise.at (lt_dlopenadvise library loading):
	Likewise.
	* libltdl/m4/ltoptions.m4 (AC_LIBTOOL_DLOPEN): Match
	'*-*-cegcc*' for $host.

	Ensure $ac_aux_dir is initialized for LIBTOOL_DEPS.
	* libltdl/m4/libtool.m4 (LT_INIT): Require
	AC_CONFIG_AUX_DIR_DEFAULT.
	* tests/old-m4-iface.at (AM_PROG_LIBTOOL): Amend test to
	expose this.
	Report, analysis, and test example by Jakub Bogusz.

	Check for bogus aclocal.m4 contents in bootstrap and dist-hook.
	* Makefile.am (dist-hook): Bail out if shipped aclocal.m4 files
	contain LT_INIT, AC_PROG_LIBTOOL, or AM_PROG_LIBTOOL macro
	definitions.  These can only come from bogus pull-ins from older
	installed Libtool macro files.
	* bootstrap: Likewise.
	Report by Akim Demaille.

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

	Fix $ECHO abuse exposed by recent patch.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Require
	_LT_CHECK_SHELL_FEATURES, for $lt_NL2SP.  Always quote argument
	to $ECHO.

	Skip sys_lib_search_path on systems without libz.
	* tests/search-path.at (sys_lib_search_path): Autotest needs at
	least one AT_CHECK executed in a test group.  So if we haven't
	found -lz anywhere, as may happen with cross-compilers, skip the
	test.
	* THANKS: Update.
	Report by Alon Bar-Lev.

	Fix execute mode test to actually expose cwrapper failures.
	* tests/execute-mode.at (execute mode): Actually also test the
	cwrapper on the arguments.
	Report by Bruno Haible.

2008-11-15  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Add func_win32_import_lib_p.
	* libltdl/config/ltmain.m4sh (func_win32_import_lib_p):
	New function.

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

	Fix archive_cmds for older cc on HP-UX 11.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [hp-ux11*, !GCC]
	[!hppa*64*, !ia64*] <archive_cmds>: Older releases of the HP-UX
	11.00 C compiler do not support -b yet; use a link test to
	decide whether $LD should be used for library creation.
	* THANKS: Update.
	Report by Daniel Richard G.

2008-11-12  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Bump Autoconf requirement.
	* libltdl/config/general.m4sh: Use $as_echo as default $ECHO.
	* tests/testsuite.at: Use $as_echo as default $ECHO.

	* libltdl/m4/libtool.m4 (LT_INIT): Add _LT_SHELL_INIT to
	work around Autoconf <2.64 bug.
	(_LT_OUTPUT_LIBTOOL_COMMANDS_INIT): Add func_fallback_echo.
	Eliminate lt_ECHO requoting.
	(_LT_SHELL_INIT): Use a public M4sh diversion.
	(_LT_PROG_ECHO_BACKSLASH): Rewrite.
	(LT_CMD_MAX_LEN): Do not use --fallback-echo.
	* libltdl/config/ltmain.m4sh: Remove --no-reexec and --fallback-echo
	handling.
	(func_fallback_echo): New.
	(func_emit_wrapper_part1): Quote ECHO.  Remove --no-reexec and
	--fallback-echo handling.
	(Execute mode): Do not set qecho.

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

	Use -no-undefined in install tests.
	* tests/install.at (Install tests): Use `-no-undefined'.

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

	Do not use `test ... -a ...'.
	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [hpux10, hpux11]:
	Replace test -a with test && test.

2008-11-11  Roumen Petrov  <bugtrack@roumenpetrov.info>  (tiny change)

	Fix destdir tests in cross compile mode.
	* tests/destdir.at (Simple DESTDIR install)
	(DESTDIR with in-package deplibs): Use $EXEEXT throughout.
	* THANKS: Update.

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

	Simplify cwrapper handling a bit.
	* libltdl/config/ltmain.m4sh (func_emit_wrapper_part1)
	(func_emit_wrapper_part2, func_to_host_path)
	(func_to_host_pathlist, func_emit_wrapper): Simplify using
	default argument, func_append.

2008-11-10  Paolo Bonzini  <bonzini@gnu.org>

	Separate part of _LT_SETUP into other macros, detect ECHO sooner.
	* libltdl/m4/libtool.m4 (_LT_PREPARE_SED_QUOTE_VARS): New macro,
	extracted from...
	(_LT_SETUP): ... here.  Require _LT_PROG_ECHO_BACKSLASH sooner.

2008-11-10  Paolo Bonzini  <bonzini@gnu.org>

	Fix quoting when config.status generates libtool config.
	* libltdl/m4libtool.m4 (_LT_OUTPUT_LIBTOOL_COMMANDS_INIT):
	Double quote ECHO-ed variables.

2008-11-10  Paolo Bonzini  <bonzini@gnu.org>

	Use documented M4sh interfaces.
	* clcommit.m4sh: Do not unset CDPATH, use AS_INIT and M4sh diversions.
	* libltdl/config/mailnotify.m4sh: Likewise.
	* libtoolize.m4sh: Likewise.
	* tests/defs.m4sh: Likewise.
	* tests/testsuite.at: Move AT_INIT invocation at the top.

	* libltdl/m4/libtool.m4 (_LT_INIT_GENERATED): New.
	(LT_OUTPUT): Use it.

	* libltdl/config/general.m4sh (M4SH_IN_HEADER): New.
	(progpath): Move setting before $0 could be clobbered.
	* libltdl/config/ltmain.m4sh (M4SH_IN_HEADER): New.

2008-11-10  Paolo Bonzini  <bonzini@gnu.org>

	Run sh.test on the M4sh source.
	* tests/defs.m4sh (scripts): Point to pre-m4 sources.

2008-11-10  Paolo Bonzini  <bonzini@gnu.org>

	Avoid that autom4te complains about unexpanded macros.
	* libtoolize.m4sh: Allow occurrences of "dnl" and use quadrigraphs
	to protect other m4 macros.

2008-11-11  Bruno Haible  <bruno@clisp.org>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix cwrapper argument mangling on w32.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src): On
	mingw, preprocess the argument vector through prepare_spawn.
	* tests/execute-mode.at (execute mode): Output args
	newline-separated.  Extend tests by more argument pairs that
	contain special characters, where the w32 cwrapper fails.
	Also test a real compiled program, linked against an uninstalled
	library, to expose cwrapper issues.
	* NEWS: Update.

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

	Update to GFDL 1.3.
	* doc/fdl.texi: Update to GFDL 1.3.
	* doc/libtool.texi: Adjust.
	* NEWS: Update.

2008-11-09  Alexei Sheplyakov  <varg@theor.jinr.ru>  (tiny change)

	Fix cross compilation with wine for the case SHELL != bash.
	* libltdl/config/ltmain.m4sh (func_to_host_path): Avoid escape
	sequence interpretation by 'echo', for w32-style paths.
	* THANKS: Update.

2008-10-28  Michael Haubenwallner  <michael.haubenwallner@salomon.at> (tiny change)

	Fix checks for unsupported allow_undefined_flag.
	* tests/tagdemo-undef.test: Match allow_undefined_flag
	correctly, for SKIPping.
	* tests/cdemo-undef.test: Likewise.

2008-10-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/testsuite.at (_LTDL_PROJECT_FILES): Fix dependencies for
	parallel make.

	* libtoolize.m4sh (func_nonemptydir_p): Fix typo in error
	message.

2008-10-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix Autoconf 2.59 incompatibilty.
	* libltdl/m4/ltdl.m4 (_LTDL_SETUP): m4_pattern_allow
	`LT_LIBEXT'; Autoconf 2.59's AC_DEFINE* macros didn't do this
	automatically yet.
	* NEWS, THANKS: Update.
	Report by Marcel Loose.

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

	Atomic shared library install permissions on HP-UX.
	The HP-UX 11 runtime linker fails to mmap shared libraries
	without execute permissions.  Fixing them with postinstall_cmds
	may be too late, as ln, sed, and chmod may link against the
	library being installed.

	* libltdl/m4/libtool.m4 (install_override_mode): New LT_DECL.
	(_LT_SYS_DYNAMIC_LINKER) [hpux9*, hpux10*, hpux11*]: Set it.
	* libltdl/config/ltmain.m4sh (func_mode_install): Build a second
	command line, $install_shared_prog, for the installation of the
	shared library.  Override resp. set the permission mode if
	install_override_mode is nonempty.
	* doc/libtool.texi (libtool script contents): Document it.
	* tests/install.at (Install tests): New test.
	* Makefile.am (TESTSUITE_AT): Adjust.
	(TESTS_ENVIRONMENT): Pass INSTALL.
	Report by Bruno Haible.

2008-09-26  Eric Blake  <ebb9@byu.net>

	Avoid gcc warning.
	* libltdl/loaders/loadlibrary.c (vm_open): Don't check for array
	being a NULL pointer.

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

	Man pages for libtoolize and libtool, new command line option
	--help-all.
	* Makefile.am (dist_man1_MANS, update_mans): New macros.
	($(srcdir)/doc/libtool.1, $(srcdir)/doc/libtoolize.1): New
	rules.  Use --help-all for libtool.
	(MAINTAINERCLEANFILES): New macro.  Add dist_man1_MANS.
	(BUILT_SOURCES): Add libtoolize.
	* configure.ac: Check for help2man, set HELP2MAN.
	* doc/libtool.texi: Add @direntry for libtool-invocation.
	(Invoking libtool): Document -h, --help-all.  Reorder mode
	description for consistency.
	(Compile mode): Do not document -Wl,FLAG and -XCClinker here.
	(Link mode): Document -Wc,FLAG here, reformat a bit.
	* libtoolize.m4sh: Reformat --help output a bit, to help
	help2man.
	* libltdl/config/ltmain.m4sh: Likewise.  Also, set PROGRAM to
	`libtool', not `ltmain.sh', so the former is used in the man
	page.
	New argument `--help-all'.  If given, call func_help and
	func_mode_help several times, beating output in shape with sed.
	(func_mode_help): Do not exit here.
	* libltdl/config/getopt.m4sh (func_usage): Work with different
	indentations, but require comment hash in first column, when
	grepping for '-h' in usage to end short help.
	(func_help): Accept optional argument to not exit.
	* NEWS, THANKS: Update.
	Suggestion by Karl Berry.

2008-09-08  Gary V. Vaughan  <gary@gnu.org>

	Use `-version-info 9:0:2' for one added iface since 2.2.4.
	* libltdl/Makefile.inc (LTDL_VERSION_INFO): Make the libltdl
	version number match 2.2.6a rerelease.

	Add ./commit option for pushing tags back to origin.
	* clcommit.m4sh (opt_tags): New --tags push option.
	(func_commit): Run `$GIT push --tags' if --tags was passed.
	* HACKING (Release Procedure): Note the requirement to pass
	--tags to ./commit for new release tag to be push back to
	origin.

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

	Retire gnu.org news.html in favour of savannah news.
	* HACKING (Release Procedure): Add instructions for sending
	a web release announcement to http://planet.gnu.org via
	the savannah news manager.

	Add untested git push conflict testing to commit script.
	* clcommit.m4sh (func_check_conflicts): Test return status
	of 'git push --dry-run', and display an error on non-zero.

	Enable release procedure to work with lzma OLDRELEASE file.
	* Makefile.maint (diffs, prev-tarball, new-tarball): If lzma
	tarballs are present use them to generate the diffs, otherwise
	use gz tarballs if they are present, or else complain if both
	are missing.

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

	GNU Libtool 2.2.6 was released.

	Fix typo in Makefile.maint.
	* Makefile.maint (git-news): Renamed to check-news, since it
	doesn't actually run git.  Adjust all dependees.

	Run `git commit -a' when no files are passed.
	* clcommit.m4sh (func_commit): Add -a argument if necessary.

	Prepare for next stable release.
	* libltdl/Makefile.inc (LTDL_VERSION_INFO): Update.
	* libltdl/m4/libtool.m4: Bump serial number to account for
	changes since 2.2.4 release.
	* INSTALL, config/config.guess, config/texinfo.tex: Updated
	from canonical source.
	* configure.ac (AM_INIT_AUTOMAKE): Specify dist-lzma, which
	was introduced after automake-1.10 was released.
	(abs_top_srcdir, abs_top_builddir): No need to substitute these
	from configure anymore, since we require automake 1.10.1, which
	does perform the substitutions properly.
	(TIMESTAMP): Normal releases were displaying the long-form
	timestamp.  Fix to show the short release timestamp as per
	alpha release numbers.
	* NEWS: Update with missing entries from ChangeLog.
	* HACKING (Release Procedure): We release lzma tarballs now
	but no xdeltas.
	* Makefile.maint: Updated to match Release Procedure
	instructions in HACKING.

	Convert mailnotify headers to git.
	* clcommit.m4sh: Improve mailnotify contents.

	Make ./commit useful again.
	* clcommit.m4sh: Major overhaul and simplification for git.

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

	Fix 'DISTCHECK_CONFIGURE_FLAGS=--program-prefix=g' bug.
	* tests/testsuite.at (_LIBTOOLIZE_TRANSFORM): Fix test failures
	with --program-prefix, where the test case output contains the
	transformed name somewhere other than the beginning of a line.
	* libtoolize.m4sh (func_check_macros): Be sure to always use
	the transformed name in output messages.

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

	Do not remove .gcno files when linking.
	* libltdl/config/ltmain.m4sh (func_mode_link): When removing
	potential output files before linking, do not remove *.gcno
	profile information GCC outputs next to object files in `.libs'.
	Report by Vincent Torri.

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

	Revert 75142db4f8afc65ba7aae0ed80ea0b35bd9cc382 (AIX libltdl
	dlopen(NULL)

	* libltdl/m4/ltdl.m4: Remove LTDL_DLOPEN_SELF_WORKS define.
	* libltdl/loaders/dlopen.c: Remove LTDL_DLOPEN_SELF_WORKS check.
	* libltdl/m4/libtool.m4 [aix]: Set export_dynamic_flag_spec to
	-Wl,-bexpall. This is a temporary workaround until a real fix
	is implemented.
	* NEWS: document it.

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

	Allow for extensions other than .a for preloaded modules.
	* libltdl/m4/ltdl.m4 (_LTDL_SETUP): Define LT_LIBEXT.
	* libltdl/ltdl.c (lt_dladvise_preload): Use it.
	Reported by Ralf Wildenhues.

2008-08-26  Peter O'Gorman  <peter@pogma.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Remove unnecessary global argz functions.
	* libltdl/argz.c (argz_add,argz_count): Remove.
	* libltdl/argz_.h (argz_add,argz_count): Remove.
	* NEWS: Announce it.
	* tests/ltdl-api.at: Test so we don't repeat it.
	* Makefile.am: Add new test.

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

	Initial support for Lahey Fortran on GNU/Linux.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	[linux] <lf95>: Add support for Lahey Fortran 8.1.
	* NEWS, THANKS: Update.
	Suggested by Craig Tierney.

2008-08-21  Sam Thursfield  <ssssam@gmail.com>  (tiny change)

	Avoid leading separator in PATH for DLL search.
	* libltdl/config/ltmain.m4sh (func_mode_link) [cygwin, mingw]
	[ pw32, os2, cegcc]: Fix dllsearchpath not to contain leading
	separator.
	* THANKS: Update.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Quote $#.

	Disallow `-L path', do not misparse it silently.
	* libltdl/config/ltmain.m4sh (func_mode_link): Diagnose `-L'
	without argument, and `-L path', i.e., with a space.
	* tests/fail.at (Failure tests): Test for these failures.
	* THANKS: Update.
	Report by Olaf Lenz.

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

	Avoid test failure due to broken dlpreloading of shared library.
	* tests/lt_dladvise.at (lt_dlopenadvise library loading): Drop
	some newlines in AT_CHECK commands, for better 'testsuite -x'
	output.  Only create a static installable libpreload.la, to
	avoid exposing the bug libtool currently has with preloading of
	shared libraries.  Add a note to revisit this later.

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

	Parallel make testsuite fixes.
	* tests/configure-iface.at (installable libltdl)
	(--with-ltdl-include/lib, --with-included-ltdl): Add dlopened
	libmodule.la to main_DEPENDENCIES.
	* tests/old-m4-iface.at (AC_WITH_LTDL): Likewise, let ltdldemo
	depend upon module.la and libltdl/libltdlc.la.
	* tests/testsuite.at (LT_AT_MAKE): Invoke each target in turn,
	default to 'all'.
	* tests/early-libtool.at (config.lt): Define 'all' target.

	* HACKING: Update for git, fix some minor nits.

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

	Remove use of exit in configure test sources.
	* libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Return from main,
	to avoid using undeclared exit.
	Report against OpenMPI from Coverity via Jeff Squyres.

	* tests/configure-iface.at (convenience libltdl): Ignore warning
	from parallel make.

2008-08-07  DJ Delorie  <dj@redhat.com>

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [tpf]
	<library_names_spec>: Fix typo in variable name.

2008-08-06  Steve Ellcey  <sje@cup.hp.com>

	Use -fPIC with GCC on HP-UX/ia64.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	[ia64-*-hpux*]: Specify -fPIC when using GCC to build shared
	libraries.

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

	* NEWS: Minor fixups.

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

	Bring NEWS up to date.
	* NEWS: Add missing summaries since 2.2.4 release.

	Implement lt_dlopening of only preloaded modules.
	* libltdl/m4/ltdl.m4 (LTDL_INIT): Check for a libltdl that
	provides lt_dladvise_preopen when deciding if installed libltdl
	is 'new enough'.
	* libltdl/libltdl/lt__private.h (lt__advise): Add a new
	is_preload flag.
	* libltdl/ltdl.c (lt_dladvise_preload): New api call to set it.
	(try_dlopen): If it is set, and the search of preloaded modules
	didn't return a match, don't bother searching the filesystem.
	* libltdl/ltdl.h (lt_dladvise_preload): Declare it.
	* doc/libtool.texi (Libltdl Interface): Document it.
	* tests/lt_dladvise.at: Test it (and incidentally add some test
	coverage for `libtool -dlpreopen').
	* NEWS: Announce it.

2008-08-01  Vincent Torri  <doursse@users.sf.net>

	Add cegcc (Windows CE/PocketPC) support.
	* libltdl/config/ltmain.m4sh: Add 'cegcc' case where needed.
	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN, LT_SYS_DLOPEN_SELF)
	(_LT_SYS_DYNAMIC_LINKER, _LT_CHECK_MAGIC_METHOD)
	(_LT_CMD_GLOBAL_SYMBOLS, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG): Likewise.
	* libltdl/m4/ltoptions.m4 (AC_LIBTOOL_DLOPEN): Likewise.
	* NEWS: Update.
	* THANKS: Update.

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

	* libltdl/config/ltmain.m4sh (func_to_host_path): Fix sh.test
	failure.
	Report by Paolo Bonzini.

2008-07-31  Paolo Bonzini  <bonzini@gnu.org>

	* ltmain.m4sh (func_emit_cwrapperexe_src): Factor
	multiple closed braces into the next cat command.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux] <icc, icpc>:
	Use -fPIC, newer Intel compilers (icc 10, ifort 9) reject -KPIC.
	* tests/localization.at: Skip test if the compiler fails merely
	due to the locale setting.
	* THANKS: Update.
	Report by Vincent Lefevre.

2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Linking executables, Static libraries)
	(Modules for libltdl, Distributing libltdl): Remove TABs from
	the manual.

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

	Support ifort on darwin.
	* libltdl/m4/libtool.m4 (_LT_DARWIN_LINKER_FEATURES): Build
	shared libraries with ifort.
	Reported by Christopher Hulbert.

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

	[mingw] fix cross-compile-with-wine case
	* libltdl/config/ltmain.m4sh (func_to_host_path)
	[host=mingw, build!=mingw|cygwin]: check that winepath
	stdout is non-empty and exit code is 0, instead of checking
	stderr.
	Reported by: Roumen Petrov

2006-06-01  Stas Maximov  <smaximov@ieee.org>  (tiny change)

	Check only regular files, not devices, for lalibs.
	* libltdl/config/ltmain.m4sh (functions func_lalib_p)
	(func_lalib_unsafe_p): Only read regular files and not device
	files.  Avoids blocking libtool executing gdb, when a
	pseudo-terminal device /dev/pts/NN is given as one of the
	arguments to gdb, as in:
	libtool --mode=execute gdb -q -nw -i mi -tty /dev/pts/4 prog

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

	Skip darwin test if fat link fails.
	* tests/darwin.at: Skip if we can not link a fat program.
	Reported by Daniel Macks <dmacks@netspace.org>

2008-05-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	libtoolize should not remove config.guess, config.sub.
	* libtoolize.m4sh (all_pkgconfig_files): Do not list
	config.guess nor config.sub.  We don't install them without
	--install, and the project may not be using Automake.
	Report by Andreas Schwab.

	Simplify argument parsing in cwrapper.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src):
	Use NULL where appropriate.  Do not compute length of arguments
	needlessly.

2008-05-25  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[mingw] Add cross-compile support to cwrapper
	* libltdl/config/ltmain.m4sh (func_to_host_path) [$host=mingw]:
	If present, use winepath to convert from $build to $host
	if $build is neither mingw (msys) nor cygwin.  Use unconverted
	path as fallback when conversion fails. Also update comments.
	(func_to_host_pathlist) [$host=mingw]: Ditto. For fallback case,
	use simplistic ':' to ';' path separator translation.

2008-05-25  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Cwrapper should not eat -- arguments
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
	[file scope]: Defined all option strings in terms of macro
	LTWRAPPER_OPTION_PREFIX. Similarly defined all option string
	lengths in terms of macro LTWRAPPER_OPTION_PREFIX_LENGTH.
	[main]: Modified option parsing algorithm to pass -- on to
	target, and to not stop processing arguments when -- is seen.
	Added check for unrecognized options in reserved namespace
	defined by LTWRAPPER_OPTION_PREFIX.

2008-05-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix ifort settings again.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux] <ifort>:
	Unlike icc and ecc, not all ifort versions understand `-KPIC',
	e.g. version 10.1, so use `-fPIC' instead.
	Report by Jeff Squyres.

2008-05-20  Eric Blake  <ebb9@byu.net>

	Resynchronize argz whitespace changes from gnulib.
	* libltdl/m4/argz.m4: Kill trailing whitespace.
	* libltdl/argz.c: Likewise.

2008-05-19  Eric Blake  <ebb9@byu.net>

	Fix regression from two days ago.
	* libltdl/m4/ltdl.m4 (_LT_LIBOBJ): Don't refer to deleted macro.

2008-05-17  Eric Blake  <ebb9@byu.net>

	Speed up bootstrap by improving lt_combine.
	* libltdl/m4/ltsugar.m4 (lt_combine): Mirror Autoconf 2.62
	improvements.  Includes a semantic change where the separator can
	now be empty, and where an empty fourth argument is now treated as
	a valid suffix.
	* libltdl/m4/libtool.m4 (_lt_decl_varnames_tagged): Adjust to new
	semantics of lt_combine.
	(lt_decl_varnames_tagged): Fix quoting and optimize.

	Kill _LT_LIBSOURCES; it wasn't checking anything useful.
	* libltdl/m4/ltdl.m4 (_LT_LIBSOURCES): Delete.
	(LTDL_INIT): Ignore arguments to AC_LIBSOURCES during _LTDL_SETUP,
	on the assumption that libtoolize correctly installed them.

2008-05-13  Charles Wilson  <libtool@cwilson.fastmail.fm>

	[mingw|cygwin] Modify cwrapper to invoke target directly.
	* libltdl/config/ltmain.m4sh (func_to_native_path):
	New function. If $host is mingw, and $build is mingw
	or cygwin, convert path to mingw native format.
	(func_to_native_pathlist): New function. Ditto, for
	:-separated pathlists.
	(func_emit_cwrapperexe_src) [__CYGWIN__ && __STRICT_ANSI__]:
	Ensure putenv and setenv are declared. Define HAVE_SETENV.
	(func_emit_cwrapperexe_src) [main]: Add new constants to
	hold desired PATH settings; initialize and use functions
	above to convert to $host format if necessary. Add new
	command-line options --lt-env-set, --lt-env-prepend, and
	--lt-env-append. No longer emit wrapper script as integral
	part of launching child. Remove support for (now) unnecessary
	$TARGETSHELL. Exec actual target executable directly.
	(func_emit_cwrapperexe_src) [lt_setenv, lt_extend_str]
	[lt_split_name_value, lt_opt_process_env_set]
	[lt_opt_process_env_prepend, lt_opt_process_env_append]
	[lt_update_exe_path, lt_update_lib_path]: New functions.

2008-05-11  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Ensure cwrapper compiles without warnings under -std=c99.
	* libltdl/config/ltmain.m4sh (func_emit_wrapper_part1):
	new function.
	(func_emit_wrapper_part2): new function.
	(func_emit_wrapper): delegate to new functions.
	(func_emit_cwrapperexe_src) [__CYGWIN__ && __STRICT_ANSI__]:
	ensure realpath is declared.
	(func_emit_cwrapperexe_src): declare two different strings
	to each hold part of the wrapper script content. Initialize
	using new func_emit_wrapper_partX functions.
	(func_emit_cwrapperexe_src) [main]: when emitting wrapper
	script content, use both strings.
	Reported by Yaakov Selkowitz.

2008-05-06  Charles Wilson  <libtool@cwilson.fastmail.fm>

	Ensure $OBJDUMP is defined
	* libltdl/m4/libtool.m4 (_LT_DECL_OBJDUMP): new macro ensures
	that $OBJDUMP is always defined sanely.
	(_LT_SYS_DYNAMIC_LINKER): call it.
	(_LT_CHECK_MAGIC_METHOD): call it.

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

	Fix libtoolize test failure with aclocal < 1.10.1
	* tests/libtoolize.at
	(verbatim aclocal.m4 w/o AC_CONFIG_MACRO_DIR): Older aclocal
	requires a space between -I and the directory argument.
	Reported by Daniel Macks <dmacks@netspace.org>

2008-05-04  Gary V. Vaughan  <gary@gnu.org>

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

	GNU Libtool 2.2.4 was released.

	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.4.
	* libltdl/Makefile.inc (LTDL_VERSION_INFO): C:R+1:A because the
	interfaces are unchanged, even though we improved the code some
	more.
	* NEWS: Updated.

	Macro file serial updates for next stable release.
	* libltdl/m4/libtool.m4, libltdl/m4/ltdl.m4,
	libltdl/m4/ltoptions.m4, libltdl/m4/lt~obsolete.m4: Bump serial
	numbers to account for changes since 2.2.2 release.

	Make libtoolize tests work with distcheck.
	* tests/testsuite.at (_LIBTOOLIZE_TRANSFORM): When $tst_aclocal
	is set, transform paths that use it to generic
	/usr/local/share/aclocal in time for AT_CHECK comparisons.

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

	Don't trip over outdated acinclude.m4.
	* libtoolize.m4sh (all_pkgconfig_files, all_pkgmacro_files)
	(all_pkgltdl_files): New variables listing all files ever
	maintained by any release of libtoolize.
	(func_install_pkgconfig_parent, func_install_pkgltdl_files)
	(func_install_pkgconfig_subproject, func_install_pkgmacro_parent)
	(func_install_pkgmacro_subproject): Carefully clean up any files
	that may have been installed by previous libtoolize releases.
	* tests/libtoolize.at: New test for libltdl/acinclude.m4 removal.
	Reported by Andreas Schwab <schwab@suse.de>.

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

	It helps to close quotes.
	* libltdl/config/ltmain.m4sh (func_mode_link): Add closing '.

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

	Use AC_CHECK_TOOL for otool and otool64.
	* libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Check.
	* libltdl/config/ltmain.m4sh (func_mode_link): Use.
	Reported by Richard Purdie <rpurdie@rpsys.net>

2008-04-30  Eric Blake  <ebb9@byu.net>

	Support cygwin 1.7.0 in loadlibrary loader.
	* libltdl/m4/ltdl.m4 (LT_LIB_DLLOAD) <cygwin>: Check for modern
	function.
	* libltdl/loaders/loadlibrary.c (vm_open): Avoid deprecated
	cygwin_conv_to_full_win32_path.

2008-04-29  Gary V. Vaughan  <gary@gnu.org>

	New libtoolize --no-warn option and LIBTOOLIZE_OPTIONS parsing.
	* libltdl/config/general.m4sh (opt_warning): New option.
	(func_warning): Only display a warning message if $opt_warning
	is true.
	* libtoolize.m4sh: Accept options in LIBTOOLIZE_OPTIONS
	environment variable.
	(--no-warn): Parse new option.
	(func_serial_update_check, func_keyword_update): Use func_warning.
	(func_check_macros): Bail out before style issues nags when
	$opt_warning is false.
	* doc/libtool.texi (Invoking Libtoolize): Document it.
	* tests/libtoolize.at: Test it.
	* NEWS: Updated.

	Fix libtoolize test failure with aclocal-1.10.1.
	* tests/libtoolize.at
	(verbatim aclocal.m4 w/o AC_CONFIG_MACRO_DIR): Force aclocal to
	search the source tree for latest libtool macros.

2008-04-24  Eric Blake  <ebb9@byu.net>

	Fix bug in 2008-04-21 type improvements.
	* libltdl/ltdl.c (load_deplibs): Fix casting bug.

2008-04-23  Michael Haubenwallner  <michael.haubenwallner@salomon.at>

	Use /nonexistent as destination for files not to be installed.
	* tests/darwin.at (darwin fat compile): Fix typo.
	* tests/inherited_flags.at (inherited_linker_flags): Change
	-rpath to /nonexistent.  This helps to avoid accidentally
	picking up libraries below /usr/local.
	* tests/template.at (simple template test): Likewise.  Fixes
	test failure for additional incompatible libstdc++ in
	/usr/local.
	* tests/testsuite.at (configure_options): Add
	--prefix=/nonexistent.

2008-04-23  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.m4sh (rerun_aclocal): Remove unused variable.
	Reported by Olly Betts <olly@survex.com>

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

	* tests/static.at (ccache -all-static): Ignore link warnings.
	Report by Gary V. Vaughan.

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

	Libtoolize now advises AC_CONFIG_MACRO_DIR use where appropriate.
	* libtoolize.m4sh (func_check_macros): Always advise use of
	AC_CONFIG_MACRO_DIR when not able to copy libtool macros into
	the project tree.
	* tests/libtoolize.at: New test for correct diagnosis of mismatch
	between AC_CONFIG_MACRO_DIR and ACLOCAL_AMFLAGS.
	Update expected output of other tests.
	* NEWS: Updated.

2008-04-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix regression over 1.5.26 with ccache $CC -all-static.
	* libltdl/config/ltmain.m4sh (func_mode_link): Add
	$link_static_flag to compile_command and link_command only
	later, instead of right after a possible compiler wrapper.
	* tests/static.at (ccache -all-static): New test.
	* THANKS: Update.
	Report by Richard Purdie.

2008-04-22  Andreas Schwab  <schwab@suse.de>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix default argument for AC_LIBLTDL_CONVENIENCE.
	* libltdl/m4/ltdl.m4 (AC_LIBLTDL_CONVENIENCE): Default argument
	to libltdl.
	(AC_LIBLTDL_INSTALLABLE): Likewise.
	* tests/configure-iface.at (convenience libltdl): New test.

2008-04-21  Gary V. Vaughan  <gary@gnu.org>

	Only complain that files are up-to-date with --force.
	As a side effect, this also means that when `aclocal' copies the
	libtool macros into `aclocal.m4' libtoolize complains only about
	the macro files that are missing or not up-to-date.
	* libtoolize.m4sh (func_echo_once): New function that prints
	the contents of a named variable only on the first call.
	(func_aclocal_update_check): New function that compares serial
	numbers of libtool macros in aclocal.m4 and only diagnoses the
	missing files.
	(func_copy, func_copy_cb, func_copy_some_files, func_serial_update)
	(func_keyword_update, func_ltmain_update, func_config_update)
	(func_install_update): Accept a new argument naming a variable
	containing a header string to print with func_echo_once iff any
	body text is output by this function.
	(func_install_pkgmacro_subproject, func_install_pkgmacro_parent)
	(func_install_pkgltdl_files, func_install_pkgconfig_subproject)
	(func_install_pkgconfig_parent: Set and pass a suitable
	header string variable for the above functions.
	(func_serial_update_check): Don't advise rerunning `libtoolize
	--force' when aclocal.m4 is not m4_including libtoolize installed
	macro files.
	* tests/testsuite.at (_LIBTOOLIZE_TRANSFORM): Transform generic
	/usr/local/share/aclocal paths to point into the uninstalled
	libtool macro directory.
	* tests/libtoolize.at: Update tests that were checking for old
	behaviour of outputing `file is already up to date' even when
	--force was not passed.
	* tests/libtoolize.at: New tests to prevent regressions of these
	smarter messages.
	* NEWS: Updated.
	Reported by Olly Betts <olly@survex.com>

	Capture lt~obsolete.m4 serial number correctly in libtoolize.
	* libltdl/m4/lt~obsolete.m4: Add the filename to the #serial
	marker so that libtoolize's serial number checks can find it
	in a non-include using aclocal.m4.
	* NEWS: Updated.
	Reported by Olly Betts <olly@survex.com>

	Allow better compile time type checking for lt_dladvise.
	* libltdl/lt__private.h (lt__handle, lt__advise): Typedefs
	removed in favour of...
	* libltdl/ltdl.h (lt_dlhandle),
	libltdl/libltdl/lt_dlloader.h (lt_dladvise): ...changing from
	void* to forward declarations.
	* libltdl/loaders/dlopen.c, libltdl/loaders/loadlibrary.c,
	libltdl/lt_dlloader.c, libltdl/ltdl.c: Remove many redundant
	type casts.
	* NEWS: Updated.
	Suggested by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

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

	basename does not take a list of strings.
	* libltdl/config/ltmain.m4sh(func_extract_archives): Use sed
	$basename.
	* tests/darwin.at: New. Check that we can built fat program,
	shared library and convenience library.
	* Makefile.am: Add test.
	Reported by LiKai Liu <liulk@cs.bu.edu>

	Use AC_CHECK_TOOL for lipo too.
	* libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Check.
	* libltdl/config/ltmain.m4sh (func_extract_archives): Use.

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

	Fix misleading lt_dlopenadvise documentation.
	* doc/libtool.texi (lt_dlopenadvise): The last parameter is of
	type lt_dladvise, not lt_dladvise*.
	(my_dlopenext): Correct the example too.
	* NEWS: Updated.
	Reported by Gary Kumfert <kumfert@llnl.gov>

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

	Fix testsuite cleanup warnings on AIX with NFS.
	* tests/testsuite.at [ aix ]: Set file mode creation so that
	'others' have no permissions.  Shared libraries are kept in
	memory on AIX after use if they are world-readable, which means
	on NFS mounts cleanup of test group directories will fail later.
	* THANKS: Update.
	Report and analysis by Michael Haubenwallner.

	Fix nonportable use of expr.
	* libltdl/config/ltmain.m4sh (func_mode_link) <Transforming
	deplibs into only shared deplibs>: Fix expr portability issues,
	noted on FreeBSD.  While at it, simplify and avoid forking.
	Report by Bob Friesenhahn.

	Exploit shell arithmetic expansion and ${#var}.
	* libltdl/m4/libtool.m4 (_LT_CHECK_SHELL_FEATURES): Also check
	for arithmetic expansion, and ${#var}.
	(_LT_PROG_XSI_SHELLFNS): Define func_arith and func_len
	accordingly, falling back on 'expr'.  Note that the argument to
	func_len may not start with a hyphen.  In the pre-Posix
	fallback, take care not to rely on the exit status of the
	variable assignment (not portable), but set the length to
	$max_cmd_len instead.
	* libltdl/config/ltmain.m4sh (func_mode_link): Use func_arith
	and func_len throughout for integer arithmetic, fixing
	quadratical amount of counting for reloadable object and
	piecewise archive linking.  Change all comparisons with
	max_cmd_len to test for smaller, non-equal length.
	* THANKS: Update.
	Suggested by Roland Mainz.

	* libltdl/config/ltmain.m4sh (func_mode_compile): Avoid
	redundant removal of old output files before compilation.
	Do not remove $obj until we have successfully grabbed the
	lockfile (in case the compiler doesn't grok `-c -o'), because
	it might be identical to $output_obj.
	At the end of the function, before we remove the lockfile,
	update $removelist so that if the trap hits after the lockfile
	has been removed, we do not accidentally remove $output_obj that
	does not belong to us.
	(func_write_libtool_object): Use $MV instead of mv.

2008-04-18  Andreas Schwab  <schwab@suse.de>

	* libltdl/m4/ltoptions.m4 (AC_ENABLE_SHARED): Check optional
	argument.
	(AC_ENABLE_STATIC): Likewise.
	(AC_ENABLE_FAST_INSTALL): Likewise.

2008-04-16  Eric Blake  <ebb9@byu.net>

	Make ChangeLog merges easier.
	* .gitattributes: New file.
	* HACKING: Mention how it helps.

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

	Allow bootstrap from git repository.
	* Makefile.am: Pass srcdir as an argument to mkstamp and expect
	only 2 fields in mkstamps output.
	* clcommit.m4sh: Ditto.
	* configure.ac: Ditto.
	* libltdl/config/mkstamp: return a revision and date based on
	the number of lines which look like dates in all the ChangeLog*
	files in the directory we got as arg 1.

2008-04-11  Eric Blake  <ebb9@byu.net>

	Fix usage of setmode without declaration on cygwin.
	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src): Ensure
	setmode has prototype for both mingw and cygwin.

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

	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Move non-XSI
	definition of func_dirname_and_basename ...
	* libltdl/config/general.m4sh (func_dirname_and_basename):
	... here, to use it for the other scripts that use general.m4sh
	(and as portable fallback for libtool).  Add marker for early
	insertion of generated shell functions (into libtool, not the
	other scripts) here.
	Use func_dirname_and_basename to compute progname, progpath.
	* libltdl/config/ltmain.m4sh (func_mode_help): Remove marker
	for insertion of generated shell functions.
	* tests/sh.test: Adjust function definition test to not match
	function call.

	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS) <func_xform>:
	New function.
	* libltdl/config/ltmain.m4sh (func_mode_compile): Use it to
	avoid two forks with XSI shells.
	* tests/suffix.test: Also test a file with multiple dots.

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

	* libltdl/config/ltmain.m4sh (func_win32_libid,
	func_generate_dlsyms, func_extract_an_archive,
	func_extract_archives, func_mode_help): move these so they
	appear after func_mode_compile.
	* tests/nomode.test: Check that --mode=link --help works.
	Reported by Josh Triplett <josh@freedesktop.org>

2008-04-07  Gary V. Vaughan  <gary@gnu.arg>

	* doc/libtool.texi (Libltdl interface): Add missing
	documentation for lt_dlopenavise.
	Reported by Anton Erti <anton@mips.complang.tuwien.ac.at>

	* configure.ac, libltdl/configure.ac (AM_INIT_AUTOMAKE): Use
	gnu rather than gnits standards so that version number 2.2.3a
	is not rejected!
	Reported by Olly Betts <olly@survex.com>

2008-04-01  Gary V. Vaughan  <gary@gnu.arg>

	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.3a.

	GNU Libtool 2.2.2 was released.

	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.2.
	* libltdl/Makefile.in (LTDL_VERSION_INFO): C:R+1:A because the
	interfaces are unchanged, even though we improved the code some
	more.
	* NEWS: Updated.

	* libltdl/m4/libtool.m4, libltdl/m4/ltdl.m4,
	libltdl/m4/ltoptions.m4: Bump serial numbers to account for
	changes since 2.2 release.

2008-03-27  Peter O'Gorman  <peter@pogma.com>

	* libltdl/m4/libtool.m4 [_LT_REQUIRED_DARWIN_CHECKS]: Fix the
	test for -single_module and log it to config.log.
	Reported by Torok Edwin and Nigel Home.

2008-03-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Document that disable-static plus -all-static is not portable.
	* doc/libtool.texi (Link mode): -all-static does not go well
	with disable-static on most systems.
	* tests/static.at (static linking flags for programs) [!aix]:
	With --disable-static but nonempty link_static_flag, skip the
	m-all-static link.  Do not skip it on AIX, as there the
	enable_static is self-inflicted, and thus expected to work.
	* THANKS: Update.
	Report by Nix.

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

	* libltdl/m4/libtool.m4 (_LT_CHECK_BUILDDIR): No need to escape
	backticks in argument to AC_MSG_WARN or AC_MSG_ERROR.
	* libltdl/m4/ltdl.m4 (_LTDL_INSTALLABLE, LTDL_INIT): Likewise.

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

	* libltdl/config/ltmain.m4sh (NLS nuisances): Fix quoting of
	localization variables for shell-active characters.
	* tests/localization.at (localized compiler messages): Extend
	test.
	* THANKS: Update.
	Report by Mike Frysinger.

2008-03-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/defs.m4sh (func_get_config): Build egrep regex to speed
	up extracting several variables at once.  Use it to extract all
	default variables at once.  Also extract build_alias and
	host_alias from the libtool script.
	(func_configure_nofail): Use build_alias and host_alias for
	--build and --host, respectively.  Pass each if nonempty.
	* tests/testsuite.at: Pass --build if build_alias is nonemtpy.
	* tests/quote.test: Extract ECHO and wl at once.

	* libltdl/m4/ltoptions.m4 (AC_LIBTOOL_WIN32_DLL): Require
	AC_CANONICAL_HOST.
	* THANKS: Update.
	Report by Jakub Bogusz.

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

	* NEWS: Update.

2008-03-12  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src) [file
	scope]: additional #includes and #defines to support...
	(func_emit_cwrapperexe_src) [main]: ensure stdout is set to
	binary mode for cygwin|mingw builds. Ensure temporary script
	file is written in binary mode for cygwin|mingw builds.
	(func_mode_link) [cygwin|mingw]: cross-build support - only
	use cwrapper to generate shell wrapper if building native;
	otherwise use func_emit_wrapper()

2008-03-12  Henning Nielsen Lund  <hnl_dk@amigaos.dk>

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_COMPILER_PIC, _LT_LINKER_SHLIBS) [amigaos]: Port to
	AmigaOS4 shared libraries on powerpc.
	* libltdl/m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS) [amigaos]:
	Likewise.
	* THANKS, NEWS: Update.

2008-03-09  Bruno Haible  <bruno@clisp.org>
	and Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	Fix compiler output to be in the user locale.
	* libltdl/config/general.m4sh (func_show_eval_locale): New
	function, for running commands in the user locale.
	* libltdl/config/ltmain.m4sh (func_mode_compile): Use it for
	compiling.
	* tests/localization.at (localized compiler messages): New test.
	* Makefile.am: Adjust.
	Report by Bruno Haible.

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

	Fix several test failures on Cygwin and MinGW.
	* tests/nonrecursive.at: Use -no-undefined for foo.la.
	* tests/recursive.at: Likewise.
	* tests/subproject.at: Likewise.
	* tests/lt_dladvise.at: For systems where undefined symbols are
	not allowed, to not try to load the module libdepend.
	[ mingw ]: Add to list of such systems.
	* tests/testsuite.at (_LT_AT_TRANSLATE_TEXT_OUTPUT): New macro,
	to translate line ending of expout and experr files suitable for
	host executables.
	(LT_AT_CHECK, LT_AT_NOINST_EXEC_CHECK): Use it.
	Report by Bob Friesenhahn.

	Fix installcheck dependencies, fix for --program-transform-name.
	* Makefile.am (installcheck-local): Depend upon tests/atconfig
	and $(srcdir)/$(TESTSUITE).
	* tests/testsuite.at (_LIBTOOLIZE_TRANSFORM): New macro.
	(LT_AT_CHECK_LIBTOOLIZE): Use it to transform expout and experr
	files suitably.
	* HACKING: Update.

	Drop usage of obsolete macros AC_EXEEXT and AC_OBJEXT.
	* libltdl/m4/libtool.m4 (_LT_ENABLE_LOCK, _LT_COMPILER_OPTION)
	(_LT_COMPILER_C_O, LT_PATH_NM, _LT_CMD_GLOBAL_SYMBOLS, _LT_SETUP):
	Drop usage of obsolete AC_OBJEXT and AC_EXEEXT.
	* tests/am-subdir.at (C++ subdir-objects): Likewise.

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

	* tests/convenience.at (Java convenience archives): Skip test if
	gcj cannot compile a working executable from .java files.
	Report by Nelson H. F. Beebe.

	* libltdl/m4/libtool.m4 (_LT_LANG_GCJ_CONFIG): Need to set LD.
	Reported by Nelson H. F. Beebe.

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

	* libltdl/m4/libtool.m4 (_LT_PROG_FC): Undo commit - bad idea.

	* libltdl/m4/libtool.m4 (_LT_PROG_FC): Report FC=no if the FC
	compiler is not a GNU compiler and the CXX compiler is a GNU
	compiler.
	Reported by Nelson H. F. Beebe.

2008-03-06  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.maint (TSDEPS_DIST): Removed.  No longer used.
	(TSDEPS): libtool.m4 has long since moved to libltdl.
	(cvs-dist): Don't put the suffix dot in twice.

2008-03-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/convenience.at (Java convenience archives): Skip test if
	gcj cannot compile a .java file.
	Report by Nelson H. F. Beebe.

2008-03-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/config/ltmain.m4sh (func_lalib_unsafe_p): redirect
	and restore from stdin, not stdout.
	* tests/execute-mode.at (execute mode): Adjust test to catch
	this.
	Report by Roberto Bagnara.

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

	Fix libltdl to not skip dlopen on systems with several loaders,
	such as HP-UX, Cygwin.
	* libltdl/slist.c (slist_concat): When appending to the tail
	of a list, do not drop items off the beginning of the list.
	* NEWS: Update.

	* libltdl/config/ltmain.m4sh (func_mode_execute): Replace only
	arguments we have identified as shell or C wrappers.
	(func_emit_wrapper): Output error message on stderr.
	* tests/execute-mode.at: New file, with --mode=execute tests.
	* Makefile.am: Adjust.
	* NEWS: Update.
	Fixes 2.2 regression.  Report by Roberto Bagnara.

	* libltdl/m4/libtool.m4 (_LT_CONFIG): Drop misleading `GNU'
	prefix before the host package name in the "Generated by" line
	for the libtool script.
	* THANKS: Update.
	Reports by Peter Rosin and Roberto Bagnara.

	* doc/libtool.texi (Module loaders for libltdl): Fix typo.

	* libltdl/loaders/dld_link.c (vl_exit): New function, zero out ...
	(vtable): ... this new file static variable split out from ...
	(get_vtable): ... here.  Initialize vtable, register vl_exit as
	dlloader_exit function.
	* libltdl/loaders/dlopen.c: Likewise.
	* libltdl/loaders/dyld.c: Likewise.
	* libltdl/loaders/load_add_on.c: Likewise.
	* libltdl/loaders/loadlibrary.c: Likewise.
	* libltdl/loaders/shl_load.c: Likewise.
	* libltdl/loaders/preopen.c: Likewise; vl_exit existed here
	already.
	* tests/lt_dlexit.at (lt_dlexit unloading libs): Update test.
	* NEWS: Update.
	Report by Andreas Schwab.

2008-03-01  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.3a.

	GNU Libtool 2.2 was released.

	* configure.ac, libltdl/configure.ac (AC_INIT): Bump version
	number to 2.2.
	* NEWS: Updated.

	* tests/lt_dladvise.at, tests/lt_dlexit.at,
	tests/need_lib_prefix.at: Skip these tests when called from
	`make distcheck DISTCHECK_CONFIGURE_FLAGS=--disable-ltdl-install'.
	The tests try to link against the dummy installed libltdl.la
	from .../_inst/lib/libltdl.la, which does not exist when
	configured with --disable-ltdl-install.

2008-02-29  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/m4/argz.m4 (AC_CHECK_FUNCS): Also use our replacement
	argz if the system argz_add or argz_count are missing.
	Report by Juan Manuel Guerrero <juan.guerrero@gmx.de>.

2008-02-26  Karl Berry  <karl@freefriends.org>

	* libltdl/argz.c (argz_add, argz_count): New functions.
	* libltdl/argz_.h: Declare them.
	Report by Juan Manuel Guerrero <juan.guerrero@gmx.de>.

2008-02-20  Peter O'Gorman  <peter@pogma.com>

	* libltdl/m4/libtool.m4 (_LT_LANG_GCJ_CONFIG): Do not call the
	_LT_SYS_DYNAMIC_LINKER macro here.
	Reported by Mike Frysinger <vapier@gentoo.org>

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

	* libltdl/m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Fix typo.

2008-02-14  Peter Breitenlohner  <peb@mppmu.mpg.de>

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): better handling
	of predefined values for lt_cv_sys_lib_search_path_spec and
	lt_cv_sys_lib_dlsearch_path_spec.

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

	* libtoolize.m4sh (func_install_pkgconfig_files): Only call
	func_install_pkgconfig_parent if $seen_autoconf.
	* tests/standalone.at (compiling softlinked libltdl)
	(compiling copied libltdl, installable libltdl)
	(linking libltdl without autotools): Use checked libtoolize
	calls to catch warnings.

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

	* libltdl/configure.ac: Bump package version.
	* HACKING: Reminder to do it next time, too.

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

	* tests/mdemo/Makefile.am (@LIBLTDL@): Update outdated
	dependencies.
	($(top_distdir)/libltdl/libtool): Remove.
	Fixes spurious mdemo-dryrun failure with OpenBSD make.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux] <ifort>:
	Treat like icc and ecc, for fixed `-Wl,' and `-KPIC' settings.

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

	* tests/archive-in-archive.at
	(static library contains static library): Test also the actual
	broken link command, and the following install command, as
	UnixWare ar rightly refuses to put an archive into an archive.
	Report by Tim Rice.

2008-02-06  Peter O'Gorman  <peter@pogma.com>

	* libltdl/m4/ltoptions.m4 (_LT_SET_OPTIONS): Only set default
	LT_INIT values for LT_INIT, not LTDL_INIT.
	Reported by Jochem Huhmann <joh@revier.com>

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

	* tests/testsuite.at (LT_AT_TAG): For the CXX tag, if $CXX is
	g++, check that `g++ -v' works; AC_PROG_CXX may have set that
	as default value even if it found no C++ compiler.
	Report by Andreas Schwab.

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

	* libltdl/Makefile.inc (EXTRA_DIST): Now that we're not using
	Autoconf's AC_SOURCES macro, Automake can't trace our extra
	source files argz, lt__dirent.c and lt__strl.c.  List them
	manually here to make sure they are distributed.
	* NEWS: Updated.
	Reported by Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

2008-02-01  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac (AC_INIT): Bump version number to 2.1c.

	GNU Libtool 2.1b was released.

	* configure.ac (AC_INIT): Bump version number to 2.1b.
	* libltdl/Makefile.inc (LTDL_VERSION_INFO): Increment to account
	for new interfaces since the last libltdl update.
	* HACKING (Release Procedure): Note that LTDL_VERSION_INFO is now
	kept in libltdl/Makefile.inc.

2008-02-01  Gary V. Vaughan  <gary@gnu.org>

	* tests/cdemo, tests/depdemo, tests/fcdemo, tests/pdemo,
	tests/demo, tests/f77demo, tests/mdemo, tests/tagdemo
	(distclean-local): Remove compiler file droppings left by
	Autoconf tests that prevent make dist from finishing on
	several machines including Mac OS 10.5.

2008-02-01  Gary V. Vaughan  <gary@gnu.org>

	Unfortunately, the autoconf implementation of AC_LIBOBJ and
	friends requires all libobjs to be in the same directory, as
	declared by AC_CONFIG_LIBOBJ_DIR.  That might prevent using
	either recursive or nonrecursive libltdl if the parent project
	has libobjs of its own, except that this patch tracks libltdl's
	libobjs in another namespace:

	* libltdl/m4/ltdl.m4 (_LT_LIBOBJ, _LT_LIBSOURCES): Versions of
	AC_LIBOBJ and AC_LIBSOURCES that save missing sources in a
	ltdl_LIBOBJS automake macro, instead of the global LIBOBJS
	automake macro.  Content of the macros inspired by code from
	gnulib-tool.
	(_LTDL_MODE_DISPATCH): Initialise lt_libobj_prefix in
	nonrecursive mode.
	(LTDL_INIT): Push and pop the new definitions around potential
	sites that call AC_LIBOBJ.  Also, using lt_libobj_prefix,
	initialise ltdl_LIBOBJS and ltdl_LTLIBOBJS.
	* libtoolize.m4sh (func_fixup_Makefile): Substitute ltdl_LIBOBJS
	and ltdl_LTLIBOBJS for LIBOBJS and LTLIBOBJS during copying
	either Makefile.am or Makefile.inc, depending on ltdl_mode.
	Reported by Eric Blake <ebb9@byu.net>

2008-01-30  Gary V. Vaughan  <gary@gnu.org>

	There are 5 distinct batches of files that libtoolize might
	install into a project, depending on whether libltdl is
	being installed in subproject mode, and in that case whether
	the parent project shares the config and macro directories
	with the subproject ltdl.  Make a separate function for each
	of those 5 batches (4 new functions below, plus the recently
	factored func_install_pkgltdl_files), and make a clearer
	distinction between when each of them is needed:

	* libtoolize.m4sh (func_install_pkgmacro_subproject):
	New function for installing and reporting on m4 files copied
	to a subproject ltdl directory.
	(func_install_pkgmacro_parent): Similar new function for m4
	files copied solely for the use of the parent project,
	including serial checking.
	(func_install_pkgconfig_subproject): New function for
	installing and reporting on config helper files copied to a
	subproject ltdl directory.
	(func_install_pkgconfig_parent): Similar new function for
	config helper files copied solely for the use of the parent
	project, including serial checking.
	(func_install_pkgmacro_files, func_install_pkgconfig_files):
	Rewritten in terms of the above functions.
	* tests/libtoolize.at: Adjust test expout's to match newly
	regularized libtoolize output.
	Move parent project pkgconfig files to build-aux directory
	so that progress messages show an obvious difference to
	pkgconfig files installed to subproject `config' directory.
	(nonrecursive ltdl with AC_CONFIG_MACRO_DIR): New test.
	(diagnose missing LT_CONFIG_LTDL_DIR): New test.
	(subproject ltdl with non-shared directories): New test.
	Reported by Eric Blake <ebb9@byu.net>

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

	* libltdl/m4/libtool.m4 [darwin]: Changes to glob pattern matching
	to be safer.

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

2008-01-28  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.m4sh (func_check_macros): Correct typo with
	'$opt_quiet ||' where '$opt_quiet &&' that was preventing
	func_check_macros from running!

	* libtoolize.m4sh: Set opt_ltdl whenever seen_ltdl is set
	so that libtoolize behaves as though --ltdl was passed even
	if it wasn't as long as LTDL_INIT (or equivalent) was seen
	in configure.ac.  Adjust redundant '$opt_ltdl || $seen_ltdl'
	to simply '$opt_ltdl'.
	Reported by Eric Blake <ebb9@byu.net>

	* libtoolize.m4sh (func_check_macros): Check opt_quiet
	in the function itself to simplify calling it.  Also move
	the definition of the function.

	* libtoolize.m4sh (func_scan_files): Be sure to set the
	default libltdl mode to 'subproject' when libtoolize is
	executed before configure.ac has been updated.

2008-01-27  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.m4sh (func_install_pkgconfig_files)
	(func_install_pkgmacro_files, func_install_pkgltdl_files):
	Factored out from the 'Main' section of the file.

	* libtoolize.m4sh (subproject_auxdir, subproject_macrodir):
	New variables to hold the default locations for auxfiles
	and macrofiles in a subproject libltdl.
	(ac_auxdir, ac_macrodir): New variables to hold the values
	passed by AC_CONFIG_AUX_DIR and AC_CONFIG_MACRO_DIR resp.
	(auxdir, macrodir): Adjust to contain the values to be
	used by libtoolize at runtime.

	* libtoolize.m4sh (func_fixup_Makefile)
	(func_massage_aclocal_DATA, func_massage_pkgltdl_files)
	(func_massage_pkgconfig_files): Add missing $opt_debug.

2008-01-27  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize (func_fixup_Makefile, func_massage_aclocal_DATA)
	(func_massage_pkgltdl_files, func_massage_pkgconfig_files):
	Add missing $opt_debug.

2008-01-26  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.m4sh (Main): Copy (or link) libltdl sources
	into project tree when LTDL_INIT was seen, whether or not
	`--ltdl' is passed.
	(func_check_macros): Recommend LTDL_INIT instead of
	LT_WITH_LTDL when `--ltdl' is used before configure.ac is
	upgraded.
	* tests/libtoolize.at: Test that it works.
	(_LT_AT_LTDL_SETUP): Factor out some common test setup.
	Reported by Eric Blake <ebb9@byu.net>

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

	* doc/notes.texi: Fix errors in previous commit.

	* libltdl/m4/libtool.m4 (sys_lib_search_path_spec,
	sys_lib_dlsearch_path_spec): Allow for a cache variable
	lt_cv_sys_lib_... to set these at configure time.
	* doc/notes.texi: Short note about the above change.

2008-01-24  Eric Blake  <ebb9@byu.net>

	Add proper quoting to doc examples.
	* doc/libtool.texi: Use m4 quotes where appropriate.
	(Test descriptions): Fix truncated sentence.

2008-01-18  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (DISTCLEANFILES): Remove libtool.dvi generated
	by 'make dvi'.

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

	* libtoolize.m4sh (func_scan_files): Avoid matching our own
	macro code when scanning configure.ac and aclocal.m4.
	Don't produce spurious output if AC_PROG_RANLIB is found.
	* tests/old-m4-iface.at (AM_PROG_LIBTOOL): Add a (weak) check
	that we don't match our own macro code when searching for user
	code calling us.
	* TODO: Updated.

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

	New variable LTDLDEPS for use in output_DEPENDENCIES.

	* libltdl/m4/ltdl.m4 (_LTDL_CONVENIENCE, _LTDL_INSTALLABLE)
	(LTDL_INIT): Set and substitute LTDLDEPS according to chosen
	method.
	* tests/configure-iface.at (installable libltdl)
	(--with-ltdl-include/lib, --with-included-ltdl): Test it.
	* doc/libtool.texi (Distributing libltdl): Document LTDLDEPS.
	* NEWS: Updated.
	Dependency bug exposed by Eric Blake in M4, found by Bob Proulx
	build daemon.

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

	* doc/libtool.texi (Distributing libltdl): Clarify that
	`${top_build_prefix}' may be used in place of `${top_builddir}/'.

	* doc/libtool.texi (Distributing libltdl): Clarify that
	LTDL_INIT goes after LT_INIT; also show the latter in the
	respective examples.
	* tests/subproject.at: Adjust order.

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

	* libltdl/m4/ltdl.m4 (_LT_ENABLE_INSTALL): Use AM_CONDITIONAL
	only if defined.  Allows to use libltdl without aclocal.

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

	* libltdl/m4/libtool.m4: Set GCC var for every tag, avoids need
	to set withGCC var.

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

	* configure.ac: Set libltdl nonrecursive option, to avoid
	configuring libltdl inside the Libtool package.

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

	Silence all non-warning output from `libtool --silent'.
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms)
	(func_extract_archives, func_mode_link): Use func_verbose
	instead of func_echo for all non-warning output.

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

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

	* libltdl/m4/ltoptions.m4 (AC_ENABLE_SHARED): Fix to use
	new _LT_SET_OPTION semantics.

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

	* libltdl/m4/ltdl.m4 (_LTDL_SETUP): Define
	LTDL_DLOPEN_SELF_WORKS, depending upon lt_cv_dlopen_self.
	* libltdl/loaders/dlopen.c (vm_open) [!LTDL_DLOPEN_SELF_WORKS]:
	Fail for dlopen(NULL), so that the preopen loader is used.  This
	fixes mdemo-exec.test failures on AIX where dlopen(NULL)
	succeeds but dlsym resolves no symbol.
	* NEWS: Update.
	Report by Rainer Tammer.

	* tests/am-subdir.at: Drop unused variables.
	* tests/configure-iface.at: Likewise.
	* tests/ctor.at: Likewise.
	* tests/early-libtool.at: Likewise.
	* tests/lt_dladvise.at: Likewise.
	* tests/old-m4-iface.at: Likewise.
	* tests/lt_dlexit.at: Likewise.  Also drop unused functions.

	* tests/old-m4-iface.at (AM_PROG_LIBTOOL): Also copy needed
	lt~obsolete.m4.

	* libltdl/config/ltmain.m4sh (func_mode_link): Fix warning
	about -l and -L for archives and objects as output, to not
	trigger for *.la files.  Non-convenience archives are diagnosed
	later on.

	* tests/configure-iface.at: Ensure LTDLINCL is expanded
	before CPPFLAGS, so that even CPPFLAGS=-I/usr/local/include
	won't make the tests prefer an installed ltdl.h over the
	in-package one.
	* tests/lt_dladvise.at, tests/lt_dlexit.at: Likewise.
	* tests/need_lib_prefix.at, tests/old-m4-iface.at: Likewise.
	Report by Bob Friesenhahn.

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

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

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

	* libltdl/m4/libtool.m4 [darwin]: Reorganize darwin support, use
	dsymutil if it is available so that debugging is possible, check
	for nmedit and dsymutil with AC_CHECK_TOOL, use the linker flag
	-exported_symbols_list in preference to nmedit if it is available.
	Drop support for xlc, it is probably broken.
	* tests/template.at [darwin]: Skip this test, I can not find a way
	to make it work on darwin9 with Xcode-3.0.
	* NEWS: Note the dropping of xlc support.

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

	* libltdl/m4/libtool.m4 (LT_INIT): m4_require, not AC_REQUIRE
	_LT_CHECK_BUILDDIR, as it's m4_defun'ed, not AC_DEFUN'ed.
	Report by Peter O'Gorman.

	* libltdl/m4/ltdl.m4 (_LTDL_INSTALLABLE): Restore correct
	_LT_BUILD_PREFIX-using code.

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

	* tests/recursive.at: Remove bogus --debug option.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* tests/configure-iface.at: Build libltdl in a subdir so that
	it can be easily removed without trying to remove config.log
	on windows (which can't delete a file until it is closed).
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/m4/ltdl.m4 (LTDL_INSTALLABLE): Use _LT_BUILD_PREFIX
	instead of ${top_builddir} for Autoconf-2.62.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/m4/ltdl.m4 (_LT_CONFIG_LTDL_DIR): Correct closing
	comment.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* NEWS: Grammar nit.

	* tests/configure-iface.at, tests/nonrecursive.at,
	tests/recursive.at, tests/subproject.at (_LTDL_SETUP):
	Renamed to _LT_AT_LTDL_SETUP to avoid a nameclash with
	libltdl/m4/ltoptions.m4:_LTDL_SETUP from yesterday's patch.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	* tests/runpath-in-lalib.at (Runpath in libtool library files):
	Compile program file without libtool.
	Report by Rainer Tammer.

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

	Support AIX 6.1.
	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_C_CONFIG, _LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG)
	(_LT_LANG_FC_CONFIG): Adjust case patterns to match AIX 6
	through 9 as well.
	* libltdl/m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): Likewise.
	* NEWS: Update.
	* THANKS: Update.

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

	Move libltdl build mode options from LT_CONFIG_LTDL_DIR to
	LTDL_INIT.  Accept (optional) new 'convenience' and 'installable'
	options in lieu of LTDL_CONVENIENCE and LTDL_INSTALL macros. And
	also, implement --with-included-ltdl, --with-ltdl-lib and
	--with-ltdl-include configure-time options:

	* libltdl/m4/ltoptions.m4: Associate existing option settings with
	LT_INIT.
	(LT_OPTION_DEFINE): Associate options 'nonrecursive', 'recursive',
	'subproject', 'installable' and 'convenience' with LTDL_INIT.
	(_LT_MANGLE_OPTION, _LT_SET_OPTION, _LT_IF_OPTION)
	(_LT_UNLESS_OPTIONS, _LT_SET_OPTIONS): Add MACRO-NAME argument to
	support options to named macros instead of hardcoding only LT_INIT
	options.
	* libltdl/m4/ltdl.m4 (_LTDL_CONVENIENCE): Factor common code from
	LTDL_CONVENIENCE and LTDL_INIT([convenience]).
	(_LTDL_INSTALLABLE): Factor out common code from LTDL_INSTALLABLE
	and LTDL_INIT([installable]).
	(_LTDL_SETUP): Renamed from LTDL_INIT.  Support new configure-time
	options: --with-included-ltdl, --with-ltdl-lib,
	--with-ltdl-include.
	(LTDL_CONVENIENCE, LTDL_INSTALLABLE): Adjust.
	(LT_WITH_LTDL): Removed.
	(LTDL_INIT): Parse caller options.
	* libltdl/m4/libtool.m4 (LT_INIT): Declare that this macro must be
	expanded before LTDL_INIT, and be sure to parse caller options.
	* configure.ac: Call directly into internal _LTDL_SETUP macro.
	* libtoolize.m4sh (func_scan_files): Ltdl mode argument moved from
	LT_CONFIG_LTDL_DIR to LTDL_INIT.
	* tests/nonrecursive.at, tests/recursive.at: Use new interfaces.
	* tests/configure-iface.at: Test it.
	* Makefile.am (TESTSUITE_AT): Add configure-iface.at.
	* doc/libtool.texi (Distributing libltdl): Document improved
	LTDL_INIT interfaces.
	* NEWS: Updated.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): When creating
	reloadable object files, avoid issuing plain `rm -f' without
	further arguments, even if the line length limit is ridiculously
	low as in the `Run tests with low max_cmd_len' test.  This
	failure is exposed on NetBSD.
	Report by Patrick Welche.

	* Makefile.am (EXTRA_DIST): Add ChangeLog.2007.
	* ChangeLog.2007: New, rotated, from...
	* ChangeLog: ...here.
	* NEWS, README, README.alpha, Makefile.am, libtoolize.m4sh,
	libltdl/config/getopt.m4sh, libltdl/config/ltmain.m4sh,
	libltdl/m4/libtool.m4: Bump copyright years.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [ linux ]: The IBM
	XL 8.0 C++ compiler may also be called xlc++*, not only xlC*.
	Report by Nysal K Jan <jnysal@in.ibm.com>.

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

	* libltdl/m4/libtool.m4 (_LT_CHECK_BUILDDIR): New macro.
	Warn about whitespace in the absolute build tree name.
	(LT_INIT): Use it.
	* THANKS: Update.
	Report by Jim Meyering.

	* libltdl/config/ltmain.m4sh (func_extract_an_archive)
	(func_extract_archives): Add some quoting.

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

	Use `${top_build_prefix}' for better compatibility with non-GNU make.
	* libltdl/m4/ltdl.m4 (_LT_BUILD_PREFIX): New macro.
	If the Autoconf version used is >= 2.62, then expand to
	`${top_build_prefix}', otherwise to `${top_builddir}/'.
	(LTDL_CONVENIENCE, LTDL_INSTALLABLE): Use it for defining
	LIBLTDL.  Fixes a build failure with AIX make in a package
	using convenience libltdl in nonrecursive mode.
	* doc/libtool.texi (Distributing libltdl): Document requirements
	to define `top_build_prefix' if Automake is not used.
	Report by Bob Friesenhahn.

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

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

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

	* libltdl/configure.ac: Drop the broken and long-disabled code
	to output a banner for the libltdl configure.  Avoids the need
	to ship mkstamp with libltdl.

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

	* tests/runpath-in-lalib.at: New test.
	* Makefile.am: Update.
	Report by Benoit SIGOURE <tsuna@lrde.epita.fr>.

2007-10-16  Eric Blake  <ebb9@byu.net>

	Speed up bootstrap by improving lt_join.
	* libltdl/m4/ltsugar.m4 (lt_join, _lt_join): Rewrite to mirror
	Autoconf 2.62's faster implementation.

2007-10-12  Eric Blake  <ebb9@byu.net>

	Whitespace cleanup.
	* libltdl/m4/ltsugar.m4: Avoid space-tab in indents.
	* libltdl/m4/libtool.m4: Avoid trailing space.

	Deal with Autoconf 2.62's semantic change in m4_append.
	* libltdl/m4/ltsugar.m4 (lt_append): Replace broken versions of
	m4_append.
	(lt_if_append_uniq): Don't require separator to be overquoted, and
	avoid broken m4_append.
	(lt_dict_add): Fix typo.
	* libltdl/m4/libtool.m4 (_LT_DECL): Don't overquote separator.

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

	* libltdl/config/ltmain.m4sh: Also sanitize `LANGUAGE'.
	(func_mode_execute): Also restore `LANGUAGE', for old glibc.
	Report by Paul Eggert against Autoconf.

2007-10-11  Eric Blake  <ebb9@byu.net>

	* libltdl/.cvsignore: Ignore argz.h.

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

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

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

	* libltdl/config/ltmain.m4sh (func_mode_compile): Accept
	extension `.sx'.
	* tests/suffix.test: Test it.

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

	* libltdl/lt_dlloader.c (loader_callback, lt_dlloader_get): Use
	NULL, not 0, for the benefit of too picky compilers like PGI.
	* slist.c (slist_tail): Likewise.  Include stddef.h, for NULL.
	Report by Jeff Squyres.

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

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

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

	* doc/libtool.texi (User defined module data)
	<lt_dlinterface_register>: Document that a NULL place matches
	all modules.
	* libltdl/lt_dlloader.c (lt_dlloader_remove): Actually iterate
	over all open modules when looking for modules that use it.
	If a resident module is found, return but do not set the error
	string.
	* libltdl/ltdl.c (lt_dlexit): When removing dlloaders, ignore
	errors that stem from earlier failed commands.  Exposed by the
	lt_dladvise test.
	Fixes regression over branch-1-5.
	Memleak report as Coverity CID 19 via Jeff Squyres.

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

	* NEWS: Update.

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

	* libltdl/ltdl.c (lt_dlopenadvise): Instead of asserting, return
	FILE_NOT_FOUND if the filename is "".

	* libltdl/ltdl.c (try_dlopen): Fix computation of extension,
	avoids subtracting pointer from NULL pointer.

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

	* libltdl/ltdl.c (tryall_dlopen_module): Fix string length
	computation: do not allocate more than needed.

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

	* libltdl/loaders/preopen.c (vm_close): `module' is unused.
	Coverity report CID 158 via Jeff Squyres.

	* libltdl/ltdl.c (parse_dotla_file): If we run out of memory,
	do not close the .la file twice.
	Coverity report CID 440 via Jeff Squyres.

	* libltdl/ltdl.c (has_library_ext): Remove dead code.
	Coverity report CID 561 against Open MPI via Jeff Squyres.

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

	* libltdl/slist.c (slist_remove): When a matching item is found,
	break out of the loop to return the first match; also fixes
	possible NULL dereference.

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG) [ linux ]: Add support for IBM XL 8.0
	C/C++ (xlc*, xlC*) and IBM XL Fortran 10.1 (xlf*) on GNU/Linux,
	tested on ppc, pending a $shlibpath_var related fix.
	(_LT_SYS_HIDDEN_LIBDEPS): Double-quote $output_verbose_link_cmd
	properly during evaluation, obsoleting $no_glob_subst mangling.
	* NEWS: Update.

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]
	[ k*bsd*-gnu ] <shlibpath_overrides_runpath>: Avoid spurious
	output in runpath test.

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

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

	* Makefile.am (edit): Do not warn against manual editing for the
	generated files libtool, libtoolize, libltdl/m4/ltversion.m4,
	tests/defs, as they are still in a preferred source code form as
	required by GPL.
	Report by DJ Delorie.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LANG_CXX_CONFIG)
	[ linux ]: Treat pgcpp as Portland Group C++ compiler as well.

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

	* libltdl/ltdl.c (try_dlopen): Use `attempt' rather than
	`filename', as the former has the needed extension when called
	by lt_dlopenext.
	Report by Brian Barrett.

2007-07-27  Peter Rosin  <peda@lysator.liu.se>

	* Makefile.am: Pass STRIP through to the testsuite, so that
	tests that run configure will use the same strip program.

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

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

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Remove each
	intermediate relinked object after use, to avoid quadratic space
	complexity when linking partially.
	Report by Isidor Zeuner <eezyy@gmx.net>.

2007-07-23  Eric Blake  <ebb9@byu.net>

	* libltdl/config/ltmain.m4sh: Whitespace cleanup.

	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src)
	<chase_symlinks>: Avoid compiler warning.

2007-07-22  Peter Rosin  <peda@lysator.liu.se>

	* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src): Add
	support for Microsoft Visual C. Also, older MinGW versions
	seem to need stdint.h to find intptr_t.

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

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

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

	* tests/cdemo-exec.test: use $EXEEXT where appropriate
	to correct mingw cross-compile issues.
	* demo-deplibs.test: Ditto.
	* demo-exec.test: Ditto.
	* demo-inst.test: Ditto.
	* demo-relink.test: Ditto.
	* depdemo-exec.test: Ditto.
	* depdemo-inst.test: Ditto.
	* depdemo-relink.test: Ditto.
	* f77demo-exec.test: Ditto.
	* fcdemo-exec.test: Ditto.
	* mdemo-exec.test: Ditto.
	* mdemo-inst.test: Ditto.
	* mdemo2-exec.test: Ditto.
	* pdemo-exec.test: Ditto.
	* pdemo-inst.test: Ditto.
	* tagdemo-exec.test: Ditto.

2007-07-14  Peter Rosin  <peda@lysator.liu.se>

	* AUTHORS, THANKS: Peter Ekberg got married, now Peter Rosin.

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

	* libltdl/m4/libtool.m4 (func_dirname_and_basename) <XSI>:
	New function.
	(func_dirname_and_basename) <!XSI>: New function.
	* libltdl/config/ltmain.m4sh (func_ltwrapper_scriptname):
	Call it.  Also, take advantage of missed optimization using
	func_dirname's additional arguments.
	(func_mode_compile): Call it.
	(func_mode_install): Call it.
	(func_mode_link): Call it.

2007-07-12  Peter Rosin  <peda@lysator.liu.se>

	* libltdl/config/ltmain.m4sh (func_mode_link): Strip the cwrapper
	using $STRIP instead of relying on the tools to support -s, which
	MSVC doesn't.

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

	* libltdl/config/libtool.m4sh: Don't pass -msg_* through to the
	linker.
	Reported by Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

2007-07-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libltdl/lt__alloc.c, libltdl/loaders/preopen.c,
	libltdl/loaders/dyld.c, libltdl/loaders/dlopen.c, libltdl/ltdl.c,
	libltdl/lt_error.c, libltdl/lt_dlloader.c, libltdl/lt__dirent.c:
	Include lt__private.h prior to any system headers.
	* libltdl/lt__alloc.c: Remove redundant inclusion of configuration
	header.

2007-07-04  Eric Blake  <ebb9@byu.net>

	* libltdl/ltdl.c (advise_dup): Delete function no longer used
	after memleak fix three days ago.

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

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

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

	* libltdl/m4/lt~obsolete.m4 (LTOBSOLETE_VERSION): New macro, to
	force-pull in this file by aclocal.
	* libltdl/m4/libtool.m4 (LT_INIT): Require LTOBSOLETE_VERSION.
	* tests/libtoolize.at (upgrading verbatim style aclocal.m4):
	Adjust.
	Report by H. J. Lu <hjl@lucon.org>.

	* libltdl/ltdl.c (tryall_dlopen): Rename argument to have typed
	alias of `advise' instead of allocating a copy.  Fixes memleak.

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

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

2007-06-24  Gary V. Vaughan  <gary@gnu.org>

	Add a test to simulate a failure visible on systems which
	need a library prefix like 'lib', such as BeOS.  Fix a number
	of bugs exposed by this test in order for it to pass.
	Currently the prefix is hardcoded as 'lib', as I am not aware
	of systems that require a different prefix:

	* libltdl/loaders/preopen.c (lt_dlpreload_open):  Move error
	condition out of test loop to be sure that each originator is
	tried, instead of erroring out if the first doesn't match.
	Support passing NULL as the originator to load all preloaded
	modules originating in the program itself.
	* libltdl/lt_dlloader.c (lt_dlloader_dump): New debug function.
	* libltdl/libltdl/lt_dlloader.h (lt_dlloader_dump): Declare it
	when LT_DEBUG_LOADERS is defined at compile time.
	* libltdl/ltdl.c (lt_dlinit): Dump loader list after successful
	initialisation.
	(tryall_dlopen): Add a new VTABLE parameter to force use of a
	specific loader in preference to trying every loader in turn.
	Adjust all callers.
	(try_dlopen): Always see whether a module was preloaded for
	module names with no directory component before searching the
	filesystem for a match.
	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Declare
	a new global_symbol_to_c_name_address_lib_prefix variable.
	(global_symbol_to_c_name_address_lib_prefix): The sed
	expressions to use when a lib prefix is enforced need to be
	slightly different to work with preloaded modules.
	* libltdl/config/ltmain.m4sh (func_generate_dlsyms): In order
	to name preloaded symbols correctly for the lookup algorithm
	to work when the loaded module file must be prefixed with lib.
	Use global_symbol_to_c_name_address_lib_prefix when
	need_lib_prefix is other than no.
	* tests/need_lib_prefix.at: New test to check for breakage on
	hosts where need_lib_prefix is unknown.
	* Makefile.am (TESTSUITE_AT): Add new test.
	* tests/TODO: Note missing tests that would have caught some
	of the latent bugs fixed by this patch.
	* HACKING: Document libltdl keyword.
	* NEWS: Updated.

2007-06-24  Gary V. Vaughan  <gary@gnu.org>

	Reenable compilation of libltdl with C++:

	* libltdl/ltdl.c (tryall_dlopen): Rename the try variable to
	attempt, and cast explicitly.
	(advise_dup): Add explicit cast.

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

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

2007-06-21  Noah Misch  <noah@cs.caltech.edu>

	* tests/f77demo/configure.ac [--with-dist]: New option.  Skip most
	Fortran checks when given.
	* tests/fcdemo/configure.ac [--with-dist]: Likewise.
	* Makefile.am (@DIST_MAKEFILE_LIST@): Pass --with-dist.
	Reported by Benoit Sigoure <tsuna@lrde.epita.fr>.

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

	* AUTHORS: Add myself.

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

	* libltdl/config/ltmain.m4sh: Add new magic variable
	for use with cwrapper.
	(func_ltwrapper_script_p): New function.
	(func_ltwrapper_executable_p): New function.
	(func_ltwrapper_scriptname): New function.
	(func_ltwrapper_p): Accomodate both wrapper scripts and
	wrapper executables.
	(func_mode_execute): Handle $file that is a wrapper
	script and $file that is a wrapper executable differently.
	(func_mode_install) [cygwin|mingw]: If $file is a wrapper
	executable, use func_ltwrapper_scriptname to determine
	wrapper script name. Afterwards, always use
	func_ltwrapper_script_p instead of func_ltwrapper_p.
	(func_emit_libtool_wrapper_script): Rename to...
	(func_emit_wrapper): ...this. All callers changed.
	(func_emit_libtool_cwrapperexe_source): Rename to...
	(func_emit_cwrapperexe_src): ...this. All callers changed.
	Embed new magic_exe variable into source. Private transient
	wrapper script now called foo_ltshwrapperTMP, not
	foo_ltshwrapper.
	(func_emit_cwrapperexe_src) [main, mingw]: Use _spawnv
	and return child's exit code manually rather than rely on
	broken execv.
	(func_mode_link) [cygwin|mingw]: Don't call dirname and
	basename directly; use func_dirname and func_basename
	when computing cwrapper names.  Use cwrapper to generate
	wrapper script, and use pathname returned by
	func_ltwrapper_scriptname instead of $output.
	(func_mode_link) [NOT cygwin|mingw]: move wrapper script
	generation for non-win32 inside case statement, as default
	case.
	(func_mode_uninstall) [$name's extension != .lo|.la]:
	'clean' mode must handle $file differently if it is a libtool
	wrapper script, or if it is a libtool wrapper executable.
	* tests/destdir.at [Simple DESTDIR install]: $EXEEXT fixups.
	* tests/destdir.at [DESTDIR with in-package deplibs]: Ditto.

2007-06-17  Noah Misch  <noah@cs.caltech.edu>

	* AUTHORS: Add myself.

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

	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN): add quotes to
	the test -n.

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

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

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

	* libltdl/config/ltmain.m4sh (func_emit_libtool_wrapper_script):
	Take an argument to specify value assigned to
	WRAPPER_SCRIPT_BELONGS_IN_OBJDIR in the emitted
	script.
	(func_emit_libtool_cwrapperexe_source) [file scope]:
	define permission flags S_IXGRP and S_IXOTH if not
	already defined.
	(func_emit_libtool_cwrapperexe_source) [LTWRAPPER_DEBUGPRINTF]:
	Use C89-compatible syntax to mimic variadic macros.
	Adjust all callers.
	(func_emit_libtool_cwrapperexe_source) [check_executable]:
	avoid embedded #ifdefs; use S_IXGRP and S_IXOTH
	unconditionally.
	(func_emit_libtool_cwrapperexe_source) [make_executable]:
	ditto.
	(func_emit_libtool_cwrapperexe_source): don't rewrite
	WRAPPER_SCRIPT_BELONGS_IN_OBJDIR posthoc; instead pass
	correct argument when calling func_emit_libtool_wrapper_script.
	(func_mode_link): pass correct argument when calling
	func_emit_libtool_wrapper_script.

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

	* libltdl/config/ltmain.m4sh (func_emit_libtool_cwrapperexe_source):
	ensure that generated source follows GCS as nearly as
	possible.

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

	* libltdl/config/ltmain.m4sh (func_emit_libtool_wrapper_script):
	add code block to handle cases when wrapper script is in $objdir.
	(func_emit_libtool_cwrapperexe_source): replace DEBUG() macro
	with namespace-safe LTWRAPPER_DEBUGPRINTF(). Call
	func_emit_libtool_wrapper_script() with appropriate filters to
	embed script text in C char* static variable.
	(f_e_l_c_s: main): add new option --lt-dump-script, parse argv[]
	for it, and take appropriate action.  Call chase_symlinks()
	on argv[0], in case this.exe was launched via one.  Use chased
	value to determine full absolute pathname of wrapper script, in
	$objdir. Unconditionally write script out to this pathname and
	set permission bits.  Remove extraneous ';' from debugging loop.
	(f_e_l_c_s: main) [mingw]: DOS-ize $SHELL before populating
	newargv[0]; if $TARGETSHELL environment variable is set, use
	it instead of $SHELL and do not DOS-ize.  Ensure newargv[1]
	(wrapper script absolute path) uses only '/', not '\'.  Make
	sure to call execv() with DOS-ized $SHELL (or un-DOS-ized
	$TARGETSHELL, if set)
	(f_e_l_c_s: make_executable): new function
	(f_e_l_c_s: chase_symlinks): new function (no-op if !S_ISLNK)

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

	* libltdl/m4/libtool.m4 (old_archive_cmds): Remove
	old_deplibs.
	* tests/archive-in-archive.at: Check for archives as members
	of static archives. Currently XFAILS, above only eliminates
	one of the two static archives.
	* Makefile.am: Add test.
	Reported by Daniel Macks <dmacks@netspace.org>

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

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link),
	libltdl/m4/libtool.m4 [darwin]: Only use ${wl} in verstring
	with xlc.

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

	* tests/lt_dladvise.at:  Use the lib prefix throughout for
	better portability - testing whether modules build and load
	without that prefix is not the domain of this test.
	Also, only run the test of the global hint with the depend
	module on hosts that can compile a module without passing
	-no-undefined in link mode.

2007-05-10  Noah Misch  <noah@cs.caltech.edu>

	* tests/duplicate_deps.at: Make the XFAIL unconditional, but
	skip the test if the test link would succeed even without
	--preserve-dup-deps.

	* libltdl/config/general.m4sh (func_echo): Use $* instead of
	${1+"$@"}.

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

	* libltdl/libltdl/lt_error.h (LT_ERROR_LEN_MAX): Adjust, to fix
	buffer overflow in previous patch.

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

	* tests/lt_dladvise.at: Commit missing file from below.

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

	Without this patch, lt_dlopen always opens modules with symbol
	visibility set according to the underlying implementation.
	Here, we add lt_dlopenadvise() to allow callers to request,
	among other things, local or global symbol visibility from the
	underlying dlloader:

	* libltdl/ltdl.c (LT_DLRESIDENT_FLAG): Removed.
	(LT_DLIS_RESIDENT): Use public is_resident info field.
	(LT_DLIS_SYMLOCAL, LT_DLIS_SYMGLOBAL): New macros to test for
	module symbol visibility status.
	(tryall_dlopen): If vtable->module_open() was able to act on
	either is_symlocal or is_symglobal hints, store that in
	the handle flags.
	(lt_dlopenadvise): New function that works like lt_dlopen(),
	but accepts an advise type to determine whether to ask
	dlloaders to change default symbol visibility.
	(lt_dlopen, lt_dlopenext): Just call lt_dlopenadvise() with
	the correct parameters.
	(lt_dladvise_init, lt_dladvise_destroy): New functions to
	initialize and destroy an advise type hint.
	(lt_dladvise_ext, lt_dladvise_resident, lt_dladvise_local)
	(lt_dladvise_global): Set hints on an advise type.
	(openadvise): Factored out of lt_dlopenadvise.
	(has_library_ext): Factored out of lt_dlopenadvise.
	* libltdl/ltdl.h: Declare all of the above.
	(lt_dlinfo): New fields for advise hints.
	* libltdl/libltdl/lt_dlloader.h (lt_module_open): Add a new
	advise parameter.  Adjust all callers.
	(lt_dladvise): New opaque type for advise hints.
	* libltdl/libltdl/lt__private.h (lt__advise): Declare
	contents of opaque lt_dladvise type.
	* libltdl/libltdl/lt_error.h (CONFLICTING_FLAGS): New error
	for attempts to have local and global symbol visibility at the
	same time.
	* libltdl/loaders/dld_link.c, libltdl/loaders/dyld.c,
	libltdl/loaders/load_add_on.c, libltdl/loaders/loadlibrary.c,
	libltdl/loaders/preopen.c, libltdl/loaders/shl_load.c: Adjust.
	* libltdl/loaders/dlopen.c (RTLD_LOCAL, RTLD_GLOBAL): Try to
	define these symbols if the system has equivalents.
	(vmopen): If unable to act on a caller request to set symbol
	visibility, then unset the relevant hints in the advise type.
	* tests/lt_dladvise.at: New tests for the above.
	* doc/libtool.texi (Libltdl Interface): Updated.
	* NEWS: Updated.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): When adding
	new_inherited_linker_flags to compiler_flags, remember to
	translate .ltframework back.  Fixes bug introduced 2007-04-23.
	* THANKS: Update.
	* tests/inherited_flags.at: Amend test.
	Report by Christoph Egger.

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

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

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

	* Makefile.am (clean-ltmain-sh): Removed.
	(libtool, $(srcdir)/$(m4dir)/ltversion.m4)
	($(srcdir)/$(auxdir)/ltmain.sh): Updated to not depend on any
	phony rules.  Test `$?' for prerequisites that should always
	cause us to update the target.  Fixes rebuilding rules, at the
	cost of sometimes updating too much with non-GNU make.

2007-04-27  Noah Misch  <noah@cs.caltech.edu>

	* tests/ctor.at: New file.
	* Makefile.am (TESTSUITE_AT): Add tests/ctor.at.

2007-04-27  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* libltdl/libltdl/lt__glibc.h: Use !HAVE_WORKING_ARGZ
	instead of SYSTEM_ARGZ_IS_BROKEN.
	* libltdl/m4/argz.m4 (gl_FUNC_ARGZ): Ditto.  Also, minor
	stylistic improvements.
	Report by Bruno Haible <bruno@clisp.org>.

2007-04-25  Charles Wilson  <libtool@cwilson.fastmail.fm>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/argz_.h: ensure error_t definition is obtained
	in same mechanism system argz.h would have.
	* libltdl/libltdl/lt__glibc.h: also detect if
	SYSTEM_ARGZ_IS_BROKEN when determining whether to re#def
	argz* functions.
	* libltdl/m4/argz.m4 (gl_FUNC_ARGZ): add new test to check
	if $host's argz facilities are known bad.  Err on the side
	of caution if cross-compiling.

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

	* README, README.alpha: Document how to test an arbitrary
	installed libtool script.

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

	* tests/cmdline_wrap.at: Avoid `AT_CAPTURE_FILE' if it not
	defined (Autoconf < 2.60).
	* tests/shlibpath.at: Add `libtool' keyword.

	* tests/indirect_deps.at: New file, with tests to ensure
	`link_all_deplibs=no' does not break functionality.
	* Makefile.am: Adjust.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Fix accumulation
	of `inherited_linker_flags' entries from multiple deplibs, by
	adding $new_inherited_linker_flags only once, only in link pass.
	* tests/inherited_flags: Amend test to expose this.
	* NEWS: Adjust: kill one regression, but add note about the
	feature new in 1.9b.
	Report by Jeff Squyres and others.

2007-04-23  Charles Wilson  <libtool@cwilson.fastmail.fm>

	* libltdl/config/ltmain.m4sh (func_mode_link): move wrapper
	script generation from here...
	(func_emit_libtool_wrapper_script): to this new function, and
	write to stdout
	(func_mode_link): move cwrapper source code generation from
	here...
	(func_emit_libtool_cwrapperexe_source): to this new function,
	and write to stdout
	(func_mode_link): call the two new functions and redirect
	output to appropriate file.

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

	* libltdl/config/ltmain.m4sh (func_mode_link) <-no-install>
	[ darwin ]: Treat like `-no-fast-install', as we cannot
	hardcode.  Report by Simon Josefsson.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[ openbsd ]: Add an explicit check for shared libraries support.

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

	* Makefile.am ($(srcdir)/$(m4dir)/ltversion.m4): Fix quoting
	error.

2007-03-28  Gary V. Vaughan  <gary@gnu.org>

	* HACKING (Abstraction layers in libltdl): Rewritten somewhat
	for (hopefully) better clarity.

2007-03-26  Gary V. Vaughan  <gary@gnu.org>

	The stamp-vcl file rules caused non-gnu make programs to rerun
	parts of the configuration process on each invocation.  Instead
	of relying on a stamp file, we now compare version numbers of
	generated files with the ChangeLog timestamp manually in the
	affected make rules to decide whether regenerating is necessary:

	* Makefile.am (EXTRA_DIST): Remove stamp-vcl.
	(clean-ltmain-sh): Also remove users' obsolescent stamp-vcl.
	(rebuild): Keep some common code here for...
	(libtool, libltdl/m4/ltversion.m4, libltdl/config/ltmain.sh):
	Rewritten to work without reference to intermediate stamp-vcl
	file.
	* configure.ac (CONFIG_STATUS_DEPENDENCIES): Change from
	stamp-vcl to ChangeLog.
	* NEWS: Removed entry saying this fix is needed.

2007-03-25  Gary V. Vaughan  <gary@gnu.org>

	* HACKING (LGPL with Libtool exception clause): Typo.
	Reported by Tim Van Holder  <tim.van.holder@telenet.be>

	* HACKING (Licensing Rules): Explain the various license texts
	used for files distributed with Libtool, and update license text
	to match.
	* Makefile.am, Makefile.maint README, README.alpha, THANKS, TODO,
	bootstrap, clcommit.m4sh, configure.ac, libltdl/Makefile.inc,
	libltdl/README, libltdl/argz.c, libltdl/argz_.h,
	libltdl/config/general.m4sh, libltdl/config/getopt.m4sh,
	libltdl/config/ltmain.m4sh, libltdl/config/mailnotify.m4sh,
	libltdl/config/mkstamp, libltdl/configure.ac,
	libltdl/libltdl/lt__alloc.h, libltdl/libltdl/lt__dirent.h,
	libltdl/libltdl/lt__glibc.h, libltdl/libltdl/lt__private.h,
	libltdl/libltdl/lt__strl.h, libltdl/libltdl/lt_dlloader.h,
	libltdl/libltdl/lt_error.h, libltdl/libltdl/lt_system.h,
	libltdl/libltdl/slist.h, libltdl/loaders/dld_link.c,
	libltdl/loaders/dlopen.c, libltdl/loaders/dyld.c,
	libltdl/loaders/load_add_on.c, libltdl/loaders/loadlibrary.c,
	libltdl/loaders/preopen.c, libltdl/loaders/shl_load.c,
	libltdl/lt__alloc.c, libltdl/lt__dirent.c, libltdl/lt__strl.c,
	libltdl/lt_dlloader.c, libltdl/lt_error.c, libltdl/ltdl.c,
	libltdl/ltdl.h, libltdl/m4/argz.m4, libltdl/m4/libtool.m4,
	libltdl/m4/ltdl.m4, libltdl/m4/ltoptions.m4,
	libltdl/m4/ltsugar.m4, libltdl/m4/ltversion.in,
	libltdl/m4/ltversion.m4, libltdl/m4/lt~obsolete.m4,
	libltdl/slist.c, libtoolize.m4sh, tests/am-subdir.at,
	tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/cdemo-undef.test,
	tests/cdemo/Makefile.am, tests/cdemo/configure.ac,
	tests/cdemo/foo.c, tests/cdemo/foo.h, tests/cdemo/main.c,
	tests/cmdline_wrap.at, tests/convenience.at, tests/defs.m4sh,
	tests/demo-conf.test, tests/demo-deplibs.test,
	tests/demo-exec.test, tests/demo-hardcode.test,
	tests/demo-inst.test, tests/demo-make.test,
	tests/demo-nofast.test, tests/demo-noinst-link.test,
	tests/demo-nopic.test, tests/demo-pic.test,
	tests/demo-relink.test, tests/demo-shared.test,
	tests/demo-static.test, tests/demo-unst.test,
	tests/demo/Makefile.am, tests/demo/configure.ac,
	tests/demo/dlmain.c, tests/demo/foo.c,
	tests/demo/foo.h, tests/demo/hell1.c, tests/demo/hell2.c,
	tests/demo/hello.c, tests/demo/main.c,
	tests/depdemo-conf.test, tests/depdemo-exec.test,
	tests/depdemo-inst.test, tests/depdemo-make.test,
	tests/depdemo-nofast.test, tests/depdemo-relink.test,
	tests/depdemo-shared.test, tests/depdemo-static.test,
	tests/depdemo-unst.test, tests/depdemo/Makefile.am,
	tests/depdemo/configure.ac, tests/depdemo/l1/Makefile.am,
	tests/depdemo/l1/l1.c, tests/depdemo/l1/l1.h,
	tests/depdemo/l2/Makefile.am, tests/depdemo/l2/l2.c,
	tests/depdemo/l2/l2.h, tests/depdemo/l3/Makefile.am,
	tests/depdemo/l3/l3.c, tests/depdemo/l3/l3.h,
	tests/depdemo/l4/Makefile.am, tests/depdemo/l4/l4.c,
	tests/depdemo/l4/l4.h, tests/depdemo/main.c,
	tests/depdemo/sysdep.h, tests/deplibs-ident.at,
	tests/destdir.at, tests/duplicate_conv.at,
	tests/duplicate_deps.at, tests/duplicate_members.at,
	tests/early-libtool.at, tests/export.at,
	tests/f77demo-conf.test, tests/f77demo-exec.test,
	tests/f77demo-make.test, tests/f77demo-shared.test,
	tests/f77demo-static.test, tests/f77demo/Makefile.am,
	tests/f77demo/configure.ac, tests/f77demo/cprogram.c,
	tests/f77demo/foo.h, tests/f77demo/fooc.c,
	tests/fail.at, tests/fcdemo-conf.test, tests/fcdemo-exec.test,
	tests/fcdemo-make.test, tests/fcdemo-shared.test,
	tests/fcdemo-static.test, tests/fcdemo/Makefile.am,
	tests/fcdemo/configure.ac, tests/fcdemo/cprogram.c,
	tests/fcdemo/foo.h, tests/fcdemo/fooc.c,
	tests/inherited_flags.at, tests/libtoolize.at,
	tests/link-2.test, tests/link-order.at, tests/link-order2.at,
	tests/link.test, tests/lt_dlexit.at, tests/mdemo-conf.test,
	tests/mdemo-dryrun.test, tests/mdemo-exec.test,
	tests/mdemo-inst.test, tests/mdemo-make.test,
	tests/mdemo-shared.test, tests/mdemo-static.test,
	tests/mdemo-unst.test, tests/mdemo/Makefile.am,
	tests/mdemo/configure.ac, tests/mdemo/foo.h, tests/mdemo/foo1.c,
	tests/mdemo/foo2.c, tests/mdemo/main.c, tests/mdemo/mlib.c,
	tests/mdemo/sub.c, tests/mdemo2-conf.test,
	tests/mdemo2-exec.test, tests/mdemo2-make.test,
	tests/mdemo2/Makefile.am, tests/mdemo2/configure.ac,
	tests/mdemo2/main.c, tests/nomode.test, tests/nonrecursive.at,
	tests/objectlist.test, tests/old-m4-iface.at,
	tests/pdemo-conf.test, tests/pdemo-exec.test,
	tests/pdemo-inst.test, tests/pdemo-make.test,
	tests/pdemo/Makefile.am, tests/pdemo/configure.ac,
	tests/pdemo/foo.h, tests/pdemo/longer_file_name_dlmain.c,
	tests/pdemo/longer_file_name_foo.c,
	tests/pdemo/longer_file_name_foo2.c,
	tests/pdemo/longer_file_name_hell1.c,
	tests/pdemo/longer_file_name_hell2.c,
	tests/pdemo/longer_file_name_hello.c,
	tests/pdemo/longer_file_name_main.c, tests/quote.test,
	tests/recursive.at, tests/search-path.at, tests/sh.test,
	tests/shlibpath.at, tests/standalone.at, tests/static.at,
	tests/stresstest.at, tests/subproject.at, tests/suffix.test,
	tests/tagdemo-conf.test, tests/tagdemo-exec.test,
	tests/tagdemo-make.test, tests/tagdemo-shared.test,
	tests/tagdemo-static.test, tests/tagdemo-undef.test,
	tests/tagdemo/Makefile.am, tests/tagdemo/baz.cpp,
	tests/tagdemo/baz.h, tests/tagdemo/configure.ac,
	tests/tagdemo/conv.cpp, tests/tagdemo/conv.h,
	tests/tagdemo/foo.cpp, tests/tagdemo/foo.h,
	tests/tagdemo/main.cpp, tests/tagtrace.test,
	tests/template.at, tests/testsuite.at: Apply correct license
	text according to the new rules set out in HACKING.

2007-03-19  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.m4sh: Handle argz.m4 specially like ltdl.m4, so
	that it isn't copied unless libltdl is being used.  Copy other
	macro files according to their tagged serial numbers.
	* tests/libtoolize.at: Adjust.

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

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG, _LT_SYS_HIDDEN_LIBDEPS) [ interix ]: When
	matching for interix, accept version range [3-9] instead of 3.
	* NEWS: Update.
	Report by Martin Koeppe <mkoeppe@gmx.de>.

	* libltdl/m4/libtool.m4 (LT_PROG_GCJ): Avoid M4 expansion error
	that caused `dnl' to be merged to the previous word.
	* THANKS: Update.
	Report by Steve Ellcey.

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

	* libtoolize.m4sh: Replace literal tab chars in help comment
	with spaces to align columns in --help output.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Also apply the
	symbol filtering for w32 and the include_expsyms feature in the
	case of exceeded command line length.  Fixes test failure on
	MinGW.

	* tests/stresstest.at: For const data object imported from
	shared library, define appropriate macros to expand
	__declspec(dllimport) on w32.  Use two different main objects
	and pick the right one for the link flags we are about to test.
	Fixes test failure on MinGW.

	* tests/export.at: For const data object imported from shared
	library, define appropriate macros to expand
	__declspec(dllimport) on w32.  Fixes test failure on MinGW.

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

	* libtoolize.m4sh (func_check_macros): Display m4 quotes correctly
	in AC_CONFIG_MACRO_DIR diagnostics.

	* libltdl/config/general.m4sh (M4SH_VERBATIM): New macro to
	simplify m4sh quote quoting in blocks of raw shell code.
	* clcommit.m4sh, libtoolize.m4sh, libltdl/config/getopt.m4sh,
	libltdl/config/ltmain.m4sh, libltdl/config/mailnotify.m4sh,
	tests/defs.m4sh: Use it.
	* HACKING (Editing `.m4sh' Files): Mention M4SH_VERBATIM Macro.

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

	* tests/lt_dlexit.at: Allow test to pass on static-only systems
	and with disable-shared.

	* NEWS: Rewrite all news since 1.9f and put in categories,
	update.

	* libltdl/Makefile.inc: Fix the file description, so that it
	matches recursive and nonrecursive libltdl setup.
	* Makefile.am ($(srcdir)/libltdl/Makefile.am): Do not depend
	upon the exact text of the copyright header, just copy until
	the marker line.  Remove the marker lines in the output, and
	adjust the description for subpackage setup.

2007-02-26  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am ($(srcdir)/libltdl/Makefile.am): Fix regexp typo.

	* clcommit.m4sh: Look in the right directory for helper scripts.

2007-02-25  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am ($(srcdir)/libltdl/Makefile.am): Fixup regex to
	match Copyright notice change below.

	* HACKING, Makefile.am, Makefile.maint, bootstrap,
	libltdl/Makefile.am, libltdl/Makefile.inc, libltdl/m4/libtool.m4,
	ltmain.c, tests/cdemo/Makefile.am, tests/demo/Makefile.am,
	tests/depdemo/Makefile.am, tests/depdemo/l1/Makefile.am,
	tests/depdemo/l2/Makefile.am, tests/depdemo/l3/Makefile.am,
	tests/depdemo/l4/Makefile.am, tests/f77demo/Makefile.am,
	tests/fcdemo/Makefile.am, tests/libtoolize.at,
	tests/mdemo/Makefile.am, tests/mdemo2/Makefile.am,
	tests/pdemo/Makefile.am, tests/tagdemo/Makefile.am: Update
	Copyright notice text to include URL for canonical GPL document.

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

	* tests/static.at: Forgot to fix PATH for the first
	func_test_exec invocation.  So factor out into new functions
	func_fix_path and func_restore_path and use those.

	* README: Document the need for GNU make to build Libtool.
	Point the user to the doc/notes.txt file.  In the examples, use
	`gmake' throughout to make it more obvious.  Explain simpler way
	to run both testsuites and either one.  Referring to individual
	tests needs the `tests/' prefix.
	* README.alpha: Likewise.
	* doc/notes.texi: Likewise, document need for GNU make.
	Comment out the FreeBSD make issue for now.

	* tests/static.at: Larger rewrite to make work on w32: Use three
	different prefixes instead of three libdirs, so the moving of
	the DLLs works as expected.  Adjust all code.  Since now
	$libdirI/../bin is distinct from the directory of the installed
	program, take care than on w32 PATH contains the needed bindirs,
	in appropriate order.
	Report by Charles Wilson.

	* Makefile.am (INSTALLCHECK_ENVIRONMENT): Point LTDLINCL and
	LIBLTDL to installed libltdl, so that it is being used by
	the lt_dlexit test.

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

	* doc/libtool.texi (Install mode, libtool script contents):
	Describe current and system-specific DESTDIR limitations.
	* tests/destdir.at: XFAIL if `fast_install' is no.

	* doc/libtool.texi (LT_INIT): Fix typo.

	* doc/libtool.texi (Libtool test suite): Mention the new
	testsuite.  Point to README rather than INSTALL for testing
	instructions.
	(Test descriptions): Fix more file names.  Also mention
	cdemo-undef.test, mdemo2-conf.test, mdemo2-exec.test,
	mdemo2-make.test, objectlist.test, pdemo-conf.test,
	pdemo-exec.test, pdemo-inst.test, pdemo-make.test,
	tagdemo-conf.test, tagdemo-exec.test, tagdemo-make.test,
	tagdemo-static.test, tagdemo-shared.test, tagdemo-undef.test,
	f77demo-conf.test, f77demo-exec.test, f77demo-make.test,
	f77demo-static.test, f77demo-shared.test, fcdemo-conf.test,
	fcdemo-exec.test, fcdemo-make.test, fcdemo-static.test,
	fcdemo-shared.test.  Describe what they do.
	(When tests fail, Troubleshooting): Mention how to pass options
	to the new test suite.
	* tests/tagdemo/README: Fix description.

	* bootstrap: Also set GREP, FGREP, EGREP, LN_S, when creating a
	preliminary ltmain.sh script.

	* doc/libtool.texi (Test descriptions): Track the grand test
	suite renaming from 2003-10-14 in the tests documentation.
	assign.test is merged into sh.test.  Fix description of sh.test.
	* tests/sh.test: Likewise.

	* doc/libtool.texi (LT_INIT): Fix wording of intro a bit.
	<shared, static>: Also describe these default LT_INIT options.
	<AC_LIBTOOL_DLOPEN, AC_LIBTOOL_WIN32_DLL>
	<AC_DISABLE_FAST_INSTALL>: Mention deprecated macro names,
	including the respective LT_INIT replacement.
	<AC_DISABLE_SHARED, AC_DISABLE_STATIC, AC_ENABLE_SHARED>
	<AC_ENABLE_STATIC>: Document, un-deprecate.  Suggest the
	respective LT_INIT replacement.
	<AM_DISABLE_SHARED, AM_DISABLE_STATIC, AM_ENABLE_SHARED>
	<AM_ENABLE_STATIC>: Document deprecated aliases.
	(Distributing libltdl) <AC_WITH_LTDL, AC_LIBLTDL_INSTALLABLE>
	<AC_LIBLTDL_CONVENIENCE>: Document deprecated aliases.
	* libltdl/m4/ltoptions.m4 (AM_ENABLE_SHARED, AM_DISABLE_SHARED)
	(AM_ENABLE_STATIC, AM_DISABLE_STATIC): Make these AU_ALIASes of
	the respective AC_* macros, so we do not recommend LT_INIT(*) in
	this case.
	(AC_ENABLE_SHARED, AC_DISABLE_SHARED, AC_ENABLE_STATIC)
	(AC_DISABLE_STATIC): Un-deprecate these.  Remove now-superfluous
	aclocal-1.4 backwards compatibility comments.

	* tests/link-order2.at: Rewrite completely.  Do not use `sin'
	from the math library, there are too many problems with this.
	Instead, use a self-written library, install it without the
	Libtool library file, to emulate a native library in a system
	directory, and adjust $shlibpat_var.  Try overriding its symbol.
	Further, also try an installed `wrong' binary.
	Avoid failing test bits on AIX without runtimelinking and on
	Darwin in some cases, SKIP at the end in this case.
	Analysis by Peter O'Gorman.

	* doc/notes.texi: Mention MACOSX_DEPLOYMENT_TARGET issue.
	* tests/template.at: Only skip those tests failing on Darwin
	if `-flat_namespace' is used by libtool.  In that case, SKIP
	at the end.  Analysis by Peter O'Gorman.

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

	Fix -export-symbols and -export-symbols-regex for links that
	exceed the command line length and use convenience archives.

	* libltdl/config/ltmain.m4sh (func_mode_link): Avoid grepping a
	nonexistent file if using reloadable objects.  Do not create a
	linker script nor a linker input file if no objects are passed.
	Apply export_symbols_regex in case the command line length is
	exceeded.
	Report by Bob Friesenhahn.

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
	<compiler_needs_object>: New tag variable.  Default to `no'.
	(_LT_LINKER_SHLIBS) [ linux ]: Set it to yes for Sun C 5.9.
	(_LT_LANG_CXX_CONFIG): Also default it to `no'.
	[ linux ]: Set it to `yes' for Sun C++ 5.9.
	* libltdl/config/ltmain.m4sh (func_mode_link): If we link
	no objects but only convenience archives into a library,
	force expansion if `compiler_needs_object' is yes.
	For creating a linker input filelist due to long cmdline,
	extract the first object if `compiler_needs_object' is yes.
	* doc/libtool.texi (libtool script contents): Document it.
	Fixes test failures of Sun compilers on GNU/Linux.
	Report by Terry D. Dontje.

	* libltdl/config/ltmain.m4sh (func_mode_link): Avoid setting
	`$libobjs' to a single space; set it to empty in that case.

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

	* libltdl/config/ltmain.m4sh (func_generate_dlsyms) [ osf5 ]:
	On Tru64 5.1, const relocations do not work well.  Omit the
	const here.  Fixes failure of demo-make after demo-shared with
	link editor error `seg_info_ptr: Couldnt find a seg type 2'.

	* Makefile.am (doc_libtool_TEXINFOS): Renamed from...
	(libtool_TEXINFOS): ...this, to fix dependencies.  Omit from
	EXTRA_DIST.
	(check-local): Also depend upon $(bin_SCRIPTS).

2007-02-23  Ralf Menzel  <menzel@ls6.cs.uni-dortmund.de>  (tiny change)

	* libltdl/config/general.m4sh (sed_double_backslash): Fix
	hacky sed script to avoid limitations but retain portability to
	Solaris /bin/sed.  Remove old obsolete cruft.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Fix the check for
	convenience archives when warning about linking against static
	libraries: test against $deplib rather than empty $lib.

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

	* libltdl/m4/ltdl.m4 (LT_WITH_LTDL): Fix detection of new enough
	libltdl by actually checking for the declaration of
	lt_dlinterface_register in ltdl.h with AC_CHECK_DECL.
	Remove redundant configure output line.

	* tests/template.at: Reformat, add M4 quoting.  Use $LDFLAGS
	consistently for link mode.

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

	* tests/static.at: Use the right names for the broken libs.

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

	* tests/deplibs-ident.at [aix, hppa*-*-hpux*, interix, openbsd]:
	Do not XFAIL, on these systems we happen to pass.
	* tests/duplicate_deps.at [aix]: Likewise.

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux |
	k*bsd*-gnu ]: Fix eval quoting in the DT_RUNPATH test.

	* HACKING: Update.

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

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [ osf4, osf5 ]
	<archive_expsym_cmds>: Use `${wl}-input' not `-input', for
	cc.  Could use `-input_to_ld'.
	(_LT_LANG_CXX_CONFIG) [ osf4, osf5 ] <archive_expsym_cmds>:
	Use `${wl}' instead of `-Wl,', for consistency.

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

	Fix spurious testsuite failures on AIX due on NFS mounts due to
	shared library images that cannot be removed without `slibclean'
	which needs superuser privileges.

	* tests/testsuite.at (PREPARE_TESTS): Define $mkdir_p globally.
	(LT_AT_MVDIR): New macro to emulate `mv dir dest'.
	* tests/destdir.at: Use LT_AT_MVDIR.
	* tests/shlibpath.at: Likewise.
	* tests/static.at: Likewise.

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

	* tests/export.at: Exporting is not fully functional with
	-retain-symbols-file.  Do not test for failure to link `broken'
	in this case.  At the end of the test, SKIP if we are not fully
	functional.

	* tests/lt_dlexit.at: Add casts and `extern "C"' to let the test
	pass with a C++ compiler.

	* libltdl/config/ltmain.m4sh: Remove duplicate marker for
	generated shell functions.

	* tests/testsuite.at (LT_AT_NOINST_EXEC_CHECK): New macro, like
	LT_AT_EXEC_CHECK but uses `$LIBTOOL --mode=execute' and allows
	to pass `-dlopen MODULE' arguments.
	* tests/lt_dlexit.at: Use it.  Also, do not test `-dlpreopen',
	that currently needs library names to begin with `lib'.

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

	* tests/export.at: New test: expose -export-symbols failure
	when the input consists solely of convenience archives, and
	failure to not export all symbols when the command line length
	is exceeded.
	* Makefile.am: Adjust.

	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): New substituted
	function `func_lo2o', saving two fork&exec with XSI shells.
	* libltdl/config/ltmain.m4sh (func_mode_compile)
	(func_mode_install, func_mode_link): Use it for rewrites of
	single files.

	* libltdl/m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): New function
	func_opt_split, for XSI and portable shell.
	* libltdl/config/ltmain.m4sh: Move the insertion point for the
	configure-generated shell functions to before the first option
	parsing loop.  Rewrite the separation of the long options to use
	func_opt_split.

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

	Eliminate roughly a third of the script execution time overhead
	for all modes except for link/relink and uninstall/clean.

	* libltdl/m4/libtool.m4 (_LT_CONFIG): Remove unused `TEST SUITE
	MARKER', obsolete since 2005-04-17.
	* libltdl/config/ltmain.m4sh: Likewise, several instances.
	(Main): Tear apart, moving individual bits up as early in the
	script as possible, to help the shell to avoid parsing the rest.

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

	* doc/libtool.texi: Update copyright years.

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

	* libltdl/config/general.m4sh (sed_double_backslash): Replace
	POSIX sed script with a hack that treats up to 10 backslashes
	in the input correctly and is portable to Solaris /bin/sed.

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

	* tests/testsuite.at (LT_AT_TAG): Skip also if the compiler
	variable is set to `no', not only if it is empty.

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

	* tests/lt_dlexit.at: Do not compile main object with libtool.

	* tests/cmdline_wrap.at: Pass $abs_top_srcdir and $abs_builddir
	to inner testsuite.

	* Makefile.am (TESTSUITE_AT): Move destdir.at after
	search-path.at so the banners fit better.

	* tests/convenience.at: Use $CPPFLAGS for compilation.
	* tests/deplibs-ident.at: Likewise.
	* tests/duplicate_members.at: Likewise.
	* tests/inherited_flags.at: Likewise.
	* tests/link-order.at: Likewise.
	* tests/stresstest.at: Likewise.
	* tests/early-libtool.at: Likewise.  Do not quote $CC.

	* libltdl/ltdl.c (lt_dlexit): Add casts to fix compilation with
	C++ compiler again.

	* tests/destdir.at: Add `libtool' keyword to tests.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_BOILERPLATE)
	(_LT_LINKER_BOILERPLATE, _LT_SYS_MODULE_PATH_AIX)
	(_LT_COMPILER_C_O): Require _LT_DECL_SED.
	* THANKS: Update.
	Report by Maciej W. Rozycki.

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

	* tests/lt_dlexit.at: Use $abs_top_srcdir, not $top_srcdir,
	in the new testsuite.

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

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

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

	* NEWS: Update for Cygwin changes.

2007-01-28  Brian W. Barrett <bbarrett@lanl.gov>

	* libltdl/config/ltmain.m4sh [darwin]: Use otool64 if otool fails.

2007-01-28  Dave Brolley  <brolley@redhat.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (lt_dlexit): Make sure that 'cur' is not NULL
	before checking that it is still in the list.
	* tests/lt_dlexit.at: New test.
	* Makefile.am (TESTSUITE_AT): Adjust.
	(check-local): Also depend on libltdl/libltdlc.la.
	(check-recursive): Removed, unnecessary use of Automake
	internals.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Pass through
	`-p' and `-fprofile-*' for GCC.

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

	* libltdl/libltdl/lt_system.h: Adjust copyright years.

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

	* libltdl/libltdl/lt__private.h (LT_GLOBAL_DATA) [__CYGWIN__]:
	Also define on Cygwin.
	* libltdl/libltdl/lt_system.h (LT_SCOPE) [__CYGWIN__]: Likewise.

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

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

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

	Introduce a new test keyword `recursive' for tests that create a
	modified `libtool' script and run the suite on this script.  All
	tests with the keyword `libtool' are (by definition) suitable to
	be used here.

	* tests/cmdline_wrap.at: New test.
	* Makefile.am: Adjust.
	* tests/testsuite.at (LT_ESCAPE): New macro: clone of Autoconf
	AS_ESCAPE that does not escape `$'.
	(LT_AT_CHECK): New macro: print a command-to-be-run while
	expanding parameters but nothing else.
	* tests/stresstest.at: Use LT_AT_CHECK.  Create some files to
	expose erroneous globbing errors with `-export-symbols-regex',
	similar to those reported by Charles Wilson.  Use `eval' and
	adjusted quoting so the expansion doesn't already happen in the
	testsuite commands.
	* HACKING: Update.

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

	Assume C89 for included headers, and throughout the testsuite.

	* NEWS: Update.
	* libltdl/argz.c: Do not include strings.h nor memory.h, include
	string.h unconditionally.
	Patch by Simon Josefsson <jas@extundo.com>.
	* libltdl/libltdl/lt__private.h: Likewise.
	* libltdl/m4/ltdl.m4 (LTDL_INIT): Do not check for string.h,
	strings.h, memory.h.
	* tests/cdemo/configure.ac: Assume presence of math.h.
	* tests/cdemo/foo.c: Likewise.
	* tests/demo/configure.ac: Likewise for math.h, string.h.
	Assume 'const'.  Drop obsolete AC_EXEEXT.
	* tests/demo/dlmain.c: Likewise.
	* tests/demo/foo.c: Likewise.
	* tests/depdemo/configure.ac: Likewise.
	* tests/depdemo/l4/l4.c: Likewise.
	* tests/f77demo/configure.ac: Likewise.  Also drop obsolete
	AC_OBJEXT.
	* tests/fcdemo/configure.ac: Likewise.
	* tests/mdemo/configure.ac: Likewise.
	* tests/mdemo/foo1.c: Likewise.
	* tests/mdemo/foo2.c: Likewise.
	* tests/mdemo2/configure.ac: Likewise.
	* tests/pdemo/configure.ac: Likewise.
	* tests/pdemo/longer_file_name_dlmain.c:
	* tests/pdemo/longer_file_name_foo.c: Likewise.
	* tests/pdemo/longer_file_name_foo2.c: Likewise.
	* tests/tagdemo/configure.ac: Likewise.
	* tests/tagdemo/foo.cpp: Likewise.

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

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

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

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

	* libltdl/config/ltmain.m4sh (func_mode_compile): Accept
	suffixes matching `[fF][09].', for Fortran.
	* tests/suffix.test: Also test F90, F95, f03, F03.

	* Makefile.am (EXTRA_DIST): Add ChangeLog.2006.
	* ChangeLog.2006: New, rotated, from...
	* ChangeLog: ...here.

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

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

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

	* tests/link-order2.at: Define our override `sin' function with
	C binding even if $CC is a C++ compiler.  Skip the test with g++
	as its command line driver reorders `-lm'.
	* tests/search-path.at: Declare `inflate' with C binding.
	* tests/stresstest.at: Avoid unused variable warnings.

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

	* tests/link-order2.at: Simplify logic to be a bit more self
	documenting.  Suggested by Gary V. Vaughan.

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

	* tests/link-order2.at: Add missing $bindir setting.  Prevent
	compiler optimization of sqrt call.  Fix logic inversion and
	add some comments about this stunt.  Add a test with reversed
	library link order that should fail if the system has a libm.
	Report by Patrick Welche.

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

	Assume presence of a config header in all files, to provoke
	test failures on all systems.
	* libltdl/lt__alloc.c: Likewise.
	* libltdl/libltdl/lt__dirent.h: Likewise.
	* libltdl/libltdl/lt__glibc.h: Likewise.
	* libltdl/libltdl/lt__private.h: Likewise.
	* libltdl/libltdl/lt__strl.h: Likewise.
	* tests/recursive.at: Use AC_CONFIG_HEADERS.
	* tests/nonrecursive.at: Likewise.  Invoke autoheader.
	* HACKING: Adjust.
	Report by Patrick Welche.

2006-10-24  Paul Eggert  <eggert@cs.ucla.edu>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Distributing libltdl): In recursive and
	nonrecursive mode, a config header is now required.
	* libltdl/argz.c: Remove check for HAVE_CONFIG_H, to conform
	to gnulib's policy of including config.h unconditionally.

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

	* tests/link-order2.at: New test to show one case where ordering
	of depdepls on the command line matters.
	* Makefile.am: Adjust.

	* tests/tagtrace.test: SKIP if `autoconf --trace' exits 63 or 1,
	for various possible (valid) error cases.  Also output stderr,
	to help with analysis.

	* NEWS: Account for recent multilib fix.
	* tests/search-path.at: New test, to provide at least a weak
	test.
	* Makefile.am: Update.

	* libtoolize.m4sh (func_fixup_Makefile): Fix missing
	substitution for nonrecursive mode.  Remove otherwise-empty
	continuation lines in the output file.
	Report by Bob Friesenhahn.

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

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

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

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

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

	* libltdl/ltdl.c (load_deplibs): Avoid memory leak on failure.
	(unload_deplibs): Avoid memory leak on cleanup.

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

	* libltdl/m4/libtool.m4 (func_mode_compile): Accept files with
	extension `.f9?'.
	* tests/suffix.test: Test `f95'.

	* libltdl/config/ltmain.m4sh (func_mode_uninstall): Use
	`func_source' consistently.

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]
	[k*bsd*-gnu ]: Fix brown paper bag: save and restore `libdir'.

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

	* tests/duplicate_deps.at: New file.  Test circular depending
	convenience archives (currently failing).
	* Makefile.am: Update.
	Report by Stefan Traby <stefan@hello-penguin.com>.

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[ openbsd ]: Set `hardcode_direct_absolute', to prefer rpath
	over putting absolute file names in NEEDED entries.
	* NEWS: Update.
	Reported by Jake Meuser and others.

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]
	[ k*bsd*-gnu ]: Test if ld sets DT_RUNPATH; in that case, set
	shlib_overrides_runpath to `yes'.  Fixes test failure of new
	test on Gentoo GNU/Linux.

	* tests/shlibpath.at: New file, with...
	(shlibpath_overrides_runpath): ...new test.
	* Makefile.am: Update.

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

	* tests/destdir.at: New file.
	* Makefile.am: Adjust.

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

	* tests/inherited_flags.at: Drop `${parameter}' for `$parameter'
	where appropriate, for improved `testsuite -x' output.

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

	* libltdl/ltdl.c: Move LT__UNUSED before parameter name, for g++
	3.2.3 (on MinGW).
	* libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
	libltdl/loaders/load_add_on.c, libltdl/loaders/loadlibrary.c,
	libltdl/loaders/preopen.c, libltdl/loaders/shl_load.c: Likewise.

2006-09-04  George Bosilca <bosilca@cs.utk.edu>
	and Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	Make libltdl work when compiled with a C++ compiler.

	* libltdl/lt__alloc.c, libltdl/lt_dlloader.c, libltdl/ltdl.c,
	libltdl/slist.c, libltdl/libltdl/lt__alloc.h,
	libltdl/libltdl/lt_error.h, libltdl/libltdl/slist.h,
	libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
	libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
	libltdl/loaders/loadlibrary.c, libltdl/loaders/preopen.c,
	libltdl/loaders/shl_load.c, tests/stresstest.at,
	tests/testsuite.at, tests/f77demo/foo.h, tests/fcdemo/foo.h,
	tests/mdemo/foo.h, tests/mdemo/foo1.c, tests/mdemo/foo2.c,
	tests/mdemo/main.c: Allow sources to be compiled by a C++
	compiler: Cast appropriately, add C linkage for `get_vtable'
	functions, do not use C++ keyword `delete'.

	* libltdl/config/ltmain.m4sh (func_mode_link): In the dlsym
	file, define a type for the symbol list, and declare the list
	`extern', so that it is extern even if compiled by a C++
	compiler.  The type definition helps avoid a compiler warning
	against anonymous extern struct.
	* libltdl/libltdl/lt_system.h: Add `extern' to `LT_SCOPE' for
	the same reason.

	* libltdl/argz_.h: It's __cplusplus, not _cplusplus.
	* libltdl/libltdl/slist.h: Likewise.

	* libltdl/libltdl/lt__glibc.h: Wrap included argz.h in
	`extern "C"', for broken headers on Cygwin.

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

	* tests/testsuite.at: Test `unset' on a set variable; older
	bash versions return 1 if the variable was not set.

	* tests/am-subdir.at, tests/early-libtool.at: Fix the LF vs.
	CRLF related failures on MinGW by grepping for good output
	instead of using AT_CHECK's `expout'.

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

	Drop K&R support from testsuite in favor of C89.

	* tests/duplicate_members.at: provide declarations of used
	functions.
	* tests/testsuite.at: Drop unneeded arguments.
	* tests/cdemo/main.c: Assume C89.
	* tests/demo/dlmain.c: Likewise.
	* tests/demo/main.c: Likewise.
	* tests/depdemo/main.c: Likewise.
	* tests/depdemo/l1/l1.c: Likewise.
	* tests/depdemo/l2/l2.c: Likewise.
	* tests/depdemo/l3/l3.c: Likewise.
	* tests/depdemo/l4/l4.c: Likewise.
	* tests/f77demo/cprogram.c: Likewise.
	* tests/fcdemo/cprogram.c: Likewise.
	* tests/mdemo/mlib.c: Likewise.
	* tests/mdemo2/main.c: Likewise.
	* tests/pdemo/longer_file_name_dlmain.c: Likewise.
	* tests/pdemo/longer_file_name_main.c: Likewise.
	* tests/fcdemo/fooc.c: Reformat.
	* tests/mdemo/sub.c: Likewise.

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

	* tests/mdemo/main.c: Fix bogus line in last patch.

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

	Avoid mixing functions and data pointers in callback functions.

	* libltdl/ltdl.c (file_worker_func): New type.
	(lt_dlforeachfile): Instead of passing a function pointer as a
	data pointer, pass a pointer to a file_worker_func pointer.
	(foreach_callback_func): Adjust.
	* tests/mdemo/main.c: Assume C89. Exercise lt_dlforeachfile.
	(callback, try_iterate, my_dirname): New functions.
	* tests/mdemo-exec.test: Check for its output.

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

	* libltdl/libltdl/lt__private.h (__attribute__, LT__UNUSED):
	New macros.
	* libltdl/loaders/dld_link.c: Use LT__UNUSED where
	appropriate.
	* libltdl/loaders/dlopen.c, libltdl/loaders/load_add_on.c,
	libltdl/loaders/loadlibrary.c, libltdl/loaders/preopen.c,
	libltdl/loaders/shl_load.c: Likewise.
	* libltdl/ltdl.c: Likewise.
	(find_file_callback): Fix declaration names to match definition.
	(load_deplibs) [!LTDL_DLOPEN_DEPLIBS]: Use separate definition
	for less preprocessor clutter.

	* Makefile.am (check-local, installcheck-local): Use
	`TESTSUITEFLAGS' rather than `TESTSUITE_FLAGS', like Autoconf.
	* HACKING, README, README.alpha: All uses changed.

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

	* libltdl/argz.c: Use `#ifdef HAVE_CONFIG_H', to facilitate code
	sharing with gnulib.  Report by Eric Blake.
	* libltdl/lt__alloc.c, libltdl/libltdl/lt__dirent.h,
	libltdl/libltdl/lt__glibc.h, libltdl/libltdl/lt__private.h,
	libltdl/libltdl/lt__strl.h: Likewise.
	* HACKING: Update.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Pass through
	`--coverage' and `-pg', for GCC.  Report by Rainer Keller
	<keller@hlrs.de> and Tor Lillqvist <tml@iki.fi>.

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG) [k*bsd*-gnu]: kfreebsd*-gnu and
	knetbsd*-gnu behave like linux-gnu.
	* libltdl/m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): Likewise.
	* libltdl/m4/libtool.m4 (_LT_ENABLE_LOCK)
	[x86_64-*kfreebsd*-gnu]: Add 32/64 bit bi-arch support.
	* NEWS: Update.

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

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): In GNU ld script,
	do not quote object file names, for Intel icc 9.0 IPO link.

2006-08-22  Eric Blake  <ebb9@byu.net>

	* libltdl/m4/ltdl.m4 (LTDL_INIT): Avoid macros marked obsolete in
	latest autoconf.
	* libltdl/m4/libtool.m4 (_lt_cv_sys_global_symbol_pipe): Work in
	spite of -Wmissing-prototypes.
	* libltdl/libltdl/lt__dirent.h: Rewrite to accomodate loss of
	AC_HEADER_DIRENT.

	* libltdl/m4/libtool.m4: Avoid space-tab.

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

	* libltdl/config/ltmain.m4sh (func_mode_execute): Also search
	the directory above `$objdir' for the argument of "-dlopen", as
	mentioned in the error message.

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

	* libltdl/m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Fix issues
	with previous patch. for ... do' line is superflous. Need
	_LT_TAGVAR not _LT_AC_TAGVAR, should be for both linux and
	solaris with Sun compiler.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD, LT_OUTPUT):
	s/recognise/recognize/.

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

	* libltdl/ltdl.c (loader_init_callback) [HAVE_LIBDLLOADER]:
	Protect definition to avoid compiler warnings about unused
	function.

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

	* libltdl/m4/ltdl.m4 (LT_LIB_DLLOAD): Search for dlopen without
	depending on -ldl, required by cygwin 1.5.20.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_BOILERPLATE)
	( _LT_LINKER_BOILERPLATE): Rewrite to not use unchecked
	`printf', for old systems like SunOS 4.1.
	(_LT_COMPILER_OPTION, _LT_LINKER_OPTION)
	(_LT_COMPILER_C_O, _LT_LINKER_SHLIBS): Likewise.
	(_LT_LANG_C_CONFIG): Adjust: use literal newlines in
	`lt_simple_compile_test_code' and `lt_simple_link_test_code'.
	(_LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG)
	(_LT_LANG_GCJ_CONFIG, _LT_LANG_RC_CONFIG): Likewise.
	Bug report by Bruce Becker and Mark Andrews.

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

	Fix the bugs where libtoolize needs to use `dir/file' instead of
	`./dir/file', where ltdldir is `.', so that libtoolize correctly
	checks for (and suggests) `config' and `m4' instead of
	`./config' and `./m4' as auxiliary resp. macro directories.
	The change is necessary for unambiguous naming, the chosen way
	plays better with non-GNU make in VPATH builds.

	* libtoolize.m4sh (ltdlprefix): New variable, to use as prefix
	instead of `$ltdldir/'.
	(func_check_macros): Use it.  Bug report by Eric Blake.

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

	Fix several libtoolize-related bugs:
	- Do not symlink aclocal.m4, to work around a bug in aclocal
	overwriting the linked-to file instead of removing the symlink.
	- Have `libtoolize --copy' cause current time stamps, so that
	dependents will be rebuilt; for this, install files in order.
	- Fix list of distribution files for (non)recursive libltdl.
	- Fix some failure cases.

	* libtoolize.m4sh (func_copy_cb):
	If `$opt_link', still copy `aclocal.m4', so a subsequent
	`aclocal' will not overwrite the symlink target.
	In `--copy' mode, do `cp -p' and `touch' for each file, so
	timestamps are updated but permissions preserved.
	(main): Reorder installing of files to match logical order
	and timestamp requirements.
	(func_fixup_Makefile_inc): Renamed to
	(func_fixup_Makefile): this.  Add sed scriptlet to remove
	non-existent files from EXTRA_DIST, for either nonrecursive
	or recursive mode.
	(main): call it to mangle also in recursive mode.
	* tests/libtoolize.at (expout): Adjusted.
	* tests/testsuite.at (tst_dist): Default to `dist'.

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

	Fix libltdl to always have all generated files up to date.

	* Makefile.am (all-local): Depend on all generated files in
	libltdl, namely...
	(libltdl/aclocal.m4, libltdl/configure, libltdl/config-h.in):
	...these.  List explicitly, including dependencies and
	rebuilding rules, using...
	(sub_aclocal_m4_deps, sub_configure_deps): ...these new
	variables.
	Report by Dan Lacher <Dan.Lacher@Sun.Com>.

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

	* Makefile.am (install-data-local): Do not use $(INSTALL_DATA)
	from another directory: it may use a relative path to
	`install-sh'.
	Bug report by Dan Lacher <Daniel.Lacher@Sun.COM>.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Honor `-threads',
	similar to `-mt'.
	Report by Eric Paire <eric.paire@st.com>.

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

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

2006-05-24  Albert Chin  <china@thewrittenword.com>

	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG)
	[ aix4*, aix5*, hpux10*, hpux11* ]: Set hardcode_direct_absolute
	for CXX tag too!

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

	* libltdl/config/ltmain.m4sh (func_mode_link, shell wrapper):
	Do not put `"$@"' in argument to $ECHO.

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

	* libltdl/m4/libtool.m4: Bump serial, necessary because of
	_LT_CHECK_SHELL_FEATURES changes.

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

	* tests/early-libtool.at: Pass $CPPFLAGS and $CFLAGS to
	compiler when compiling for extra flags that might be
	needed for ANSI-compliance, 64-bit, etc. The environment
	we compile with should match the environment libtool was
	compiled with.

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

	Fix mode=compile time regression of CVS HEAD over branch-1-5.

	* libltdl/m4/libtool.m4 (_LT_CHECK_XSI_SHELL): Rename to...
	(_LT_CHECK_SHELL_FEATURES): ...this.
	(_LT_SETUP): Adjust caller.
	(_LT_CHECK_XSI_SHELL): New libtool variables `lt_unset',
	`SP2NL', `NL2SP', to contain results from tests for unset,
	taken from AS_BOURNE_COMPATIBLE, and ASCII vs EBCDIC, taken...
	* libltdl/config/general.m4sh: ...from here, and used...
	* libltdl/config/ltmain.m4sh: ...here everywhere now.
	* (AS_SHELL_SANITIZE): Replace by faster, actually necessary
	part of its expansion, taken from current Autoconf CVS.  Do not
	save and set all locale variables any more, but only LANG,
	LC_ALL, LC_CTYPE, LC_COLLATE, LC_MESSAGES.
	(func_mode_execute): Adjust.
	* libltdl/m4/libtool.m4 (_LT_CONFIG): No need to unset CDPATH
	here any more.
	* libtoolize.m4sh: Compute `SP2NL' and `NL2SP' here, too.

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

	* libltdl/config/ltmain.m4sh, libltdl/m4/libtool.m4
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG,
	_LT_LANG_FC_CONFIG), tests/link-order.at
	[ aix4*, aix5*, hpux10*, hpux11* ]: rename
	hardcode_direct_static to hardcode_direct_absolute.
	* doc/libtool.texi (libtool script contents): Adjust.

	* libltdl/ltdl.c (lt_dlhandle_fetch): Arguments to
	lt_dlhandle_iterate were in the wrong order.

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_OPTION): Require
	_LT_DECL_SED.
	(_LT_CMD_GLOBAL_SYMBOLS, _LT_LINKER_SHLIBS): Likewise.
	* libltdl/m4/ltdl.m4 (LTDL_INIT): Likewise.
	(_LT_DECL_SED): Set $Xsed here, using $SED.  Moved from...
	(_LT_SETUP): ...here.
	Report by Eric Blake.

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

	* doc/libtool.texi (libtool script contents): Document new
	hardcode_direct_static variable.

	* tests/link-order.at: Be careful about usage of shrext_cmds.

	* libltdl/m4/libtool.m4 (LT_AC_PROG_SED):  Declarations for
	compatibility with old versions of libtool, and old versions
	of aclocal.

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

	* libltdl/config/ltmain.m4sh, libltdl/m4/libtool.m4
	(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG,
	_LT_LANG_FC_CONFIG) [ aix4*, aix5*, hpux10*, hpux11* ]:
	Introduce a new variable, hardcode_direct_static, which
	would ignore hardcode_direct=yes if the result would create a
	static library dependency. Static library dependencies are
	immune to $shlibpath_var.
	* tests/link-order.at: Take hardcode_direct and
	hardcode_direct_static into consideration when testing
	link order.

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

	Eliminate quadratic scaling in argument parsing loop, for
	shells that understand `var+=value', such as Bash-3.1, or Zsh.

	* libltdl/m4/libtool.m4 (_LT_CHECK_XSI_SHELL): Test whether
	the shell understands `var+=value'.
	(_LT_PROG_XSI_SHELLFNS): Define `func_append' based on this.
	* config/ltmain.m4sh (func_mode_link): Use `func_append' for
	compile_command, finalize_command, libtool_args, libobjs,
	non_pic_objects.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG, _LT_SYS_HIDDEN_LIBDEPS) [ linux ]:
	Add support for Sun C 5.9, Sun C++ 5.9, and Sun Fortran 8.3 on
	GNU/Linux.
	* NEWS: Update.

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

	* Makefile.am (check-local): Move `$(TESTS_ENVIRONMENT)' and
	`$(BUILDCHECK_ENVIRONMENT)' to be arguments of `testsuite', so
	that reruns will remember it; set enviroment variable
	`CONFIG_SHELL' so the suite will know which shell it was started
	with.
	(installcheck-local): Likewise, for `$(TESTS_ENVIRONMENT)' and
	`$(INSTALLCHECK_ENVIRONMENT)'.
	* tests/testsuite.at (LT_AT_TAG): Do not set the compiler
	variable here.

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[ aix ]: $hardcode_direct is set twice.

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

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

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

	* tests/fail.at: Use "test -x" if available, for testing of
	executables; code modified from Autoconf's AS_EXECUTABLE_P.
	Reported by Albert Chin <china@thewrittenword.com>.

2006-04-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/config/ltmain.m4sh (func_write_libtool_object):
	New function, factored out from..
	(func_mode_compile): .. here.  Call it to generate the libtool
	object file (the `.lo' file) in one step.

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

	* libltdl/loaders/preopen.c: Don't allow lt_dlopen if the
	module has no symbols.

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

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

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

	* bootstrap: Actually use the correct version of the last patch.

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

	* bootstrap: Enable `WORKING_LIBOBJ_SUPPORT' if we detect
	Autoconf-2.60+ and Automake-1.10+, or CVS versions.

	* libltdl/m4/argz.m4 (gl_FUNC_ARGZ): Sync with gnulib:  If we
	define `error_t', also define `__error_t_defined', so argp.h
	will not typedef the former.

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

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

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

	* tests/static.at: New tests for comprehensive test exposure of
	all current and proposed static linking flags for programs.
	* Makefile.am: Updated.

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

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

	* tests/tagdemo/foo.cpp, tests/tagdemo/main.cpp [ hpux ] <aCC>:
	The HPPA C++ compiler has namespace support but provides no
	`std' namespace; just provide it with a dummy.

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Comment out the
	code to remove uninstalled paths, as it is wrong here.  Change
	the wrong shell quoting that kept it from "working" before.
	* THANKS: Updated.

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

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

	* libltdl/config/ltmain.m4sh (startup): save all locale specific
	environment, variables:, LANG, LANGUAGE, LC_ADDRESS, LC_ALL
	LC_COLLATE, LC_CTYPE, LC_IDENTIFICATION, LC_MEASUREMENT,
	LC_MESSAGES LC_MONETARY, LC_NAME, LC_NUMERIC, LC_PAPER,
	LC_TELEPHONE, LC_TIME.
	(func_mode_execute): Restore them.

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

	* doc/libtool.texi (Tags): Mention `FC'.
	(libtool script contents) <CC>: Specify more precisely as the
	compiler of the current tag.
	<LTCC, LTCFLAGS, build, build_alias, build_os, host_alias,
	host_os, macro_version, macro_revision, max_cmd_len>:
	Document these variables.

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

	* doc/libtool.texi: Update copyright years.

	* libltdl/config/getopt.m4sh (func_help): Substitute `$host'.
	* libltdl/config/ltmain.m4sh (help message): Use $host not
	@host_triplet@, as the `@..@' substitution is done at bootstrap
	time already.
	Reported by Julien Lecomte <julien@famille-lecomte.net>.

	* doc/libtool.texi (Implementation issues):  Note that both
	prefix and suffix of a library may differ.
	(Using libtool, Creating object files, Linking libraries):
	Remove last documentation traces of the age when `foo.lo' was
	the PIC object file and not the `libtool object' text file.
	(libtool script contents) <compiler_o_lo>: Remove description
	of this variable.  It was removed from libtool in 1.5 times.

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link) <shell wrapper>:
	Add _AS_BOURNE_COMPATIBLE code from Autoconf, to fix issues
	with zsh and other shells.
	Reported by David Gómez Espinosa <david@pleyades.net>.

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

	* libltdl/m4/libtool.m4 (AC_PROG_SED): m4_defun this rather
	than AC_DEFUN, so that old aclocal does not pick this up.

	* Makefile.am ($(TESTSUITE)): Also depend on `Makefile.am'.
	Write to temporary file and rename.

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

	* Makefile.am (EXTRA_DIST): Add `$(srcdir)/' to all generated
	files so that non-GNU make programs will use the rebuilding
	rules.

	* tests/testsuite.at: Add new keyword `libtoolize' for tests
	that exercise the `libtoolize' script that is generated at build
	time.
	* HACKING: Update testsuite mention, explain keywords.

	* libltdl/config/ltmain.m4sh (extracted_archives)
	(extracted_serial): New globals.
	(func_extract_archives): Use them to rename extraction archives
	for linking against multiple convenience libraries with the same
	name.
	* tests/duplicate_conv.at: New tests.
	* Makefile.am: Adjusted.
	Reported by Carlo Contavalli <ccontavalli@commedia.it>.

	* libltdl/config/ltmain.m4sh (func_mode_link) < test_compile >:
	Fix a couple of instances where `test .. -ne ..' would possibly
	compare non-numbers.  Clean up a bit.

	* tests/convenience.at, tests/deplibs-ident.at: Add new keyword
	`libtool' for tests that exercise the unmodified `libtool'
	script that is generated at build time.
	* tests/duplicate_members.at, tests/fail.at: Likewise.
	* tests/inherited_flags.at, tests/link-order.at: Likewise.
	* tests/stresstest.at, tests/template.at: Likewise.

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

	* tests/fail.at: Also pass a bogus object file to the linker so
	it fails more reliably; AIX and IRIX linkers ignore duplicate
	symbol definitions.

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Fix logic for
	adding run paths to also add paths for installed libtool
	libraries in case `-static' is used.

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

	* Makefile.am (TESTSUITE_AT): List testsuite files in the order
	in which they are to be expanded in the suite.
	(tests/TESTSUITE): Rebuild by passing all $(TESTSUITE_AT) files,
	with their path suitably adjusted.  This enables us to..
	* tests/testsuite.at: ..get rid of their redundant mention here.

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Fix matching
	duplicate run path entries with the correct separator.

	* tests/testsuite.at (PREPARE_TESTS): Escape `^' for some older
	shells.

	* ChangeLog, HACKING, README, README.alpha,
	libltdl/config/ltmain.m4sh:  Add vi(m) modelines, to match emacs
	formatting variables.

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

	* Makefile.am (libltdl/Makefile.am): Fixup sed script.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.

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

	* Makefile.am, bootstrap, clcommit.m4sh,
	libltdl/config/getopt.m4sh, libltdl/config/mailnotify.m4sh,
	tests/sh.test, tests/testsuite.at: Bump copyright years.

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

	* THANKS: Move myself to contributor.

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

	* bootstrap: Don't use semicolons inside { } in sed scripts, as
	Posix says it's not portable.
	* Makefile.am (libltdl/Makefile.am): Likewise.
	* libtoolize.m4sh (all over the map): Likewise.
	* libltdl/config/getopt.m4sh (func_version, func_usage)
	(func_help): Likewise.
	* libltdl/config/ltmain.m4sh (func_win32_libid): Likewise.
	* libltdl/m4/libtool.m4 (_LT_SYS_MODULE_PATH_AIX): Likewise.
	* clcommit.m4sh, libltdl/config/mailnotify.m4sh: Likewise.
	* tests/sh.test, tests/testsuite.at (LT_AT_TAG): Likewise.
	Noted by Paul Eggert <eggert@cs.ucla.edu>.

	* libltdl/config/ltmain.m4sh (func_mode_compile): Also transform
	`.obj' correctly.
	Reported by George Bosilca <bosilca@cs.utk.edu>.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC): Fix my forward port
	error of last commit.

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC): Added support for
	RDOS.
	* NEWS: Updated.

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

	* libtoolize.m4sh, libltdl/config/general.m4sh,
	libltdl/config/getopt.m4sh, libltdl/config/ltmain.m4sh,
	libltdl/m4/libtool.m4: Bump copyright years.

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

	* Makefile.am (EXTRA_DIST): Add ChangeLog.2005.

	* README, README.alpha: Adjust copyright years.
	* ChangeLog.2005: New, rotated, from..
	* ChangeLog: ..here.

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

	* Makefile.am (libtoolize): Also depend on `config.status'.
	(tests/atconfig): Normalize path, for non-GNU make.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.

	* libltdl/config/ltmain.m4sh (func_mode_link) <temp_rpath>:
	Fix position of separator for shlibpath_var setting in shell
	wrapper.

	* libltdl/lt_error.c (error_strings): Remove parentheses around
	string literal initializers, uncovered by `tcc'.
	Reported by Edward Chernenko <edwardspec@yahoo.com>.

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

	* .cvsignore, libltdl/.cvsignore, tests/.cvsignore: Ignore
	+build, +dest, +inst, .cvslog-tlasync, .gdb_history, .pc,
	libltdl/INSTALL, libltdl/stamp-mk and tests/testsuite.log.

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

	* README.alpha: Really commit.

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

	* HACKING (release note templates): Update anon cvs location.
	* README.alpha (Reporting Bugs): Likewise.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Move library
	search paths that coincide with paths to not yet installed
	libraries to the beginning of the library search list.

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

	* THANKS: Updated.

	* HACKING: `./libtool --config' is more helpful than `--help'.

	* libltdl/config/ltmain.m4sh <preserve_args, linknames>:
	Initialize properly.

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

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

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

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

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

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

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

	* tests/old-m4-iface.at: Require Autoconf-2.50, so that
	Debian's autoconf wrapper will not cause 2.13 to barf over
	`--force'.
	Reported by Kurt Roeckx <kurt@roeckx.be>.

	* README.alpha (Reporting bugs): Suggest to also bootstrap the
	libltdl subdirectory -- the Makefile will enforce it anyway.
	(The Test Suite): Renamed to..
	(The Test Suites): ..this.  Introduce the new Autotest test
	suite, how to run each one individually, and what to report.
	* README (The Test Suite): Likewise.

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

	In the subpackage case, we do not install Makefile.inc.  Since
	we have to be correct for this case, remove `Makefile.inc' from
	EXTRA_DIST.  Recursive mode does not use it either.  Since
	nonrecursive mode requires an Automake >= 1.7 anyway, and those
	versions automatically distribute included makefile fragments,
	we don't need to cater for that one either.

	* libltdl/Makefile.inc (EXTRA_DIST): Remove Makefile.inc.
	Reorder other entries.

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

	* Makefile.am (libltdl/Makefile.in): also depend on
	libltdl/aclocal.m4, so that we guarantee timestamp consistency.
	(libltdl/stamp-mk): New target, to fix `libltdl/Makefile.in'.
	(EXTRA_DIST): Distribute `libltdl/stamp-mk' and
	`libltdl/m4/lt~obsolete.m4'.
	(all-local): Ensure the stamp files is up to date.
	(libltdl/aclocal.m4): New target, to ensure timestamp
	consistency.  Depend on all m4 files.
	* HACKING: Updated.

	* tests/testsuite.at (PREPARE_TESTS): New variable `tst_dist',
	default to empty.
	* tests/nonrecursive.at, tests/recursive.at,
	tests/standalone.at, tests/subproject.at: Use it in
	LT_AT_BOOTSTRAP or LT_AT_MAKE, so that you can optionally test
	redistribution within the tests.

	* libltdl/m4/lt~obsolete.m4: Update documentation for aclocal
	versions before 1.7.  Change all macros to use AC_DEFUN instead
	of AU_DEFUN.
	* (_AC_PROG_LIBTOOL, AC_LIBTOOL_SETUP, _LT_AC_CHECK_DLFCN)
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER, _LT_AC_TAGCONFIG)
	(AC_DISABLE_FAST_INSTALL, _LT_AC_LANG_CXX, _LT_AC_LANG_F77)
	(_LT_AC_LANG_GCJ, AC_LIBTOOL_RC, AC_LIBTOOL_LANG_C_CONFIG)
	(_LT_AC_LANG_C_CONFIG, AC_LIBTOOL_LANG_CXX_CONFIG)
	(_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_LANG_F77_CONFIG)
	(_LT_AC_LANG_F77_CONFIG, AC_LIBTOOL_LANG_GCJ_CONFIG)
	(_LT_AC_LANG_GCJ_CONFIG, AC_LIBTOOL_LANG_RC_CONFIG)
	(_LT_AC_LANG_RC_CONFIG, AC_LIBTOOL_CONFIG)
	(_LT_AC_FILE_LTDLL_C): Add new fake macros for these, they
	were used at one time in libtool.m4.

	* tests/am-subdir.at (Makefile.am): Put automake options here,
	in AUTOMAKE_OPTIONS.  Require 1.6 because of the newer
	`AC_INIT(pkgname,version) AM_INIT_AUTOMAKE' scheme.
	* tests/nonrecursive.at, tests/recursive.at: Require 1.7,
	because libltdl rules use `+=' in conditionals.
	* tests/testsuite.at (LT_AT_AUTOMAKE): Fix indenting.
	(LT_AT_AUTORECONF): also detect too old Automake.

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

	* libltdl/libltdl/lt__alloc.h (FREE): Cast away constness of
	argument to `free' to avoid compiler warning.

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

	* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG, _LT_LINKER_SHLIBS)
	[darwin]: Use $LTCC $LTCFLAGS to check for -single_module.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	* bootstrap: always remove Makefile, to avoid triggering the
	autotools rebuild rules before autoreconf builds these.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.

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

	* libltdl/config/ltmain.m4sh, libltdl/m4/libtool.m4 [darwin]:
	Use -single_module by default when linking shared libraries. Can
	be overridden by specifying -multi-module or by setting the env
	var LT_MULTI_MODULE before configure.
	* libltdl/m4/libtool.m4 (archive_expsyms_cmds) [darwin]:
	Simplify.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

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

	* doc/libtool.texi (References): Do not use `@/' for the benefit
	of older `makeinfo', break lines instead.

	* Makefile.am (install-data-local): No continuation here.
	(dist-hook): Fix copying of README.alpha to README.
	* tests/early-libtool.at (configure.ac): Remove
	`AM_INIT_AUTOMAKE', we do not use automake in these tests.

	* README, README.alpha, libtoolize.m4sh: Typos.
	* tests/am-subdir.at, tests/duplicate_members.at: Make all
	banners end with a dot, for symmetry.

	* libtoolize.m4sh (func_copy_all_files)
	(glob_exclude_pkgaux_files): Removed, since unused.

	* libtoolize.m4sh (func_copy_cb, func_copy_some_files)
	(func_serial_update, func_keyword_update): Fail immediately
	if some file we may install does not exist.
	Reported by Troy Benjegerdes <hozer@hozed.org>.

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

	* TODO: A bunch of items fixed. :)

	* tests/convenience.at: Updated to expose more corner cases.

	* doc/libtool.texi (Invoking libtoolize): Remove mention of
	the nonrecursive restriction to name the directory `libltdl'.

	* libtoolize.m4sh (func_fixup_Makefile_inc): New function.
	(main): Call it in nonrecursive mode to mangle Makefile.inc.
	* tests/nonrecursive.at: adjusted to test this.

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

	Basic support for PIE (position-independent executables).

	* libltdl/config/ltmain.m4sh (func_generate_dlsyms):
	Don't pass PIE flag for compilation of the symbol file object.
	(func_mode_compile): Pass PIE flag only for non-PIC objects.
	* NEWS: Updated.

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

	* libltdl/config/general.m4sh (func_show_eval): Rewrite use of
	the failure expression, because the exit status of the previous
	command may not be preserved in the next `eval' by some shells,
	such as pdksh.
	* libltdl/config/ltmain.m4sh (func_extract_an_archive):
	Use func_show_eval correctly.
	(func_mode_link): Likewise.  Also, do not use `$status'.
	* tests/fail.at: New set of tests to ensure libtool fails.
	* Makefile.am, tests/testsuite.at: Adjusted.

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

	* libltdl/m4/libtool.m4 [darwin]: Use $LTCC $LTCFLAGS to create
	reloadable objects.

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

	* libltdl/Makefile.inc (libltdl/argz.h): Create libltdl
	directory if it does not exist yet.  Take care that munging
	of the file will not mess up the build rule.
	Reported by Peter O'Gorman <peter@pogma.com>.

2005-11-25  Eric Blake  <ebb9@byu.net>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/loaders/loadlibrary.c (iface_id): New variable.
	(get_vtable): Get an `iface_id' from `lt_dlinterface_register'.
	(get_vtable): Rewrite to catch up with lt_dlhandle_iterate
	interface change.  Append dot only after w32 path conversion
	so it works on cygwin managed mounts.

	* libltdl/ltdl.h, libltdl/ltdl.c (lt_dlinterface_free): New
	function.
	* doc/libtool.texi (User defined module data): Document it.

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Allow GCC
	response files through.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Pass through
	-isysroot for cross architecture builds on darwin.

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

	* libltdl/config/ltmain.m4sh (func_mode_uninstall): In clean
	mode, don't remove non-existent libfoo.lai.

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

	* Makefile.am (aclocalfiles): Also install lt~obsolete.m4.
	* libtoolize.m4sh (func_check_macros): Updated.
	* tests/libtoolize.at: Adjusted.

2005-11-20  Eric Blake  <ebb9@byu.net>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* bootstrap (--help): Provide some help.

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

	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN, _LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG) [ interix3 ]: Support for Interix/Microsoft
	Services for Unix.
	* libltdl/m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): Likewise.
	* NEWS: Updated.

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

	* tests/link-order.at [ interix ]: Skip command line grep.
	* tests/deplibs-ident.at [ interix ]: Not broken here.
	Reported by Thorsten Glaser <tg@66h.42h.de>.

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

	* libtoolize.m4sh (func_copy_all_files)
	(func_massage_aclocal_DATA, func_massage_pkgltdl_files)
	(func_massage_pkgconfig_files): Work around ksh limitation.
	Reported by Thorsten Glaser <tg@66h.42h.de>.

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[ hpux11 ]: Pass +nodefaultrpath when linking on ia64*.

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

	Testsuite portability update round.

	* tests/inherited_flags: skip when shared libs are disabled.
	* tests/deplibs-ident.at [ aix ]: No unexpected failure here.
	* tests/libtoolize.at: Fix for distcheck (readonly sources).
	* tests/nonrecursive.at, tests/recursive.at, tests/subproject.at
	(foo.c): Actually export a symbol, for AIX.
	* tests/old-m4-iface.at: Use AC_LIBTOOL_DLOPEN, for AIX.
	* tests/nonrecursive.at: Set foo_la_SOURCES, for automake-1.7.
	* tests/subproject.at: Require automake-1.9, we use indirect
	subdirs.
	* tests/am-subdir.at: Move AT_KEYWORDS settings..
	* tests/testsuite.at: ..here, in respective macros.
	(LT_AT_AUTOMAKE): Skip if we detect failure due to old version.
	(PREPARE_TESTS): Set autotool variables to `no' if not present.
	(LT_AT_ACLOCAL, LT_AT_AUTOCONF, LT_AT_AUTOMAKE)
	(LT_AT_AUTOHEADER, LT_AT_AUTORECONF): Use to XFAIL tests.
	Reported by Tim Rice <tim@multitalents.net>.
	(LT_AT_MAKE): Do not use `make -e'.
	(_LTDL_PROJECT_FILES): Adjust sub-make call.  Work around `make'
	which does not set `MAKE' or `SHELL'.  Fix for user-set
	`CONFIG_SHELL'.
	Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.

	* libltdl/m4/lt~obsolete.m4 (_LT_CC_BASENAME)
	(_LT_COMPILER_BOILERPLATE, _LT_LINKER_BOILERPLATE):
	Added because they were added to branch-1-5 AC_DEFUNed.
	* HACKING: Add note about lt~obsolete.m4.

	* Makefile.am, libltdl/Makefile.inc (INSTALL_LTDL):
	For nonrecursive mode, add to include_HEADERS as well.
	* doc/libtool.texi (Invoking libtoolize, Distributing libltdl),
	tests/nonrecursive.at: Adjusted, and removed TABS from .texi.

	* libtoolize.m4sh: Revert use of `$tst_aclocaldir'.

2005-11-13  Eric Blake  <ebb9@byu.net>

	* libltdl/ltdl.c (lt_dlhandle_iterate): Fix endless loop.
	(lt_dlinterface_register): Fail if lt__strdup did.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
	(_LT_LANG_C_CONFIG, _LT_LANG_CXX_CONFIG)
	[ sco3.2v5, sysv4, sysv4.3, sysv5, sco3.2v5, sco5v6, unixware,
	OpenUNIX, sysv4*uw2 ]: Complete overhaul of SCO support.
	* THANKS: Updated.

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

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

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

	* libltdl/m4/ltoptions.m4 (_LT_SET_OPTION): Use m4_warning
	instead of m4_warn.

	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC): `wl' is tagged here.

	* libltdl/m4/libtool.m4 (LT_SYS_DLOPEN_SELF, _LT_COMPILER_PIC):
	Make sure `$wl' is properly expanded for tests involving
	`export_dynamic_flag_spec', `lt_prog_compiler_static'.

	* tests/defs.m4sh (func_configure): Actually pass
	options (like --disable-shared) to func_configure_nofail.

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

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

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

	* libltdl/config/ltmain.m4sh (func_win32_libid): use $SED not
	sed.
	
2005-11-10  Albert Chin-A-Young  <china@thewrittenword.com>

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

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

	* libltdl/m4/ltsugar.m4 (lt_join, lt_combine, lt_dict_filter):
	Rewrite to eliminate tail recursion; use ..
	(lt_unquote): New trivial helper macro.
	* libltdl/m4/libtool.m4 (_lt_decl_filter): Document.

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

	* tests/testsuite.ac (macrodir): Don't set it here...
	* Makefile.am (BUILDCHECK_ENVIRONMENT, INSTALLCHECK_ENVIRONMENT):
	...set it here to pick up files from the right place in context.
	* tests/libtoolize.at, tests/old-m4-iface.at: Adjust.
	* libtoolize.m4sh: Take tst_aclocaldir into account when running
	inside the test harness.

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

	* tests/am-subdir.at: Now that we don't run autoreconf, we have to
	explicitly tell aclocal what flags to use.

	* tests/testsuite.at (LT_AT_BOOTSTRAP): Allow passing arguments to
	configure.
	* tests/am-subdir.at, tests/nonrecursive.at, tests/old-m4-iface.at,
	tests/subproject.at: Use LT_AT_BOOTSTRAP.

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS): Also set pic_flag.
	(_LT_LANG_CXX_CONFIG): Use $as_unset, not unset.
	(_LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG): Remove bogus
	ld_shlibs tests.

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

	* libltdl/Makefile.inc (AM_CPPFLAGS): Do not define
	HAVE_CONFIG_H.
	* libltdl/m4/ltdl.m4 (LTDL_INIT): Do not invoke
	AC_CONFIG_HEADERS ourselves, we can build with or without now.

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

	* libltdl/config/ltmain.m4sh (func_mode_link) [ sysv4*uw2*,
	unixware7* ]: Work around linker bug on older SCO systems.

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

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

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

	* tests/testsuite.at (_LTDL_PROJECT_FILES): Factored out from
	common code to build a basic libltdl using project.
	* tests/old-m4-iface.at, tests/standalone.at, tests/subproject.at:
	Use it.

	* doc/libtool.texi (Distributing libltdl): Document correct use of
	LT_CONFIG_LTDL_DIR mode argument with Autoconf and Automake.

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

	Support 'recursive' mode for building libltdl: Automake will
	recursively descend into the libltdl directory, and use libltdl's
	Makefile.am code to build libltdl:

	* ltdl.m4 (LT_CONFIG_LTDL_DIR): Don't barf on 'recursive' mode
	for 2nd argument.
	(_LTDL_MODE_DISPATCH): Handle recursive mode.

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

	* tests/recursive.at: New tests for libltdl as a subdirectory,
	configured and compiled from the toplevel project using a
	recursive make..
	* tests/testsuite.at: Use it.
	* Makefile.am (TESTSUITE_AT): Depend on it.

	* libltdl/m4/ltdl.m4 (LTDL_INIT): Don't force running
	AC_CONFIG_HEADERS for subproject ltdl.
	* tests/old-m4-iface.at, tests/subproject.at: Remove workaround.

	* libltdl/m4/ltdl.m4 (LT_CONFIG_LTDL_DIR): Add LTDL-MODE
	argument.
	* configure.ac: Use it.

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

	* libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): lt_unknown is
	lt_dlunknown.

	* libltdl/m4/libtool.m4 (LT_SYS_DLOPEN_SELF): Revert
	expansion of `$wl'.
	(_LT_LANG_C_CONFIG, _LT_LANG_CXX_CONFIG, _LT_LANG_GCJ_CONFIG):
	Do not require LT_SYS_DLOPEN_SELF.
	(_LT_LANG_C_CONFIG): Instead call it at the right time.
	(_LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG)
	(_LT_LANG_GCJ_CONFIG): Do not call _LT_CMD_STRIPLIB.

	* Makefile.am: `2>&1' as suggested by Albert Chin.
	* libltdl/m4/libtool.m4, libltdl/m4/ltdl.m4:
	Two newlines before each macro, fix underlines.

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

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

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

	* THANKS: Updated.

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

	* tests/nonrecursive.at: New tests for libltdl as a subdirectory,
	configured and compiled from the toplevel project.
	* tests/testsuite.at: Use it.
	(LT_AT_AUTOHEADER): New macro.
	* Makefile.am (TESTSUITE_AT): Depend on nonrecursive.at.

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

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

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

	* libltdl/m4/libtool.m4 (LT_SYS_DLOPEN_SELF): Use
	`lt_prog_compile_static', not `link_static_flag'.  Expand `$wl'
	so expansion of `export_dynamic_flag_spec' works.
	(_LT_TRY_DLOPEN_SELF): Show dlerror() in case of failure.
	(_LT_LINKER_SHLIBS) [ aix3 ]: Likewise.
	(_LT_COMPILER_PIC) [ hpux* ]: Use `${wl}'.

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

	* THANKS: Updated.

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

	* libltdl/m4/ltdl.m4 (LTDL_INIT): Call _LT_ENABLE_INSTALL directly
	instead of m4_requiring it, as it relies on enable_ltdl_install
	and enable_ltdl_convenience to have been initialised first.

	* libtoolize.m4sh: Use serial tags to locate the correct serial
	numbers when deciding whether to update.
	(func_serial): Allow for macro_regex argument to be originating
	file name.
	(func_serial_update): Use NL2SP to flatten list of extracted
	m4_include files.
	* tests/libtoolize.at: More tests for old-style verbatim copying
	of macros into aclocal.m4.

	* libltdl/m4/argz.m4, libltdl/m4/ltoptions.m4, libltdl/ltsugar.m4,
	libltdl/m4/ltversion.in: Add serial number tags, and bump serial
	number.

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

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

	* libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN): Set correctly for SCO.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[ aix ]: Remove duplicate always_export_symbols=yes for AIX.

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

	* libltdl/config/ltmain.m4sh (func_mode_link):
	With `-static', only link statically against uninstalled
	libtool libraries.  Fixes 1.5.x regression to match documented
	behavior.
	* NEWS: Updated.

2005-10-27  Stepan Kasal  <kasal@ucw.cz>

	* HACKING: Update note about use of `$#' in m4 macros.

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

	* tests/tagtrace.test: Allow `$AUTOCONF' to contain arguments.
	Skip if the running `autoconf' version is older than the one
	used to bootstrap Libtool.

2005-10-26  Eric Blake  <ebb9@byu.net>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.am (vcl-tmp): Avoid warnings from diff.
	* bootstrap: Avoid warnings from find.
	(lt_tab): Use to prevent editor whitespace "cleanup".

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

	* libtoolize.m4sh: Put back the func_serial_update callback for
	func_copy_some_files so that the testsuite passes again.  We'll
	have to find a better way of handling serial numbers in libtool
	macro files.

	* libltdl/Makefile.inc: New file, factored out of Makefile.am for
	use in non-recursive libltdl installations.
	* bootstrap: Adjust.
	* Makefile.am: include it.
	(libltdl/Makefile.am): Adjust to build from the new
	libltdl/Makefile.inc.
	(SUBDIR_LIBOBJS): Renamed from this...
	(LTDL_SUBDIR_LIBOBJS): ...to this.
	* configure.ac: Adjust.
	* doc/libtool.texi (Invoking libtoolize): Document the new modes
	and libtoolize option to select them.
	* libtoolize.m4sh: Parse new options, --nonrecursive, --recursive
	and --subproject.  Install the appropriate files with --ltdl
	according to the selected mode.
	(func_scan_files): If --subproject, --recursive or --nonrecursive
	options were not given, use the value from LT_CONFIG_LTDL_DIR; if
	a mode was given, and there is also an argument to
	LT_CONFIG_LTDL_DIR, ensure they are the same.
	* NEWS: Updated.

	* libtoolize.m4sh: Don't use func_serial_update as a copy
	function for libtool m4 files with no macro_regex.  If the
	files are copied directly into aclocal.m4, because
	AC_CONFIG_MACRO_DIR isn't set for example, there is no way
	to tell what serial number goes with what source file.
	(func_serial_update): For future-proofing, only make the second
	serial number check if the destination file wasn't m4_included
	into aclocal.m4 (and hence updated automatically by the cat of
	copying a new version to the dest directory).

	* libtoolize.m4sh: Move the consistency checks...
	(func_check_macros): ...into here.  Also suggest LT_WITH_LTDL if
	appropriate.

	* libtoolize.m4sh: Copying just libtool.m4 for hand maintained
	aclocal.m4 doesn't work.  List all required files in that case,
	using the files from installed libltdl if available.  Also, list
	the additional files required when using libltdl.
	Reported by Patrick Welche <prlw1@newn.cam.ac.uk>.

	* libltdl/ltdl.h, libltdl/ltdl.c (lt_dlhandle_first): Removed.
	* libltdl/ltdl.h, libltdl/ltdl.c (lt_dlhandle_next)
	(lt_dlhandle_find, lt_dlforeach): Removed...
	(lt_dlhandle_iterate, lt_dlhandle_fetch, lt_dlhandle_map): Similar
	functions that are multi-loader safe, and require a registered
	interface validator argument.
	* doc/libtool.texi: Updated.
	* NEWS: Updated.

	* libtoolize.m4sh: Always copy pkgconfig_files for --ltdl, incase
	ltdl needs additional things not found by automake when looking at
	the parent project configury.
	* tests/libtoolize.at: Adjust.

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

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

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

	* libltdl/m4/ltdl.m4 (LT_WITH_LTDL): Don't nest AC_MSG_CHECKING/
	AC_MSG_RESULT pairs.

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

	* tests/subproject.at: Move 'touch config.h.in' invocation.

	* tests/subproject.at (_LTDL_SETUP): Use pushdef/popdef to
	simulate file-local scope.  Empty source file compilation is not
	portable, so add minimal code to generated foo.c file.

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

	* libltdl/m4/libtool.m4 (LT_PATH_NM): End test source with
	newline.
	Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.

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

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

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

	* tests/testsuite.at (LT_AT_AUTOMAKE): New macro.
	* tests/subproject.at: Use it.  Do not call `autoreconf' in
	tests, since it will try to reconfigure `sub/ltdl', which
	breaks `make check' during `distcheck' because of a readonly
	source tree.

	* libltdl/m4/ltdl.m4 (LT_WITH_LTDL): Also set INCLTDL.

	* libltdl/m4/ltdl.m4 (LTDL_CONVENIENCE, LTDL_INSTALLABLE)
	(LT_WITH_LTDL): Revert Gary's 2005-10-10 patch.

	* tests/stresstest.at: Use `allow_undefined_flag' instead of
	host_os setting.

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

	* libltdl/m4/ltdl.m4 (_LT_ENABLE_INSTALL): Remove bogus extra
	closing brackets.

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

	* libltdl/m4/ltdl.m4 (LTDL_CONVENIENCE, LTDL_INSTALLABLE): Remove
	AC_SUBST of LIBLTDL, LTDLINCL, and all mention of INCLTDL.
	(LT_WITH_LTDL): Due to order constraints between LTDL_CONVENIENCE,
	LTDL_INSTALLABLE, LT_WITH_LTDL & LTDL_INIT, we can safely AC_SUBST
	LIBLTDL and LTDLINCL here.  Also, remember to synch INCLTDL.

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

	* tests/stresstest.at [ aix3, beos, os2 ]: Always use
	`-no-undefined'.

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

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

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

	* configure.ac (abs_top_builddir, abs_top_srcdir): always
	substitute.
	* Makefile.am (BUILDCHECK_ENVIRONMENT)
	(INSTALLCHECK_ENVIRONMENT): New macros.  Set _lt_pkgdatadir,
	LIBTOOL, LIBTOOLIZE accordingly, by using above, and
	program_transform_name.
	* tests/testsuite.at (TESTS_PREPARE): Do not set them anymore.
	Set $unset.
	(LT_AT_MAKE): Use to unset LIBTOOL and LIBTOOLIZE.

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

	* tests/subproject.at: Commit the right file this time.

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

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

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

	* tests/subproject.at: New tests for libltdl as a subproject with
	its own configuration.
	* tests/testsuite.at: Use it.
	* Makefile.am (TESTSUITE_AT): Depend on it.

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

	* Makefile.am: Simplify.  Do not use abs_top_srcdir.
	Reported by Gary V. Vaughan <gary@gnu.org>.

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

	* libltdl/m4/ltdl.m4 (_LT_CONFIG_LTDL_DIR): Spurious './' prefixes
	upset BSD pmake, don't set lt_ltdl_dir in this case.
	(LTDL_CONVENIENCE, LTDL_INSTALLABLE): Adjust.

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

	* Makefile.am (BUILDCHECK_ENVIRONMENT)
	(INSTALLCHECK_ENVIRONMENT): New macros.
	(check-local, installcheck-local): Use them.
	* tests/testsuite.at (PREPARE_TESTS): Extract host_alias, ECHO.
	Set configure_options appropriately.
	(LT_AT_CONFIGURE, LT_AT_AUTORECONF, LT_AT_MAKE): New macros.
	(LT_AT_BOOTSTRAP): Use them.
	* tests/am-subdir.at, tests/early-libtool.at,
	tests/old-m4-iface.at, tests/standalone.at: Likewise.
	* tests/link-order.test: Do not extract ECHO any more.

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Require
	AC_CANONICAL_HOST and _LT_DECL_SED.

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

	* libltdl/m4/ltdl.m4: Bump serial as we are changing the
	interface.
	(LT_CONFIG_LTDL_DIR): New macro to centralise setting the
	subdirectory used for libltdl.
	(LTDL_CONVENIENCE): Continue backwards compatibility support for
	declaring the libltdl source subdirectory with an argument, but
	defer to LT_CONFIG_LTDL_DIR.
	(AC_LIBLTDL_CONVENIENCE): Adjust to upgrade to the new style.
	(LTDL_INSTALLABLE, AC_LIBLTDL_INSTALLABLE): Ditto.
	(LTDL_INIT): lt_ltdl_dir is set by LT_CONFIG_LTDL_DIR now, and
	even `./' needs trailing slashes trimming!  If the user didn't
	upgrade their configure.ac yet, call LT_CONFIG_LTDL_DIR for them.
	* libtoolize.m4sh (func_scan_files): If --ltdl option is given
	without a directory argument, use the value from
	LT_CONFIG_LTDL_DIR; if the argument is given, and there is also a
	value in LT_CONFIG_LTDL_DIR, ensure they are the same.
	* libltdl/configure.ac: Use it.
	* NEWS: Updated.

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

	* tests/old-m4-iface.at (Makefile.in): Do not reconfigure
	libltdl directory.

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

	* tests/deplibs-ident.at: New file with XFAIL test to expose
	wrong multiple listing of a deplib on the command line.
	* Makefile.am, tests/testsuite.at: Updated.
	Reported by Brian Barrett <brbarret@open-mpi.org>.

	* tests/old-m4-iface.at: Define top_srcdir, work around current
	ltdl.m4 bug.

	* libltdl/config/ltmain.m4sh (func_mode_link):
	Fix wrong logic introduced in last commit.

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

	* tests/libtoolize.at: Add a new test to catch a regression I
	almost introduced with respect to copying macro files when
	AC_CONFIG_MACRO_DIR is shared with libltdl subproject.

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

	* tests/old-m4-iface.at: Start of a new test series for m4
	interface backwards compatibility.
	* tests/testsuite.at: Use it.
	(macrodir): Declare the location of uninstalled libtool m4 macros.
	* Makefile.am (TESTSUITE_AT): Depend on it.

2005-09-29  Tim Rice  <tim@multitalents.net>  (tiny change)

	* tests/early-libtool.at (Makefile.in): Set $(SHELL).

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Don't modify
	user provided symbols file. Adjust removal of temporary files
	and also remove temporary files used during symbols file
	filtering.

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

	* libtoolize.m4sh (func_included_files): Do not recurse
	non-existent files.

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

	* libtoolize.m4sh (func_scan_files): Support projects that have
	upgraded libtool, but still use an old autoconf.  When the libtool
	macros are not copied (because of missing ACLOCAL_AMFLAGS and
	AC_CONFIG_MACRO_DIR ), point them at the libtoolize master tree
	for files to manually copy into acinclude.m4 or aclocal.m4.

	* libltdl/lt_error.c (lt__last_error, lt__error_strings): The lt__
	prefix is used to indicate internal symbols that are only exported
	for use by other parts of libltdl.  These are now static, so...
	(last_error, error_strings): ...renamed to this.  Changed all
	callers.

	* libltdl/ltdl.h (lt_dlmutex_register, lt_dlmutex_lock)
	(lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror)
	(lt_dlmalloc, lt_dlrealloc, lt_dlfree): Remove deprecated APIs.
	* doc/libtool.tex: Updated.
	* NEWS: Updated.

	* libltdl/ltdl.c (lt_dlcaller_register): Renamed to avoid problems
	with module visibilty when linked with programs written for the
	old API.
	(lt_dlinterface_register): New name.
	* Makefile.am (VERSION_INFO): Bumped.
	* doc/libtool.texi (User defined module data): Updated.

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

	* tests/defs.m4sh, tests/testsuite.at (PREPARE_TESTS)
	<AUTORECONF>: Allow variable override.

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

	* HACKING: Only update libltdl version info before release.

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

	* configure.ac <AUTOM4TE>: Allow variable override.

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

	* libltdl/config/ltmain.m4sh (func_win32_libid)
	[ cygwin, mingw ]: Robustify sed script to determine
	win32_libid_type.
	(func_mode_link) [ mingw ]: Ignore `-lm'.

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

	* libltdl/libltdl/lt__private.h, libltdl/lt_error.c:
	Don't export the lt__last_error and lt__error_strings
	variables. Define lt__error_strings so that no relocations
	are needed.
	* libltdl/libltdl/lt__private.h (LT__STRERROR, LT__GETERROR)
	(LT__SETERRORSTR): Adjust to not use the above variables,
	instead use the following functions...
	* libltdl/lt_error.c: (lt__error_string, lt__get_last_error)
	(lt__set_last_error): Reimplement the functionality in
	these functions instead.
	* libltdl/libltdl/lt_error.h: Add LT_ERROR_LEN_MAX define for
	max error string length.
	(lt_dlerror_table): Append explicit nul terminators so that
	compilers warn more reliably if the above define is too small.

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

	* tests/link-order.at [ aix* ]: skip path syntax grep.

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

	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Fix awk
	script to be a single line so that the cache variable isn't
	multiline.

2005-09-23  Eric Blake  <ebb9@byu.net>  (tiny change)

	* libltdl/loaders/loadlibrary.c (vm_open): Silence gcc warnings.
	[__CYGWIN__]: Include <sys/cygwin.h> for prototype.

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

	* bootstrap: Don't clobber the working copy metadata in
	./{arch}/libtool during bootstrap.

2005-09-22  Peter Ekberg  <peda@lysator.liu.se>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/config/ltmain.m4sh (func_mode_link): Filter
	user supplied symfile to tag relevant symbols as data
	symbols. Fixes segfault in stresstest.at on Cygwin and
	makes the test pass.

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

	* tests/link-order.test: Clean up the uninstalled libraries
	before linking the test executables so that they don't pick
	up the dlls from the current dir on Cygwin and MinGW.

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

	* libltdl/m4/libtool.m4 (LT_PATH_NM, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG, _LT_SYS_HIDDEN_LIBDEPS):
	Add missing `;;' after case list.

2005-09-22  Peter Ekberg  <peda@lysator.liu.se>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS, _LT_COMPILER_PIC)
	(_LT_LINKER_SHLIBS): Require _LT_TAG_COMPILER to make sure that
	$compiler is assigned. Fixes crippled configure output.

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

	* libltdl/m4/libtool.m4 (LT_PATH_NM): Fix autodetection of
	dumpbin and also check for "link -dump -symbols" as a synonym
	for "dumpbin -symbols".

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

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG):
	Split up --out-implib option for linker in separate args so that
	the MSYS path translation can do its magic on the provided path
	to the import library. Fixes problem in stresstest.at on MinGW.

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

	* Makefile.am (ltdldatafiles): Fix installation order to match
	dependency order.
	(libltdl/Makefile.in): Use $(srcdir) for non-GNU make.

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Allow some
	ARM gcc ABI flags through.
	Reported by Andrés Moré <more.andres@gmail.com>.

	* Makefile.am (all-local): Rebuild libltdl/Makefile.in.

	* libltdl/m4/ltdl.m4 (LTDL_INIT) <CONFIG_H>: Rename to..
	<LT_CONFIG_H>: this, to contain the name of the config
	header.
	* Makefile.am <DEFS>: Use it to define LT_CONFIG_H.
	* HACKING, libltdl/argz.c, libltdl/lt__alloc.c,
	libltdl/libltdl/lt__dirent.h, libltdl/libltdl/lt__glibc.h,
	libltdl/libltdl/lt__private.h, libltdl/libltdl/lt__strl.h:
	Adjusted.

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

	* tests/testsuite.at (LT_AT_EXEC_CHECK): Make sure
	that the exit status of the tested program is
	propagated as the exit status of the expression
	fed to AT_CHECK.

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

	* libltdl/argz.c <HAVE_CONFIG_H>: Avoid redefinition warning.

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

2005-09-13  Peter Ekberg  <peda@lysator.liu.se>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* libltdl/config/ltmain.m4sh (func_generate_dlsyms):
	Fix escape expression to actually escape relevant
	characters from the following grep. Fix Cygwin and
	MinGW to use the filtered symbol list when exporting
	from self, and not the symbol filter.
	* tests/stresstest.at: Export w8, not w8$

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

	Make tagdemo work smoothly with both pre- and ISO C++ compilers,
	and remove all use of libstdc from other tests.

	* tests/tagdemo/configure.ac (HAVE_NAMESPACES, HAVE_IOSTREAM):
	New tests for ISO C++ features.  Reimplementation of similar
	macros from the autoconf archive.
	* tests/tagdemo/foo.cpp, tests/tagdemo/main.cpp: Adjusted.
	* tests/am-subdir.at, tests/template.at: Do not use iostream.

2005-09-12  Peter Ekberg  <peda@axentia.se>,
	    Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* tests/testsuite.at (host_os): Pull from `libtool --config'.
	* tests/stresstest.at [ cygwin, mingw, pw32 ]: Use it to fix
	setting of `-no-undefined'.

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

	* libltdl/m4/ltdl.m4 (LT_WITH_LTDL, LTDL_CONVENIENCE)
	(LTDL_INSTALLABLE): Use less quoting for expanded LIBLTDL,
	LTDLINCL.  Use m4_default instead of m4_if, to work
	around AU_ALIAS bug with empty macro arguments.
	(LTDL_INIT): Likewise.
	* libltdl/m4/ltoptions.m4 (_LT_WITH_PIC): Likewise.
	* TODO, HACKING: Updated.

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

	* libtoolize.m4sh (TAR): Allow the user to override the tar
	command.

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

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

	* libltdl/config/ltmain.m4sh (func_mode_link): Actually provide
	a useful error message.  Fixes long-standing shameful user
	neglection.
	Reported by Martin Paljak <martin.paljak@gmail.com>.

2005-09-08  Peter Ekberg  <peda@axentia.se>

	* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS) [dumpbin]:
	Symbols in "pick any" sections are not global. Use
	awk, not sed, in the global_symbol_pipe so that keeping
	track of sections is easier.
	* doc/libtool.texi (libtool script contents): Update to hint
	at new findings concerning "pick any" sections.

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

	* tests/early-libtool.at (config.status): Use EXEEXT
	consistently.
	Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.

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

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

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

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

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

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

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

	* bootstrap: another AIX sed fix.

	* Makefile.am (TESTS_ENVIRONMENT): Export SHELL.
	* bootstrap (SHELL): Set to $CONFIG_SHELL or /bin/sh.
	Name `make' targets in portable fashion.  Work around `rm'
	warnings.  Unconditionally create fake `libtoolize'.
	Reported by Patrick Welche <prlw1@newn.cam.ac.uk>.

	* Makefile.am (doc/notes.txt): Use --no-headers instead of
	--plaintext for makeinfo.
	Reported by Peter O'Gorman <peter@pogma.com>.

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

	* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [ aix ]
	<export_symbols_cmds>: Work around shell expansion issue in
	func_show_eval by separating `$' and field number; drop then
	unnecessary m4 quoting.

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

	AC_BEFORE only works if declarations are made inside the macro
	cited as the first argument:

	* libltdl/m4/libtool.m4 (LT_OUTPUT): Move AC_BEFORE decls...
	(LT_INIT, LT_LANG): ...to the macro that has to come first.

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

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

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

	* libltdl/m4/libtool.m4 (_LT_PROG_CXX, _LT_PROG_F77)
	(_LT_PROG_FC): aclocal-1.4 compatibility workaround.

	* bootstrap: Do not use nonportable -path.
	Reported by Ralf Menzel <menzel@ls6.cs.uni-dortmund.de>.

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

	* doc/libtool.texi (LT_INIT): Fix a logical error with
	documentation of --with-pic vs --without-pic.

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

	* libltdl/m4/ltoptions.m4 (_LT_SET_OPTIONS): m4_defun this..
	* libltdl/m4/libtool.m4 (LT_INIT): so it can be m4_require'd
	from here with user-supplied options.  Fixes output macro
	ordering issue.

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

	* libtoolize.m4sh (func_scan_files): When searching for evidence
	of Autotools in aclocal.m4, be careful not to trip over requires
	and defuns.

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

	* libltdl/m4/ltoptions.m4 (_LT_SET_OPTIONS): Move option macro
	dipatch..
	(_LT_SET_OPTION): here.  Do not fail but warn on unknown
	options.
	(_LT_UNLESS_OPTIONS(win32-dll), LT_OPTION_DEFINE(dlopen)):
	Add whitespace.
	Reported by Robert Ögren <lists@roboros.com> and
	Akim Demaille <akim@lrde.epita.fr>.

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

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

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

	* libltdl/m4/ltoptions.m4 (AC_LIBTOOL_PIC_MODE): Renamed...
	(AC_LIBTOOL_PICMODE): ...this in the backwards compatibility
	code.  There never was an AC_LIBTOOL_PIC_MODE macro.

	* libltdl/m4/libtool.m4 (_LT_SETUP): Remove duplicate
	--enable-libtool-lock declaration.

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

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_PATH_TOOL_PREFIX, _LT_SYS_HIDDEN_LIBDEPS, _LT_DECL_EGREP):
	Fix typos.

	* Makefile.am: Install libltdl data files in correct order.
	Use pre-defined programs for installation; use NORMAL_INSTALL
	and NORMAL_UNINSTALL.  Really fix ownership and timestamp
	problems.  Fix typo in uninstallation of aclocal files.
	Reported by Peter Breitenlohner <peb@mppmu.mpg.de> and
	Charles Wilson <cygwin@cwilson.fastmail.fm>.

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

	Allow for portability with Autoconf 2.59, Automake 1.9.6,
	which lack AC_CONFIG_LIBOBJ_DIR support.

	* bootstrap: Unless environment variable WORKING_LIBOBJS_SUPPORT
	is set to true aka `:', symlink ..
	* argz.c lt__dirent.c lt__strl.c: .. these from the copies in
	libltdl.
	* configure.ac (SUBDIR_LIBOBJS): Automake conditional, set if
	bootstrap didn't make the extra copies of libobj sources in
	top srcdir...
	* Makefile.am: Add these to EXTRA_DIST if SUBDIR_OBJS is not set,
	as well as the originals in libltdl/, in order to work when
	bootstrapped both with old and newer Automake/Autoconf.

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

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

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

	Some macros had relied on accidentally correct ordering in order
	for $MV to be defined before use.  Factor out setting of some
	common file commands and m4_require it before use:

	* libltdl/m4/libtool.m4 (_LT_FILEUTILS_DEFAULTS): Allow user to
	override some common file commands at configure time.
	(_LT_SETUP, _LT_CONFIG, _LT_COMPILER_OPTION, _LT_LINKER_OPTION)
	(_LT_COMPILER_C_O, _LT_COMPILER_FILE_LOCKS)
	(_LT_SYS_DYNAMIC_LINKER, _LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	(_LT_SYS_HIDDEN_DEPLIBS): m4_require it to ensure the commands are
	defined before they are called.

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

	* libltdl/m4/libtool.m4, libltdl/m4/ltdl.m4: AU_DEFUN doesn't pass
	arguments.  Use AU_ALIAS instead!

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

	* libltdl/config/ltmain.m4sh (func_lalib_unsafe_p) [osf]:
	Save file descriptor to original STDIN, and restore after
	redirection.  Fixes memory corruption with Tru64 and OSF sh.
	Reported by Nicolas Joly <njoly@pasteur.fr>.

2005-08-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>,
	    Peter Ekberg  <peda@lysator.liu.se>

	* tests/early-libtool.at: Fix goofed up make rules in
	previous commit.

	* tests/inherited_flags.at: Weaken for MSVC.
	* tests/early-libtool.at, tests/template.at: Fix for compiler
	that do not understand '-c -o'.

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

	* tests/standalone.at, tests/template.at: Do not compare
	output because of EOL issues.  Resolve warnings, make cross-
	compilation aware.
	Reported by Peter Ekberg <peda@axentia.se>.

	* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	(_LT_LINKER_SHLIBS): Double-quote unsafe tag variable
	descriptions: they are literals.

2005-08-25  Peter Ekberg  <peda@lysator.liu.se>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/standalone.at: (without autotools): Add
	$(CFLAGS) to LTCOMPILE and LTLINK. Separate compiling
	and linking. Remove compiling flags from link. Add
	--tag. Add -no-undefined flag.

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

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

	* libltdl/config/ltmain.sh (cwrappersource): return 127 if exec
	failed.

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

	* libltdl/m4/libtool.m4 (_LT_COMPILER_C_O): Send chmod warning to log.

	* tests/defs.m4sh (m4dir, auxdir, scripts): Fix for source tree
	reorganization.
	* tests/sh.test: Adjust.  Also barf on sed diagnostics so this
	test will not fail again silently.

	* libltdl/m4/ltdl.m4 (LT_SYS_SYMBOL_USCORE): Use _LT_EOF, not
	EOF.

	* tests/fcdemo/Makefile.am (suffix rules): Explicitly add
	$(FCFLAGS_f90) so the tests can pass on AIX.

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

	* libltdl/config/ltmain.m4sh (inherited_linker_flags): Work when
	output is an application too.
	Reported by Christopher Egger <Christoph_Egger@gmx.de>

2005-08-23  Stepan Kasal  <kasal@ucw.cz>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/m4/ltdl.m4 (LTDL_INIT): Use AH_HEADER if defined.
	Compute CONFIG_H only before creating config.status.
	Reported by Peter Ekberg <peda@axentia.se>.

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

	* Makefile.maint (web-manual): Fix $(LN_S) to use absolute path.
	Fix creating the manual for VPATH build.

	* bootstrap: Fix missing replace config -> $auxdir.  ltmain.m4sh
	is prerequisite to ltmain.sh.  Improve warning message.

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

	Reorganise the libtool tree to create a bootstrapped libltdl for
	installation to the libtoolize master tree, so that libltdl is
	useable even in the extreme case of when automake and autoconf are
	not installed on the developers machine.  Part of this change
	requires some duplication of rules between Makefile.am (which
	builds libltdl for this distribution) and libltdl/Makefile.am
	(which is used by projects that libltoolize --ltdl --copy), so
	libtool now really does use a single toplevel Makefile.am, and we
	generate libltdl/Makefile.am from that:

	* m4, config: Moved from here...
	* libltdl/m4, libltdl/config: ...to here, to reduce the amount of
	kludging needed in bootstrap for autoreconf to run.
	* tests/cdemo/Makefile.am, tests/demo/Makefile.am,
	tests/depdemo/Makefile.am, tests/f77demo/Makefile.am,
	tests/fcdemo/Makefile.am, tests/mdemo/Makefile.am,
	tests/mdemo2/Makefile.am, tests/pdemo/Makefile.am,
	tests/tagdemo/Makefile.am (ACLOCAL_AMFLAGS): Adjust to
	compensate.
	* tests/cdemo/configure.ac, tests/demo/configure.ac,
	tests/depdemo/configure.ac, tests/f77demo/configure.ac,
	tests/fcdemo/configure.ac, tests/mdemo/configure.ac,
	tests/mdemo2/configure.ac, tests/pdemo/configure.ac,
	tests/tagdemo/configure.ac (AC_CONFIG_AUX_DIR): Ditto.
	* libltdl/m4/ltdl.m4: Increment serial number.
	(LTDL_INIT): Accept an optional directory argument to prefix each
	of the LD_DLLOADERS locations.  Default to empty for backwards
	compatibility.
	* Makefile.maint: Adjust to compensate.
	* configure.ac (AC_CONFIG_AUX_DIR, AC_CONFIG_MACRO_DIR): Adjust.
	(AC_CONFIG_LIBOBJ_DIR): Set here so that we can build LTLIBOBJS
	from in a subdirectory from the amalgamated Makefile.am.
	(AM_PROG_CC_C_O, AM_INIT_AUTOMAKE): Use subdir-objects.
	(AC_CONFIG_FILES): Remove libltdl/Makefile.am.
	* libltdl/Makefile.am: Removed from repository, and merged into
	Makefile.am as we now generate it...
	* Makefile.am (libltdl/Makefile.am): ...from here, by extracting
	the merged rules, and tweaking paths to accomodate the difference
	in directory from Makefile.am to libltdl/Makefile.am.
	(nobase_dist_pkgdata_DATA): Automake generated installation rules
	change timestamps of installed files, so renamed this...
	(configauxfiles): ...to this...
	(libtoolize): ...substitute it...
	(install-data-local): ...install manually, preserving
	timestamps...
	(install-data-hook): ...and set execute bit as appropriate.
	(uninstall-hook): Not forgetting to remove them at uninstall.
	(libltdl/Makefile.in): New rule.  Called from...
	* bootstrap: ...here to avoid relying on config.status at
	bootstrap time.
	(auxdir, m4dir): Extract from configure.ac for ease of future
	maintenance.  Adjust all references.
	(reconfdirs): Call autoreconf for libltdl too -- even
	though we don't use it for the build, libltdl/configure and
	friends are installed with `libtoolize --ltdl --copy'.
	* libtoolize.m4sh: Add files from the installed config master tree
	to libtoolize --ltdl project subdirectory.
	Diagnose duplicated files when --ltdl is used in an autotooled
	project.
	It's perfectly fine to run `libtoolize --ltdl --copy' in a tree
	that has no configure.ac or configure.in; we want libltdl to be
	useful even to projects that don't use autotools themselves.
	(libtoolize_flags): Removed.  Changed all callers.
	(func_massage_pkgconfig_files): New function.
	* tests/standalone.at: New tests for using libltdl without
	supporting configury in the parent project.
	* tests/testsuite.at: Run them!
	* NEWS: Updated.

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

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS) [dumpbin]: Add
	forgotten end bracket.

	* doc/libtool.texi: Shorten the lines describing the
	output from MS dumpbin, and align the columns.

	* m4/libtool.m4: Bump serial number.
	(LT_PATH_NM): If nm is not found on the path, look for
	dumpbin. Then check if $NM responds as dumpbin would
	and if not, assume the name lister is BSD nm compatible.
	(_LT_CMD_GLOBAL_SYMBOLS): If the name lister uses the
	dumpbin interface, adjust the test to find a working
	global_symbol_pipe.
	* doc/libtool.texi: Document $NM to possibly be MS
	dumpbin compatible, and also document the format of the
	relevant output from MS dumpbin.

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

	* libltdl/Makefile.am: revert mistaken commit.

	* tests/template.at [darwin]: Some of these tests result in
	unresolved symbols on darwin, so don't run those test on that
	host!

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

	* m4/libtool.m4 (LT_OUTPUT): New macro to generate
	libtool before config.status.
	(_LT_CONFIG_COMMANDS): If LT_OUTPUT has been invoked, then
	generate code in config.status to call config.lt instead of
	generating libtool directly.
	* doc/libtool.texi (LT_INIT): Document LT_OUTPUT.
	* tests/early-libtool.at: New test.
	* Makefile.am (TESTSUITE_AT): Updated.
	* tests/testsuite.at: Updated.  Define defaults for $ACLOCAL,
	$AUTOCONF.

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

	* TODO: Actually updated now.

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

	* m4/libtool.m4 [sun, CC] (_LT_LANG_CXX_CONFIG): Move postdeps
	override ..
	(_LT_SYS_HIDDEN_LIBDEPS): ..here.
	* TODO: Updated.

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

	* config/general.m4sh (SP2NL, NL2SP): Simplify.

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

	* m4/ltdl.m4 (LTDL_INIT): Fix mismatched parens.

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

	* tests/inherited_flags.at: Store intermediate libtool output
	for better debugging.

	* tests/link-order.at: Add -no-undefined to LDFLAGS.

	* tests/convenience.at, tests/template.at: Change suffix of C++
	files to .cpp, for compatibility with MSVC.
	Reported by Peter Ekberg <peda@axentia.se>.

2005-08-12  Jeremie LE HEN  <tataz@sitadelle.com>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/libtool.texi (Creating object files, Linking libraries):
	Update description of library object (.lo) and libtoo library
	(.la) files.
	(all over): Replace MODE with --mode=MODE in examples.

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

	* config/ltmain.m4sh (func_source): New function.
	(func_mode_execute, func_mode_install, func_mode_link): Use it.
	Do not append a dot to a file name to source, it breaks on
	cygwin managed mounts and is not necessary anywhere.
	Reported by Eric Blake <ebb9@byu.net>.

	* config/ltmain.m4sh (func_execute_cmds): New function.
	(func_mode_finish, func_mode_install, func_mode_link)
	(func_mode_uninstall): Use it.

	* tests/defs.m4sh (func_configure): Rename to ..
	(func_configure_nofail): this, call from old.
	* tests/fcdemo-conf.test, tests/fcdemo-shared.test,
	tests/fcdemo-static.test: Use.  Do not fail gratuitously but
	SKIP on compilers that look like they could be Fortran 77-only.
	Reported by Patrick Welche <prlw1@newn.cam.ac.uk>.

	* config/ltmain.m4sh (mode): Do not initialize, for nicer error
	messages.

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

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

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

	* config/ltmain.m4sh (inherited_linker_flags): Backed out broken
	patch.

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

	* config/ltmain.m4sh (inherited_linker_flags): Work when output
	is an application too.
	Reported by Christopher Egger <Christoph_Egger@gmx.de>

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

	* m4/libtool.m4 (_LT_PROG_FC, _LT_LANG_FC_CONFIG): New macros
	for modern Fortran.
	(LT_LANG, _LT_LANG_DEFAULT_CONFIG, _LT_SYS_DYNAMIC_LINKER,
	_LT_SYS_HIDDEN_LIBDEPS): Adjusted.
	* tests/fcdemo-conf.test, tests/fcdemo-exec.test,
	tests/fcdemo-make.test, tests/fcdemo-shared.test,
	tests/fcdemo-static.test, tests/fcdemo/Makefile.am,
	tests/fcdemo/README, tests/fcdemo/configure.ac,
	tests/fcdemo/cprogram.c, tests/fcdemo/foo.h, tests/fcdemo/fooc.c,
	tests/fcdemo/foof.f90, tests/fcdemo/foof2.f90,
	tests/fcdemo/foof3.f90, tests/fcdemo/fprogram.f90: New tests for
	Fortran.
	* tests/convenience.at: Extended.
	* Makefile.am, configure.ac: Adjusted.
	* NEWS: Updated.

	* AUTHORS, HACKING: Updated.

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

	* config/ltmain.m4sh (func_mode_link): Ignore errors from expr
	when determining if piece-wise linking should be done.

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

	* config/ltmain.m4sh (func_mode_link) <cwrappersource>: Add
	missing bit from Christoph's patch.

	* m4/libtool.m4 (_LT_LINKER_HARDCODE_LIBPATH, _LT_LINKER_SHLIBS)
	(_LT_LANG_CXX_CONFIG): Comment typos.

2005-08-04  Christoph Egger  <Christoph_Egger@gmx.de>

	* config/ltmain.m4sh (func_mode_link) <cwrappersource>: Change
	basename() to base_name() and have it return a pointer to const,
	fix compilation warnings.

2005-07-30  Peter Ekberg  <peda@lysator.liu.se>

	* m4/libtool.m4 (_LT_PROG_F77): Set it up so that saying F77=no
	to configure disables the fortran tests in the testsuite.

2005-07-29  Richard Moseley  <dickie.moseley@virgin.net>

	* m4/ltdl.m4 (LTDL_INIT): Handle in addition the new name for
	AC_LIST_HEADERS which is _AC_LIST_TAGS.

2005-07-28  Peter Ekberg  <peda@lysator.liu.se>

	* libltdl/Makefile.am: Make the LTDLOPEN define controllable
	from the configure script.
	* m4/ltdl.m4 (LTDL_INIT): Set the LTDLOPEN define according
	to libname_spec.

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

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

	* tests/demo-noinst-link.test: $make is empty on MSYS, replace
	with $MAKE. Makes the test pass for MinGW.

	* config/ltmain.m4sh (func_generate_dlsyms): Properly remove
	the fake symbol line ": @PROGRAM@ " from the list of exported
	symbols.

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

	* config/ltmain.m4sh (func_mode_link) <lib>: Make sure
	skipped_export is set to colon if _some_ cmd of
	export_symbols_cmds is too long.

	* libltdl/ltdl.c: The linker is confused by having one
	definition of lt_libltdlc_LTX_preloaded_symbols tagged with
	__declspec(dllexport) in ltdl.c and one definition with an
	initial value in libltdlcS.c. So, just say extern in ltdl.c.
	Fixes the mdemo-exec.test for MinGW.

	* config/ltmain.m4sh (func_mode_link) <lib>: Zap duplicate
	message "creating reloadable object files..."

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

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

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

	* m4/libtool.m4 (_LT_CHECK_XSI_SHELL): Fix bogus merge.
	Reported by Patrick Welche <prlw1@newn.cam.ac.uk>.

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

	* libltdl/Makefile.am (libltdl_la_DEPENDENCIES): Depend on
	$(BUILT_SOURCES) as well, so that argz.h gets created through
	`make libltdlc.la'.
	Reported by Sven Verdoolaege <skimo@liacs.nl>.

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

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

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

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

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

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

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

	* m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Quieten configure
	output for corner cases on some BSDs.
	(LT_CMD_MAX_LEN): Another comment cleanup.

	* config/ltmain.m4sh (func_extract_archives, func_mode_install),
	m4/libtool.m4 (_LT_SETUP, _LT_SYS_DYNAMIC_LINKER, LT_PATH_LD)
	(_LT_PATH_LD_GNU, _LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG):
	Comment language, indentation, and backquote cleanup.
	* THANKS: Updated.

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

	* tests/inherited_flags.at: Use -no-undefined.
	Reported by Chris Oxenreider <oxenreid@state.net>

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

	* config/ltmain.m4sh (func_mode_compile, func_mode_link),
	m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH, _LT_ENABLE_LOCK):
	Remove some unnecessary quotes.

	* tests/convenience.at <GCJ>: Fix java test.
	Reported by Eric Blake <ericblake@comcast.net>.

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

	* config/ltmain.m4sh (func_mode_link) <shell wrapper>: Handle
	spaces in paths to executed programs.  Quote path in error message.

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

	* THANKS: Updated.

2005-06-28  Stepan Kasal  <kasal@ucw.cz>

	* clcommit.m4sh: "grep|sed" can be replaced by mere "sed".
	* m4/libtool.m4 (_LT_LIBTOOL_TAGS): Remove unnnecessary "[]".
	* m4/lt~obsolete.m4: Use m4_ifndef.

2005-06-27  Stepan Kasal  <kasal@ucw.cz>

	* m4/ltsugar.m4 (lt_combine, _lt_combine): Fix default separator.

	* m4/ltoptions.m4 (_LT_UNLESS_OPTIONS, _LT_SET_OPTIONS): Replace
	AC_FOREACH by a combination of m4_foreach/m4_split/m4_normalize.

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

	* m4/ltoptions.m4 (_LT_SET_OPTIONS): Remove unnecessary workaround
	for CVS Automake bug (fixed).
	Reported by Stepan Kasal <kasal@ucw.cz>.

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

	* conig/ltmain.m4sh [darwin]: Accept -arch flag.

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

	* m4/libtool.m4 (_LT_COMPILER_BOILERPLATE, _LT_LINKER_BOILERPLATE):
	New macros: save warnings and boilerplate of simple compile/link
	tests.
	(_LT_LANG_C_CONFIG, _LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG)
	(_LT_LANG_GCJ_CONFIG, _LT_LANG_RC_CONFIG): Call.
	(_LT_COMPILER_OPTION, _LT_LINKER_OPTION, _LT_COMPILER_C_O, ):
	Fail only if nonempty warnings different from default
	compile/link.

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

	* m4/ltsugar.m4 (lt_car, lt_cdr): New macros, clones of
	m4_car/m4_cdr with the fixed semantics of Autoconf-2.59c CVS, in
	order to work with 2.59.
	(lt_combine): Use it.
	Reported by Christoph Egger <Christoph_Egger@gmx.de>.

2005-06-11  Ralf Menzel  <menzel@ls6.cs.uni-dortmund.de>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/ltoptions.m4 (_LT_SET_OPTIONS): Loop options only if
	nonempty.
	* m4/ltsugar.m4 (lt_combine): Don't test against empty quotes,
	test against empty arg.  Fixes infinite m4 loop with CVS
	Autoconf.

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

	* m4/libtool.m4 (_LT_COMPILER_OPTION, _LT_LINKER_OPTION): No
	need for $ECHO here.  Fix sed script syntax to be portable.
	This should now put the pic-flag right after the last $*FLAGS
	variable again, if any.  Necessary for Fortran AC_FC_SRCEXT.

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

	* m4/libtool.m4 (_LT_CONFIG_COMMANDS): Remove long lines.

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

	* m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS,
	_LT_LANG_CXX_CONFIG): PGI also has pgf95.  PGI static flag is
	`-Bstatic'.  Remove harmless extra comma from whole_archive
	output.

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

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

2005-06-01  Olly Betts <olly@survex.com>  (tiny change)

	* libltdl/argz.c (argz_create_sep): Fix typo.

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

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

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

	* THANKS: Updated.

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

	* m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG) [aix]:
	Fix wrong $ECHO use overlooked in 2005-04-27.  Simplify slightly.

	* m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS,
	_LT_LANG_CXX_CONFIG) [linux]: PGI:
	Add $pic_flag to archive_cmds and archive_expsyms_cmds.
	Bug reported against LAM by Troy Telford <ttelford@lnxi.com>.

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

	* THANKS: Updated.

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

	* libltdl/m4/ltdl.m4 (LT_WITH_LTDL): Propogate ltdl directory.

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

	* Makefile.am (stamp-vcl): Use `diff' instead of `cmp'.

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

	Revert the parallel installation changes from November last year:

	* libtoolize.m4sh (pkgdatadir, aclocaldir): Substituted from
	configure.
	(func_copy_all_from_path): Removed.  No longer used.
	(func_copy_some_files): Simplify now that nothing is copied from a
	list of possible directories now.
	(func_scan_files): Remove directory readability check...
	(func_nonemptydir_p): ...in favour of a dedicated sanity check
	function called from the main body.
	(_lt_pkgvdatadir): Set pkgdatadir and aclocaldir appropriately if
	this is in the environment.
	* configure.ac: Tests for `ln' removed.
	(APIVERSION): Removed.
	* Makefile.am (pkgvdatadir, nobase_dist_pkgvdata_DATA)
	(nobase_pkgvdata_DATA): Renamed to...
	(pkgdatadir, nobase_dist_pkgdata_DATA, aclocalfiles): ...these
	respectively.
	(edit): Adjust for new variable names.
	(install-data-local): Don't bother to remove old macro files that
	will be overwritten by the installation, and perform a manual
	installation of $(aclocalfiles) to preserve timestamps.
	(install-exec-hook): Removed.  No need to make versioned links.
	(uninstall-hook): No need to remove versioned links, but now we
	need to manually remove the manually installed $(aclocalfiles).
	* doc/libtool.texi: Remove bogus notes about setting
	ACLOCAL_AMFLAGS for versioned libtool installations.
	* NEWS: Remove parallel installation item.

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

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

	* HACKING: Updated.

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

	* tests/convenience.at: Actually add.

	* tests/convenience.at: New.  Test convenience archives.
	* Makefile.am, tests/testsuite.at: Adjust.
	* tests/testsuite.at: Reorder tests.  Suspend AT_TESTED.
	(PREPARE_TESTS): Define EGREP, host, build, LIBTOOL.
	(LT_AT_BOOTSTRAP): Fail if autoreconf fails.
	(LT_AT_EXEC_CHECK): New macro for execution of $build binaries.
	(LT_AT_TAG): New macro to test tag availability or skip test.
	* tests/am-subdir.at, tests/duplicate_members.at,
	tests/inherited_flags.at, tests/link-order.at,
	tests/stresstest.at, tests/template.at: Adjust.  Use LT_AT_TAG,
	LT_AT_EXEC_CHECK, AT_KEYWORDS. Use compiler/linker flags
	consistently.
	* tests/link-order.at: Fix use of AT_DATA, bogus redirection
	inside AT_CHECK.
	* tests/stresstest.at: Do not use wildcards/regex in symbol files,
	they are not portable.  Use -no-undefined on win32.  Fix to ignore
	compile/link warnings.

	* tests/f77demo/foo.h, tests/f77demo/fooc.c,
	tests/f77demo/cprogram.c, tests/mdemo2/main.c, tests/pdemo/foo.h:
	Make declarations available.

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

	* tests/defs.m4sh (func_configure): Don't run the whole configure
	script with -x.

	* config/ltmain.m4sh: Audit use of echo vs $ECHO.
	Reported by Robert Ögren <lists@roboros.com> and others.

	* TODO: Updated.

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

	* HACKING, THANKS: Updated.

2005-04-25  David Edelsohn  <dje@watson.ibm.com>

	* m4/libtool.m4 (_LT_LINKER_SHLIBS): _LT_TAGDECL(file_list_spec).
	* config/ltmain.m4sh (func_mode_link): Change $filelist to
	$output.

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

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

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

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

	* m4/libtool.m4: Audit use of echo vs $ECHO.
	* TODO: Update.
	Reported by Robert Ögren <lists@roboros.com> and others.

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

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

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

	* Makefile.am, HACKING: Use lt__cd throughout.

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

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

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

	* libtoolize.m4sh (func_scan_files, func_serial,
	func_ltmain_update, func_config_update, func_install_update):
	Placate AIX sed.

2005-04-19  David Edelsohn  <dje@watson.ibm.com>

	* config/ltmain.m4sh (func_mode_link): If command exceeds
	max_cmd_len and file_list_spec exists, write list of input files
	to temporary file.
	* m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
	[aix4,aix5]: Define file_list_spec.

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

	* tests/demo-hardcode.test: Fix typo.

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

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

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

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

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

	* libtoolize.m4sh (func_copy_cb): Fix syntax typo.

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

	* m4/libtool.m4 (_LT_LANG_GCJ_CONFIG): Add old_archive_cmds
	definition.

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

	* m4/libtool.m4 (_LT_CC_BASENAME): New macro to figure out
	$cc_basename.  Skip ccache, distcc, purify, cmdline options,
	`$host_alias-' prefix.
	(_LT_SETUP, _LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG)
	(_LT_LANG_GCJ_CONFIG, _LT_LANG_RC_CONFIG): Use.
	* NEWS, TODO: Update.

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

	* libltdl/configure.ac (AC_OUTPUT): loaders/Makefile is no longer
	used.

	* Makefile.am (lt__cd, CD_TESTDIR): New make macros to work around
	problems with CDPATH in some shells.
	(check-local, installcheck-local, clean-local): Use them.

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

	* bootstrap: Define srcdir for making `commit'.

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

	* config/ltmain.m4sh (link mode): Add to tmp_libs paths for
	libtool dep libs in reverse order as well.
	* Makefile.am, tests/testsuite.at, tests/link-order.at: New test.

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

	Since the bootstrap process requires that several of the rules for
	files generated in doc and tests already lived in
	$top_srcdir/Makefile.am, along with proxy rules in sub-Makefiles,
	this changeset consolidates almost everything into the top
	Makefile.am, simplifying things considerably:

	* doc/Makefile.am, tests/Makefile.am: Removed.  All rules moved...
	* Makefile.am: ...to here and adjusted to run from $top_builddir.
	Some reformatting to group rules and declarations by purpose, and
	simplify with respect to removing much of the make recursion.
	Add `doc/PLATFORMS', `doc/fdl.texi' and `doc/notes.texi'.
	`defs.in' and `defs.m4sh' are in directory `tests'.
	(uninstall-hook): Don't forget to uninstall libtoolize's libltdl
	source tree.
	* bootstrap: Simplified dirty makefile management, and bootstrap
	file creation in light of having only a single pertinent
	Makefile.
	* configure.ac (CONF_SUBDIRS): Add tests/ prefix to each subdir to
	compensate.
	(DIST_MAKEFILE_LIST): Adjust.
	(AC_CONFIG_FILES): Remove doc/Makefile and tests/Makefile.
	* tests/defs.m4sh (LIBTOOL, scripts): Adjust paths.
	* tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/cdemo-undef.test,
	tests/demo-conf.test, tests/demo-deplibs.test,
	tests/demo-exec.test, tests/demo-hardcode.test,
	tests/demo-inst.test, tests/demo-make.test,
	tests/demo-nofast.test, tests/demo-noinst-link.test,
	tests/demo-nopic.test, tests/demo-pic.test,
	tests/demo-relink.test, tests/demo-shared.test,
	tests/demo-static.test, tests/demo-unst.test,
	tests/depdemo-conf.test, tests/depdemo-exec.test,
	tests/depdemo-inst.test, tests/depdemo-make.test,
	tests/depdemo-nofast.test, tests/depdemo-relink.test,
	tests/depdemo-shared.test, tests/depdemo-static.test,
	tests/depdemo-unst.test, tests/f77demo-conf.test,
	tests/f77demo-exec.test, tests/f77demo-make.test,
	tests/f77demo-shared.test, tests/f77demo-static.test,
	tests/link-2.test, tests/link.test, tests/mdemo-conf.test,
	tests/mdemo-dryrun.test, tests/mdemo-exec.test,
	tests/mdemo-inst.test, tests/mdemo-make.test,
	tests/mdemo-shared.test, tests/mdemo-static.test,
	tests/mdemo-unst.test, tests/mdemo2-conf.test,
	tests/mdemo2-exec.test, tests/mdemo2-make.test, tests/nomode.test,
	tests/objectlist.test, tests/pdemo-conf.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/pdemo-make.test, tests/quote.test, tests/sh.test,
	tests/suffix.test, tests/tagdemo-conf.test,
	tests/tagdemo-exec.test, tests/tagdemo-make.test,
	tests/tagdemo-shared.test, tests/tagdemo-static.test,
	tests/tagdemo-undef.test, tests/tagtrace.test (func_cd,
	func_require): Adjust paths.

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

	* config/general.m4sh, libtool.m4 (_LT_SETUP), tests/defs.m4sh,
	tests/functests.at: Fix definition of $Xsed.

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

	Improved Portland support: prelinking of C++ templates and
	whole_archive.

	* m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS) [linux]:
	Reinstate formatted whole_archive_flag_spec for PGI compilers.
	* config/ltmain.m4sh (func_mode_link), m4/libtool.m4
	(_LT_LINKER_SHLIBS): New tag prelink_cmds, to be executed before
	linking a program.
	(_LT_LANG_CXX_CONFIG) [linux]: Use for pgCC.
	(_LT_COMPILER_C_O): conftest might be nonempty, clean up more
	thoroughly.

	* tests/testsuite.at (LT_AT_BOOTSTRAP): Temporary fix for testing
	in-tree libtoolize.

	* m4/libtool.m4 (_LT_CONFIG_COMMANDS): Only call sed if
	necessary while quoting all libtool variables.
	Reported by Robert Ögren <lists@roboros.com>.

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

	* tests/Makefile.am: Typo.

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

	* notes.texi: Platform-specific configuration notes.
	* doc/libtool.texi: Include as section.
	* bootstrap, doc/Makefile.am: build also as notes.txt and
	distribute.

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

	Under certain circumstances, not all of the macro files were
	copied into the destination directory.  This changeset fixes
	that bug:

	* libtoolize.m4sh (func_serial_update):  Renamed local variable
	`my_update_p' to `my_serial_update_p', and initialise it correctly
	even when the destination file is not yet there.
	Reported by Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

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

	* tests/libtoolize.at: New tests for basic libtoolize
	functionality and reporting.
	* tests/testsuite.at: Call them.
	* tests/Makefile.am: Distribute them.

	* libtoolize.m4sh (pkgvdatadir): Renamed from this...
	(_lt_pkgvdatadir): ...to this.
	* tests/testsuite.at (LT_AT_LIBTOOLIZE): The `-I' option is no
	longer supported by libtoolize.  Set _lt_pkgvdatadir in the
	environment of the invocation instead.

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

	* tests/template.at: New Autotest tests for C++ with templates.
	First test provided by
	Markus Christen	<markus@igc.phys.chem.ethz.ch>.
	* tests/Makefile.am, tests/testsuite.at: Use and distribute.

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

	* libtoolize.m4sh (func_serial_update): Replace missing
	destination serial calculation line, presumably lost due to a bad
	merge.

	* libltdl/loaders/Makefile.am: Removed actually.

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

	Getting the value of ltdldatafiles from a submake was not
	portable, and had problems with GNU make-3.80 at least.  This
	changeset pulls the installation rules for libtoolize's copy of
	the libltdl sources out of libltdl/Makefile.am so that
	ltdldatafiles is defined in the same Makefile that uses it.  Also,
	this makes a start at cleaning up libltdl/Makefile.am so that it
	is useful in a package that uses `libtoolize --ltdl':

	* libltdl/loaders/Makefile.am: Removed entirely.
	* libltdl/Makefile.am (dlopen.la, dld_link.la, dyld.la)
	(load_add_on.la, loadlibrary.la, shl_load.la): All built from here
	now that the loaders submake has gone.
	(show-ltdldatafiles): Removed.  No longer required.
	(ltdldatadir, ltdldatafiles, install-local): Moved from here...
	* Makefile.am (ltdldatadir, ltdldatafiles, install-local): ..to
	here.
	(libtoolize): Substitute $(ltdldatafiles) directly without calling
	make to get the value from libltdl/Makefile.

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

	* Makefile.am (libtoolize): Substitute $(nobase_pkgvdata_DATA).
	pkgvmacro_DATA is no longer set in the makefile.
	* libtoolize.m4sh (func_massage_pkgvmacro_DATA): Use it and, for
	consistency, renamed from this...
	(func_massage_nobase_pkgvdata_DATA): ...to this.  Adjust all
	callers.

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

	Fix problems with serial comparison sed scripts, and factor out
	common code from similar serial comparison functions:

	* libtoolize.m4sh (func_keyword_update): Common code factored out
	of func_ltmain_update and func_config_update.
	(func_ltmain_update, func_config_update): Adjust, and fix sed
	expressions to not use unportable ? modifier.
	(func_install_update): New serial number based file updater keyed
	off 'scriptversion' variable in install-sh.  Adjust all callers.

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

	Most of the hair introduced ostensibly to enable testing of
	uninstalled libtoolize isn't necessary if we allow overriding of
	the libtool master copy directory:

	* configure.ac (pkvmacrodir): No need to substitute this.
	* Makefile.am (edit): No need to substitute pkgvmacrodir.
	(dist_pkgvdata_DATA): Use nobase_ prefix so that these files are
	installed to $(pkgvdatadir)/config.
	(pkgvmacro_DATA): Renamed to...
	(nobase_pkgvdata_DATA): ...this, so that files are installed to
	$(pkgvdatadir)/m4.
	(install-data-hook): Adjust.
	* libtoolize.m4sh: Remove -I processing.
	(func_filename_path_search): No longer required without -I.
	Adjust all callers.
	(pkgvltdldirs, pkgvmacrodirs): Deleted.
	(pkgvdatadir): Allow overriding from the environment so that we
	can write tests for uninstalled libtoolize.
	(func_serial_update, func_ltmain_update, func_config_update):
	Rename srcdirs parameter to srcdir, and don't call the path_search
	function anymore.  Adjust all callers.
	(--install): Don't blindly copy all config files.

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

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

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

	* m4/libtool.m4 (_LT_LANG_GCJ_CONFIG, _LT_LANG_RC_CONFIG):
	Set $cc_basename.

	* HACKING: echo vs $ECHO.

2005-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)

	* doc/libtool.texi: Minor formatting cleanups.

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

	* libtoolize.m4sh: Propogate --debug flag to sub-libtoolizes.

	* libtoolize.m4sh: Fix a typo, s/pkgvltdldirs/pkgvdatadirs/.
	When using -I to test an uninstalled libtoolize, we need to add
	the config subdirectory to the search path so that ltmain.sh can
	be found in the source tree.

	* libtoolize.m4sh (func_copy_some_files): IFS needs to be set to
	path delimiter for all inner loop iterations.
	Once a matching file has been copied, no need to keep searching
	the path for another -- move on to the next file!

	* libtoolize.m4sh: For verbose mode, explain why macro files are
	not installed without an AC_CONFIG_MACRO_DIR declaration.

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

	As a prerequisite for being able to test an uninstalled libtoolize
	for copying files correctly from the source tree, we must know
	exactly which files should be copied by the --ltdl option to avoid
	accidentally picking up compilation objects and other noise when
	$builddir == $srcdir:

	* libltdl/loaders/Makefile.am (ltdldatadir, ltdldatafiles)
	(install-data-local): Removed...
	* libltdl/Makefile.am (ltdldatafiles): ...and consolidated here.
	(show-ltdldatafiles): New rule...
	* Makefile.am (ltdldatafiles, libtoolize): ...used to substitute
	exactly which files are installed by libtoolize --ltdl.
	(edit): Move pkgvmacro_DATA substitution expression...
	(libtoolize): ...to here.
	* libtoolize.m4sh: Use func_copy_some_files() instead of
	func_copy_all_from_path() to copy the --ltdl option installed
	files.
	(pkgvltdldirs): New path variable to search for	files installed by
	--ltdl option.
	(func_massage_pkgvltdl_files): New function to calculate the list
	of ltdl installation files.

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

	* m4/libtool.m4, m4/ltdl.m4: Indentation and quoting cleanup.

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

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

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

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

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

	* TODO: Update.

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

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [irix5, irix6, nonstopux]:
	Test if it is possible to use the -exports_file linker option on
	irix with gcc, as the gcc specs file may include a -hidden_symbol
	option that is clashing with the -exports_file option.
	See this gcc bugzilla entry for further details:
	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15288
	* THANKS: Update.

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

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

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

	* config/ltmain.m4sh, tests/defs.m4sh: Typos.

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

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

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

	* Makefile.am: tests/defs.in depends on config/general.m4sh.

	* config/general.m4sh: unconditionally set IFS, and set it
	to the one true right sequence: space, tab, newline.
	* m4/libtool.m4: remove IFS setting and as_* namespace
	infringement.

	* m4/libtool.m4 (_LT_CONFIG): Reset IFS to fix failure with ash.

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

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

	* libltdl/configure.ac: Update version; require Autoconf >= 2.59.

	* bootstrap: Allow to override tools.

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

	* libtoolize.m4sh (func_massage_pkgvmacro_DATA): New function
	to calculate the macro filenames to be copied by libtoolize.
	* Makefile.am (edit): Substitute pkgvmacro_DATA.

	* bootstrap: Need to generate tests/package.m4 from Makefile.am
	before generating tests/testsuite from tests/Makefile.am, or
	else bootstrap of a fresh checkout fails.

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

	* m4/libtool.m4 (_LT_COPYING): Update Copyright year.

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

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

	* configure.ac: stamp-vcl is in $top_srcdir, not $top_builddir.

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

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

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

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

	* config/ltmain.m4sh (func_mode_link): Reword double negation in
	error message.
	Reported by Jesper Louis Andersen <jlouis@mongers.org>.

	* bootstrap: really remove bogus files Makefile tests/Makefile.

	* doc/libtool.texi: Replace wicked whiches by thats or other
	better-sounding constructs.

2005-03-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)

	* tests/Makefile (clean-local): Ignore testsuite cleanup
	failures.

2005-03-11  Per Bothner  <per@bothner.com>  (tiny change)

	* tests/Makefile (clean-local): Only run the testsuite cleanup
	if the testsuite has been generated.

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

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

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

	* libltdl/Makefile.am: $(builddir) is not defined, replace by
	`.'.

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

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

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

	* tests/stresstest.at: Remove multiple variable definition.

	* TODO: Update.

	* THANKS: Update.

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

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

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

	In branch-2-0 (and in time, others) ltversion.m4 has a dot
	delimited serial number that didn't used to be processed
	correctly by libtoolize.  This changeset fixes that, and
	leverages those changes to check versions of ltmain.sh and
	config.sub, config.guess before overwriting when --force is
	not given:

	* libtoolize.m4sh: Don't overwrite pkgaux files with --force
	unless --install is given too.
	(func_serial): Fix underquoting in regexp.
	(func_serial_max): New function to compare serial numbers.
	(func_serial_update_check): New function factored out of
	func_serial_update().
	(func_serial_update): Bail if SRCFILE is missing.
	Don't display both 'already up to date' and 'use --force to
	update' messages for the same file.
	Use func_serial_max to cope with `.' delimited serial numbers.
	(func_ltmain_update): Use func_serial_update_check and
	func_serial_max to do version checking with $package_revision.
	(func_config_update): Ditto with $timestamp.

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

	* libltdl/Makefile.am (install-data-local):  cd to $(srcdir)
	before tarring up the files for installation to
	$(DESTDIR)$(ltdldatadir).  Don't remove the destination directory,
	since that interacts badly with the multi-Makefile installation.
	* libltdl/loaders/Makefile.am (install-data-local): Ditto.

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

	I assume that it is okay to have undefined symbols in convenience
	libraries that will be used as modules -- the pic objects are
	built normally, and are not expected to resolve all their symbols
	until they are linked into a library; convenience libraries are
	then rolled using 'ar' and 'ranlib' (or equivalent) which also do
	not check whether symbols are resolved.  We now build each of the
	loaders as a convenience library module under these assumptions,
	and link libltdl.la with selected modules, at which time all of
	the symbols *are* resolved:

	* TODO: Remove item addressed by this changeset.
	* libltdl/Makefile.am (lib_LTLIBRARIES): Remove libdlloader.la.
	(libdlloader_la_SOURCES): Declaration removed.  Changed all
	clients.  Source files..
	(libltdl_la_SOURCES): ...added back in here.
	(libdlloader_LDFLAGS, libdlloader_la_LIBADD): Removed.
	(libltdl_la_LIBADD): Remove libdlloader.la; add $(LTLIBOBJS).
	* libltdl/loaders/Makefile.am: Removed all references to
	libdlloader.la.

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

	* libtoolize.m4sh (func_copy): Split arguments to func_copy_cb
	calls across lines so that quote.test doesn't misdiagnose nested
	quotes.

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG, _LT_COMPILER_PIC):
	Fix some typos -- s/_LT_AC_TAGVAR/_LT_TAGVAR/g.

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

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

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

	* libltdl/Makefile.am (install-data-local): Don't forget about
	$(DESTDIR).
	* libltdl/loaders/Makefile.am (install-data-local): Ditto.

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

	Preserving the installed timestamps for libltdl sources from
	`libtoolize --ltdl --copy' is pointless if they are not preserved
	from the libtool source tree at install time:

	* libltdl/Makefile.am, libltdl/loaders/Makefile.am
	(nobase_ltdldata_DATA): Renamed to...
	(ltdldatafiles): ...this.
	(install-data-local): New rule to install libltdl tree with tar to
	preserve timestamps.

2005-02-23  Christoph Egger  <Christoph_Egger@gmx.de> (tiny change)

	* config/ltmain.m4sh (func_mode_link): Add -pthread like flags to
	inherited_linker_flags.

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

	* libtoolize.m4sh (func_copy_cb): self.leg->shoot_off() :-/
	Let's not redirect stdout to null when sending tar output to a
	pipe.

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

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

	* libtoolize.m4sh (TAR): New default tar command.
	(func_copy_cb): Move the core copying internals to here, using
	$TAR to transfer files if possible when --copy was specified.
	(func_copy): Adjust to call func_copy_cb.
	* TODO: Remember to refactor this fix in due course.
	Reported by Jeff Squyres <jsquyres@lam-mpi.org>

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

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

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

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

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

	* config/ltmain.m4sh (func_mode_link): Allow five digits in
	version-info.

	* NEWS: s/Linux/GNU &/.

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

	* tests/Makefile.am, tests/testsuite.at, tests/stresstest.at:
	New test.  Stresses several combinations of link flags and
	path specifications.  Uses several data types to test linkage
	against symbols in all kinds of (e.g., ELF) sections.

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

	* config/ltmain.m4sh (func_generate_dlsyms): Fix broken subdir
	path computation, exposed by using `-dlopen self'.  Fix broken
	sed script exposed by additionally using `-export-symbols FILE'.

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

	* THANKS: Update.

	* THANKS: Update.

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

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

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

	* config/getopt.m4sh (func_version, func_usage, func_help):
	Exit with nonzero status on write failures.
	* config/ltmain.m4sh (func_mode_help, func_config, func_features):
	Ditto.

	* tests/sh.test: Check for preferred function definition layout.

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

	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
	[pw32, freebsd3.[01], freebsdelf3.[01]]:  Fix [] quoting.  Should
	fix various spurious failures.
	(_LT_LINKER_SHLIBS) [linux with GNU ld < 2.11, aix4.[012]*]:
	Ditto.
	(_LT_LANG_CXX_CONFIG) [aix4.[012]*, freebsd[12], solaris2.[0-5]]:
	Ditto.
	(_LT_LANG_GCJ_CONFIG): Ditto.

	* tests/Makefile.am: Add `atconfig' to DISTCLEANFILES.

	* clcommit.m4sh: Test whether the shell understands `read -r'.
	Use as `$read_r' if available, so `\' is preserved in commit
	notices.

	* HACKING (Editing `.m4sh' Files): Document preferred function
	header layout.
	* config/ltmain.m4sh (func_win32_libid, func_infer_tag)
	(func_generate_dlsyms, func_extract_an_archive)
	(func_extract_archives): Adjust to fit.

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

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Unicos 9 sed rejects
	empty parentheses as in 's/x\(\)/\1/'.
	(_LT_COMPILER_PIC) [unicos*]: wl=-Wl,.
	* tests/sh.test: Not all sed's like '/.*\n.*/' (Unicos 9 sed
	loops endlessly).

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

	* tests/quote.test: Check for `--no-reexec' in $1 to avoid one
	reexec.

	* m4/libtool.m4 (_LT_COMPILER_C_O): _LT_TAGDECL(lt_compiler_c_o),
	not _LT_DECL, since this is tag-dependent.

	* config/ltmain.m4sh, m4/libtool.m4: Change `( cmd ) 2>/dev/null'
	to  `{ cmd; } 2>/dev/null', when cmd has no side effects and might
	be a builtin.  Note that it is unspecified whether cmd will run
	within a subshell (e.g. Bourne shells) or within the current shell
	(most modern shells).

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

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

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

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

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

	* NEWS, m4/libtool.m4, config/ltmain.m4sh [dragonfly]:
	Add support for DragonFly.

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

	* m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Work around pdksh
	positional parameter expansion bug.

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

	* config/ltmain.m4sh: Fix endless loop in cmdline parsing.

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

	* config/ltmain.m4sh (func_mode_link) [irix]: Preserve processor
	option for SGI Compiler (-r[0-9][0-9]*).

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

	* m4/libtool.m4 (_LT_PROG_XSI_SHELLFNS): Define Bourne and XSI
	variants of new function func_stripname for stripping literal
	prefixes and suffixes.
	* config/ltmain.m4sh (all over): Use func_stripname.

	* tests/defs.m4sh: Extract $build from $LIBTOOL.
	(func_configure): Pass --host if $host != $build.
	(func_exec): Try executing cross-compiled binaries (e.g. i686 ->
	i386), but SKIP rather than FAIL.
	* tests/depdemo-relink.test: Do not try to access possibly non-
	existent files.  SKIP rather than FAIL or PASS falsely when
	cross-compiling.

	* m4/libtool.m4 (_LT_SETUP) [mingw, cygwin, pw32, os2]:
	Add _LT_DECLs for host_os, build_alias, build and build_os.
	host_os and build were used in a few occasions in ltmain.m4sh
	and affect above-mentioned systems, the others are added for
	symmetry and in order to be able to detect cross-compiling.

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

	* libltdl/Makefile.am: Add $(AM_LDFLAGS) to all per-target
	variables *_LDFLAGS as per CVS Automake semantic change.

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

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

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

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

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

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

	* TODO: Update.

	* libltdl/ltdl.c: Whitespace cleanup.

	* config/ltmain.m4sh: New option `--verbose'/`-v' to enable
	override of `--silent'.  Verbose is the default behavior.
	* doc/libtool.texi (Invoking libtool): Document it.

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

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

	* libltdl/libltdl/lt__glibc.h: Move all exported slist
	symbols into the lt__* namespace.
	* libltdl/libltdl/lt__private.h, libltdl/libltdl/slist.h:
	Adjust includes.

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

	* config/ltmain.m4sh (func_mode_link): Fix
	inherited_linker_flags so it puts it on the link line when
	linking shared libraries as well as when linking executables.
	* tests/inherited_flags.at: test inherited_linker_flags.
	* tests/Makefile.am: Add test.
	* tests/testsuite.at: Add test.
	Reported by: Albert Chin-A-Young <china@thewrittenword.com>

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

	* tests/sh.test: After `set dummy [...]', check for `shift'
	within the same and following line.
	* config/ltmain.m4sh (func_enable_tag, func_mode_install)
	(func_mode_link): Sprinkle `shift's all over to conform to this.

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

	* HACKING (Editing 'ChangeLog'): Follow the GCS with respect to
	attributions, and mention how to handle tiny changes.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>.

	* ChangeLog.2004: Trim 2005 entries.
	* ChangeLog: Add missing entries.

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

	* ChangeLog: Move 2004 change logs from here...
	* ChangeLog.2004: ...to here.

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

	* ChangeLog: Reformatting.
	* HACKING: Fix section numbering.
	(Editing 'ChangeLog'): New notes on ChangeLog entry format.

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

	* tests/am-subdir.at tests/testsuite.at (AT_BOOTSTRAP,
	AT_LIBTOOLIZE, AT_CHECK_LIBTOOLIZE): Rename to ...
	(LT_AT_BOOTSTRAP, LT_AT_LIBTOOLIZE, LT_AT_CHECK_LIBTOOLIZE):
	...and make use of new names.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* config/ltmain.m4sh (func_extract_archives)
	(func_extract_an_archive): On darwin, uniq can not take the flags
	-cd together, thanks to Ralf for the fix, also ar does not accept
	N, so we use the fact that ar x libfoo.a foo.o will always extract
	the first foo.o in the archive and we then delete foo.o from the
	archive, which will also delete only the first foo.o, then rinse
	and repeat. Also add markers for the testuite.
	* m4/libtool.m4 (_LT_CONFIG): Add a marker so that we can use a
	sed expression to find the shell functions in libtool.
	* tests/functests.at: Test this feature.
	* tests/testsuite.at: Add the test.
	* tests/Makefile.am: Add the test.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2004-12-12  Patrick Welche <prlw1@newn.cam.ac.uk>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	In this case, notinst_deplibs is empty, and when the wrapper
	script is loaded by libtool during ./libtool mode=install, there
	is a check for "is notinst_deplibs empty".  In this case, it is,
	so libtool reports an error.

	I don't think it is wrong to have a wrapper script for an exe that
	*technically* doesn't need it.  But instead of checking for
	notinst_deplib nonempty as a proxy for "did wrapper script get
	sourced into my environment properly" a different var should be
	used.

	* config/ltmain.m4sh (func_mode_install): set new variable
	`generated_by_libtool_version' in wrapper script when using
	libtool_install_magic.  When verifying that wrapper script was
	properly sourced, check that `generated_by_libtool_version' is
	non-empty, instead of using notinst_deplibs.

2004-11-01  Charles Wilson  <spam.protected>,
	    Peter Ekberg  <spam.protected>

	* config/ltmain.m4sh (func_mode_install): On Windows based hosts,
	ensure that import libraries don't get stripped.
	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): On Windows based hosts,
	use postinstall_cmds to strip DLL (not import lib!) when symbol
	stripped installation was requested.

2004-10-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (loader_init_callback): Back out broken cast.

	* libltdl/ltdl.c (loader_init_callback, lt_dlexit): Add casts to
	target type.

	* tests/defs.m4sh (func_exec): `shift'ing when there is nothing
	to shift is non-portable.

2004-10-28  Patrick Welche  <prlw1@newn.cam.ac.uk>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.am, Makefile.maint: Use path for dependencies built
	in the source tree, to cater for BSD make.

2004-10-24  Noah Misch  <noah@cs.caltech.edu>

	* config/ltmain.m4sh (func_lalib_p, func_ltwrapper_p): New
	functions that abstract .la sanity checking.
	(func_mode_execute, func_mode_install, func_mode_link)
	(func_mode_uninstall): Use them.

2004-10-24  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.m4sh (opt_silent): Whether --silent was given.
	(run, show): Deleted.  All callers converted to opt_dry_run,
	opt_silent or calls to func_show_eval.
	* tests/mdemo-dryrun.test: Adjust.

	* HACKING: Fix a typo in the gpg --verify instructions.

	* Makefile.maint (cvs-dist): Generate signatures and directives
	for bz2 upload.

2004-10-23  Peter O'Gorman  <peter@pogma.com>

	* config/ltmain.m4sh (func_mode_link): Make Gary's new tests
	pass. When the output wrapper script is not in the current
	directory, we can not use an rpath which is relative to the
	current directory. Use an absolute path instead.

2004-10-22  Gary V. Vaughan  <gary@gnu.org>

	* clcommit.m4sh: Add --rcfile option.

	* clcommit.m4sh: Updated again, to support file list limited
	commits to CVS, and to fix another occurence of the bash bug
	that was preventing non-tla users from sending a commit mail.

2004-10-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* TODO, libltdl/lt_error.h, libltdl/ltdl.c, libltdl/ltdl.h:
	Undo accidental commit.

	* Makefile.maint: Fix typo.

2004-10-22  Gary V. Vaughan  <gary@gnu.org>

	* clcommit.m4sh, config/mailnotify.m4sh: Updated from
	cvs-utils--tla--1.0 to fix quoting of metachars in patch names.

	* HACKING: Updated: `.in' files are now `.m4sh'; document some
	more coding standards for these files.

	* config/general.m4sh (sed_double_backslash): Undo an
	over-optimisation.

2004-10-21  Gary V. Vaughan  <gary@gnu.org>

	* AUTHORS: Reformatted to better reflect the current state of
	Libtool maintainership.
	* THANKS: Reformatted to give maintainers a quick way to look
	up who has supplied FSF paperwork.

2004-10-21  Noah Misch  <noah@cs.caltech.edu>,
	    Gary V. Vaughan  <gary@gnu.org>

	* config/general.m4sh (sed_double_backslash): Improve this sed
	expression to correct left anchored \$ input to
	double_quote_subst, as well as backslash escaped $ preceded by
	any odd-numbered amount of \ characters.

2004-10-20  Gary V. Vaughan  <gary@gnu.org>

	* config/general.m4sh (sed_double_backslash): New sed expression
	to escape \$ properly in combination with double_quote_subst.
	(func_quote_for_eval): Four space indent margin for functions!
	(func_quote_for_expand): Use $sed_double_backslash.
	(func_show_eval): New function that echos an escaped but variable
	expanded command, and then evaluates it.

2004-10-20  Noah Misch  <noah@cs.caltech.edu>,
	    Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (sed_quote_subst): Remove superfluous backslashes
	from the match character set.
	(double_quote_subst): Ditto.
	* config/general.m4sh (sed_quote_subst): Ditto.
	(double_quote_subst): New variable, copied from
	m4/libtool.m4. Much the same as sed_quote_subst, but variable
	references are not quoted.
	(func_quote_for_eval): Given any $foo; $bar and
	$foo must be identical after the following commands:
	    func_quote_for_eval "$foo"
	    eval "bar=$func_quote_for_eval_result"
	(func_quote_for_expand): In a similar vein to to func_quote_for_eval,
	except that variable expansions are not protected when quoting the
	command for subsequent display.
	* config/ltmain.m4sh: Factor away use of $sed_quote_subst now that
	it has been subsumed into func_quote_for_eval.
	(func_mode_link): Instead of `2004-10-14 Peter O'Gorman' below,
	use func_quote_for_expand so that ${wl} is expanded properly in
	the $show expression.

2004-10-16  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.m4sh (func_mode_finish): solaris-2.6 also has
	crle(1).
	Reported by Albert Chin-A-Young <china@thewrittenword.com>

2004-10-16  Gary V. Vaughan  <gary@gnu.org>

	Add some new tests for Libtool's support of Automake
	subdir-objects builds.  This marks the beginning of a move to an
	Autotest driven test framework, which will eventually allow us to
	trim away many of the generated files in the current test demo
	subdirectories:

	* configure.ac (AC_CONFIG_TESTDIR): Re-enable commented out
	Autotest macros.
	(AUTOTEST, M4SH): Use --language long hand.
	* bootstrap: Generate tests/testsuite, and by implication
	tests/package.m4.
	* Makefile.am (edit): Add substitutions needed to generate
	tests/package.m4 from bootstrap.
	(check-recursive): Add tests/testsuite.
	(TESTSUITE): The new Autotest testsuite target.
	(TESTSUITE_AT): The Autotest sources.
	(EXTRA_DIST): Distribute the generated testsuite and sources.
	(tests/package.m4): Use $(edit) to propagate package metadata to
	the new tests.
	(tests/testsuite): Build the testsuite.
	(tests/atconfig): How to regenerate the file.
	(check-local): Hook Autotest into `make check'.
	(installcheck-local): Run the testsuite on the installed tree.
	(clean-local): Tidy our file droppings.
	* tests/Makefile.am: Remove bitrotted code from Autotest
	experiments in Autoconf 2.52 era.  Updated the rest and moved into
	Makefile.am.
	* tests/testsuite.at: New container for Autotest test groups.
	* tests/am-subdir.at: New test group for compatibility with
	Automake's subdir-objects builds.  Currently holds two tests, one
	for a C project and another similar project in C++.
	* TODO: Add an entry to remind us that these new tests expose a
	bug in libtool.
	* NEWS: Updated.

2004-10-14  Peter O'Gorman  <peter@pogma.com>

	* config/ltmain.m4sh: Revert most of my last commit, only eval
	\$show \"$cmds\", and only when building a library. I'm a wimp.
	Thanks Gary for pointing out errors in previous commit.

2004-10-13  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.m4sh (func_mode_finish): Mention crle(1) on
	solaris 2.7 and higher in the finalisation notes.
	Reported by Kurt J. Lidl <lidl@pix.net>

	* tests/cdemo-undef.test: New test for hosts that allow shared
	libraries with undefined symbols, but have no C++ compiler
	installed.
	* tests/Makefile.am (COMMON_TESTS): Add it.

2004-10-13  Peter O'Gorman  <peter@pogma.com>

	* config/ltmain.m4sh: Make sure that we $show what we will $run,
	use eval $show if we do $run eval.

2004-10-13  Charles Wilson  <spam.protected>

	* config/ltmain.m4sh: add foo/bin for every foo/lib
	in dllsearchpath when creating wrapper script.  Fixes
	depdemo-relink test failure.

2004-10-12  Charles Wilson  <spam.protected>

	* config/ltmain.m4sh (func_mode_link): don't relink
	on cygwin/mingw; no need.  But do ensure that wrappers
	are created unless doing a purely static build.

2004-10-13  Gary V. Vaughan  <gary@gnu.org>

	* tests/tagdemo-undef.test: New test for hosts that allow shared
	libraries with undefined symbols.
	* tests/Makefile.am (CXX_TESTS): Add it.

2004-10-11  Charles Wilson  <spam.protected>

	* tests/link.test: Fix check for use of libnlsut.a under
	Cygwin.

2004-10-11  Noah Misch  <noah@cs.caltech.edu>

	* tests/quote.test: Do not look for $preargs in the output,
	because libtool may change them.

2004-10-10  Charles Wilson  <spam.protected>

	* config/ltmain.m4sh: Really don't require versions of GNU
	sed newer than 3.02 for Cygwin and MinGW, and don't break
	dryrun mode.

2004-10-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config/getopt.m4sh: Under MinGW, reported paths may include ':'
	so ':' should not be used as the sed delimiter.  Use '*' instead
	since it is very unlikely to appear in a path.

2004-10-10  Albert Chin-A-Young  <china@thewrittenword.com>

	* config/ltmain.m4sh: Don't require versions of GNU sed newer than
	3.02 for Cygwin and MinGW.

2004-10-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tests/pdemo-inst.test: Correction for mis-application of
	Charles Wilson's earlier patch.

2004-10-09  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_LANG_F77_CONFIG): Make sure the save and
	restore code for CC is nested at the same depth.
	(_LT_LANG_CXX_CONFIG): Ditto, but for several variables.

2004-10-08  Gary V. Vaughan  <gary@gnu.org>

	Update to the latest commit and mailnotify scripts from
	gary@gnu.org--2004/cvs-utils--tla--1.0:

	* commit, config/mailnotify: Removed.  Now built from...
	* clcommit.m4sh, config/mailnotify.m4sh: ...these new sources.
	* Makefile.maint (commit, config/mailnotify): How to build them.
	* bootstrap: If we have a checked out tree (i.e. clcommit.m4sh
	is present), then build them.

2004-10-08  Gary V. Vaughan  <gary@gnu.org>

	Fix some issues that mangled the reexecution path to a script,
	and thus prevented it from finding itself:

	* config/general.m4sh (progname): Don't actually change the name
	of the script if it begins with a `-', just prepend `./'.
	(progpath): Add a new clause that first searches the execution
	PATH, and then finally assumes this script is in the current
	working directory if $progname has no directory separators (e.g
	when invoked as `$SHELL progname').

2004-10-08  Gary V. Vaughan  <gary@gnu.org>

	* config/general.m4sh (func_verbose): Work around a bash bug in
	shell functions.

2004-10-08  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* tests/pdemo-inst.test: pdemo-inst should depend on pdemo-make.
	* config/ltmain.m4sh: Windows and Cygwin reserve the .lnk
	extension to represent shortcuts.  Use the extension ".lnkscript"
	rather than ".lnk" for the piecewise linking ld script in order to
	avoid the conflict.

2004-10-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (lt_dlexit, lt_dlpath_insertdir): Fix memleaks,
	free user_search_path on lt_dlexit.

2004-10-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/sh.test: Remove tests which fail on AS_SHELL_SANITIZE
	from autoconf >= 2.59.

	* TODO: Remove item: no need for a libltdl without stdio.

2004-10-07  Gary V. Vaughan  <gary@gnu.org>

	* tests/defs.m4sh (scripts): Actually scan the generated ltmain.sh
	for shell portability problems.

	* m4/libtool.m4 (_LT_FORMAT_COMMENT): Shell meta-characters in
	_LT_DECL descriptions were not being escaped before injection into
	TAG CONFIG here documents in config.status.

2004-10-06  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (_LT_PROG_CXX, _LT_PROG_F77): New macros to work
	around the deficiencies in AC_PROG_CXX and AC_PROG_F77.
	* configure.ac: Cleaned up, having moved the checks for compilers
	which do not exist to libtool.m4.

2004-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (try_dlopen): Move .la file parsing
	part.. (parse_dotla_file): ..here.  Adjust.

	* libltdl/ltdl.c (load_deplibs, try_dlopen): Revert unnecessary casts
	to int from my patch from 2004-10-01.

	* AUTHORS: Add myself.

2004-10-05  Peter O'Gorman  <peter@pogma.com>

	* config/ltmain.m4sh [darwin]: Make the -dylib_file flag work on
	older darwins too. Reported by Christoph Egger.

2004-10-05  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac: Bumped version to 2.1a.

2004-10-04  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Don't confuse $ECHO
	with $lt_ECHO, or we always get a libtool with ECHO=echo, rather
	than testing for a mechanism that quotes \ properly.
	* NEWS: Updated.

	* config/ltmain.m4sh: Need to include getopt.m4sh earlier so that
	progpath is set before it is called to --no-reexec.
	* NEWS: Updated.

2004-10-04  Gary V. Vaughan  <gary@gnu.org>

	Without this change, the distributed libtool tarball has a
	dependency on autom4te.  There was some inconsistency in the
	filenames: now we have foo.m4sh -> m4sh -> foo.in -> configure
	-> foo[.sh].  Bootstrap runs the m4sh steps and the resulting .in
	files are distributed:

	* tests/Makefile.am (EXTRA_DIST): Distribute defs.m4sh.
	* Makefile.am (EXTRA_DIST): Distribute libtoolize.m4sh.
	(libtoolize.in, libtoolize): Split into bootstrap and runtime
	stages.
	($(top_srcdir)/tests/defs.in, $(top_srcdir)/tests/defs): Ditto.
	($(top_srcdir)/config/ltmain.sh): Swap ltmain.m4sh and ltmain.in
	names.
	* bootstrap: Make libtoolize.in and tests/defs.in.
	* NEWS: Updated.

2004-10-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* README, README.alpha: Update notes regarding available VERBOSE
	settings.

2004-10-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config/ltmain.in: Change $XSED to $Xsed to fix hang noticed
	under MinGW.
	* tests/defs.in: Support VERBOSE=debug to enable shell tracing
	while running tests.

2004-10-03  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* configure.ac: Bumped version to 1.9e.

	GNU libtool 1.9d was released.

	* configure.ac: Bumped version to 1.9d.
	* NEWS: Updated.

	* libltdl/lt__alloc.h (lt__alloc_die): Declare with LT_SCOPE as
	per Ralf's original patch.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* libltdl/Makefile.am (libltdlc_la_LIBADD): Don't use
	libdlloader_la_OBJECTS, an undocumented Automake internal
	variable...
	(libltdlc_la_SOURCES): ...use libdlloader_la_SOURCES here
	instead.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* libltdl/argz_.h: Forgot to spell lt_system.h with just one `_'.

	* libltdl/argz_.h: Forgot to include lt__system.h for LT_SCOPE
	definition.

2004-10-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>,
	    Gary V. Vaughan  <gary@gnu.org>

	* libltdl/lt__alloc.h: Declare exported functions with LT_SCOPE
	for mingw32.
	* libltdl/lt__dirent.h: Ditto.
	* libltdl/argz._h: Ditto.  Be careful about not requiring
	additional libltdl files when used outside of libltdl.
	* libltdl/slist.h: Ditto.
	* HACKING: Add a section on libltdl implementation layering.

2004-10-03  Gary V. Vaughan  <gary@gnu.org>

	* tests/quote.test: echo is called ECHO now.  Make sure we extract
	the value of ECHO from the libtool script.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

2004-10-02  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (hardcode_shlibpath_var) [darwin7*]: Revert my
	hack from 2004-09-30 now that I've removed /lib/hello.la and the
	tests work properly for me again.

2004-10-02  Jim Tison  <jtison@us.ibm.com>

	Initial support for s390x-ibm-tpf:

	* m4/libtool.m4: Correct obvious spelling errors in remarks.
	(_LT_ENABLE_LOCK): Make s390x-ibm-tpf hosts adopt elf64_s390
	conventions.
	(_LT_SYS_DYNAMIC_LINKER): Set defaults for s390x-ibm-tpf host.
	(_LT_CHECK_MAGIC_METHOD): Skip all dependency checks for
	s390x-ibm-tpf hosts.
	(_LT_LINKER_SHLIBS): Make s390x-ibm-tpf hosts adopt GNU/Linux OS
	attributes.
	* NEWS: Updated.

2004-10-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config/ltmain.in (func_mode_install): Need to set $tmpdir before
	using it.

	* config/ltmain.in (func_mode_link): Fix quoting bug.  Fixes
	e.g. the quoting of the -export-symbols-regex argument in .la
	files' relink_command.

	* libltdl/lt__alloc.c (lt__memdup): Allocation can fail, so we
	need to guard against null pointer dereference here.
	* libltdl/ltdl.c (lt_dlcaller_register): Ditto.

	* libltdl/slist.c (slist_foreach): result was declared as
	inner variable, shadowing the actually returned value.

	* libltdl/ltdl.c (load_deplibs, try_dlopen): Cast argument
	to isspace/isalnum to the correct range.  Also, cast to int to
	avoid compiler warnings.

2004-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (try_dlopen): Fix null pointer dereference in
	case the name given to lt_dlopen contains no extension.

	* libltdl/lt_dlloader.c (lt_dlloader_remove), libltdl/ltdl.c
	(tryall_dlopen, lt_dlhandle_next): Show usage of function pointers.

	* doc/libtool.texi (LT_INIT, Using libltdl)
	(Module loaders for libltdl, Multiple dependencies)
	(libtool script contents): Fix several typos (trivial change).
        Also, libltdl consists of more than two small files.

2004-09-30  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (hardcode_shlibpath_var) [darwin7]: My Panther
	workstation doesn't hardcode the shared library path, although it
	used to, so this is more likely a function of the binutils and/or
	gcc I am using at the moment.  The hardcode value setting code for
	the configure script sucks at the moment though...
	* TODO: ...and needs to do a test compile instead of a table
	lookup before 2.0 final.

	* m4/libtool.m4 (echo): Use ECHO throughout for consistency with
	config/ltmain.in.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (rm): Use RM throughout for consistency with
	config/ltmain.in.
	Reported by Charles Wilson <cwilson@spam.protected>

2004-09-27  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [darwin]: Don't echo gcc -v
	output during configure. (Really this time, honest)

2004-09-26  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4 (_LT_LINKER_SHLIBS) [aix]: In archive_expsym_cmds,
	move -bnoentry linker option before $compiler_flags to honor any
	possible -e entries in LDFLAGS.

2004-09-25  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_mode_link): When linking an installed
	libtool library on the command line using -lfoo we need to find
	the library in the search paths and add it's dependency_libs to
	the link in the conv pass so that any libtool libs listed are
	correctly expanded in the link pass.

2004-09-24  Charles Wilson  <cwilson@spam.protected>

	* libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Revert changeset from
	`2004-09-22  Charles Wilson  <cwilson@spam.protected>'.

2004-09-24  Gary V. Vaughan  <gary@gnu.org>

	* config/general.m4sh (Xsed): Set a default when not used from
	ltmain.in.
	(ECHO): Audit for (and correct!) uses of $ECHO with more than one
	argument, which breaks when ECHO='printf %s\n', and with possible
	`-' as first character of the argument, which breaks `print -r'
	and some implementations of `echo'.
	* config/ltmain.in, tests/defs.in, libtoolize.in (ECHO): Ditto.
	Reported by Albert Chin-A-Young <china@thewrittenword.com>

2004-09-24  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (_LT_CMD_STRIPLIB) [darwin]: strip archives too.

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [darwin]: Don't echo gcc -v
	output during configure.

2004-09-24  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_DECL_EGREP): Only the newest CVS autoconf
	AC_SUBSTs for GREP.  Do our own here too to cater for release
	autoconfen.

	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [openbsd3.3]: Set
	need_version to yes or no depending on the os release.
	Reported by Dalibor Topic <robilad@kaffe.org>

2004-09-23  Gary V. Vaughan  <gary@gnu.org>

	* tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-deplibs.test, tests/demo-exec.test,
	tests/demo-hardcode.test, tests/demo-inst.test,
	tests/demo-make.test, tests/demo-nofast.test,
	tests/demo-noinst-link.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-relink.test,
	tests/demo-shared.test, tests/demo-static.test,
	tests/demo-unst.test, tests/depdemo-conf.test,
	tests/depdemo-exec.test, tests/depdemo-inst.test,
	tests/depdemo-make.test, tests/depdemo-nofast.test,
	tests/depdemo-relink.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/depdemo-unst.test,
	tests/f77demo-conf.test, tests/f77demo-exec.test,
	tests/f77demo-make.test, tests/f77demo-shared.test,
	tests/f77demo-static.test, tests/link-2.test, tests/link.test,
	tests/mdemo-conf.test, tests/mdemo-dryrun.test,
	tests/mdemo-exec.test, tests/mdemo-inst.test,
	tests/mdemo-make.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/mdemo-unst.test,
	tests/mdemo2-conf.test, tests/mdemo2-exec.test,
	tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/pdemo-make.test, tests/quote.test, tests/sh.test,
	tests/suffix.test, tests/tagdemo-conf.test,
	tests/tagdemo-exec.test, tests/tagdemo-make.test,
	tests/tagdemo-shared.test, tests/tagdemo-static.test,
	tests/tagtrace.test: POSIX `.' searches only in user's $PATH, so
	we must use `. ./defs' to source the common code.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Gah.  Merge error
	corrected.

2004-09-23  Gary V. Vaughan  <gary@gnu.org>

	Since defs can change (path to grep for example) when it is made
	for a different host, it can't be shipped.  That also means that
	defs will always be generated in the build tree, so each test case
	can have the srcdir discovery factored away into tests/defs.in:

	* Makefile.am (EXTRA_DIST): s/defs/defs.in/g
	* tests/Makefile.am (defs): New rule to remake defs from the
	parent directory's Makefile.
	* tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-deplibs.test, tests/demo-exec.test,
	tests/demo-hardcode.test, tests/demo-inst.test,
	tests/demo-make.test, tests/demo-nofast.test,
	tests/demo-noinst-link.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-relink.test,
	tests/demo-shared.test, tests/demo-static.test,
	tests/demo-unst.test, tests/depdemo-conf.test,
	tests/depdemo-exec.test, tests/depdemo-inst.test,
	tests/depdemo-make.test, tests/depdemo-nofast.test,
	tests/depdemo-relink.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/depdemo-unst.test,
	tests/f77demo-conf.test, tests/f77demo-exec.test,
	tests/f77demo-make.test, tests/f77demo-shared.test,
	tests/f77demo-static.test, tests/link-2.test, tests/link.test,
	tests/mdemo-conf.test, tests/mdemo-dryrun.test,
	tests/mdemo-exec.test, tests/mdemo-inst.test,
	tests/mdemo-make.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/mdemo-unst.test,
	tests/mdemo2-conf.test, tests/mdemo2-exec.test,
	tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/pdemo-make.test, tests/quote.test, tests/sh.test,
	tests/suffix.test, tests/tagdemo-conf.test,
	tests/tagdemo-exec.test, tests/tagdemo-make.test,
	tests/tagdemo-shared.test, tests/tagdemo-static.test,
	tests/tagtrace.test: Removed srcdir discovery boilerplate...
	* tests/defs.in: ...and put it here.

2004-09-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): move symcode calculation
	to correct place.
	* doc/libtool.texi (libtool script contents): update description
	of global_symbol_to_cdecl.

2004-09-23  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac (M4SH): AC_SUBST m4sh expander.
	* config/general.m4sh, config/getopt.m4sh: New files with factored
	out functionality from...
	* config/ltmain.in, libtoolize.in: ...here.  m4_include the shared
	code, and call AS_SHELL_SANITIZE.  Also quote all `[' and `]' to
	survive m4 run.
	(func_serial): No need to double up m4sh quotes after a `#'.
	(func_check_macros): Escape `dnl' to stop m4sh interpreting it as
	a macro.
	* tests/defs.in: New file expanded into tests/defs by autom4te.
	* m4/libtool.m4 (_LT_DECL_EGREP): Also require fgrep for the tests
	that use it.
	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Now built with
	M4SH.
	(libtoolize): Ditto.
	* bootstrap: Set M4SH for call to make.
	* HACKING: No need to sync to AS_SHELL_SANITIZE by hand any more.

	* m4/libtool.m4: _LT_DECL uppercase ECHO.
	* config/ltmain.in: Use it throughout.
	(func_mkdir_p): Now matches the other implementations in
	tests/defs and libtoolize.in.
	* tests/sh.test: Updated to detect ECHO misuse.

2004-09-22  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_mode_link): Propagate a convenience
	library's dependency libs correctly when it is being linked into a
	libtool library.  Deplibs are now propagated whether libdir is set
	or not.

2004-09-22  Andreas Schwab  <schwab@suse.de>

	The dlpreopen pass over libraries reverses the elements in the
	$deplibs list.  This causes problems when the link pass tries to
	find libraries when they are located in non-standard places
	denoted by -L options.  Due to the reversed order these -L options
	occur after the libraries that need them, and they are not found:

	* config/ltmain.in: (Un)Reverse $deplibs list at the start of the
	link pass in lib mode.

2004-09-22  Charles Wilson  <cwilson@spam.protected>

	* ltmain.in (func_generate_dlsyms) [cygwin, mingw]: when creating
	a .exp file for an executable, also create a .def file, and add
	that file to the link command via SYMFILES.  This causes binutils
	to generate an .edata section, and allows self dlopening to work.
	* NEWS: Updated.

	* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): better quoting for
	postinstall_cmds and postuninstall_cmds to allow spaces in install
	paths.

	* config/ltmain.in (func_generate_dlsyms): Addresses in
	_preloaded_symbols[] cannot go into .rdata section if symbols are
	DATA imported from DLL, on windows, because runtime relocations
	must happen.
	* m4/libtool.m4 (_LT_LINKER_SHLIBS([TAGNAME])):	Build exports for
	symbols in .rdata sections.

2004-09-19  Gary V. Vaughan  <gary@gnu.org>

	The checks in assign.test are trying to catch case of this ilk:
	`foo=bar break', but unfortunately they also choke on `foo=bar;
	break' and `foo=bar && break'.  Writing a sophisticated test to
	catch just the intended case seems like more trouble than it's
	worth, but leaving the test in causes the testsuite to fail on
	valid m4sh output:

	* tests/assign.test: Removed; chokes on perfectly valid shell
	syntax.
	* tests/Makefile.am (COMMON_TESTS): Remove assign.test.
	* tests/defs.in (scripts): Don't check the m4sh inputs, go back
	to checking the generated ltmain.sh script.

2004-09-17  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_echo): Except for multi-line warnings and
	errors, always use func_echo.  $show is for command output, and
	$echo is for internal use in backtick expressions and similar.

2004-09-17  Gary V. Vaughan  <gary@gnu.org>

	Missed a couple of MKDIR_P references in ltmain.in in my last
	patch; fix them carefully.  Introduce an opt_dry_run to ltmain.in
	so that the implementations of func_mkdir_p can converge, and a
	func_mktempdir to do a better job of temporary directory creation:

	* libtoolize.in (func_mkdir_p): Don't fail if the directory wasn't
	created in dry run mode.
	* tests/defs (func_mkdir_p): Ditto.  We don't actually have a dry
	run mode for the tests, but the function is written carefully to
	be kept in synch and work correctly here too.
	* config/ltmain.in (func_mkdir_p): Ditto.  This copy of the
	function now only differs in its use of $echo over $ECHO.
	(func_extract_archive): Removed first redundant mkdir call.
	(func_mktempdir): New function that tries to avoid races when
	making temporary directories.
	(opt_dry_run): Set this if --dry-run is given at the CLI, or if
	tests/mdemo-dryrun.test has forced the value of $run.
	(func_mode_install): Call $MKDIR directly and error out if the
	directory cannot be created.
	(func_mode_link): Rather than copying func_mkdir_p into the
	wrapper script as a replacement for $MKDIR_P, we know that the
	script won't be called my `make -j', so write the current value of
	$MKDIR.

2004-09-17  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4: remove an extra "]"

	* m4/libtool.m4 [darwin] (_LT_LANG_CXX_CONFIG): Changes for 10.4.
	* config/libtool.in [darwin]: ditto.

2004-09-16  Gary V. Vaughan  <gary@gnu.org>

	My most recent `2004-09-02 Gary V. Vaughan' patch for mkdir_p
	below is horrendously broken since it makes the installed libtool
	try to run the mkinstalldirs or install-sh helper scripts.  This
	patch fixes the `make -j' mkdir race condition internally:

	* libtoolize.in (func_mkdir_p): New slice and dice algorithm
	to build the directory tree one dir at a time, ignoring errors
	until the end incase they are transient due to a concurrent
	identical mkdir.
	* tests/defs (func_mkdir_p): Ditto.
	* config/ltmain.in (func_mkdir_p): Ditto, except that ltmain.in
	uses $echo rather than $ECHO, and uses $show and $run to interact
	correctly with the command line.
	* configure.ac (AM_INIT_AUTOMAKE): 1.8 is sufficient again.
	* Makefile.am (edit): Don't substitute automake's $(mkdir_p).
	* NEWS: Updated.

2004-09-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libltdl/loaders/loadlibrary.c: Compilation fixes (originally
	from Gary V. Vaughan) to compile under MinGW.
	* config/mkstamp: Translate input data so that it is assured to
	use the Unix line terminations. This is necessary under Windows if
	the files are checked out with CR/NL line terminations. A
	side-effect of this change is that input must always be from
	stdin. Previously a filename argument was accepted as well.

2004-09-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* tests/Makefile.am: Use the same CPP, F77, CXX and CXXFLAGS
	for the test suite.

2004-09-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (_LT_ENABLE_LOCK):Replace AC_TRY_LINK with
	AC_LINK_IFELSE to get rid of `autoconf -Wobsolete' warning.
	* m4/ltdl.m4 (LT_LIB_DLLOAD): Ditto.

2004-09-15  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_quote_for_eval): Set a return value to
	avoid forking at every call.  Changed all callers.
	(func_mode_link): Simplified, and removed the final non-portable
	nested escaped double quotes in back quotes usage in the process.

2004-09-14  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (func_quote_for_eval): Factor out the ugly
	shell meta-character quoting.  Changed all callers.

2004-09-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Simplification:
	distinguish between data and code symbols on every system.

2004-09-14  Albert Chin-A-Young  <china@thewrittenword.com>

	Unfortunately, libtool has no way of telling if unrecognized
	compiler flags need an argument or not, and can disect options and
	pass parts through incorrectly.  This changeset reverts both
	2004-09-06 Albert Chin-A-Young (topmost) and 2004-09-05 Albert
	Chin-A-Young below, and recognises more options explicitly:

	* config/ltmain.in (func_mode_link): Pass through options needed
	to compile in 64-bit mode with gcc, and the SGI, Sun, HP and IBM
	compilers.

2004-09-13  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_CMD_GLOBALS_SYMBOLS): Fix a typo I made when
	applying 2004-09-11 Ralf Wildenhues.

2004-09-12  Brad  <brad@comstyle.com>

	* libtool.m4: Fixes for the OpenBSD support

2004-09-12  Peter O'Gorman  <peter@pogma.com>

	Our fortran tests were not very good. All the libraries created
	were convenience libs, so we did not test the creation of shared
	libraries on any platform. Also none of the libs used any actual
	fortran library calls, adding a call to write(*,*) in each lib
	causes the tests to fail on darwin (and presumably other platforms).
	These new tests would likely cause many more fortran test failures,
	so if there is an error during make it is reported as SKIP.

	* tests/f77demo-make.test: Don't fail hard, skip on failure.
	* tests/f77demo/foof2.f: New file.
	* tests/f77demo/foof3.f: New file.
	* tests/f77demo/fprogram.f: Call routine in new lib.
	* tests/f77demo/foof.f: Call routine in another new lib.
	* tests/f77demo/Makefile.am: Make a couple of new libraries, add
	$(FLIBS) to cprogram LDADD.

2004-09-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): The linker distinguishes
	data and code symbols on linux-gnu/ia64.  Fixes multiple testsuite
	failures.
	* NEWS: Updated.

2004-09-06  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/loaders/shl_load.c (get_vtable): Typo.

2004-09-06  Albert Chin-A-Young  <china@thewrittenword.com>

	Hopefully, passing unrecognised compiler arguments through
	unmolested will prove to be a good plan for the 2.0 release.  If
	it goes awry, we can get back to where we were by reverting this
	patch and the 2004-09-05 Albert Chin-A-Young patch, aka
	gary@gnu.org--2004/libtool--devo--1.0--patch-169,172:

	* config/ltmain.in (func_mode_link): Because we now pass through
	compiler arguments we doesn't recognize, the code to pass
	through GCC's -m* arguments is not needed.

2004-09-06  Albert Chin-A-Young  <china@thewrittenword.com>

	* Makefile.am (clean-ltmain-sh): Using '==' to test for equality
	in a shell script is not portable. Use '=' instead.

2004-09-05  Andreas Schwab  <schwab@suse.de>

	* m4/ltdl.m4 (LT_WITH_LTDL): Remove excess quoting in argument of
	AC_CONFIG_SUBDIRS.

2004-09-05  Albert Chin-A-Young  <china@thewrittenword.com>

	* config/ltmain.in (func_mode_link): Pass otherwise unrecognised +
	and - style switches to the compiler.
	* NEWS: Updated.

2004-09-05  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (libtool): Force libtool to be regenerated if
	stamp-vcl has changed.

2004-09-05  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4, config/ltmain.in: When calling $LTCC,
	pass default $CFLAGS through with $LTCFLAGS.

2004-09-03  David Edelsohn  <dje@watson.ibm.com>

	* config/ltmain.in (func_mode_link): Use $pic_object as
	$non_pic_object if $non_pic_object=none.
	* NEWS: Updated.

2004-09-03  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Remember that the ltmain.sh generated by bootstrap
	is missing most of its substitution values, so force it to be
	rebuilt at make time by touching $(top_srcdir)/config/ltmain.in.

	From Martin Quinson <mquinson@ens-lyon.fr>
	* m4/libtool.m4 (_LT_SETUP, _LT_ENABLE_LOCK, LT_PATH_LD): Use
	AS_HELP_STRING to get rid of autoconf -Wobsolete warning
	messages.
	* m4/ltdl.m4 (LT_WITH_LTDL, _LT_ENABLE_INSTALL): Ditto.
	* m4/ltoptions.m4 (_LT_ENABLE_SHARED, _LT_ENABLE_STATIC)
	(_LT_ENABLE_FAST_INSTALL, _LT_WITH_PIC): Ditto.
	* TODO: Updated

2004-09-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/slist.c (slist_cons): Don't leak the tail of a list.

2004-09-03  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4 (_LT_ENABLE_LOCK): Reformatted.

2004-09-03  Gary V. Vaughan  <gary@gnu.org>

	* HACKING: Explain how to verify detached signatures with gpg in
	the release announcement templates.

	* AUTHORS: Fix typo in my address.

2004-09-02  Gary V. Vaughan  <gary@gnu.org>,

	Builds of packages that use libtool and make -j produce "directory
	already exists warnings" for .lib directory.  Build on automake
	wisdom to support make -j builds where a suitable mkdir is
	available:

	* configure.ac (AM_INIT_AUTOMAKE): Require 1.9, which goes to some
	trouble to find a $(mkdir_p) that doesn't interfere with make -j.
	* Makefile.am (edit): Substitute for @mkdir_p@.
	* config/ltmain.in (MKDIR_P): Take @mkdir_p@ value.
	(mkdir): Removed.
	(func_mkdir_p): New function to use $MKDIR_P.  Factor out all
	previous mkdir calls to use this function.
	(RM, MV): Declared as in libtoolize.in.  Changed all callers.
	* libtoolize.in (MKDIR_P): Take @mkdir_p@ value from automake.
	(func_mkdir_p): Use it, similarly to new config/ltmain.in.
	* tests/defs: Synchronize boiler plate code with ltmain.in.
	Adjust all callers.
	Add missing copyright preamble.
	* tests/demo-static.test: Add missing copyright preamble.
	* NEWS: Updated.
	Reported by Daniel Reed <n@ml.org>

2004-09-02  Gary V. Vaughan  <gary@gnu.org>,

	* Makefile.am (clean-ltmain-sh): Quote $(top_builddir) for the
	shell, incase it is not set when running maintainer rules with
	`make -fMakefile.maint'.
	Don't show the shell commands.

	* AUTHORS: Fix my email address.

2004-09-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/ltdl.c (try_dlopen): Fix memory leak.
	* NEWS: Updated.

2004-09-02  Gary V. Vaughan  <gary@gnu.org>,
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/slist.c, libltdl/slist.h: Merge in changes from latest
	upstream.  Mostly comments, formal item boxing, a sort function,
	and const madness reduction.
	(slist_new): Removed.
	(slist_box, slist_unbox, slist_sort): New.
	(SListCompare, SListCallback): Swapped!
	(slist_remove, slist_find): Change order of parameters for
	orthogonality with slist_foreach.  Changed all callers.
	* libltdl/lt_dlloader.c (loader_cmp): Renamed to...
	(loader_callback): ...this.  Return boxed item.
	(lt_dlloader_remove): Adjust to new loader_callback semantics;
	unbox each removed item before returning.
	Remove unused variable.
	Remove const from name parameter, since the slist API cannot
	guarantee userdata const-ancy for its callback functions.
	(lt_dlloader_find): Adjust to new loader_callback semantics; need
	to return the contents of the boxed item.
	Remove const from name parameter, since the slist API cannot
	guarantee userdata const-ancy for its callback functions.
	* libltdl/lt_dlloader.h (lt_dlloader_find, lt_dlloader_remove):
	Adjust to new constless footprint.
	* libltdl/ltdl.c (ltdl_exit): The global `loaders' list is changed
        by `lt_dlloader_remove' while cleaning up, so the address in local
	variable `loader' is invalidated.  Since some loaders may be
	resident modules that cannot be unloaded (though we have none
	yet), we must save each `next' address before calling
	`lt_dlloader_remove'.
	* NEWS: Updated.
	* THANKS: Added Ralf.

2004-09-01  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/lt_dlloader.c (lt_dlloader_add): Handle malloc failure
	from slist_new.
	* libltdl/ltdl.c (loader_init): Trust lt_dlloader_add(), don't
	overwrite its error type, and simplify.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

2004-09-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/slist.c (slist_new): Handle malloc failure gracefully.

2004-09-01  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in, config/ltmain.in: Add CDPATH protection to
	preamble.
	* tests/defs: Put a full m4sh.m4 style 'Be Bourne compatible'
	preamble in here too.
	* HACKING: Note that tests/defs needs synching with m4sh.m4 too.
	* TODO: Add new item.

	* libltdl/ltdl.c (try_dlopen, lt_dlforeachfile): Use correct cpp
	macro name, LT_DLSEARCH_PATH.

	* libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Fix gcc parentheses
	warning.
	(foreach_dirinpath, try_dlopen, lt_dlpath_insertdir): Fix gcc
	signed vs unsigned warning.
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* m4/libtool.m4 (_LT_PROG_LTMAIN): Simplified in light of
	ltmain.sh no longer being in the build tree.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

2004-09-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libltdl/loaders/preopen.c: Initialise memory in get_vtable.

	* tests/sh.test: Look in the source tree for ltmain.sh.

2004-09-01  Gary V. Vaughan  <gary@gnu.org>

	Don't use C99 flexible array types as we want to be C89
	compatible.  Instead, revert to the old way of doing things with
	an array of symbol name vs. address, and adding the originator as
	the first symbol but with a NULL address:

	* config/ltmain.in (func_extract_dlsyms): Store originator as a
	NULL address symbol.
	* libltdl/ltdl.h (lt_dlsymbol): Removed.
	(lt_dlsymlist): Remove originator field.
	(LTDL_SET_PRELOADED_SYMBOLS): Adjust.
	* libltdl/loaders/preopen.c (vm_open, lt_dlpreload_open): Adjust
	for new types.
	(vm_sym): Skip the new originator symbol when scanning symbol
	names.
	* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Adjust preloaded symbols
	test file to match.
	* NEWS: Updated.
	Reported by Andreas Schwab <schwab@suse.de>

2004-09-01  Gary V. Vaughan  <gary@gnu.org>

	Libtool currently assumes that certain characteristics, such as
	enable_shared, apply to the host architecture rather than per-
	language.  Running the tests over a broken compiler can corrupt
	these values, when there is no C++ compiler for example, so we
	skip most of the tests in those cases.

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): If caught_CXX_compiler was
	set from configure.ac, then don't run all the compiler tests.
	(_LT_LANG_F77_CONFIG): Similarly for caught_F77_compiler.

2004-08-31  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (clean-ltmain-sh): Remove stale config/ltmain.sh
	from the build tree that were left behind by previous versions of
	libtool.
	($top_srcdir)/stamp-vcl: Since this rule is already called on
	every invocation of make, hook clean-ltmain-sh in here too.
	Suggested by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

2004-08-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* bootstrap: Update warning message to reflect having split
	libtool.m4 into several files.
	Also, add config/ltmain.sh to list of stale files from previous
	versions to be removed before bootstrap.

	* libltdl/ltdl.c: Replace strdup with lt__strdup.

2004-08-30  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in: Double quote even $# for the sake of sh.test.
	(exec_cmd): Be careful about "`\"foo\"`" quoting, even in comments
	to avoid triggering the tests in sh.test.

	* configure.ac:  Because of the way the autoconf C++ testing
	works, we need to call the C test first to work in an environment
	that has no C++ compiler.

	* libltdl/lt_dlloader.c (lt_dlloader_remove): Since the return
	value of this function is often passed to free, don't declare it
	`const'. Responsibility for this memory is given back to the
	caller on return.
	* libltdl/lt_dlloader.h (lt_dlloader_remove): Ditto.
	* libltdl/ltdl.c (lt_dlexit): Adjust.
	* NEWS: Updated.

2004-08-30  Andreas Schwab  <schwab@suse.de>

	* libltdl/ltdl.c (lt_dlexit): Remove lvalue cast.

	* libltdl/slist.h (SListCallback): Fix missing type.

	* config/ltmain.in: Accept --mode=relink.

2004-08-29  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* configure.ac: Bumped version to 1.9c.

	GNU libtool 1.9b was released.

	* configure.ac: Bumped version to 1.9b.
	* NEWS: Updated.
	* INSTALL, config/config.guess, config/config.sub,
	config/texinfo.tex: Updated from canonical source.
	* Makefile.maint, HACKING: Update instructions for releasing in a
	VPATH build.

	* Makefile.am (dist-hook): Only run if README-alpha exists.
	* README.alpha: Renamed from README-alpha to stop automake from
	automatically adding it to DIST_COMMON.

	* NEWS: Merge changes from branch-1-5.

	* Makefile.am (dist-hook): Always distribute just a README file,
	but take its contents from README-alpha for alpha releases.

	* TODO: Reformat.  Removed some items that have been implemented.

2004-08-29  Gary V. Vaughan  <gary@gnu.org>

	Add a new `-weak' flag to tell libtool when not to propogate
	dependency libraries from dlpreopened modules to libraries:

	* config/ltmain.in: Support new -weak link mode option.  Adjust
	help message.
	* libltdl/Makefile.am (libltdlc_la_LDFLAGS): Use it.
	* doc/libtool.texi (Linking with dlopened modules): Document it.
	(Link mode): Mention -weak.
	* NEWS: Updated.

2004-08-29  Gary V. Vaughan  <gary@gnu.org>

	* config/ltmain.in (opt_help): Defer showing help messages until
	after a possible following --mode argument has been parsed, so we
	can handle `libtool --help --mode=foo'.

2004-08-29  Gary V. Vaughan  <gary@gnu.org>

	We have had shell functions in ltmain.in for a few years without
	complaint now, and recently a few more have crept in.  Make a
	start at refactoring the code with shell functions, and
	standardising on option parsing style:

	* config/ltmain.in (func_echo, func_verbose, func_error)
	(func_fatal_error, func_fatal_help, func_missing_arg)
	(func_version, func_usage, func_help): Boiler plate shell
	functions mostly copied from libtoolize.in.  Changed *lots* of
	shell snippets to call these functions as appropriate, rather than
	inlining the same code over and over.
	(func_config, func_features, func_enable_tag, func_mode_help):
	Factored out from the shared option parsing loop.  Write a new
	shared option parser based on the one in libtoolize.in.
	(func_check_version_match): Factored out from global scope.
	(func_mode_compile, func_mode_execute, func_mode_finish)
	(func_mode_install, func_mode_link, func_mode_uninstall): Break
	each of the top level mode handlers out into a function.  Adjust
	main loop.
	(modename, prevopt, prev, optarg, show_help): Removed in the
	course of cleaning up the shared option parser.
	(opt_duplicate_deps): Use `:' and `false' instead of `yes' and `',
	so we can run it directly, rather than calling test.

2004-08-28  Gary V. Vaughan  <gary@gnu.org>

	To help users submit better bug reports, improve the general
	instructions, and provide additional useful info alongside the bug
	reporting address in --help output:

	* Makefile.am (edit): Substitute $host_triplet.
	* libtoolize.in: Output useful debug info with --help.
	* config/ltmain.in: Ditto.
	* README: Rewritten.  Added copyright info.
	* README-alpha: Rewritten.  Added copyright info.
	* HACKING: New file, partly taken from old README-alpha.

2004-08-27  Gary V. Vaughan  <gary@gnu.org>

	Two things to stop `make distcheck' from trying to rebuild
	distributed files (m4/ltversion.m4 and config/ltmain.in) in the
	readonly source tree:

	* Makefile.am (stamp-vcl): Keep only one copy of stamp-vcl; in
	$(top_srcdir), so that an up-to-date version is rolled into the
	dist tarball even from a VPATH build.
	($(top_srcdir)/config/ltmain.sh): Don't depend on Makefile,
	otherwise ltmain.sh needs to be rebuilt after every config.status
	run, and then configure needs to be rebuilt, and it all goes
	horribly wrong :-/  Unfortunately, we can't depend on Makefile.am
	either, because that is a circular dependency.  The downside of
	this change is that it is now possible to edit Makefile.am to
	change the way ltmain.sh is generated, and the dependency
	information can't tell that ltmain.sh needs regenerating.

2004-08-27  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Cheap tricks): Escape the `@' for texinfo.

2004-08-27  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Cheap tricks): Fix the instructions for making
	a ltmain.in wrapping libtool in light of recent changes to the
	version checking code.

2004-08-26  Peter O'Gorman  <peter@pogma.com>

	* config/ltmain.in [darwin]: Use the -dylib_file flag and avoid
	linking to so many libraries on darwin.

	* m4/libtool.m4 [darwin]: Don't use a libname triplet, a couplet
	is perfectly fine.

	* m4/ltdl.m4: Don't use the dyld loader on darwin 8 or later.

2004-08-25  Paolo Bonzini  <bonzini@gnu.org>

	* config/ltmain.in (piecewise linking): Use a GNU ld script if
	possible.
	* m4/libtool.m4 (_LT_LINKER_SHLIBS): Add per-tag variable
	with_gnu_ld.
	(_LT_LANG_CXX_CONFIG): Don't set unused variable with_gnu_ldcxx.

2004-08-22  Gary V. Vaughan  <gary@gnu.org>

	The Grand Renaming.  In preparation for libtool-2.0, move all of
	the many and varied m4 symbols accumulated by libtool over the
	years, considering also that modern autoconf can detect unexpanded
	macros even without AC in the macro name:

	* bootstrap: Remove libltdl/config.h from previous releases.
	* m4/libtool.m4, m4/ltdl.m4, doc/libtool.texi: Basically, run a
	giant sed transformation like this:
	s,AC_LIB_LTDL,LTDL_INIT,g
	s,AC_LIBLTDL_CONVENIENCE,LTDL_CONVENIENCE,g
	s,AC_LIBLTDL_INSTALLABLE,LTDL_INSTALLABLE,g
	s,AC_WITH_LTDL,LT_WITH_LTDL,g
	s,AC_LTDL_ENABLE_INSTALL,_LT_ENABLE_INSTALL,g
	s,AC_DEPLIBS_CHECK_METHOD,_LT_CHECK_MAGIC_METHOD,g
	s,AC_LIBTOOL_OBJDIR,_LT_CHECK_OBJDIR,g
	s,AC_LTDL_OBJDIR,_LT_CHECK_OBJDIR,g
	s,AC_LTDL_DLPREOPEN,_LT_CHECK_DLPREOPEN,g
	s,AC_LIBTOOL_SYS_MAX_CMD_LEN,LT_CMD_MAX_LEN,g
	s,AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,_LT_CMD_GLOBAL_SYMBOLS,g
	s,AC_LIBTOOL_SYS_OLD_ARCHIVE,_LT_CMD_OLD_ARCHIVE,g
	s,AC_PROG_LD_RELOAD_FLAG,_LT_CMD_RELOAD,g
	s,AC_LIBTOOL_SYS_LIB_STRIP,_LT_CMD_STRIPLIB,g
	s,AC_CHECK_LIBM,LT_LIB_M,g
	s,AC_LTDL_DLLIB,LT_LIB_DLLOAD,g
	s,AC_LIBTOOL_COMPILER_OPTION,_LT_COMPILER_OPTION,g
	s,AC_LIBTOOL_PROG_CC_C_O,_LT_COMPILER_C_O,g
	s,AC_LIBTOOL_PROG_COMPILER_NO_RTTI,_LT_COMPILER_NO_RTTI,g
	s,AC_LIBTOOL_PROG_COMPILER_PIC,_LT_COMPILER_PIC,g
	s,AC_LIBTOOL_SYS_HARD_LINK_LOCKS,_LT_COMPILER_FILE_LOCKS,g
	s,AC_LTDL_DLSYM_USCORE,LT_FUNC_DLSYM_USCORE,g
	s,AC_LIBTOOL_LINKER_OPTION,_LT_LINKER_OPTION,g
	s,AC_LIBTOOL_PROG_LD_SHLIBS,_LT_LINKER_SHLIBS,g
	s,AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH,_LT_LINKER_HARDCODE_LIBPATH,g
	s,AC_PATH_MAGIC,_LT_PATH_MAGIC,g
	s,AC_PATH_TOOL_PREFIX,_LT_PATH_TOOL_PREFIX,g
	s,AC_PROG_LD,LT_PATH_LD,g
	s,AC_PROG_LD_GNU,_LT_PATH_LD_GNU,g
	s,AC_PROG_NM,LT_PATH_NM,g
	s,AC_LTDL_SYS_DLOPEN_DEPLIBS,LT_SYS_DLOPEN_DEPLIBS,g
	s,AC_LIBTOOL_DLOPEN_SELF,LT_SYS_DLOPEN_SELF,g
	s,AC_LIBTOOL_POSTDEP_PREDEP,_LT_SYS_HIDDEN_LIBDEPS,g
	s,AC_LTDL_SYSSEARCHPATH,LT_SYS_DLSEARCH_PATH,g
	s,AC_LTDL_SHLIBEXT,LT_SYS_MODULE_EXT,g
	s,AC_LTDL_SHLIBPATH,LT_SYS_MODULE_PATH,g
	s,AC_LTDL_SYMBOL_USCORE,LT_SYS_SYMBOL_USCORE,g
	s,AC_LIBTOOL_SYS_DYNAMIC_LINKER,_LT_SYS_DYNAMIC_LINKER,g
	s,_LT_AC_TAGVAR,_LT_TAGVAR,g
	s,_LT_AC_SYS_COMPILER,_LT_TAG_COMPILER,g
	s,_LT_AC_PROG_ECHO_BACKSLASH,_LT_PROG_ECHO_BACKSLASH,g
	s,_LT_AC_SYS_LIBPATH_AIX,_LT_SYS_MODULE_PATH_AIX,g
	s,_LT_AC_SHELL_INIT,_LT_SHELL_INIT,g
	s,_LT_AC_LOCK,_LT_ENABLE_LOCK,g
	s,_LT_AC_CHECK_DLFCN,_LT_HEADER_DLFCN,g
	s,_LT_AC_TRY_DLOPEN_SELF,_LT_TRY_DLOPEN_SELF,g
	s,LT_AC_PROG_EGREP,_LT_DECL_EGREP,g
	s,LT_AC_PROG_SED,_LT_DECL_SED,g
	* doc/libtool.texi (Autoconf macros): Document exported macros.
	* libtoolize.in: Compare ltdl.m4 serial numbers for LTDL_INIT
	instead of newly obsoleted AC_LIB_LTDL.
	(func_scan_files): Also set seen_ltdl for LTDL_INIT and
	LT_WITH_LTDL.

2004-08-12  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 [GNU/linux] (AC_DEPLIBS_CHECK_METHOD): Cleanup,
	thanks to Daniel Reed.

2004-08-11  Daniel Reed  <djr@redhat.com>

	* tests/demo-nopic.test: Do not run on x86_64 or s390*

2004-08-06  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlforeachfile): LT_SYS_LIBSEARCH_PATH is not
	an environment variable, it is an actual path.

	* bootstrap: Remove `-f Makefile.am' now that we have an actual
	Makefile to build ltmain.sh.
	Reported by Noah Mish <noah@cs.caltech.edu>

2004-08-05  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Run the bootstrap rules from a file named Makefile,
	copied from Makefile.am for fresh checkouts.

2004-08-05  Alexandre Duret-Lutz  <adl@gnu.org>

	* m4/libtool.m4 (_LT_PROG_LTMAIN): Require ltmain.sh using
	using Autoconf's new AC_REQUIRE_AUX_FILE.

2004-08-05  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Depends on
	Makefile.
	(timestamp): Factor out timestamp setting and edit it based on the
	version number, so that it is empty for release versions.
	($(top_srcdir)/config/ltmain.sh): Use it.
	(libtoolize): Ditto.

	* Makefile.am (libtool): Depends on ltmain.sh.
	(libtoolize): Set and substitute TIMESTAMP.

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Actually run
	$(MKSTAMP) before changing directories, or it won't be found.
	Forgot to save before my last commit :-(

	* Makefile.am ($(top_srcdir)/m4/ltversion.m4): Since we already did
	`cd $(top_srcdir)' for this rule, we can't mv ltversion.tmp to the
	relative $(top_srcdir) again!  Also, run $(MKSTAMP) before changing
	directories, or it won't be found.
	($(top_srcdir)/config/ltmain.sh): Ditto.
	(EXTRA_DIST): We should distribute ltversion.m4 too.

2004-08-04  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Since CONFIG_SHELL may
	not actually be set, we should use SHELL here, also make darn sure
	that SHELL is set to something. Bug from Willem Jan Palenstijn
	<wpalenst@math.leidenuniv.nl>.

2004-08-03  Jacob Meuser  <jakemsr@jakemsr.com>

	* ltmain.in: Allow some static libraries to be used in generating a
	shared library on NetBSD and OpenBSD. match-pattern_regex decides
	which are good.

2004-08-02  Geoffrey Keating  <geoffk@apple.com>

	* m4/libtool.m4 [darwin]: Don't use -all_load.

2004-08-01  Maciej W. Rozycki  <macro@linux-mips.org>

	* m4/libtool.m4 (LT_AC_PROG_SED): Set SED when running from cache as
	well.

2004-07-31  Gary V. Vaughan  <gary@gnu.org>

	Although libtool is optimised to not need to subconfigure libltdl,
	the installed libltdl sources for libtoolize need to put
	libltdl/configure.ac in the parent package so that *it* can
	subconfigure libltdl.  That way we don't put any constraints on
	the build system used by the parent package because the
	libtoolized libltdl subtree is a self-contained sub-project:

	* libltdl/Makefile.am (EXTRA_DIST): Add configure.ac.
	(nobase_ltdldata_DATA): Change back to libltdl's own
	configure.ac.

2004-07-30  Gary V. Vaughan  <gary@gnu.org>

	My thanks to Alexandre Duret-Lutz <adl@gnu.org> for the insight
	required to write this changeset -- especially that ltmain.sh is
	the same on any machine for a given release, which I hadn't
	noticed for some bizarre reason: It turns out that generating
	distributed files from configure causes no end of hassle, as
	evidenced by the many patches I've generated over the last few
	days to try and get the dist and distcheck make rules to work.
	Instead of all that hair, we now simply generate our distributed
	files (now including ltmain.sh) with make rules -- and since
	automake creates make variables for all AC_SUBSTs, that is really
	easy.  The code looks a lot more like automake and autoconf
	Makefile.ams now, and doesn't have all the rough edges the earlier
	hacky solution suffered from.  We still generate libtool from
	config.status, but that is not a distributed file, and doesn't
	break the golden rule.  Besides, there is way more going on there
	than a bunch of substitutions:

	* Makefile.am (edit): New common sed substitutions for files now
	generated by make instead of config.status.
	(CLEANFILES): Clean new tmp files.
	(EXTRA_DIST): Add ltmain.sh.
	(vcl-tmp): Reinstated.
	(m4/ltversion.m4, config/ltmain.sh): New rules.  Generate from
	here instead of config.status.
	(libtoolize): Ditto.
	(libtool): Call config.status to regenerate if necessary.
	(dist-hook): Removed.
	* config/ltmain.in: Moved here from top_srcdir.
	* README-alpha: Update instructions to check AS_SHELL_SANITIZE is
	up to date.
	* bootstrap: Rewritten.  Generate m4/ltversion.m4 and
	config/ltmain.sh because configure depends on them.
	* configure.ac (AC_CONFIG_SRCDIR): Use libtoolize.in now that
	ltmain.in has moved.
	(AC_CONFIG_FILES): Don't generate distributed files,
	config/ltmain.sh and libtoolize from config.status.  We have make
	rules to do that now.

2004-07-30  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4, ltmain.in: readd the comments that I erased.

	* ltmain.in [darwin]: We already had a module var, there can be
	only one.

	* m4/libtool.m4, ltmain.in: autoconf now says the best thing to do
	with CDPATH is to (unset CDPATH) >/dev/null 2>&1 && unset CDPATH,
	so do it.

2004-07-29  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Ugh. More hair to
	help `make distcheck'; not only do we have to make a copy of
	ltmain.sh available in the source tree, but we have to be really
	careful about permission bit twiddling when we copy it across into
	the possible read-only $(top_srcdir)/config directory!

	* tests/tagtrace.test: Skip this test when running a VPATH build
	against a read-only source tree (as in distcheck for example),
	since autoconf wants to write temporary files in $top_srcdir
	otherwise.

	* Makefile.am ($(top_srcdir)/config/ltmain.sh): Automake assumes,
	quite rightly for every project except libtool, that there will be
	an ltmain.sh in the source tree.
	(EXTRA_DIST): As do the dist rules it generates.
	(dist-hook): Even though we definitely don't want to distribute
	our local ltmain.sh.

	* config/config.guess, config/config.sub: Don't check these in,
	they cause spurious conflicts on cvs commit and update, and are
	added by bootstrap in any case.

	* configure.ac (AC_INIT): Revert an accidental commit from my
	testing of package_revision.

2004-07-29  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/libtool.texi (Tags): Document CC.
	* m4/libtool.m4 (_LT_SETUP): Register CC as supported tag so that
	Automake uses it.

2004-07-28  Gary V. Vaughan  <gary@gnu.org>

	Fix a long-standing bug where macro_version was always empty in
	the generated m4/ltversion.m4.  Except for CVS revisions:

	* ltmain.in (package_revision): Don't try to deduce it from
	TIMESTAMP, since that is empty for release versions; simply
	substitute it...
	* configure.ac (package_revision): ...from here, having
	precalculated it before resetting TIMESTAMP for release versions.
	* bootstrap: Force regeneration of m4/ltversion.m4, but retain
	timestamps if there is no change to the content.

2004-07-28  Gary V. Vaughan  <gary@gnu.org>

	To take full advantage of this, libtool must be bootstrapped with
	CVS autoconf, otherwise pdksh chokes on some nested escaped quotes
	from libtool.m4.  Using CVS autoconf protects configure from
	non-bourne compatible shells in the same way this changeset
	protects libtool and libtoolize:

	* libtoolize.in: Include latest CVS autoconf AS_SHELL_SANITIZE
	expansion to make various shells fully bourne compatible.
	* ltmain.in: Ditto.
	* m4/libtool.m4 (AC_PATH_TOOL_PREFIX): Remove spurious quotes, the
	RHS of = assignment is not IFS split.
	(_LT_LANG_CXX_CONFIG): Ditto.
	(AC_LIBTOOL_POSTDEP_PREDEP): Ditto.

2004-07-27  Gary V. Vaughan  <gary@gnu.org>

	This change fixes another VPATH build bug, where the vcl.tmp
	target forced a rebuild of stamp-vcl in the build tree (and
	hence regeneration of m4/ltversion.m4, thus an automake driven
	rebootstrap that doesn't know about $fakes) requiring a fresh
	./bootstrap after every cvs/tla update:

	* Makefile.am (vcl.tmp): Removed.
	(stamp-vcl): Adopt former vcl.tmp target rules.

2004-07-25  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Make sure that dependency libraries of -dlpreopened
	libraries are propogated properly.

2004-07-23  Joe Orton  <joe@manyfish.co.uk>

	* libtool.m4: Treat bsdi5* like bsdi4*.

2004-07-22  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin](func_extract_archives): $SED not sed.

	* ltmain.in [darwin](func_extract_archives): Clean up last commit
	a little, some suggestions are from Albert Chin, those that are
	broken are mine.

	* libltdl/Makefile.am, libltdl/loaders/Makefile.am: Look for
	included files in the right places.

2004-07-18  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in [darwin](func_extract_archives): Because fat archives
	on darwin can not be extracted using ar, we need to use lipo to
	extract the thin archives and then use lipo again to generate the
	individual fat objects. This should allow people to run configure
	with CC set to "cc -arch ppc -arch ppc64" or "cc -arch ppc -arch
	i386" or whatever to match the toolchain they have available.

2004-07-18  Greg Eisenhauer  <eisen@cc.gatech.edu>

	* libltdl/loaders/Makefile.am: Use AM_MAKEFLAGS not MAKEFLAGS.

2004-07-18  Peter O'Gorman  <peter@pogma.com>

	* libltdl/Makefile.am: Ensure that lt__dirent.h is part of the dist,
	also make failed looking for configure.ac, look for
	$(top_srcdir)/configure.ac instead.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/lt__private.h (lt_dlhandle_struct): Renamed to
	lt__handle to better reflect the naming scheme.
	* libltdl/ltdl.h (lt_dlhandle): Be truly opaque with a void *.
	* libltdl/lt_dlloader.c (lt_dlloader_remove): Party to
	lt__private.h, so use internal lt__handle instead of opaque
	lt_dlhandle.
	* libltdl/ltdl.c (LT_DLGET_FLAG, LT_DLSET_FLAG): Add a cast to
	internal lt__handle type.
	(try_dlopen, tryall_dlopen, load_deplibs, unload_deplibs): Ditto.
	(lt_dlexit, lt_dlclose, lt_dlsym): Use lt__handle to iterate
	throught the handle list.
	(try_dlopen): Use lt__zalloc instead of MALLOC and memset.
	* libltdl/ltdl.h (lt_dlcaller_id): Be truly opaque with a void *.
	(lt_dlhandle_interface): New callback type for filtering handles
	according to the interface they present.
	* libltdl/ltdl.c (lt_dlcaller_register): Take an id and an
	interface check callback, and generate a caller_id.
	(iterator): New static variable for the use of...
	(lt_dlhandle_first): New function.  Set the iterator for
	subsequent calls to lt_dlhandle_next.
	(lt_dlhandle_next): Either work as before when iterator is unset,
	or else skip handles that fail the interface check in iterator set
	by lt_dlhandle_first.
	* libltdl/ltdl.h (lt_dlhandle_first): Declaration.
	* doc/libtool.texi (User defined module data): Document the new
	APIs.
	* NEWS: Updated.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	Split lt_dlloader management into a separate file, and factor
	`loaders' list management into a new SList ADT.  In the process,
	the API for writing loaders is a little cleaner, so all the
	existing loaders were tweaked to take advantage of that:

	* libltdl/slist.h, libltdl/slist.c: New files implementing a
	generic singly linked list container ADT.  The ADT is purely
	internal, and none of its API's are visible from an installed
	libltdl.
	* libltdl/lt_dlloader.h (lt_dlloader): Removed next field again
	:-) Renamed to lt_dlvtable for API.  Changed all callers.
	(lt_dlloader_get): New function to turn an lt_dlloader into its
	associated lt_dlvtable.
	(lt_dlloader_add): Removed unused data parameter.  The caller
	data belongs to (and is set by) the loader itself, not the
	loader's client.  Changed all callers.
	(lt_dlloader_name, lt_dlloader_data): Removed.  Use
	lt_dlloader_get instead!
	* libltdl/lt__private.h: Include slist.h.
	(lt__alloc_die_callback): Add missing LT_SCOPE to declaration.
	(lt_dlhandle_struct): Use lt_dlvtable instead of opaque
	lt_dlloader.
	* libltdl/ltdl.c (lt_dlexit): Rewritten for the new loader API.
	(loaders, lt_dlloader_add, lt_dlloader_remove, lt_dlloader_next,
	lt_dlloader_find): Moved from here...
	* libltdl/lt_dlloader.c ((loaders, lt_dlloader_add,
	lt_dlloader_remove, lt_dlloader_next, lt_dlloader_find): ...to
	here.  And rewritten in terms of new SList interface.
	* libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Rewritten in terms of
	new lt_dlloader interface.
	* libltdl/Makefile.am (libdlloader_la_SOURCES): Add slist.h and
	slist.c.  Move lt_dlloader.h from here...
	(pkginclude_HEADERS): ...to here.
	(libltdl_la_SOURCES): Add lt_dlloader.c and lt_dlloader.h.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	Collapse two almost identical structures into one:

	* libltdl/lt_dlloader.h (lt_dlloader): Add next field.
	* libltdl/ltdl.c (lt_user_dlloader): Remove entirely.  Change all
	callers to use lt_dlloader instead.  Add a compatibility macro.
	(lt_dlloader_add): Remove copy and allocate stage, just hook
	directly into the loaders list.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	A cleaner way to access the private fields of an lt_dlhandle
	than my move of the module field into lt_dlinfo:

	* libltdl/ltdl.c (lt_caller_data, lt_dlhandle_struct): Move from
	here...
	* libltdl/lt__private.h (lt_caller_data, lt_dlhandle_struct):
	...to here.  And put the module field back here...
	* libltdl/ltdl.h (lt_dlinfo): ...instead of here.
	* libltdl/loaders/loadlibrary.c (vm_open): Adjust.

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/lt__private.h (streq, strneq): New macros to make strcmp
	calls as used for simple comparison easier to read.
	* libltdl/loaders/dyld.c, libltdl/loaders/preopen.c,
	libltdl/ltdl.c: Use them!

2004-07-15  Gary V. Vaughan  <gary@gnu.org>

	This pervasive changeset makes two intertwined deep changes to the
	operation of libtool (neither would work alone).  First, there is
	a new feature that allows libraries to preopen modules.  This
	entails a backwards incompatible change to the libltdl API for
	separating out the preloaded symbol lists by owner.  Second, in
	the tradition of "eating our own dogfood", libltdl now preloads
	its own dlloaders.  The internal API for dlloaders has also had to
	change in a backwards incompatible way in support of the new
	library preloading feature.  If you don't use preloaded libraries,
	you needn't change your project sources, though you will need to
	recompile against the new libltdl.  The API changes are mostly
	confined to dlloaders, so you probably needn't worry about those
	(unless you have written a custom loader that you want libltdl to
	use):

	* configure.ac (AC_CONFIG_FILES): Add libltdl/loaders/Makefile.
	* libltdl/configure.ac (AC_CONFIG_FILES): Add loaders/Makefile.
	* libltdl/loaders: New directory for module loaders, to simplify
	Makefile rules, and to give the loaders themselves names that are
	unique in the first few characters.
	* libtoolize.in (func_copy_all_files): Copy recursively to pick up
	the loaders directory contents.
	* libltdl/loaders/Makefile.am: New file.  Move module building
	rules to here...
	* libltdl/Makefile.am: ...from here.
	(VERSION_INFO): Bumped version info to signify interface changes.
	(libltdl_la_CPPFLAGS, libltdlc_la_CPPFLAGS): Set LTDLOPEN
	appropriately for each library.
	* libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
	libltdl/loader-dyld.c, libltdl/loader-load_add_on.c,
	libltdl/loader-loadlibrary.c libltdl/loader-preopen.c,
	libltdl/loader-shl_load.c: Moved from here...
	* libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
	libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
	libltdl/loaders/loadlibrary.c libltdl/loaders/preopen.c,
	libltdl/loaders/shl_load.c: ...to here.
	(get_vtable): New entry function for each.
	* libltdl/loaders/preopen.c (lt_dlsymlists_t): Replaced by...
	(symlist_chain): ...a new structure which maps lists of preloaded
	symbols from the object that loads them.
	(lt_dlpreload_open): New function to automatically open all
	preloaded modules belonging to a named object (ORIGINATOR).
	* libltdl/lt__alloc.c (lt__zalloc): New function to return a block
	of zeroed out new memory.
	* libltdl/lt__alloc.h (lt__zalloc): Prototype it.
	* libltdl/lt__private.h (lt__alloc_die_callback): Add missing
	prototype.
	(lt__error_strings): Make this opaque to callers.
	* libltdl/lt_error.c (lt__error_strings): Move the implementation
	to here.
	* libltdl/lt_dlloader.h (lt_user_dlloader): Add extra fields to
	make originator focused preloading possible.  *BREAKS BACKWARDS
	COMPATIBILITY*
	(lt_dlloader_add): Take advantage of new fields to simplify
	paramater list.
	* libltdl/lt_system.h (LT_STR): New ANSI stringification macro.
	(LT_CONC): Fix it to work from within macros.
	* libltdl/ltdl.c (loader_init, loader_init_callback): Simplify
	dlloader loading.
	(get_vtable, preloaded_symbols): Point these at the preopen.c
	symbols to bootstrap the loader chain.
	(lt_dlinit): Load the preopen dlloader manually, and then use it
	to load any other preloaded dlloaders.
	(lt_dlloader_add): Simplify parameter list. Populate new
	fields. Chain new loaders according to priority field.
	* libltdl/ltdl.h (lt_dlsymlist): Add a new originator field.
	(lt_dlpreload_callback_func): Type of a callback for automatic
	lt_dlpreload_open loading.
	(LTDL_SET_PRELOADED_SYMBOLS): Adjust to hook into preloaded
	symbols from the "@PROGRAM@" originator.
	* tests/demo/dlmain.c (main): Use mangled preloaded_symbols symbol.
	* tests/pdemo/longer_file_name_dlmain.c (main): Ditto.
	* ltmain.in: Don't spew spurious warnings when dlopening and
	dlpreopening modules.
	(func_generate_dlsyms): Factored out from multiple copies in the
	rest of the code. Generate originator keyed symbol lists.
	(func_extract_archives): Also factored.  Extract the contents of
	convenience archives for linking with dependent libraries when
	--whole-archive is not available.
	[darwin]: Don't try to link $old_library unless it exists, and
	$lib is a bundle.
	* m4/ltdl.m4 (AC_LTDL_DLLIB): Check for all possible dynamic
	loading libraries/apis rather that stopping when an acceptable one
	is discovered.
	(LT_DLLOADERS): New variable for holding dlloaders that can be
	preloaded.
	* doc/libtool.texi: Document interface changes.
	* NEWS: Updated.

2004-07-12  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 [darwin]: Set whole_archive_flag_spec to '' for xlc,
	or it does not pass it's tests. xlc passes -noall_load (the default)
	and when -all_load is also specified Apple's /usr/bin/libtool barfs
	and dies.

2004-07-07  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (lt_dlinfo): Move private module field to here...
	* libltdl/ltdl.c (lt_dlhandle_struct): ...from here.  Changed all
	callers.
	* libltdl/loader-loadlibrary.c (sys_wll_open): Use new inteface to
	scan loaded handle->info.module fields for previously loaded
	modules.
	* doc/libtool.texi (User defined module data): Document changes to
	the interface.
	* NEWS: Updated.
	Reported by Chuck Wilson <cwilson@ece.gatech.edu>

2004-07-07  Brad  <brad@comstyle.com>

	* m4/libtool.m4: Fixes for the OpenBSD support

2004-06-24  Noah Misch  <noah@cs.caltech.edu>

	* ltmain.in: Unset the zsh GLOB_SUBST option, which makes zsh
	handle backslash quoting poorly, before doing anything else.
	* tests/defs: Likewise.

2004-06-21  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (libtoolize_flags): With the --ltdl option, we
	libtoolize the libltdl subdirectory automatically.
	* m4/ltdl.m4 (AC_WITH_LTDL): Fix overquoted args.

2004-06-21  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (dependency_libs) [darwin]: Remove -framework stuff from
	dependency_libs. Instead, invent a new .la var "inherited_linker_flags"
	to keep any linker flags which should be used when linking the library,
	but are outside the usual -L -l, -R etc that can be used in
	dependency_libs. Any unusual flags in dependency_libs cause recent
	versions of libtool to die with "cannot find the library `'", so
	it is required to move frameworks out of there. :(

2004-06-21  Gary V. Vaughan  <gary@gnu.org>

	From Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
	* libtoolize.in: Quote $# to make sh.test happy again.

	* m4/ltdl.m4 (AC_WITH_LTDL): Remove redundant AC_REQUIRE calls.
	Either set variables to allow a client to link with the installed
	libltdl, or else compile a local libltdl as a convenience library.
	* libtoolize.in (opt_ltdl): Removed in favour of...
	(ltdldir): ...this, which is defaulted to "libltdl" or can be set
	by the user with an argument to --ltdl.
	(Main): Use it!
	* doc/libtool.texi (Distributing libltdl): Improved documentation
	on libltdl.
	(Invoking libtoolize): Document new optional --ltdl target
	directory argument.

2004-06-17  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [darwin*]: Fix a typo
	in allow_undefined_flag: s,${Wl},${wl},g

	* libtoolize.in (func_scan_files): Accept AC_WITH_LTDL as an
	indication that libltdl is being used.
	(Main): Without AC_CONFIG_MACRO_DIR, don't just dump all the
	macro files in `.' since they are never used, and aclocal will
	copy them from $aclocaldir into aclocal.m4 anyway.
	Reported by Alexandre Duret-Lutz <adl@gnu.org>

2004-06-16  Brad  <brad@comstyle.com>

	* m4/libtool.m4: More improvements to OpenBSD support.
	* NEWS: Updated.

2004-06-16  Gary V. Vaughan  <gary@gnu.org>

	libltdl uses LIBOBJS, which leak out into a parent project if both
	share the same configure.ac.  Libtool itself doesn't compile any
	code, so it is okay to do it during bootstrap, but other projects
	need to treat libltdl as a configurable subproject to keep their
	respective LIBOBJS separate:

	* libltdl/configure.ac: New file, based on configure.ac.
	* libltdl/Makefile.am (AC_LOCAL_AMFLAGS): Use our own m4
	directory.
	(ltdldata_DATA): List *all* the files that libtoolize --ltdl will
	install.

2004-06-16  Gary V. Vaughan  <gary@gnu.org>

	Automake 1.9 won't have the AC_PROG_EGREP bug (aclocal used to
	pull an old installed libtool.m4 as well as the bootstrap
	m4/libtool.m4 if an AC_DEFUN was removed), and we have
	lt~obsolete.m4 to work around it in the mean time.  libtoolize
	can install macro files from $prefix/share/aclocal perfectly well
	without us needing to move to a whole other directory:

	* Makefile.am (pkgmacro_DATA): Renamed to aclocal_DATA, so m4
	files are installed to $prefix/share/aclocal again.
	(install-data-local): Don't remove just installed macros!
	* libtoolize.in (pkgmacrodir): Renamed to aclocaldir.
	(func_copy_some_files): New function factored out of...
	(func_copy_all_files): ...here.  Adjust to use func_copy_some_files.
	(re_pkgaux_files): Renamed to glob_pkgaux_files, since it is not
	a regular expression.
	(re_pkgmagro_files): Replaced with...
	(pkgmacro_files): ...a colon delimited list of libtool installed
	m4 files from aclocaldir.
	(Main): Copy macro files from aclocaldir again.
	* NEWS: Updated.

2004-05-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltmain.sh (check_executable): The WIN32 API and MinGW do not support
	S_IXOTH and S_IXGRP so use of these modes should be conditional.

2004-05-21  Gary V. Vaughan  <gary@gnu.org>

	* tests/tagtrace.test: Forgot to add this file to the repository
	for Alexandre's 2004-05-16 patch below.

2004-05-18  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Make this an m4_defun,
	test the tags compiler to see if it is GCC, not the CC compiler.

2004-05-16  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/libtool.texi (Invoking libtool): Mention --tag=TAG.
	(Tags, Trace interface): New nodes.
	* m4/libtool.m4 (LT_SUPPORTED_TAG): New macro.
	(_LT_LANG): Call it.
	* tests/tagtrace.test: New file.
	* tests/Makefile.am
	(TESTS): Add tagtrace.test.
	* tests/defs: Define AUTOCONF.

2004-05-14  Mike Gorchak  <lestat@i.com.ua>

	* ltmain.in: Add new qnx version type support.
	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Use it.  Set
	ldqnx.so linker type.
	(AC_DEPLIBS_CHECK_METHOD): QNX6 uses GNU C++, with deplib
	checking, so use pass_all.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Use -shared for QNX.
	(_LT_LANG_CXX_CONFIG): QNX can make shared libraries.
	* m4/ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): QNX opens deplibs on
	dlopen.
	* NEWS: Updated.

2004-05-05  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH): Insert space
	around = for a test and a comma between runpath_var and $1. Bug
	reported by Max Bowsher.

2004-04-22  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/argz.h: Moved from here...
	* libltdl/argz_.h: ...to here, so as not to shadow system
	argz.h when we `#include <argz.h>' for example.
	#include stdlib.h and sys/types.h to ensure we get a size_t
	definition.
	* libltdl/argz.c (HAVE_CONFIG_H): Set it up how ltdl likes it when
	used by another client.
	* m4/argz.m4: New file.
	(gl_FUNC_ARGZ): Try to find an error_t definition, and a system
	argz.h.
	* m4/ltdl.m4: Use it.
	(AC_LTDL_FUNC_ARGZ): Removed.
	* libltdl/lt__glibc.h: #include <argz.h> to pick up either the
	system argz.h or our libltdl/argz.h if necessary.
	* libltdl/Makefile.am (libltdl_la_SOURCES): Move argz.h from
	here...
	(ltdldata_DATA): ...here. Along with argz.c.
	(argz.h): Generate from argz_.h if the system file is missing.
	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

2004-04-22  Gary V. Vaughan  <gary@gnu.org>

	According to Howard Chu <hyc@highlandsun.com>:
	Applications should assume that the native dlopen is NOT
	thread-safe, and take care of locking themselves. All application
	calls into libltdl should thus be protected by the caller.

	* libltdl/lt_mutex.c, libltdl/lt_mutex.h: Removed.
	* libltdl/Makefile.am (pkginclude_HEADERS): Removed lt_mutex.h.
	(libltdl_la_SOURCES): Removed lt_mutex.c and lt_mutex.h.
	* libltdl/ltdl.h: Don't include lt_mutex.h.
	* libltdl/lt__private.h (LT__MUTEX_GETERROR, LT__MUTEX_SETERROR)
	(LT__MUTEX_SETERRORSTR): Renamed to...
	(LT__GETERROR, LT__SETERROR, LT__SETERRORSTR): ...this.  Changed
	all callers.
	(LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, lt_dlmutex_lock)
	(lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror):
	Removed.  Changed all callers.
	* doc/libtool.texi (Thread Saftey in libltdl):
	* NEWS: Updated.

2004-04-19  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Detect Intel C++ compiler
	version more idiomatically.

2004-04-19  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Use cc rather than ld to created
	a shared library on HP-UX 11.x. On HP-UX 10.x, the
	C compiler doesn't grok -b so we continue to use ld.

	* m4/libtool.m4: Use cc rather than ld to create a
	shared library on Solaris. When using the Sun
	Workshop compiler 5.0 (and I presume any previous
	version), revert to ld due to compiler errors.

	* m4/libtool.m4: Use cc rather than ld to created
	a shared library on Tru64 UNIX.

	* m4/libtool.m4: Use cc rather than ld to created
	a shared library on IRIX.

	* libltdl/loader-shl_load.c: Fix typos during reorg.

2004-04-19  Alexandre Duret-Lutz  <adl@gnu.org>

	* doc/libtool.texi (LT_INIT): Properly display options in a table.

2004-04-19  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Intel C++ compiler 8.0 and
	newer adds predep_objects and postdep_objects itself, so don't
	duplicate them in $archive_cmds and $archive_expsym_cmds.
	* NEWS: Updated.
	Reported by Roberto Bagnara <bagnara@cs.unipr.it>

2004-04-17  Peter O'Gorman  <peter@pogma.com>

	* libltdl/loader-dyld.c: Fix compilation issues. Set Original author
	to me.

2004-04-17  Todd Vierling  <tv@duh.org>,
	Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Use sysctl to get the
	max cmd length on BSD* and darwin. Make sure that there is a safety
	factor too.

2004-04-15  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (_LT_LANG_DEFAULT_CONFIG): Remove code to handle 'none'
	and 'all' options, this now always assumes automatic mode as that
	works so well.
	(_LT_LANG_DEFAULT): Remove definition
	* m4/ltoptions.m4: Remove 'no-lang', 'auto-lang' and 'all-lang' options.
	* configure.ac: Invoke LT_LANG for each desired supported language.
	* doc/libtool.texi: Remove documentation for the LT_INIT options,
	rewrite LT_LANG documentation.

2004-04-14  Alexandre Duret-Lutz  <adl@gnu.org>

	* bootstrap: Delete acinclude.m4.

2004-04-14  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (configure_ac): Don't complain about the lack of
	aclocal.m4.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

2004-04-13  Gary V. Vaughan  <gary@gnu.org>

	* m4/ltdl.m4 (AC_LIB_LTDL): Remove AC_REPLACE_FUNCS for memmove
	and strcpy.

	* libltdl/lt__pre89.h, libltdl/memcpy.c, libltdl/memmove.c,
	libltdl/strchr.c, libltdl/strcmp.c, libltdl/strrchr.c: Remove
	half-assed pre-c89 support entirely.
	* libltdl/lt__private.h: Don't refer to lt__pre89.h.
	* libltdl/Makefile.am (ltdldata_DATA): Remove references to
	deleted files.
	* NEWS: Mention it.

	* libltdl/lt__pre89.h, libltdl/ltdl.c, libltdl/ltdl.h, libltdl/argz.c,
	libltdl/argz.h, libltdl/lt__glibc.h, libltdl/lt_dlloader.h,
	libltdl/lt__dirent.c, libltdl/lt__dirent.h, libltdl/lt__private.h,
	libltdl/lt__alloc.c, libltdl/lt__alloc.h, libltdl/lt_system.h,
	libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
	libltdl/loader-dyld.c,  libltdl/loader-loadlibrary.c,
	libltdl/loader-shl_load.c, libltdl/lt_error.h, libltdl/lt_mutex.h:
	Autoconf either defines to 1 or undefs the discovery macros it
	puts in config.h, and many (non-GNU) compilers throw a spurious
	warning when testing an #undef macro with #if.  For consistency,
	while we are touching all these lines, use defined(MACRO) style
	throughout.
	Reported by Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

2004-04-13  Gary V. Vaughan  <gary@gnu.org>

	Factor out the individual loaders, in preparation for preloading
	them as libtool modules.  Currently loader-preopen.c is linked
	unconditionally and other appropriate loaders discovered by
	AC_LTDL_DLLIB are built and linked in:

	* libltdl/Makefile.am (libltdl_la_SOURCES): Add loader-preopen
	module.
	* m4/ltdl.m4 (AC_LTDL_DLLIB): Use AC_LIBOBJ to add appropriate
	loaders to libltdl.
	* libltdl/lt_system.h (LT_SCOPE): Moved to here.
	* libltdl/ltdl.h (lt_dlloader, lt_user_data, lt_module)
	(lt_module_open, lt_module_close, lt_find_sym, lt_dlloader_exit)
	(struct lt_user_dlloader, lt_dlloader_next, lt_dlloader_find)
	(lt_dlloader_name, lt_dlloader_data, lt_dlloader_add)
	(lt_dlloader_remove): Moved declarations...
	* libltdl/lt_loader.h: ...to here.
	* libltdl/ltdl.c: Include lt_loader.h.  Move loader implementation
	code from here...
	* libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
	libltdl/loader-dyld.c, libltdl/loader-load_add_on.c,
	libltdl/loader-loadlibrary.c, libltdl/loader-preopen.c,
	libltdl/loader-shl_load.c: ...to here.
	* tests/cdemo/Makefile.am, tests/demo/Makefile.am,
	tests/depdemo/Makefile.am, tests/f77demo/Makefile.am,
	tests/mdemo/Makefile.am, tests/mdemo2/Makefile.am,
	tests/pdemo/Makefile.am, tests/tagdemo/Makefile.am (AM_CPPFLAGS):
	Add -I$(top_srcdir)/../.. so that libltdl include files can be
	written as #include <libltdl/lt_dlloader.h> and found correctly.

2004-04-13  Gary V. Vaughan  <gary@gnu.org>

	Factor out the mutex handling and error handling into their own
	modules.  Mutex handling is not currently useful in combination
	with posix threads, and should be easier to replace if it is in a
	separate module.  Additionally, we can factor out the loaders in
	such a way as to depend on only the portability layer and these
	new mutex and error modules now:

	* libltdl/Makefile.am (pkginclude_HEADERS): Install lt_error.h and
	lt_mutex.h to $includedir/libltdl.
	(libltdl_la_SOURCES): Build lt_error and lt_mutex objects.
	* libltdl/ltdl.h (LT_SCOPE): Moved from here...
	* libltdl/lt_system.h (LT_SCOPE): ...to here.
	* libltdl/ltdl.c (lt_dlerror_strings, LT_DLSTRERROR): Moved from
	here...
	* libltdl/lt__private.h (lt__error_strings, LT__STRERROR): ...to
	here as additional internal interfaces to lt_error.  Changed all
	callers.
	* libltdl/ltdl.c (LT_DLMUTEX_LOCK, LT_DLMUTEX_UNLOCK)
	(LT_DLMUTEX_SETERROR, LT_DLMUTEX_GETERROR, lt_dlmutex_lock_func)
	(lt_dlmutex_unlock_func, lt_dlmutex_geterror_func)
	(lt_dllast_error): Moved from here...
	(LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, LT__MUTEX_SETERRORSTR)
	(LT__MUTEX_GETERROR, lt__mutex_lock_func, lt__mutex_unlock_func)
	(lt__mutex_geterror_func, lt__last_error): ...to here as
	additional internal interfaces to lt_mutex.  Changed all callers.
	(LT_MUTEX_SETERROR): Take an errorcode rather than a string.
	Changed all callers.
	* libltdl/ltdl.c, libltdl/ltdl.h (lt_dlmutex_register): Moved from
	here...
	* libltdl/lt_mutex.c, libltdl/lt_mutex.h (lt_dlmutex_register):
	...to here. New files.
	* libltdl/ltdl.c, libltdl/ltdl.h (lt_dladderror, lt_dlseterror)
	(lt_dlerror_table):
	Moved from here...
	* libltdl/lt_error.c, libltdl/lt_error.h (lt_dladderror)
	(lt_dlseterror, lt_dlerror_table): ...to here. New files.

2004-04-13  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (XDELTA_OPTIONS): Remove --pristine as that
	generates huge xdeltas.

2004-04-08  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_append, argz_create_sep, argz_insert)
	(argz_next, argz_stringify): Move from here...
	* libltdl/argz.c: New file. ...to here.
	* libltdl/lt__glibc.h: New file. Rename global symbols into the
	lt__ namespace.
	* libltdl/lt__private.h: Include lt__glibc.h.
	* libltdl/Makefile.am (libltdl_la_SOURCES): Add new files.
	(AM_CPPFLAGS): Add -DLTDL.
	* libltdl/argz.h (argz_append, argz_create_sep, argz_insert)
	(argz_next, argz_stringify): New file. Declare argz functions
	here, including lt__glibc.h when LTDL is defined to rename global
	symbols for libltdl.
	* m4/ltdl.m4 (AC_LTDL_FUNC_ARGZ): Add argz to AC_LIBOBJ if any of
	our argz_* functions are missing from the system libraries.

	* libltdl/ltdl.c: Move standard headers and preprocessor guards
	from here...
	* libltdl/lt__private.h: ...to here.  New file to declare ltdl's
	internal interfaces.
	* libltdl/ltdl.c: Include lt__private.h.
	* m4/ltdl.m4 (AC_LIB_LTDL): Add lt_dirent to AC_LIBOBJ if all of
	opendir, readdir and closedir are missing.
	(AC_CHECK_HEADERS): Remove assert.h, ctype.h, errno.h, malloc.h,
	stdio.h and stdlib.h; these headers are all available in standard
	c89 environments and newer.
	* libltdl/lt__private.h: Include them here unconditionally.
	* libltdl/lt__dirent.c (opendir, readdir, closedir): New file.
	Windows dirent emulation functions moved to here...
	* libltdl/ltdl.c (opendir, readdir, closedir): ...from here.
	* libltdl/lt__dirent.h: New file.  Rename the global symbols from
	lt__dirent.c into the lt__ namespace so they don't clash with
	other libraries.

2004-04-08  Gary V. Vaughan  <gary@gnu.org>

	Factor out the bottom portability layer from ltdl.  Code in this
	layer has global symbols renamed by lt__pre89.h, and may not
	refer to any symbols except those provided by the system libraries
	or other code in the portability layer:

	* libltdl/lt__pre89.h: New file.  Rename all the symbols from
	LTLIBOBJS into the lt__ namespace so that they don't clash with
	other libraries.
	* libltdl/ltdl.c (rpl_memcpy, rpl_memmove, rpl_strchr, rpl_strcmp)
	(rpl_strrchr): Moved from here...
	* libltdl/memcpy.c (memcpy): ...to here, and fixed void *
	dereference bug...
	* libltdl/memmove.c (memmove): ...to here, and fixed void *
	dereference bug...
	* libltdl/strchr.c (strchr): ...to here...
	* libltdl/strcmp.c (strcmp): ...here...
	* libltdl/strrchr.c (strrchr): ...and here.
	* libltdl/Makefile.am (libltdl_la_SOURCES): Add lt__pre89.h.
	(libltdl_la_LIBADD, libltdlc_la_LIBADD): Add $(LTLIBOBJS).
	(ltdldata_DATA): Add replacement sources files.
	* m4/ltdl.m4 (AC_LIB_LTDL): Do careful config.h and LTLIBOBJ
	setting for missing pre89 functions.

2004-04-08  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (LT_PARAMS): Removed.  Changed all users to
	ANSI prototypes.
	(lt_ptr): Keep backwards compatibility stub.
	* libltdl/ltdl.c, libltdl/ltdl.h: Use ANSI function declarations
	throughout.  s/lt_ptr/void */g.

2004-04-08  Fredrik Estreen  <estreen@algonet.se>

	* m4/ltdl.m4: Rename shrext to shrext_cmds here too.

2004-04-06  Gary V. Vaughan  <gary@gnu.org>

	There was no clean separation of abstraction layers in libltdl.
	The first step in fixing this is to factor out the memory
	management abstraction, making a start on removing promiscuity
	from the underlying portability layer:

	* doc/libtool.texi (Libltdl interface): Remove lt_dlmalloc,
	lt_dlrealloc and lt_dlfree references.  The memory management
	layer used by libltdl is now private.
	* libltdl/lt_system.h: New installed header for system portability
	abstraction.
	* libltdl/ltdl.h: Use it.
	* libltdl/lt__alloc.c, libltdl/lt__alloc.h: New module above
	system portability layer to abstract ltdl's memory management.
	* libltdl/ltdl.c: Use lt__alloc.h.
	(closedir): Use free.
	(opendir): Use malloc/free.
	(lt__xalloc_die_callback): Report memory failures through
	lt_dlerror.
	(lt_dlinit): Use it to initialise memory management.
	(LT_DLMALLOC, LT_DLREALLOC, LT_DLFREE, LT_EMALLOC, LT_EREALLOC)
	(rpl_strdup, rpl_realloc, lt_estrdup, lt_emalloc, lt_erealloc):
	Removed in favour of...
	(lt__strdup, lt__memdup, MALLOC, REALLOC, FREE): ...these calls
	from libltdl/lt__alloc.h.  Changed all callers.
	(rpl_argz_append, rpl_argz_create_sep, rpl_argz_insert): As part
	of the portability layer, these functions no longer use libltdl
	memory management API.
	(free_vars): Factored out.
	(LT_DLMEM_REASSIGN): While redoing memory handling, renamed...
	* libltdl/lt__alloc.h (MEMREASSIGN): ...to this.
	* libltdl/Makefile.am (AUTOMAKE_OPTIONS): Let automake track
	dependencies automatically.
	(pkgincludedir): Override from parent package's setting.
	(pkginclude_HEADERS): Install lt_system.h.
	(libltdl_la_SOURCES): Add new files.
	* NEWS: Updated.
	Reported by Dalibor Topic <robilad@kaffe.org>

2004-04-01  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Remove an extra eval concat_cmds that some idiot added.
	Fixes double eval on AIX, reported by Albert Chin and Uwe Moeller.

	* NEWS: Add a news item about xlc support that I forgot yesterday.

2004-03-31  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4, ltmain.in (darwin): Support IBM's xlc and xlc++.

2004-03-31  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_LANG_C_CONFIG): If $compiler is not set, then
	don't call the macros that test it.
	(_LT_LANG_CXX_CONFIG): Ditto.
	(_LT_LANG_F77_CONFIG): Ditto.
	(_LT_LANG_GCJ_CONFIG): Ditto.
	(_LT_LANG_RC_CONFIG): Ditto.

2004-03-30  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (func_scan_files): sed BRE have no alternation, so
	break LT_INIT matcher out.
	(func_serial): Don't escape literal parens for grep BRE.

	* m4/libtool.m4 (LT_INIT): aclocal can't see AC_DEFUN_ONCE, so use
	AC_DEFUN and m4_define.
	* libtoolize.in (func_serial): No longer accept AC_DEFUN_ONCE...
	(func_grep): ...so mere grep is sufficient again...
	(EGREP): ...and this is no longer required.

2004-03-29  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4: Use LT_INIT as #serial tag.
	* libtoolize.in: Grok LT_INIT!  Pass A[CM]_PROG_LIBTOOL to...
	(func_serial_update): ...here, we now take an additional parameter
	containing another regex to match ancient serialed files.
	(func_serial): Accept AC_DEFUN_ONCE of the #serial tag...
	(func_grep): ...which requires egrep...
	(EGREP): ...substituted by config.status.
	(func_scan_files): Set seen_libtool if LT_INIT goes by.

	* Makefile.am (pkgmacro_DATA): Install ltoptions.m4.

	* libltdl/Makefile.am (AM_CPPFLAGS): Also check $top_builddir for
	config.h.
	(ltdl.o): config.h is in $top_builddir.

2004-03-24  Scott James Remnant  <scott@netsplit.com>

	* NEWS: Explain more fully why we no longer load libraries
	with global symbol resolution.
	* doc/libtool.texi (libtool script contents): Add missing
	documentation for 'inherit_rpath' variable.

	* configure.ac: Catch errors during calls to AC_PROG_CXX,
	AC_PROG_CXXCPP and AC_PROG_F77 before LT_INIT.  Only set the
	HAVE_CXX and HAVE_F77 conditions to true if an error didn't
	occur (AC_PROG_CXX leaves CXX="g++" even if it didn't find one).
	Set HAVE_GCJ and HAVE_RC to true correctly as well.
	* m4/libtool.m4 (LT_PROG_GCJ): If AC_PROG_GCJ or AM_PROG_GCJ are
	defined, expand to the definition of those instead of our own.
	Define GCJ to '' instead of 'no' if not found.
	(LT_PROG_RC) Define RC to '' instead of 'no' if not found.
	(_LT_LANG_GCJ_CONFIG): Require LT_PROG_GCJ to be expanded first.
	(_LT_LANG_RC_CONFIG): Require LT_PROG_RC to be expanded first.

	* libltdl/ltdl.c (sys_dl_open): Don't load libraries with global
	symbol resolution.
	* NEWS: Updated.

2004-03-24  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Add new variable, inherit_rpath, if the
	RPATHs of the libraries being linked are inherited in
	the output file. For systems with a linker exhibiting
	this feature, programs/libraries must be relinked at
	installation time.

	* m4/libtool.m4: When linking convenience libraries on Solaris
	with the Sun C++ compiler, pass convenience libraries through
	to the linker with -Qoption between allextract/defaultextract.
	The Sun C++ compiler bundles -Qoption arguments so
	convenience libraries are linked with defaultextract
	otherwise.
	* tagdemo/Makefile.am, tagdemo/main.cpp, tagdemo/conv.h,
	tagdemo/conv.cpp: Augment tagdemo test to link a convenience
	library with a libtool library.

	* ltmain.in: Piecewise linking doesn't work when the output
	file is an absolute path, use the basename only instead.

	* ltmain.in: When a library is installed, dependent on a
	convenience library, and it involves relinking, the object
	files extracted from the convenience library are not removed
	after the relink. This is a problem if you build as non-root,
	install as root, then try to remove the build directory as
	non-root; Clean up properly if relink fails; Change
	"$realname"U to ${realname}T to be consistent.

2004-03-24  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in <prog linkmode>: Always add -L options to
	$newlib_search_path instead of just in scan mode to ensure that
	non-libtool libraries in user-specified directories can be found.

2004-03-22  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (_LT_CONFIG): Remove unneeded else condition
	code, now the support determination is done in m4.
	(_LT_LANG): Correct comment, unexpected leak from keybuk-lt-tag.patch.

2004-03-21  Scott James Remnant  <scott@netsplit.com>

	* libltdl/Makefile.am (libltdl_la_LDFLAGS): Increment CURRENT
	and AGE of libltdl, warranted by the addition of lt_dlhandle_find()
	since 1.5.2.

2004-03-21  Scott James Remnant  <scott@netsplit.com>

	Further sweeping changes to the user interface to libtool from
	`configure.ac' to allow users to better control the list of
	supported languages.  Three LT_INIT options 'no-lang', 'all-lang'
	and 'auto-lang' (the default) control the initial list and others
	may be added with LT_LANG.

	* m4/libtool.m4 (_LT_CONFIG): Renamed AC_LIBTOOL_CONFIG to _LT_CONFIG
	which is more consistent with our own namespace and gets us further out
	of Autoconf's.
	(_LT_LIBTOOL_TAGS): Output available_tags variable based entirely
	on the value of _LT_TAGS.
	(_LT_COPYING): Call _LT_LIBTOOL_TAGS to output available tags,
	always append tag configuration if the tag is available.
	(LT_LANG): New macro to enable support for a language that accepts
	tag names (eg. "CXX") or human language names (eg. "C++").
	(_LT_LANG): Internal support macro for above that appends the
	tag to _LT_TAGS and calls the appropriate config macro.
	(LT_INIT): Ensure that LT_LANG is not called before LT_INIT.
	(AC_LIBTOOL_TAGS): Removed, call LT_LANG for each language now.
	(_LT_AC_TAG_CHECK): Removed, _LT_LANG handles duplicate calls.
	(_LT_LANG_DEFAULT_CONFIG): Macro to set initial language support
	based on options passed to LT_INIT.
	(_LT_SETUP): Call _LT_LANG_DEFAULT_CONFIG.
	(_LT_AC_TAG_CONFIG): Removed, handled by _LT_LANG_DEFAULT_CONFIG.
	(_LT_AC_LANG_CXX, _LT_AC_LANG_F77, _LT_AC_LANG_GCJ): Removed,
	automatic language support inclusion now handled by
	_LT_LANG_DEFAULT_CONFIG.
	(AC_LIBTOOL_CXX): Obsolete macro, update to LT_LANG(C++).
	(AC_LIBTOOL_F77): Obsolete macro, update to LT_LANG(Fortran 77).
	(AC_LIBTOOL_GCJ): Obsolete macro, update to LT_LANG(Java).
	(AC_LIBTOOL_LANG_C_CONFIG_: Removed.
	(_LT_AC_LANG_C_CONFIG): Renamed to _LT_LANG_C_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(_LT_SETUP): Replace call to AC_LIBTOOL_LANG_C_CONFIG with call to
	new _LT_LANG_C_CONFIG macro.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Removed.
	(_LT_AC_LANG_CXX_CONFIG): Renamed to _LT_LANG_CXX_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(AC_LIBTOOL_LANG_F77_CONFIG): Removed.
	(_LT_AC_LANG_F77_CONFIG): Renamed to _LT_LANG_F77_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(AC_LIBTOOL_LANG_GCJ_CONFIG): Removed.
	(_LT_AC_LANG_GCJ_CONFIG): Renamed to _LT_LANG_GCJ_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(AC_LIBTOOL_LANG_RC_CONFIG): Removed.
	(_LT_AC_LANG_RC_CONFIG): Renamed to _LT_LANG_RC_CONFIG, call
	_LT_CONFIG instead of AC_LIBTOOL_CONFIG.
	(LT_AC_PROG_GCJ): Renamed to LT_PROG_GCJ.
	(LT_AC_PROG_RC): Renamed to LT_PROG_RC.
	* m4/ltoptions.m4: Define new 'no-lang', 'auto-lang' and 'all-lang'
	options which set the default for _LT_LANG_DEFAULT_CONFIG.
	* m4/lt~obsolete.m4: Removed AC_LIBTOOL_CONFIG, _LT_AC_LANG_C_CONFIG,
	_LT_AC_LANG_GCJ_CONFIG, _LT_AC_LANG_RC_CONFIG; all of which are no
	long referenced in any way.
	* configure.ac: Enable all languages.
	* tests/cdemo/configure.ac, tests/demo/configure,ac,
	tests/depdemo/configure.ac, tests/f77demo/configure.ac,
	tests/mdemo/configure.ac, tests/pdemo/configure,ac,
	tests/tagdemo/configure.ac: Remove calls to AC_LIBTOOL_TAGS,
	the default 'auto-lang' mode now does the right thing.
	* doc/libtool.texi (The LT_INIT macro): Add documentation for
	new LT_INIT options and the LT_LANG macro, replacing the old
	documentation of AC_LIBTOOL_TAGS which is no more.
	* NEWS: Updated.

2004-03-17  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4: Removed AC_BEFORE references to AC_LIBTOOL_SETUP
	which is no more.
	* m4/lt~obsolete.m4: As AC_LIBTOOL_SETUP is no longer referenced,
	it can be removed from this file.  Remove _AC_PROG_LIBTOOL also.

2004-03-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* m4/libtool.m4: Remove newlines from lt_ld_extra, so
	variable can safely be stored in config.cache.

2004-03-14  Michael Pruett  <michael@68k.org>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS0 [irix]: Define
	archive_expsym_cmds so that --export-symbols will work.

2004-03-11  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (link_all_deplibs,darwin): Link libraries in the
	correct order. Bug from Zachary Pincus <zpincus@stanford.edu>.

2004-03-14  Scott James Remnant  <scott@netsplit.com>

	* m4/ltmain.in: Only check precious_files_regex if it is not empty.

2004-03-14  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Autoconf and LTLIBOBJS): The correct version
	of Autoconf is 2.54.
	From Alexandre Duret-Lutz  <adl@src.lip6.fr>

2004-03-13  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Using Automake): Cite correct Automake version
	for -dlopen quoting.
	(Autoconf and LTLIBOBJS): Cite correct Autoconf	versions
	throughout.
	(Distributing libltdl): Use AM_CPPFLAGS; INCLUDES is deprecated.
	From Alexandre Duret-Lutz  <adl@src.lip6.fr>

2004-03-05  David Edelsohn  <edelsohn@gnu.org>

	* m4/libtool.m4: Disable building static libraries if building
	shared libraries on AIX 5L.

2004-03-05  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: Remove --ltdl-tar.  It doesn't work with the
	current implementation, and seems more or less pointless.
	* doc/libtool.texi (Invoking libtoolize): Updated.
	* NEWS: Updated.

	* doc/libtool.texi: This manual has not been maintained properly
	for a number of years.  Much of what it said was outdated, or
	plain wrong with reference to modern autotools.  This change
	represents a first pass edit to clean up the obviously wrong.

2004-03-02  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Prune out my arch mirror dir before running
	amok through the tree with 'rm -rf'!

2004-03-02  Patrick Welche  <prlw1@newn.cam.ac.uk>

	* doc/libtool.texi (LT_INIT): Dumb typos fixed.

2004-02-23  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in <install mode>: Add missing --help doc for
	-inst-prefix option.

	* ltmain.in <link mode>: Add missing --help doc for -shrext
	option.

	* ltmain.in (IFS): Move '\n' to beginning of IFS so that emacs
	doesn't offer to strip trailing ' \t' on every save.

	* ltmain.in: Add missing --help doc for --preserve-dup-deps.

2004-02-22  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.maint (web-manual): Generate the web manual carefully
	so that links will still work when it is uploaded to gnu.org.
	* README-alpha: Note that this rule should be used at release
	time.

2004-02-20  Gary V. Vaughan  <gary@gnu.org>

	Sweeping changes to the user interface to libtool from
	`configure.ac' to be more like AC_INIT and accept a space
	delimited list of options.  Instead of calling `AC_LIBTOOL_DLOPEN;
	AC_PROG_LIBTOOL', we now recommend `LT_INIT([dlopen])':

	* m4/libtool.m4	(AC_PROG_LIBTOOL, _AC_PROG_LIBTOOL)
	(AC_LIBTOOL_SETUP): Removed.  Added AU_DEFUNs.
	(LT_INIT): Replace with an Autoconf like interface which accepts a
	version number as a minimum required libtool release at configure
	time.
	* m4/ltoptions.m4: New file inspired by automake/m4/amoptions.m4,
	which additionally flags an error if the configuring libtool
	macros are not new enough according to LT_INIT.
	(LT_OPTION_DEFINE): New macro to declare option handlers.
	(dlopen, win32-dll, shared, disable-shared, static)
	(disable-static, fast-install, disable-fast-install, pic-only)
	(no-pic): Newly LT_OPTION_DEFINEd option handlers that use...
	(_LT_ENABLE_SHARED, _LT_ENABLE_STATIC, _LT_ENABLE_FAST_INSTALL)
	(_LT_WITH_PIC, _LT_WIN32_DLL): New macros to handle
	LT_LIBTOOL_INIT options...
	* m4/libtool.m4 (AC_ENABLE_SHARED, AC_ENABLE_STATIC)
	(AC_ENABLE_FAST_INSTALL, AC_LIBTOOL_DLOPEN, AC_LIBTOOL_WIN32_DLL):
	...to replace these user interface macros, now defined as
	AU_DEFUNs.
	(AC_DISABLE_SHARED, AC_DISABLE_STATIC, AC_DISABLE_FAST_INSTALL):
	Removed.  No longer required with LT_INIT_LIBTOOL interface.
	Added AU_DEFUNs.
	(AM_ENABLE_SHARED, AM_DISABLE_SHARED, AM_ENABLE_STATIC)
	(AM_DISABLE_STATIC): Changed AU_DEFUNs to match new interface.
	(_LT_SETUP): Internal to LT_INIT, replaces AC_LIBTOOL_SETUP.
	* m4/lt~obsolete.m4 (AC_LIBTOOL_SETUP, _AC_PROG_LIBTOOL)
	(_LT_PROG_LTMAIN):  More AC_DEFUNs that have been retracted.
	* configure.ac: Use new interface.
	* doc/libtool.texi: Document new interface.
	* NEWS: Updated.

2004-02-18  Gary V. Vaughan  <gary@gnu.org>

	* commit (SHELL): Set it explicitly, incase some madman is using
	tcsh as their login shell :-b

2004-02-15  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (m4/ltversion.m4): Generate serial number by
	removing initial '1.' from the revision, replace @MACRO_SERIAL@
	with this new variable.
	* m4/ltversion.in: Use @MACRO_SERIAL@ for the serial number
	as some shells don't like a '.' when using test.

	* m4/ltversion.in: Add a serial number to this file otherwise
	libtoolize will refuse to copy it into $pkgdatadir, where it
	is needed by m4/libtool.m4.

2004-02-15  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4, ltmain.in: Rename shrext to shrext_cmds.

2004-02-13  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in, libtoolize.in, commit, config/mailnotify: Correctly
	quote usage of $basename and $dirname to avoid (unlikely) path
	expansion.

	* tests/sh.test: Test the config/ltmain.sh and libtoolize in the
	build directory not the source directory, where they won't exist
	during 'make distcheck'.
	* ltmain.in: Revert one line of previous intendation clean-up
	to enable one of the sh.test checks to pass.

	* tests/cdemo/configure.ac: Drop AC_PREREQ back to 2.54, this
	was debris from Gary's cvsapply going mad and wasn't backed
	out.

	* Makefile.am (pkgmacro_DATA): We have to distribute
	m4/ltversion.m4 because it can be needed before the Makefile
	that generates it exists.

2004-02-13  Gary V. Vaughan  <gary@gnu.org>

	* commit (MKSTAMP): Look for mkstamp in the right place.

2004-02-12  Scott James Remnant  <scott@netsplit.com>

	* Makefile.maint, Makefile: Move rules intended for Libtool
	maintainers only out of the Makefile we distribute and into one
	that we only need keep in CVS.
	* README-alpha: Add -fMakefile.maint to the instructions where
	needed.

2004-02-12  Albert Chin-A-Young  <china@thewrittenword.com>
	Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Fix typo: duplcations -> duplications,
	Fix indentation of a handful of badly indented blocks,
	Fix last remaining use of 'grep' to $GREP,
	Remove unnecessary trailing slash where we break a line on a
	command separator.
	* m4/libtool.m4: Also remove unnecessary trailing slash where
	we break a line on a command separator.

2004-02-12  Scott James Remnant  <scott@netsplit.com>

	* m4/ltoptions.m4: This got committed by an over-keen Gary,
	but the support for this isn't ready yet and if aclocal decides
	to m4_include this (which it will) you'll get a non-functioning
	libtool.  Removed.

	* ltmain.in: Remove duplicated version checking block.

	* bootstrap, m4/libtool.m4: Argh, Gary went crazy after cvsapply
	went crazy and backed out more than he should've.  This patch puts
	some of it back again.

	* ltmain.in, libtoolize.in, commit, config/mailnotify: Remove
	$SED from definitions of $dirname and $basename and prefix each
	use with it instead.  Some shells (zsh) treat the expansion as
	a single command instead of a command with arguments.

	* config/mailnotify (func_sendmail): Look for sendmail in a
	couple of common non-PATH locations as well.

	* ltmain.in: Fix typo: macro's -> macros.

	* ltmain.in: Correct definition of basename sed expression to
	not include single quotes.

2004-02-12  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: Use $progpath as for ltmain.in to work around the
	IRIX bug described below.
	* commit, config/mailnotify: Ditto. Resynch with cvs-utils HEAD.

2004-02-12  Albert Chin-A-Young  <china@thewrittenword.com>,
	    Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (progpath): Work around backward compatibility issue
	on IRIX 6.5. On IRIX 6.4+, sh is ksh but when the shell is invoked
	as "sh" and the current value of the _XPG environment variable is
	not equal to 1 (one), the special positional parameter $0, within
	a function call, is the name of the function. So, rather than
	using "$0" in functions, we set $progpath in the body and use that
	everywhere instead (incase of code refactoring later).
	(EXIT_SUCCESS, EXIT_FAILURE, EXIT_MISMATCH): For clarity.

2004-02-12  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (EXTRA_DIST): Remove config/mailnotify after all; it
	is of no use in a distribution tarball.

2004-02-11  Gary V. Vaughan  <gary@gnu.org>

	* commit: Fix cut-n-paste error.

	* commit: Completely change CVS/Root->name sed script to actually
	work when :ext: is not shown.

	* commit: Improve CVS/Root->name sed script to work when :ext: is
	not shown.

2004-02-11  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Fix typo: testring -> teststring.

2004-02-11  Gary V. Vaughan  <gary@gnu.org>

	* commit: Mail a nicer commit notification.

2004-02-10  Gary V. Vaughan  <gary@gnu.org>

	* NEWS, bootstrap, configure.ac, ltmain.in, m4/libtool.m4:
	* m4/lt~obsolete.m4, tests/cdemo/configure.ac: Arghh.  cvsapply just
	went crazy and committed a bunch of stuff that shouldn't have been
	in the last changeset.  The patch backs it all out.

	* config/mailnotify: New file for mailing commit notifications,
	imported from cvs-utils.
	* commit: Updated from cvs-utils and tweaked for libtool.
	* Makefile.am (EXTRA_DIST): Add config/mailnotify.

2004-02-06  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Remove vcl.tmp, otherwise it can interfere with make.
	* Makefile.am (vcl.tmp): Move comment out of multi-line command,
	as this rule is called from bootstrap as if it were a Makefile.

	* m4/ltversion.in: New file to capture what version number macros
	are being used.
	* Makefile.am (m4/ltversion.m4): New rule to create it from
	m4/ltversion.in.
	(nodist_pkgmacro_DATA): Add m4/ltversion.m4.
	(EXTRA_DIST): Add m4/ltversion.in.
	* m4/libtool.m4 (AC_LIBTOOL_SETUP): AC_REQUIRE LTVERSION_VERSION
	from ltversion.m4.
	* bootstrap: Call the Makefile.am to create an initial
	m4/ltversion.m4.
	* ltmain.in: Diagnose version mismatches of various flavours.
	* TODO: Remove mismatch item.
	* NEWS: Updated.

	* Makefile.am ($(top_builddir)/config.status): Removed.
	* configure.ac (CONFIG_STATUS_DEPENDENCIES): This substitution is
	how automake-1.8 now informs all Makefiles when config.status
	needs to be rebuilt.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

	* configure.ac (AC_CONFIG_FILES): Generate libtoolize from here.
	* Makefile.am (libtool, libtoolize): These rules are redundant.
	Automake generates better rules for remaking these files.

	* m4/libtool.m4 (AC_LIBTOOL_SETUP): Catch unexpanded macros with
	beginning with LT_ and _LT_.
	* configure.ac (LT_MAJOR, LT_MINOR, LT_MICRO, LT_ALPHA): Renamed
	to lt_major, lt_minor, lt_micro, lt_alpha to save triggering the
	unexpanded macros error.

	* m4/libtool.m4 (AC_PROVIDE_IFELSE): Removed.  We now require
	Autoconf 2.58, which ships this macro anyway.

	* Makefile.am: Comment typo.

	* m4/libtool.m4 (LT_PREREQ): Declare the minimum release number
	that is required for the calling code.
	* doc/libtool.texi (AC_PROG_LIBTOOL): Document it.
	* NEWS: Updated.

2004-02-05  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (infer_tag, win32_libid): Style changes. Rename
	infer_tag to func_infer_tag and win32_libid to func_win32_libid.
	* m4/libtool.m4 (cygwin): rename win32_libid to func_win32_libid.

2004-02-04  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (infer_tag): Move tag inferrence to a shell function.
	Also test $base_compile against $CC with escaped arguments. Bug
	reported by Geoff Keating <geoffk@apple.com>.

2004-02-03  Scott James Remnant  <scott@netsplit.com>

	* Makefile.am (install-data-hook): Manually make config.guess
	and config.sub executable after they are installed as _DATA.
	We can't use _SCRIPTS because the various program name
	transforms may be applied to them.
	(dist_pkgdata_DATA): List config.guess and config.sub here
	(pkgdata_SCRIPTS): instead of here.

2003-02-03  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Create temporary directory under a strict umask
	rather than running chmod afterwards, preventing a race
	condition where the directory could be replaced with a symbolic
	link in the time between the two commands.

2004-01-31  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (_LT_CONFIG_STATUS_DECLARE): Change `echo to
	`$echo, causes problems when builtin echo is broken. Reported
	by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.

2004-01-27  Scott James Remnant  <scott@netsplit.com>

	This fixes release procedure problems discovered whilst making
	the 1.5.2 release.

	* Makefile.am (cvs-dist): Because we check whether ChangeLog
	has been committed, this rule can't be run with uncommitted
	source so we can't run 'commit' and don't need to run
	'make dist' a second time.  Fix CVS tag as it should be
	"release-X" not "Release-X".
	(cvs_commit): New rule for the cvs-release chain that runs
	'commit'
	(cvs-release): Depend on cvs-commit, depend on deltas instead of
	cvs-diff and xdelta.
	(cvs-diff): Removed, replaced with delta-diff.
	(delta-diff): Unpack and diff the old and new tarballs rather
	than using CVS, so we get a genuinely complete diff.
	(xdelta): Removed, replaced with delta-xdelta.
	(got-xdelta): New rule for improved reading.
	(delta-xdiff): Copied and cleaned up version of old xdelta rule.
	(deltas): Depends on delta-diff and delta-xdelta (make deltas).
	(cvs-news): Don't depend on timestamps, cvs-dist itself does now.
	(prev-tarball): This is the only place we need a LASTRELEASE check
	so copy the code here and remove the CHECK_RELEASE variable.
	(new-tarball): Check there's a new tarball (did cvs-dist work?)
	(FETCHFILES): Remove obsolete libltdl mentions.
	* README-alpha: Update CVS instructions as everything's changed
	on Savannah.
	(Release procedure): Update NEWS and ChangeLog after changing
	the version number (both times); Run 'make fetch' after running
	'configure' (difficult to do it beforehand); Require 'commit'
	before 'make cvs-dist' as that checks ChangeLog is committed;
	'make deltas' instead of 'cvs-diff' and 'xdelta', pass LASTRELEASE
	to make instead of OLDVERSION (and it's mandatory); Clean up
	uploading paragraph; Clearer announcement sending instruction;
	Removed ftp-upload@gnu.org mail as that's not necessary now;
	Make web page updating instructions a bit clearer; Add an instruction
	to update the manual for non-alphas.
	(Alpha release note template): Add a Subject; update CVS instructions.
	(Full release note template): Add a Subject; update CVS instructions.
	* configure.ac: Add dist-bzip2 to AM_INIT_AUTOMAKE as we talk
	about bz2 files in our release announcements; remove old reference
	to OLDVERSION.

2004-01-25  Scott James Remnant  <scott@netsplit.com>

	* NEWS: Include 1.5.2 release information.

2004-01-22  Gary V. Vaughan  <gary@gnu.org>

	This fixes a bug in the libtoolize ltdl source installation rules,
	which were copying Makefile.in from the libtool tree into the
	package running libtoolize.  Now we explicitly list the files to
	copy to force the package to generate its own Makefile.in:

	* libltdl/Makefile.am (libltdl_la_SOURCES, libltdlc_la_SOURCES):
	Add ltdl.h.
	(ltdldatadir): New variable for installation directory of
	libtoolize --ltdl files.
	(ltdldata_DATA): Tell automake what files to copy there at install
	time (and remove at unistall time!).
	(local-install-files): Removed.  This hack is not required
	anymore, the automake generated install rules are much more
	advanced than this.
	* Makefile.am (install-data-hook, uninstall-local): Removed.
	Libltdl files for libtoolize are installed by their own Makefile
	now.

2004-01-22  Jeff Squyres  <jsquyres@lam-mpi.org>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Some compilers
	(e.g. Intel Linux icc compiler) write temporary files to the current
	directory. These compilers do support -c and -o simultaneously but
	wrongly fail the test due to the failure to create temporary
	files. It is incorrect to penalize compilers which write temporary
	files to the current directory so the 'chmod -w .' is therefore
	removed.

2004-01-22  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (LT_AC_PROG_EGREP): Wrapper for AC_PROG_GREP.
	AIX has a brain-dead grep that only handles lines < 2048
	characters.  Default GREP incase we are not using a future
	autoconf that sets it for us :-)  Changed all callers to use $GREP
	instead of grep, and to AC_REQUIRE LT_AC_PROG_EGREP.
	Declare GREP as a libtool config var.
	* ltmain.in: Use it.
	* tests/sh.test (scripts): Accept `if $GREP "^foo=bar"' by
	tightening the regexp.
	Reported by Albert Chin-A-Young  <china@thewrittenword.com>

2004-01-21  Nick Hudson  <skrll@netbsd.org>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [netbsd*]: Remove
	gratuitous ${libname}${release}${shared_ext} from
	library_names_spec.

2004-01-21  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (AC_PROG_LD_RELOAD_FLAG): On darwin change the
	reload_cmds to use $CC, otherwise ld will thin out any fat
	objects.

2004-01-18  Benjamin Reed  <ranger@befunk.com>

	* ltmain.in: Fix handling of frameworks in search paths.  Also
	a one-liner fix to eval shrext in the libtool library search.

2004-01-16  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac (AM_INIT_AUTOMAKE): Require 1.8 for bootstrap, or
	else aclocal.m4 is huge, and m4 directory is not distributed.

	* configure.ac (AC_CONFIG_HEADERS): Create config.h in
	$top_srcdir.
	* m4/ltdl.m4 (AC_LIB_LTDL): Run AC_CONFIG_HEADERS for the user if
	necessary. Calculate filename from first argument to
	AC_CONFIG_HEADERS, and substitute as CONFIG_H.
	* libltdl/Makefile.am (AM_CPPFLAGS): Make sure we are searching in
	$top_srcdir for headers.
	(DEFS): Override the default HAVE_CONFIG_H with the config.h
	filename.
	(ltdl.lo): Reference config.h via $(CONFIG_H).
	* libltdl/ltdl.c (HAVE_CONFIG_H): Ditto.

2004-01-15  Scott James Remnant  <scott@netsplit.com>

	* m4/lt~obsolete.m4: Add a file containing aclocal-fooling
	macro definitions which stop the contents of an installed
	libtool.m4 ending up in our aclocal.m4 when we bootstrap.
	* Makefile.am (pkgmacro_DATA): Note that we don't need to add
	lt~obsolete.m4 to this list.

2004-01-12  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_COPYING): Factor out copyright message so it
	only needs to be updated in one place.
	(AC_LIBTOOL_CONFIG): Refactor to be more readable.  Only add
	tags if a compiler was found; ie if you have no gcj compiler,
	don't tack the GCJ tag onto the generated libtool script.

2004-01-13  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4: Quote shrext as it is evaled in ltmain.

2004-01-11  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: new -precious-files-regex link mode option
	to prevent removal of matching files from the temporary
	output directory.
	(Debian Bug #221420)
	* doc/libtool.texi: document the new option.
	* NEWS: announce the new option.

2004-01-11  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (func_copy_all_files): s/xfunc_copy/Xfunc_copy.
	Now the test can actually succeed sometimes.

2004-01-09  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: Break out of the command argument parse loop when
	-- is encountered.

2004-01-08  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (func_copy_all_files): s/test "x/test "X/ to keep
	tests/sh.test happy.

2004-01-07  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (aclocal_macros, aclocal_DATA): Removed.
	(EXTRA_DIST): Remove m4 macro files; they are automatically
	added by automake.
	(pkgmacrodir): Where to install libtool macro files.
	(pkgmacro_DATA): List installable libtool macro files.
	(install-data-local): Remove previous versions of ltdl.m4 and
	libtool.m4 from their old location.
	* libtoolize.in: Use new pkgmacrodir installed macros when
	libtoolizing a project.  Treat libtool.m4 and ltdl.m4 specially,
	and func_serial_update() any other files from pkgmacrodir.
	(pkgmacrodir): Where to find installed libtool macro files.
	(aclocaldir): Removed.
	(func_copy_all_files): Add an optional callback parameter to
	control how files are copied.  If the callback is passed, don't
	tell it whether it can copy or not.
	(func_serial): Exchange parameters and make macro_regex optional,
	so that this function can be used to extract serial numbers from
	files with the traditional /^# serial [1-9][0-9]*$/ syntax.
	Changed all callers.
	(func_serial_update): Make macro_regex optional last parameter, so
	that this function can be used as a callback for
	func_copy_all_files().  Changed all callers.
	* m4/ltsugar.m4: Add a serial number.

2004-01-07  Gary V. Vaughan  <gary@gnu.org>

	A complete rewrite of the m4 code involved in the generation of
	libtool via config.status.  The old way involved manually
	synchronising disparate bits of shell code in several macros, to
	quote a copy of a shell variable, put that in config.status, maybe
	add it to some quotation loops to prevent early expansion, and
	then add a block to _LT_CONFIG_COMMANDS to bring it into the
	libtool script.  The new way is to mark shell variables for
	propogation using _LT_DECL for language independent variables, or
	_LT_TAGDECL for those that need to be propogated in several
	language flavours.  The marking can be done in the macro that
	probes the variables, and this new m4 machinery takes care of
	synchronising all the other bits of code at autoconf time:

	* m4/ltsugar.m4:  New file.  Macros that are useful outside the
	context of libtool.  Initially, contains some generalised list
	management macros, and the scaffolding for dictionary type data
	storage and retrieval.
	* Makefile.am (aclocal_macros): Install ltsugar.m4.
	* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
	the libtool script, along with a comment, and hints for quoting
	and renaming.
	(_LT_TAGDECL): Similarly mark a tagged shell variable for export
	in each tag.
	(lt_decl_tag_varnames, lt_decl_quote_varnames)
	(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
	(lt_decl_all_varnames):  New utility macros for managing lists of
	shell variable names from _LT_DECL and _LT_TAGDECL.
	(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
	Expand to correctly quoted variable declarations in config.status
	from all marked shell variables.
	(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
	declaration for libtool tag section.
	(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
	variables to _LT_LIBTOOL_DECLARE.
	(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
	friends to generate all the variable passing shell code for
	config.status, to get marked variables from libtool.m4 into
	libtool itself eventually.
	(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
	configuration.  Changed all client macros to mark variables
	suitably rather than the hand pasting that was necessary
	previously.
	(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
	(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
	propogation to the libtool script.

2004-01-07  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (seen_gettext): Removed unused variable.

2004-01-06  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (func_scan_files): Don't assume the existence of
	aclocal.m4.  Make the comment more descriptive.
	Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>

	* NEWS: Note libtoolize changes.

	* ChangeLog.2003: New file, containing all the ChangeLog entries
	from 2003.  Trimmed ChangeLog accordingly.

	* ltmain.in: Output 2004 in the copyright from libtool --version.

2004-01-03  Stefan Nordhausen  <nordhaus@informatik.hu-berlin.de>
	Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Don't use the mkdir -p option when creating a
	temporary output directory so a symlink attack can't be used to
	arbitrarily chmod other directories on the system if libtool
	gets run as root.

2004-01-02  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4: Ensure that ${ZSH_VERSION+set} is properly escaped.

	* m4/libtool.m4 (CDPATH): Change the CDPATH setting so that it
	allows for zsh differences, as noted in the autoconf manual's
	Portable Shell - Special Shell Variables section.

2004-01-02  Scott James Remnant  <scott@netsplit.com>

	* .cvsignore: Ignore stamp-vcl created by the Makefile.

2004-01-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
	Joe Orton  <joe@manyfish.co.uk>

	* m4/libtool.m4 (AC_LIBTOOL_CONFIG): Add extra blackslash
	in front of all the inner double-quotes as this is removed
	on Solaris, IRIX and AIX leading to broken definitions
	in config.status.

2004-01-02  Scott James Remnant  <scott@netsplit.com>

	* NEWS: Next release will be in 2004.

2003-12-31  Scott James Remnant  <scott@netsplit.com>

	* ltmain.sh: Infer tagged configuration for link mode with the
	full compiler arguments available rather than only the first.

2003-12-31  Alexandre Duret-Lutz  <adl@gnu.org>

	* ltmain.sh: Quote $exec_cmd before it is eval'ed, so that
	libtool --mode=execute echo '4 * 5' does not expand the `*'.

2003-11-28  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4: Move things around so that "setopt NO_GLOB_SUBST"
	to make zsh behave wrt \ escapes happens early in config.status.

2003-11-27  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/configure.ac: Removed.
	* configure.ac (AC_CONFIG_HEADERS): Merged from
	libltdl/configure.ac.
	(AC_LIB_LTDL): Ditto.
	(AC_CONFIG_FILES): Add libltdl/Makefile.
	(AC_CONFIG_SUBDIRS): Removed.
	(AC_CONFIG_COMMANDS): Remove generation of libltdl/ltmain.sh.
	* libltdl/Makefile.am (libtool): Removed references, since we now
	share $(top_builddir)/libtool.
	* NEWS: Updated.

2003-11-26  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (vcl.tmp): Be careful of VPATH builds.

	* Makefile.am (EXTRA_DIST): Add stamp-vcl, or we go back to a
	double configure run from a distributed tarball :-?

2003-11-26  Gary V. Vaughan  <gary@gnu.org>

	Okay, the problem I am trying to solve is that when a change (say,
	bumping the version to 1.6 for the next release) is committed, the
	timestamp in ChangeLog is updated, but ltmain.sh and libtoolize
	inherit the pre-commit build number from config.status.  This
	delta notes the change in build number in the unstamped ChangeLog
	and forces a rerun of configure etc. to roll a new ltmain.sh with
	the correct TIMESTAMP:

	* Makefile.am (stamp-vcl): We actually need a new config.status to
	force the correct timestamp into libtoolize and ltmain.sh,
	rerunning autoconf has no effect at all if configure.ac hasn't
	changed.

2003-11-26  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (stamp-vcl): New rules to force libtool and
	libtoolize scripts to update when the TIMESTAMP changes in
	ChangeLog, but the file modification time doesn't (e.g in cvs
	commit).  Otherwise we'll carry on releasing tarballs with the
	wrong version numbers in the tools!

	* config/mkstamp: Change output format to ` $rev $date'.
	* configure.ac: Make the banner more like suggestions in
	http://www.gnu.org/prep/standards_toc.html Section 4.6.
	* libtoolize.in: Make --version output conform to the GNU
	standard.
	* ltmain.in: Ditto. And tweak the generated file headers to
	match.

2003-11-25  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (config.status): Removed.  Rebuilding config.status
	isn't enough, because the TIMESTAMP in configure is still out
	of date.
	(configure): We actually need a new configure to force the
	correct timestamp into ltmain.sh.

	* Makefile.am (config/ltmain.sh): Removed.  Rebuilding ltmain.sh
	isn't enough, because the TIMESTAMP in config.status is still out
	of date.
	(config.status): We actually need a new config.status to force the
	correct timestamp into ltmain.sh.

	* Makefile.am (config/ltmain.sh): Note the dependency on the
	timestamp in ChangeLog so we don't ship libtools that report the
	wrong version number :-/

	* bootstrap: Explain automake and autoconf version dependencies
	truthfully, and the difference between bootstrap and user
	dependencies.
	* configure.ac (AM_INIT_AUTOMAKE): List AUTOMAKE_OPTIONS here.
	* Makefile.am, doc/Makefile.am, tests/Makefile.am
	(AUTOMAKE_OPTIONS): Removed from here.

2003-11-24  Gary V. Vaughan  <gary@gnu.org>

	* tests/defs (func_configure): cdemo, demo and mdemo are shows
	signs of indeterminacy for some users.  Be more verbose during
	failure to help track down the cause.

2003-11-22  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Check for module_cmds if max_cmd_len is exceeded too.

	* ltmain.in: Move eval to after command separation to allow ~ in paths.

	* tests/demo-hardcode.test: Call ./libtool not libtool.

	* ltmain.in: Test $old_striplib before using it, not $striplib.

2003-11-22  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac (LASTRELEASE): Calculate it as best as we can from
	AC_PACKAGE_VERSION.
	* Makefile.am (distdir): Remove dependency on timestamps so that
	it is possible to roll a dist without contacting the cvs server.
	Use `make cvs-release' for that.
	(cvs-news): Extracted from cvs-dist.
	(cvs-dist): Depend on cvs-news.
	(CHECK_LASTRELEASE): Check LASTRELEASE has been set.
	(prev-tarball): New rule.  Use LASTRELEASE to make sure the
	previous release tarball is present.
	(cvs-diff): Use CHECK_LASTRELEASE.
	(xdelta): Ditto.
	(cvs-release): Depend on prev-tarball, timestamps, cvs-news and
	fetch. Provided you set LASTRELEASE appropriately, making a full
	cvs release is just a matter of `make cvs-release', and submitting
	the files to ftp-upload.

2003-11-19  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_PROG_LTMAIN): Ensure config.status has a
	value for `ac_aux_dir' when automake is not used.
	Reported by Patrick Welche <prlw1@newn.cam.ac.uk>.

	* configure.ac (AC_PREREQ): AS_HELP_STRING was introduced after
	autoconf-2.57 was released.

2003-11-18  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlhandle_find): New function to find a handle
	by module name.
	* libltdl/ltdl.h (lt_dlhandle_find): Declare it.
	* doc/libtool.texi (User defined module data): Document it.
	* NEWS: Updated.

2003-11-17  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (AC_LIBTOOL_SETUP): Uncomment call to
	_LT_CONFIG_COMMANDS.
	(_LT_AC_TAG_CONFIG, AC_LIBTOOL_CONFIG): Accumulate tag generation
	for `config.status' using _LT_CONFIG_SAVE_COMMANDS.  Remove
	AC_MSG_NOTICE noise now that libtool is generated by a single
	config.status tag.
	* Makefile.am (libtool): Specify CONFIG_COMMANDS properly now that
	libtool is generated in one pass.

	* configure.ac (CONF_SUBDIRS): Make these relative to
	tests/Makefile.am.
	(DIST_MAKEFILE_LIST): Adjust to compensate for having removed the
	`tests/' part in CONF_SUBDIRS.
	* tests/Makefile.am (DIST_SUBDIRS): Distribute these directories.
	(SUBDIRS): Set to `.', a NOP, to workaround an automake bug which
	ignores DIST_SUBDIRS unless SUBDIRS is also set.
	* Makefile.am (DIST_SUBDIRS): Don't try to distribute the tests
	subdirectories from here, since the recursive automake dist rule
	only works with direct child directories.  Defer to
	tests/Makefile.am in this case.

2003-11-15  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: In compile mode, delay parsing of -shared, -static,
	-prefer-pic and -prefer-non-pic until after tagged configuration
	has been read.  In link mode, read tagged configuration before
	parsing any arguments.  These arguments will now work when using
	a non-C compiler.

2003-11-14  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Mention AC_LIBTOOL_TAGS.

	* Makefile.am (EXTRA_DIST): List ChangeLog files correctly.

	* tests/cdemo/configure.ac, tests/demo/configure.ac,
	tests/depdemo/configure.ac, tests/f77demo/configure.ac,
	tests/mdemo/configure.ac, tests/mdemo2/configure.ac,
	tests/pdemo/configure.ac, tests/tagdemo/configure.ac: Declare just
	the tags we need using AC_LIBTOOL_TAGS, reducing the size of the
	configure script by 50% in most cases.

2003-11-14  Marius Vollmer  <mvo@zagadka.de>

	* doc/libtool.texi (Libltdl interface): libltdl does in fact load
	dependency libs for lt_dlopen()ed modules.

2003-11-14  Gary V. Vaughan  <gary@gnu.org>

	Run our configure.ac files through Autoconf 2.59's autoupdate, and
	then tweak the results by hand:

	* m4/libtool.m4 (AC_PROG_LD): In common with all the other
	AC_PROG_ macros, AC_SUBST the discovered LD.
	(AC_PROG_NM): Similarly for NM.
	(LT_AC_PROG_SED): Similarly for SED.
	* configure.ac: No need to SUBST NM and LD manually any more.
	(AC_PREREQ): Conservatively downgrade from 2.59 to 2.54.
	* tests/cdemo/configure.ac, tests/demo/configure.ac,
	tests/depdemo/configure.ac, tests/f77demo/configure.ac,
	tests/mdemo/configure.ac, tests/mdemo2/configure.ac,
	tests/pdemo/configure.ac, tests/tagdemo/configure.ac: Ditto.
	* m4/libtool.m4 (AM_PROG_LIBTOOL, AM_ENABLE_SHARED,
	AM_ENABLE_STATIC, AM_DISABLE_SHARED, AM_DISABLE_STATIC,
	AM_PROG_LD, AM_PROG_NM): AU_DEFUN these macros so autoupdate can
	use the newer definitions.

2003-11-12  Gary V. Vaughan  <gary@gnu.org>

	The rules for uploading releases to gnu.org have been updated, and
	are in fact now rather complicated.  This delta updates the
	release instructions to the describe the new process, and updates
	the maintainer rules to help automate many of the steps:

	* README-alpha: Updated release instructions.
	* Makefile.am (GPG): Name of the program for generating signatures
	for files to be uploaded.
	(XDELTA, XDELTA_OPTIONS): Invocation of xdelta.
	(cvs-dist): Run distcheck before tagging the cvs tree incase
	distcheck fails, and then generate the gpg signature files.
	(cvs-diff): Generate the gpg signature files for the diff.
	(xdelta): New rule for generating the xdelta diffs and associated
	gpg signature files.
	(cvs-release): New rule to do all of the above, if you don't mind
	typing your gpg passphrase over and over again. :-)
	(fetch): New rule inspired by automakes similar rule for updating
	files maintained outside the project.
	* config/config.guess, config/config.sub: Updated with the new
	fetch rule.

2003-11-11  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlinit): Save a function call for each loader
	added to the list, in exchange for appending loaders to the list
	with O(N) rather than O(1).  The longest the loader list can ever
	get is 4 (on cygwin with dld installed) so it probably constitutes
	a small speedup, in addition to making the code much more readable.

	* m4/libtool.m4 (AC_LIBTOOL_SETUP): Don't define the value for
	ltmain unconditionally.
	(_LT_PROG_LTMAIN): New macro to ensure that the
	shell variable `ltmain' actually points at a suitable `ltmain.sh'.
	(_AC_PROG_LIBTOOL): Require it.
	(AC_LIBTOOL_CONFIG, _LT_AC_TAG_CONFIG): Invoke it.
	* Makefile.am (libtool): ltmain.sh is in the build tree.
	* libltdl/configure.ac: Ditto.

2003-11-10  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: Add -pthread and similar to $deplibs ($compile_deplibs
	and $finalize_deplibs for programs) when found on the command line
	or in a .la file's dependency_libs (but don't place them there) so
	they are honoured when linking both programs and libraries.

2003-11-10  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4  (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [linux]: Include
	directories found in /etc/ld.so.conf in sys_lib_dlsearch_path_spec.

2003-11-09  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in (linkalldeplibs,darwin): Fix a bug reported by Idar
	Tollefsen where a dir could be added to the link line with no '-L'
	on darwin.

2003-11-07  Gary V. Vaughan  <gary@gnu.org>

	* tests/cdemo/configure.ac, tests/demo/configure.ac,
	tests/depdemo/configure.ac, tests/f77demo/configure.ac,
	tests/mdemo/configure.ac, tests/mdemo2/configure.ac,
	tests/pdemo/configure.ac, tests/tagdemo/configure.ac:
	s/AM_PROG_LIBTOOL/AC_PROG_LIBTOOL/. Marching boldly into the 21th
	century :-$

	* m4/libtool.m4 (AC_LIBTOOL_TAGS, AC_ENABLE_SHARED,
	AC_DISABLE_SHARED, AC_ENABLE_STATIC, AC_DISABLE_STATIC,
	AC_ENABLE_FAST_INSTALL, AC_DISABLE_FAST_INSTALL, AM_PROG_LIBTOOL,
	AM_ENABLE_SHARED, AM_ENABLE_STATIC, AM_DISABLE_SHARED,
	AM_DISABLE_STATIC): These macros must be AC_DEFUNed after all,
	otherwise aclocal can't find them when it tries to construct
	`aclocal.m4'.

	* Makefile.am (install-data-local): Wipe out old installation
	pkgdatadir before installing new files.
	* NEWS: Updated.

	* libtoolize.in (func_scan_files): If libtoolize is run before
	automake has created install-sh and configure.ac does not mention
	AC_CONFIG_AUX_DIR, fall back to the current directory for auxdir.

2003-11-07  Robert Millan  <zeratul2@wanadoo.es>

	* m4/libtool.m4 (AC_DEPLIBS_CHECK_METHOD) [GNU/KNetBSD]: Detect
	inter-library dependencies.

2003-11-06  Gary V. Vaughan  <gary@gnu.org>

	* m4/libtool.m4 (_LT_AC_FILE_LTDLL_C): Removed; no longer in use.

	* m4/libtool.m4: s/ifelse(/m4_if(/g
	(_LT_AC_SYS_LIBPATH_AIX, _LT_AC_SHELL_INIT,
	_LT_AC_PROG_ECHO_BACKSLASH, AC_LIBTOOL_LINKER_OPTION,
	AC_LIBTOOL_TAGS, _LT_AC_TAG_CHECK, _LT_AC_TAG_CONFIG,
	AC_ENABLE_SHARED, AC_DISABLE_SHARED, AC_ENABLE_STATIC,
	AC_DISABLE_STATIC, AC_ENABLE_FAST_INSTALL,
	AC_DISABLE_FAST_INSTALL, _LT_AC_LANG_C_CONFIG,
	_LT_AC_LANG_GCJ_CONFIG, _LT_AC_LANG_RC_CONFIG, AC_LIBTOOL_CONFIG,
	_LT_AC_TAGVAR, AM_PROG_LIBTOOL, AM_ENABLE_SHARED,
	AM_ENABLE_STATIC, AM_DISABLE_SHARED, AM_DISABLE_STATIC): Use
	m4_define instead of AC_DEFUN for internal macros that do not
	AC_PROVIDE or AC_REQUIRE, and documented user macros that cannot
	be AC_REQUIREd because they need arguments, or because that would
	violate the documented API.

	* m4/libtool.m4 (AC_LIBTOOL_SETUP): Add a new
	delay_single_quote_subst sed script to quote single quotes in
	variables that are copied to `config.status'.
	(_LT_CONFIG_STATUS_DECLARE): New macro to apply
	delay_single_quote_subst to a named variable.
	(AC_LIBTOOL_CONFIG): Use _LT_CONFIG_STATUS_DECLARE to declare all
	`configure' variables that are copied to `config.status'.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Fix a quoting bug exposed by
	_LT_CONFIG_STATUS_DECLARE using the null quadrigraph in the
	rvalues of lt_prog_compiler_pic.

2003-11-06  Owen Taylor  <otaylor@redhat.com>

	* m4/libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Recognise the
	'R' symbol type so read-only symbols can be exported when combining
	GCC and Solaris LD.

2003-11-06  James Henstridge  <james@daa.com.au>,
	Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [Linux]: Fix the
	-export-symbols and -export-symbols-regex options.

2003-11-06  Scott James Remnant  <scott@netsplit.com>

	* tests/demo-nopic.test: Skip test on hppa, which don't like
	non-PIC shared libraries.

2003-11-06  Charles Wilson  <cwilson@ece.gatech.edu>

	* tests/depdemo/configure.ac, tests/mdemo/configure.ac,
	tests/mdemo2/configure.ac: process 'libtool --features'
	from Makefile, not configure -- because libtool doesn't
	exist at configure time.

	* ltmain.in (find_executable, check_executable) [cygwin*, mingw*]:
	binary wrapper used with uninstalled executables breaks when
	invoked via execlp/execvp (that is, via $PATH).  Handle that case.
	(fnqualify): Subsumed into find_executable.

	* m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [cygwin*, mingw*]:
	when extracting symbols from an import lib (occurs if
	--enable-shared --disable-static), the output of
	$global_symbol_pipe is not the same as 	when extracting from a
	static library (the default case). Add extra filters to
	$export_symbols_cmds to process this sort of output in addition to
	'normal' static-lib output.
	* NEWS: Updated.

2003-11-06  Charles Wilson  <cwilson@ece.gatech.edu>,
	Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (LT_USE_POSIX_DIRENT): Factored out.
	(LT_USE_WINDOWS_DIRENT_EMULATION): Move to after include "ltdl.h",
	as they are affected by __WINDOWS__ definition.
	(LT_READTEXT_MODE): Use textmode to read .la files.
	(lt_dlinit): Use LoadLibrary loader as a fallback on cygwin.

2003-11-06  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (__WINDOWS__): Define this if _WIN32 or WIN32 are
	defined, unless __CYGWIN__ or __CYGWIN32__ are defined.
	(LT_SCOPE): Now set without reference to __CYGWIN__ definition,
	since __WINDOWS__ now implies !__CYGWIN__ after canonicalisation.
	(LT_PARAMS, lt_ptr): Use canonicalised __WINDOWS__ to determine
	which values to set these macros to.

2003-11-05  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha: Mention autotools-announce@gnu.org, and update release
	note templates.

2003-11-01  Scott James Remnant  <scott@netsplit.com>

	* ltmain.in: When relinking, place the -L parameter containing
	the installation prefix directory after the intended destination,
	so we don't accidentally link against an older installed library.

2003-11-01  Peter O'Gorman  <peter@pogma.com>

	* tests/mdemo2/Makefile.am: Let mdemo2 find ltdl.h again.

2003-10-30  Peter O'Gorman  <peter@pogma.com>

	* m4/libtool.m4 (Darwin): Fix stupidities for darwin tags support.
	Makes it work again if AC_LIBTOOL_TAGS is specified in configure.ac.
	Bug reported by Joe Orton and Christian Schaffner.

2003-10-21  Gary V. Vaughan  <gary@gnu.org>

	Start to eliminate the double run of configure in a fresh CVS
	checkout by generating ltmain.sh, using that to create libtool,
	and then adding the tags to that, all from config.status.

	* configure.ac (AC_CONFIG_FILES): Make config/ltmain.sh, and copy
	it to libltdl.
	* Makefile.am ($(srcdir)/config/ltmain.sh): This file is now
	created by config.status.  Adjust this rule.
	(libtoolize): Set CONFIG_COMMANDS to empty to prevent regenerating
	the libtool script as a side effect of running this rule.
	* libtool.m4: Bump serial number.  Fix comment typos.
	(_LT_CONFIG_LIBTOOL_INIT, _LT_CONFIG_LIBTOOL,
	_LT_CONFIG_SAVE_COMMANDS, _LT_CONFIG_COMMANDS: New macros.  They
	don't work for some reason - the variable value quoting in the
	init section is all wrong.  Not used at the moment.
	(AC_LIBTOOL_CONFIG): Generate libtool from config.status.
	(_LT_AC_TAG_CONFIG): Add the tags in config.status.
	(compiler_DEFAULT): Save the compiler value for the DEFAULT tag,
	or it gets overwritten by the other macros.
	(EOF): Globally replace with _LT_EOF to avoid namespace pollution.
	* tests/demo/configure.ac (STATIC): Check $enable_static instead
	of running ./libtool which doesn't exist yet.
	(BINARY_HELLDL): Check $lt_cv_sys_global_symbol_pipe with case
	instead of grepping ./libtool which doesn't exist yet.
	* tests/pdemo/configure.ac (STATIC, BINARY_HELLDL): Ditto.
	* doc/libtool.texi (AC_PROG_LIBTOOL): Add some notes about trying
	to get config details from `libtool --config'.
	* NEWS: Updated.

2003-10-21  Gary V. Vaughan  <gary@gnu.org>

	* ChangeLog, ChangeLog.0, ChangeLog.1: Refactored...
	* ChangeLog, ChangeLog.2002, ChangeLog.2001, ChangeLog.2000,
	ChangeLog.1999, ChangeLog.1998, ChangeLog.1997, ChangeLog.1996:
	...into entries by year for easier copyright confirmation.

	* configure.ac, libltdl/configure.ac, tests/cdemo/configure.ac,
	tests/demo/configure.ac, tests/depdemo/configure.ac,
	tests/f77demo/configure.ac, tests/mdemo/configure.ac,
	tests/mdemo2/configure.ac, tests/pdemo/configure.ac,
	tests/tagdemo/configure.ac (AM_INIT_AUTOMAKE): Remove redundant
	arguments.
	* libltdl/configure.ac: Use quadrigraphs to escape macronames.

	* bootstrap (reconfdirs): Same as yesterday, only with portable
	bourne shell syntax.  :-/

2003-10-20  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap (reconfdirs): Overridable top dirs for bootstrap, for
	those times when you don't want to wait for all of the test
	directories to be rebootstrapped!

2003-10-19  Kevin P. Fleming  <kpfleming@backtobasicsmgmt.com>
	Charles Wilson <cygwin@cwilson.fastmail.fm>

	* ltmain.in: include --tag options, if specified, in the
	relink_command in uninstalled .la files.  Also, preserve --silent,
	--debug options when libtool re-execs itself.
	* NEWS: Updated.

2003-10-19  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* libtoolize.in: protect sed expression against
	AC_CONFIG_AUX_DIR_DEFAULT.

2003-10-16  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* m4/libtool.m4 (AC_DEPLIBS_CHECK_METHOD): For MinGW, reverted DLL
	check method back to a working objdump-based test.  This is not as
	concrete a test as using the 'file' command, but it does not
	require that the 'file' command be available.

2003-10-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* doc/libtool.texi (AC_LIBTOOL_TAGS): Incorporate documentation
	for AC_LIBTOOL_TAGS macro to specifify libtool tags. The now
	defunct --with-tags option was never documented.

2003-10-15  Albert Chin-A-Young  <china@thewrittenword.com>

	* m4/libtool.m4: Restrict the list of tags that can be created
	with a new AC_LIBTOOL_TAGS([tag1 tag2 ...]) macro. Deprecate
	--with-tags.

2003-10-15  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: Typo when copying config.sub.
	From Patrick Welche <prlw1@newn.cam.ac.uk>

	* demo/Makefile.am (libhell0_a_SOURCES): Do not name sources
	already built with libtool...
	(libhell0_a_LIBADD): ...instead name the objects directly.  This
	prevents a long standing warning from automake 1.7+.
	* pdemo/Makefile.am (libhell0_a_SOURCES, libhell0_a_LIBADD):
	Ditto.

	* bootstrap: Make the fake files valid shell scripts with a
	comment incase they get left around.
	(LIBTOOLIZE): Use a dummy script to prevent the installed
	`libtoolize' from trashing the distributed libtool.m4,
	config.guess and config.sub.

	* configure.ac (AC_CONFIG_TESTDIR, AC_CONFIG_TESTFILES): Comment
	this out for now, the autotest testsuite rewrite is not ready
	yet.

	* tests/cdemo/Makefile.am, tests/demo/Makefile.am,
	tests/depdemo/Makefile.am, tests/f77demo/Makefile.am,
	tests/mdemo/Makefile.am, tests/mdemo2/Makefile.am,
	tests/pdemo/Makefile.am, tests/tagdemo/Makefile.am (top_distdir):
	Removed. `autoreconf' needs literals in ACLOCAL_AMFLAGS.

2003-10-14  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in (func_mkdir_p): Synch with tests/defs; if there
	are no more directories in the stack, break out of the loop.

	* tests/Makefile.am (COMMON_TESTS): Remove pdemo-unst.test, which
	isn't a real test.

2003-10-14  Gary V. Vaughan  <gary@gnu.org>

	Refactor all the test case common code into shell functions in
	tests/defs, and move the various demo directories out of
	$top_srcdir, and into tests too.  The refactoring showed up a
	number of inconsistencies and latent bugs, as well as fixing (I
	think!!) the long-standing annoyance with some of the tests giving
	spurious failures intermittently.  While I was here, emacs kindly
	removed a lot of bogus whitespace and added copyright notices for
	us:

	* cdemo, demo, depdemo, f77demo, mdemo, mdemo2, pdemo, tagdemo:
	Moved from here...
	* tests/cdemo, tests/demo, tests/depdemo, tests/f77demo,
	tests/mdemo, tests/mdemo2, tests/pdemo, tests/tagdemo: ...to
	here.
	* tests/defs: Factor much common functionality from the test
	scripts into shell functions.  Added a copyright notice.
	* tests/assign.test, tests/cdemo-conf.test, tests/cdemo-exec.test,
	tests/cdemo-make.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-deplibs.test, tests/demo-exec.test,
	tests/demo-inst.test, tests/demo-make.test,
	tests/demo-nofast.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-shared.test,
	tests/demo-static.test, tests/demo-unst.test,
	tests/depdemo-conf.test, tests/depdemo-exec.test,
	tests/depdemo-inst.test, tests/depdemo-make.test,
	tests/depdemo-nofast.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/depdemo-unst.test,
	tests/f77demo-conf.test, tests/f77demo-exec.test,
	tests/f77demo-make.test, tests/f77demo-shared.test,
	tests/f77demo-static.test, tests/link-2.test, tests/link.test,
	tests/mdemo-conf.test, tests/mdemo-exec.test,
	tests/mdemo-inst.test, tests/mdemo-make.test,
	tests/mdemo-shared.test, tests/mdemo-static.test,
	tests/mdemo-unst.test, tests/mdemo2-conf.test,
	tests/mdemo2-exec.test, tests/mdemo2-make.test, tests/nomode.test,
	tests/pdemo-conf.test, tests/pdemo-exec.test,
	tests/pdemo-inst.test, tests/pdemo-make.test,
	tests/pdemo-unst.test, tests/quote.test, tests/sh.test,
	tests/suffix.test, tests/tagdemo-conf.test,
	tests/tagdemo-exec.test, tests/tagdemo-make.test,
	tests/tagdemo-shared.test, tests/tagdemo-static.test: Refactored
	to use new functions in tests/defs.  Added a copyright notice.
	* tests/hardcode.test, noinst-link.test,
	tests/relink.test, tests/relink.test,
	tests/mdryrun.test: Ditto.  Moved from here...
	* tests/demo-hardcode.test, demo-noinst-link.test,
	tests/demo-relink.test, tests/depdemo-relink.test,
	tests/mdemo-dryrun.test: ...to here respectively.
	* Makefile.am: Added a copyright notice.
	* tests/sh.test: Check libtoolize.in for non-portabilities too.
	* libtoolize.in: Fix non-portabilities found by tests/sh.test.

2003-10-12  Peter O'Gorman <peter@pogma.com>

	* m4/libtool.m4: Speed up max_cmd_len check.

2003-10-08  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: AC_CONFIG_M4_DIR has landed in CVS autoconf.
	Only it's called AC_CONFIG_MACRO_DIR.  Search and replace.
	Grumble. ;-)

2003-10-08  Scott James Remnant  <scott@netsplit.com>

	* libltdl/ltdl.c (lt_dlerror): change return value when
	no error has occured to NULL to match documentation.
	(Debian Bug #157229)

2003-10-07  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Don't suppress output of PIC mode compile if
	-no-suppress option is given.
	* doc/libtool.texi (Invoking libtool): Document it.
	* NEWS: Updated.

2003-10-07  Marcus Comstedt  <marcus@mc.pp.se>

	* m4/libtool.m4 [amigaos-ppc, amigaos-m68k]: Differentiate between
	amigaos on ppc and m68k.
	* NEWS: Updated.

2003-10-07  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* ltmain.in: Do not create `.o' objects when `-shared' is
	specified in compile mode.
	Do not make a static library when `-shared' is specified in link
	mode.
	* doc/libtool.texi (Compile mode): Document it.
	* NEWS: Updated.

	* doc/libtool.texi (Compile mode): Be more specific about the
	effect of `-static'.
	* ltmain.in: Do not create `.lo' objects when `-static' is
	specified.
	* NEWS: Updated.

2003-10-07  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Invoking libtool): Updated.
	* ltmain.in: Add missing clean and finish modes to the shorthand
	options.

	* ltmain.in: Typo in the --mode shorthand.

2003-10-07  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Remove dead code
	for platforms that have been using pass_all for some time now.

2003-10-07  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: Completely rewritten.
	* Makefile.am (AUTOMAKE_OPTIONS): Reduced to 1.7.  The 1.8
	requirement just made the distribution much smaller due to
	m4_includes.  1.7 will bootstrap libtool just fine.
	* NEWS: Updated.

2003-10-05  Peter O'Gorman <peter@pogma.com>,
	Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Remove inferrence of mode, add shorthand for mode
	choice.

	* ltmain.in: Specifying -allow-undefined is now an error.

2003-09-29  Scott James Remnant  <scott@netsplit.com>

	* m4/libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use pass_all for linux*
	solving many build problems on ARM, and hopefully preventing any
	future ones.
	(Debian Bug #191133 and #190569)

2003-09-29  Bob Friesenhahn <bfriesen@simple.dallas.tx.us>,
	Dalibor Topic <robilad@kaffe.org>

	* libltdl/ltdl.c: Only include malloc.h if stdlib.h can not be
	found.

2003-09-26  Alfred M. Szmidt  <ams@kemisten.nu>

	* mdemo2/Makefile.am (INCLUDES): Include `$(top_srcdir)/../libltdl'
	instead of `../libltdl'.

2003-09-24  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Rewritten to use autoreconf.
	* config.guess, config.sub, mkstamp:  Moved from here...
	* config/config.guess, config/config.sub, config/mkstamp: ...to
	here, respectively.
	* libtool.m4, ltdl.m4: Moved from here...
	* m4/libtool.m4, m4/ltdl.m4: ...to here, respectively.
	* configure.ac: Removed various acinclude.m4 hackery, as these
	files are no longer needed with automake 1.8.
	* Makefile.am: Removed various acinclude.m4 hackery, as these
	files are no longer needed with automake 1.8.
	(AUTOMAKE_OPTIONS): Require CVS automake.
	(CONF_SUBDIRS, CFLAGS, CPPFLAGS, LDFLAGS, LIBS, FFLAGS, FLIBS):
	Automake now makes a Make variable from every AC_SUBST, so these
	are NOP.
	(aclocal_macros): These files are now in their own m4 subdir.
	Changed all clients.
	(EXTRA_DIST): mkstamp has moved to the new config subdir.  Changed
	all clients.
	(pkgdata_SCRIPTS): Ditto wrt config.guess and config.sub.
	(pkgdata_DATA): Ditto wrt ltmain.sh.
	* f77demo/configure.ac, libltdl/configure.ac (AM_CONFIG_HEADER):
	Is deprecated in favour of AC_CONFIG_HEADERS.  Updated to the
	latter.
	* Makefile.am, cdemo/Makefile.am, demo/Makefile.am,
	depdemo/Makefile.am, f77demo/Makefile.am, mdemo/Makefile.am,
	mdemo2/Makefile.am, pdemo/Makefile.am, tagdemo/Makefile.am
	(EXTRA_DIST): Remove acinclude.m4.
	(ACLOCAL_AMFLAGS): Search new `m4' macro directory.
	* configure.ac, cdemo/configure.ac, demo/configure.ac,
	depdemo/configure.ac, f77demo/configure.ac, mdemo/configure.ac,
	mdemo2/configure.ac, pdemo/configure.ac, tagdemo/configure.ac
	(AC_CONFIG_AUX_DIR): Declare that config helper	scripts are now
	kept in the new config subdir.
	* libltdl/configure.ac (AC_CONFIG_AUX_DIR): Removed.  Defaults to
	`.' anyway.

2003-09-21  Robert Millan  <robertmh@gnu.org>

	* libtool.m4: Add GNU/KNetBSD support.
	* ltdl.m4: Likewise.

2003-09-13  Scott James Remnant  <scott@netsplit.com>

	* libtool.m4: allow STRIP to contain spaces and additional
	arguments.  (Debian Bug #183055)
	* ltmain.in: include newline in "sensible default" for IFS.
	(Debian Bug #98492 and #95447)

2003-09-11  Peter O'Gorman  <peter@pogma.com>

	* AUTHORS, THANKS: Added myself to AUTHORS, removed from THANKS.

2003-09-10  Peter O'Gorman  <peter@pogma.com>

	* mdemo2/configure.ac: Use AC_LIBTOOL_DLOPEN.
	* mdemo2/main.c: Use LTDL_SET_PRELOADED_SYMBOLS().
	* mdemo2/Makefile.am: Set INCLUDES properly and add -dlopen force
	to make sure the symbols file is included in the link line.

	* ltmain.in: Accept -framework for darwin and put it in
	dependency_libs. For non-installed .la's try to avoid having
	./.libs/.libs/libfoo.so on the link line.

2003-09-10  Arne Woerner  <woerner@mediabase-gmbh.de>

	* libtool.m4 [openbsd]: openbsd 3.x needs versioning information.

2003-08-29  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Typo.

2003-08-29  Alexandre Duret-Lutz  <adl@gnu.org>

	* libtool.m4 (_LT_AC_LANG_C_CONFIG): Fix unquoted call to
	_LT_AC_LANG_C_CONFIG.
	(AC_PROG_EGREP): Remove, now that Libtool requires Autoconf 2.56.
	* bootstrap: Issue an upgrade warning.

2003-08-27  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_CHECK_DLFCN): Use the interrim new
	AC_CHECK_HEADER with compiler rather than preprocessor.
	(AC_LIBTOOL_SETUP): ...which was introduced in autoconf-2.56, so
	we AC_PREREQ that version.
	* ltdl.m4 (AC_WITH_LTDL, AC_LIB_LTDL, AC_LTDL_FUNC_ARGZ): Ditto.

2003-08-27  Gary V. Vaughan  <gary@gnu.org>

	Work around a bug in AU_ALIAS in CVS Autoconf that inserts a
	newline just before AC_FD_CC, by hand updating:

	* ltdl.m4 (AC_LTDL_SYMBOL_USCORE): s/AC_FD_CC/AS_MESSAGE_LOG_FD/g.

2003-08-05  Jim Pick <jim@kaffe.org>,
	Ito Kazumitsu <kaz@maczuka.gcd.org>,
	Gary V. Vaughan  <gary@gnu.org>

	Much as we have tried not to make it the callers' responsibility
	to maintain an lt_dlrealloc function pointer, it is too difficult
	to implement realloc as malloc/memcpy/free without knowing the
	size of the original block.  rpl_realloc has been deprecated since
	2002-10-30, but kaffe has real failures with that so it's time to
	bite the bullet.  Caller gets to maintain lt_dlrealloc:

	* NEWS (1.5.1): Updated.
	* libltdl/ltdl.c (LT_DLREALLOC): Use lt_dlrealloc so the user can
	update the function pointer to match lt_dlmalloc.
	(lt_emalloc): Use lt_dlrealloc rather than hardcoding realloc.
	* doc/libtool.texi (Libltdl interface): Describe lt_dlrealloc now
	that it too has become part of the exported interface to libltdl.

2003-08-01  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (darwin): Use "-undefined dynamic_lookup" if the
	user set MACOSX_DEPLOYMENT_TARGET to 10.3 or greater.
	* libltdl/ltdl.c (dyld): Save the error from the first lookup
	to report in lt_dlerror(). Otherwise the error is always
	"Symbol _foo not in /usr/lib/libSystem.dylib".
	Thanks to Chris Zubrzycki for reporting this.

2003-08-01  Robert Boehne  <rboehne@gnu.org>

	* libltdl/ltdl.h: Tweak the header to support visual studio.

2003-07-31  Greg Eisenhauer  <eisen@cc.gatech.edu>

	* ltmain.in: Provide absolute paths for dlopen and dlpreopen
	files in generating uninstalled libtool libraries.
	* mdemo2/main.c, mdemo2/Makefile.am, mdemo2/README,
	mdemo2/configure.ac, mdemo2/.cvsignore, mdemo/mlib.c,
	tests/mdemo2-conf.test, tests/mdemo2-exec.test,
	tests/mdemo2-make.test: New files for testing above feature.
	* configure.ac, bootstrap, tests/Makefile.am: Accomodate new
	test directory.
	* mdemo/Makefile.am: Build libmlib.la for mdemo2 tests.

2003-07-30  Tony Wyatt <wyattaw@optushome.com.au>

	* libtool.m4: Remove parentheses around finish_eval part which
	broke on amigaos pdksh.

2003-07-30  Christiaan Welvaart  <cjw@daneel.dyndns.org>

	* tests/dryrun.test: Ignore any 'total' line from "ls -l" output.

2003-07-30  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Correctly remove IRIX C++
	template files.

2003-07-24  Robert Millan  <robertmh@gnu.org>

	* libtool.m4: More fixes for the new GNU/FreeBSD triplet.

2003-07-14  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* config.guess, config.sub: Synchronized from ftp.gnu.org since
	Robert Millan's patch requires it.

2003-07-14  Robert Millan  <zeratul2@wanadoo.es>

	* libtool.m4: Fixed to use the new GNU/FreeBSD triplet.
	* ltdl.m4: Fixed to use the new GNU/FreeBSD triplet.
	* ltmain.in: Remove GNU/FreeBSD cases, which are no longer needed.

2003-07-14  Andreas Schwab  <schwab@suse.de>

	* libtool.m4 (_LT_AC_LOCK): Also match powerpc64-*linux* in
	addition to ppc64-*linux*.  From Markus Meissner
	<meissner@bogus.example.com>.

2003-07-14  Dalibor Topic  <robilad@yahoo.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): For AmigaOS with pdksh,
	set the maximum command line length to 8K since otherwise the test
	takes over an hour to run.

2003-06-25  Alexandre Oliva  <aoliva@redhat.com>, Tim Waugh  <twaugh@redhat.com>

	* libtool.m4: Replace mis-uses of path with pathname.
	(AC_PROG_LD_GNU): Don't quote $LD when running it.
	(_LT_AC_LANG_CXX_CONFIG): Use -nostdlib also when linking with g++
	and non-GNU ld.

2003-06-11  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION): Require LT_AC_PROG_SED to
	ensure $SED is set by the time it is used.

	* ChangeLog: Restore missing entries from 2003-04-22.

	* NEWS: Sychronised from branch-1-5.

2003-06-03  Benjamin Reed  <ranger@befunk.com>

	* ltmain.in: search libraries in the order of preference, rather
	than picking .la's even if they're in a less preferred directory.

2003-06-03  Robert Millan <rmh@debian.org>

	* ltdl.m4: Add support for GNU/FreeBSD.
	* ltmain.in: Add support for GNU/FreeBSD.

2003-06-03  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: No need to use sed to remove leading comma when
	appending to $tagnames.

2003-06-03  Albert Chin-A-Young  <china@thewrittenword.com>

	* tests/defs, tests/demo-conf.test, tests/demo-nofast.test,
	tests/demo-nopic.test, tests/demo-pic.test,
	tests/demo-shared.test, tests/demo-static.test,
	tests/depdemo-conf.test, tests/depdemo-nofast.test,
	tests/depdemo-shared.test, tests/depdemo-static.test:
	Pass build system type to tests to support environment
	where default system type not equal to build system type
	(eg. 64-bit HP-UX).

2003-06-03  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (darwin): Remove checks for Apple-specific gcc.
	* libltdl/ltdl.c (HAVE_MACH_O_DYLD_H): #define
	__private_extern__ for fsf gcc.
	* ltmain.in (darwin): Only add new paths to newlib_search_path.

2003-06-03  Max Bowsher  <maxb@ukf.net>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Reorder cygwin's
	system library search path.

2003-06-01  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Match all qnx-nto
	as recent config.guess returns a slightly different string.
	* ltmain.in: Replace use of "od" with tr.

2003-05-30  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_insert): Corrected an off by one error when
	checking that before is not out of range.

2003-05-29  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_int_dyld_lib_install_name): Removed unused
	variable mh1.
	(sys_dyld_close): Removed unused variable size.

2003-05-21  Bruno Haible  <bruno@clisp.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Add support for
	GNU/FreeBSD.

2003-04-22  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on all
	mips*-linux* variants.

2003-04-22  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 Switch on $CC and add paterns to cases.

2003-04-22  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: Move the AC_LIBTOOL_SYS_DYNAMIC_LINKER check
	to be before AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH, becuase the
	value of shlibpath_overrides_runpath is used in the HARDCODE
	test and is set in the DYNAMIC_LINKER test.
	* ltmain.in [darwin]: We never need to relink on darwin.

2003-04-22  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4: Switch on $CC and add patterns to cases.

2003-04-21  Richard Dawe  <rich@phekda.freeserve.co.uk>

	* doc/libtool.texi: Use @ifnottex instead of @ifinfo,
	to allow production of HTML documentation using makeinfo.

2003-04-14  Robert Boehne  <rboehne@gnu.org>

	* NEWS: Updated.
	* configure.ac: Bumped version to 1.5a.

	GNU libtool 1.5 was released.

	* configure.ac: Bumped version to 1.5.
	* NEWS: updated.
	* README-alpha: Updated upload instructions.
	* README: Changed typo in version description.
	* config.guess, config.sub, texinfo.tex:  Synchronized from
	ftp.gnu.org.


2003-04-10  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on all
	mips*-linux* variants.

2003-04-09  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 Switch on $CC and add paterns to cases.

2003-04-09  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: Move the AC_LIBTOOL_SYS_DYNAMIC_LINKER check
	to be before AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH, becuase the
	value of shlibpath_overrides_runpath is used in the HARDCODE
	test and is set in the DYNAMIC_LINKER test.
	* ltmain.in(darwin): We never need to relink on darwin.

2003-04-09  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 Switch on `basename $CC` not $CC

2003-04-05  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: if ZSH_VERSION is set then setopt NO_GLOB_SUBST so
	libtool works. Remove zsh echo test code, don't bother checking
	for zsh anymore in the darwin archive_expsym_cmds.

2003-04-05  Allan Sandfeld Jensen  <snowwolf@one2one-networks.com>

	* libtool.m4: Switch on $CC not $cc_basename.

2003-04-02  Robert Boehne  <rboehne@gnu.org>

	* tests/defs: Quote $DJGPP to prevent problems with some shells.
	Pointed out by Albert Chin <libtool@thewrittenword.com>

2003-04-01  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4: Fix the echo test which I broke earlier.
	* ltmain.in: Make DESTDIR work on darwin, don't use otool.

2003-03-31  Keith Packard  <keithp@keithp.com>

	* ltmain.in: New flag -version-number to be used for maintaining
	compatability with a previously non-Libtool versioning scheme.
	* doc/libtool.texi: Document it.

2003-03-31  Naofumi Yasufuku  <naofumi@yasufuku.net>

	* ltmain.in (win32_libid): Fixed sed expression error in
	win32_nmres evaluation.

2003-03-31  Albert Chin  <libtool@thewrittenword.com>

	* ltmain.in: Don't pass -R flags found in a .la's dependency_libs
	variable directly down to the linker.
	Reported by Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu>.

2003-03-28  Richard Dawe  <rich@phekda.freeserve.co.uk>

	* Makefile.am: Define CONF_SUBDIRS.
	* tests/defs: Set CONFIG_SITE to /nonexistent, except on DJGPP,
	which requires its config.site, to work correctly.
	* tests/cdemo-conf.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-nofast.test, tests/demo-nopic.test,
	tests/demo-pic.test, tests/demo-shared.test,
	tests/demo-static.test, tests/depdemo-conf.test,
	tests/depdemo-nofast.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/f77demo-conf.test,
	tests/f77demo-shared.test, tests/f77demo-static.test,
	tests/mdemo-conf.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/pdemo-conf.test,
	tests/tagdemo-conf.test, tests/tagdemo-shared.test,
	tests/tagdemo-static.test: Don't set CONFIG_SITE, now that
	tests/defs sets it.
	* tests/cdemo-exec.test, tests/demo-exec.test,
	tests/demo-inst.test, tests/depdemo-exec.test,
	tests/depdemo-inst.test, tests/f77demo-exec.test,
	tests/mdemo-exec.test, tests/mdemo-inst.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test,
	tests/tagdemo-exec.test: When checking for the existence
	of executables, use the executable file extension from $EXEEXT.

2003-03-28  Peter O'Gorman  <peter@pogma.com>

	* libltdl/ltdl.c (dyld): Remove some debug printf's, fix a bug.
	* ltmain.in (darwin): Only link against shared libraries when doing
	link_all_deplibs.

2003-03-25  Robert Boehne  <rboehne@gnu.org>

	* bootstrap: Add f77demo to the directories that AUTOHEADER
	is run in.

2003-03-21  Wesley W. Terpstra <terpstra@ito.tu-darmstadt.de>

	* ltmain.in: Don't accumulate directory information in clean mode.
	Include properly pathed wrapper script.

2003-03-21  Peter O'Gorman  <peter@pogma.com>

	* README: Remove "Important" information about patching automake.
	* configure.ac: Fix misapplied patch in last commit
	* libtool.m4 (darwin): Check compiler is apple gcc, add -single_module
	support so that dyloading c++ shared libraries will work.
	* libtool.m4 (_LT_AC_TAGCONFIG): Add test -n to the tests so that
	it will work outside of libtool.
	* doc/PLATFORMS: Add darwin
	* f77demo/configure.ac: Add config.h which was misapplied previously.

2003-03-20  Peter O'Gorman  <peter@pogma.com>

	* ltmain.in: Always use $echo not echo for consistency.
	Changes for darwin building. Warn if linking against libs linked
	with -module. Use module_cmds if available and building a module,
	move convenience double lib check,
	* libltdl/ltdl.c: ltdl support for darwin (first blush)
	* libltdl/README: note that darwin is supported
	* ltdl.m4: Changes for darwin, and for new shrext
	* libtool.m4: Changed the way darwin builds stuff (make check passes)
	added module_cmds, module_expsym_cmds and hardcode_automatic and put
	them in the libtool script. check for zsh's removal of escapes. Allow
	libraries to be stripped on darwin.
	* TODO: Remove the todo about zsh's removal of excapes. note that zsh
	echo works perfectly well, eval is screwed up. Seems to be fixed in
	latest zsh.
	* THANKS: added self :)
	* f77demo/configure.ac: Use config.h or it doesn't work.

2003-03-19  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (_LT_AC_TAGCONFIG): Add test around the macro that
	adds tags to the libtool script so that they won't run when not
	needed.
	* configure.ac: Set F77 to no when no Fortran compiler is found.

2003-03-16  Charles Wilson  <cwilson@ece.gatech.edu>

	* ltmain.in (win32_libid): use $SED, not head.

2003-03-02  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (AC_PROG_LD): Use $CC instead of GCC.
	(_LT_AC_LANG_CXX_CONFIG): Preserve variables used by AC_PROG_LD,
	and reset them for a C++ environment.  Use the with_gnu_ld setting
	from AC_PROG_LD.

2003-02-28  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* ltmain.in: Only append a dot to the wrapper script when
	building on cygwin/MSYS (check for $build, not $host).

2003-02-27  Samuel Meder  <meder@mcs.anl.gov>

	* libtool.m4 (ia64): Add support for Intel compiler (ecc) on IA64
	Linux.

2003-02-27  Benjamin Reed <ranger@befunk.com>

	* THANKS: Added people who have submitted 3 or more patches
	to libtool to the THANKS file.
	* README: Added notes about the Darwin (MacOSX) support.

2003-02-25  Bob McElrath  <bob+libtool@mcelrath.org>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC): Add support for
	the Compaq C compiler for Alpha Linux.

2003-02-25  Benjamin Reed  <ranger@befunk.com>

	* libtool.m4 (darwin): Disable hardcoding library paths to
	make relinking unnecessary.

2003-02-24  Robert Boehne  <rboehne@gnu.org>

	* libltdl/configure.ac: Use AC_CONFIG_AUX_DIR([.]) to place
	auxilary files in the libltdl directory.
	* Makefile.am: Add to the ltmain.sh rule to copy it into the
	libltdl subdirectory.
	* bootstrap: Explicitly handle ltmain.sh in libltdl, and pass
	--copy to automake.

2003-02-24  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* libtool.m4 (AC_LIBTOOL_SETUP): Check for ar.

2003-02-23  Peter O'Gorman  <peter@pogma.com>

	* libtool.m4 (darwin): Revamp darwin platform support.
	* ltdl.m4 (darwin): Support dlcompat if found.
	* ltmain.in: Make sure ranlib is run if needed when piecewise
	linking.

2003-02-23  Alexandre Duret-Lutz  <adl@gnu.org>

	* ltmain.in (--help): Show mailing-address for bug reports.
	(--version): Mention only the most recent copyright year.
	* libtoolize.in (--help): Show mailing-address for bug reports.
	(--version): Mention only the most recent copyright year.

2003-02-19  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (AC_PROG_LD): Use $CC instead of GCC.
	(_LT_AC_LANG_CXX_CONFIG): Preserve variables used by AC_PROG_LD,
	and reset them for a C++ environment.  Use the with_gnu_ld setting
	from AC_PROG_LD.

	* libtool.m4: Replace $linker_flags with $compiler_flags wherever
	it is used as argument to $CC.

	* libtool.m4: Use linux version_type on IRIX with GNU ld.
	Prefix -soname, -set_version and their arguments with ${wl}.  Add
	-melf* linker scripts to LD, and use them to determine libsuff,
	shlibsuff and libmagic.

2003-02-17  Allan Sandfeld Jensen  <snowwolf@one2one-networks.com>

	* libtool.m4: Intel icc fixups for version 7.0.

2003-02-17  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Prepend a dot to
	the value of the shrext (aka shared_ext) variable and delete it
	from the library_names_spec and soname_spec definitions.  That
	way the user can omit the shared library suffix by setting it
	to the empty string.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Strengthen renaming commands for
	the KCC compiler.
	* doc/libtool.texi (Link mode): Update the manual.

2003-02-17  Charles Wilson  <cwilson@ece.gatech.edu>

	* ltmain.in (win32_libid): Rewritten to improve speed.

2003-02-11  Richard Dawe  <rich@phekda.freeserve.co.uk>

	* libtoolize.in: Use the program found by AC_PROG_LN_S
	to create symlinks.

2003-02-08  Jan Kratochvil  <project-libtool@jankratochvil.net>

	* ltmain.in: Handle duplicate object file names when performing
	piecewise archive linking by renaming object files when needed.

2003-02-05  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_CHECK_LIBM): Search for a real symbol in
	the math library rather than 'main', it causes problems for
	C++ compilers with certain Auto* tools.
	(AC_LIBLTDL_INSTALLABLE): ditto.

2003-02-05  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG)
	(AC_LIBTOOL_PROG_LD_SHLIBS): Rewrite printf commands so
	that the format string cannot be mistaken as an option.
	Reported by Martin MOKREJS.

2003-02-05  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4: Modify the sys_lib_search_path_spec to allow
	for either native sed or GNU sed to be used.

2003-02-04  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4: don't use -nodefaultlibs in archive_commands
	or archive_expsym_commands on NetBSD.

2003-02-04  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Change setting of archive_cmds_need_lc
	so that it doesn't overwrite the previous setting.

2003-01-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Allow compiler variable, CC, CXX, etc. to
	be a program name with arguments. Original version stripped
	arguments for CC.

2003-01-28  Charles Wilson  <cwilson@ece.gatech.edu>

	* ltmain.in: add code for a binary wrapper
	to use with uninstalled executables on cygwin/mingw.
	Make sure that --mode=clean gets shell wrapper and
	binary wrapper.  When sourcing the shell wrapper,
	invoke using a terminal `.' on cygwin/mingw to
	avoid the automatic append-.exe behavior.

2003-01-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Hardcode library paths into libraries on IRIX.

2003-01-18  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC): Don't add -DPIC
	for languages other than C and C++.

2003-01-13  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4, ltmain.in: Add support for hppa*64* based on
	a patch by Ross Alexander <ross.alexander@uk.neceur.com>.
	Credit to Ross! Use +b to hardcode library runtime path.
	Add new variable, $hardcode_libdir_flag_spec_ld, that
	is equivalent to $hardcode_libdir_flag_spec but is used
	when ld is used for linking. This works around having to
	set wl=''.

2003-01-12  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Revert an
	accidental rearranging of dylib and so for darwin.

2003-01-10  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Modify the
	"-shrext" option so that is works properly under Darwin.
	Modify the processing of 'gcc -print-search-dirs' under
	Darwin to make it behave like GNU gcc does.
	(AC_LIBTOOL_CONFIG): Single quote $shrext.
	* ltimain.in: Expand shared_ext just before it is used
	so that it can be conditional on the value of $module.

2002-12-31  Benjamin Reed  <ranger@befunk.com>

	* ltmain.in [darwin]: disable lazy linking, needed
	to resolve C++ global constructor issues

2002-12-30  Ralph Schleicher  <rs@nunatak.allgaeu.org>

	Rework by Robert Boehne <rboehne@gnu.org>
	* ltmain.in: New link option -shrext.
	* libtool.m4 (AC_LIBTOOL_CONFIG): New libtool variable shrext.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Replace all hard coded shared
	library file name extensions in library_names_spec and
	soname_spec with $shrext.
	* doc/libtool.texi (Link mode): Document it.

2002-12-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): modify
	$archive_expsym_cmds to restore support for using
	.def files via the -export-symbols switch.
	(AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]): in both the [CXX]
	branch and the default branch, improve $export_symbols_cmds
	so that DATA symbols are properly  labelled.  In the default
	branch, duplicate the _CXX_CONFIG correction for
	$archive_expsym_cmds.

2002-12-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_RC): AC_PROG_RC doesn't exist --
	but we do AC_DEFUN something called LT_AC_PROG_RC.
	Call that instead.

2002-12-30  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): Copy the section
	for Darwin from AC_LIBTOOL_PROG_LD_SHLIBS so that the CXX
	tag doesn't use the g++ defaults for the OS X compiler.

2002-12-30  Albert Chin-A-Young <china@thewrittenword.com>

	* libtool.m4: Sync methods used to detect GNU ld.

2002-12-20  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION,
	AC_LIBTOOL_PROG_CC_C_O): Do not escape } or ? in sed argument.

2002-12-19  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Use the sed program found by LT_AC_PROG_SED
	so that relink commands don't get truncated.

2002-12-18  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4: Move AC_REQUIRE([LT_AC_PROG_SED]) to AC_PROG_LD
	so it is invoked earlier.

2002-12-11  Allan Sandfeld Jensen  <snowwolf@one2one-networks.com>

	* libtool.m4: Add support for Intel icc compiler for Linux.

2002-12-11  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Revert the version +1 change for IRIX, it could
	cause compatibility problems.

2002-11-22  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* libtool.m4 (AC_LIBTOOL_COMPILER_OPTION,
	AC_LIBTOOL_PROG_CC_C_O): Changed method for compilation with
	custom flags to be language-independent.  Thereby removed
	CFLAGS/GCJFLAGS mixup bug.  Imitate Autoconf-style logging.
	Log entries no longer discarded by compilation failures.
	(_LT_AC_LANG_C_CONFIG, _LT_AC_LANG_CXX_CONFIG,
	_LT_AC_LANG_GCJ_CONFIG): Tuned settings of
	lt_simple_compile_test_code and lt_simple_link_test_code
	to avoid warnings that could break some option detections.
	(AC_LIBTOOL_PROG_COMPILER_NO_RTTI): Removed
	redundant "-c conftest.$ac_ext" in the argument to
	AC_LIBTOOL_COMPILER_OPTION.
	(AC_LIBTOOL_PROG_LD_SHLIBS): Replaced C-specific conftest
	source code with $lt_simple_compile_test_code, to support
	the "-lc" test with other languages.

2002-11-19  Paul Eggert  <eggert@twinsun.com>

	Don't assume that egrep and fgrep exist.  POSIX 1003.1-2001 no
	longer requires them; you're supposed to use grep -E and grep -F
	instead.  Also, don't assume that "test -a" works, since POSIX
	doesn't require it.

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER, _LT_AC_LANG_C_CONFIG,
	_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,
	AC_LIBTOOL_PROG_LD_SHLIBS):
	egrep -> grep, when that makes no difference.
	* libtoolize.in: Likewise.
	* ltdl.m4 (AC_LTDL_SYMBOL_USCORE): Likewise.
	* ltmain.in: Likewise.
	* demo/Makefile.am (hc-direct): Likewise.
	* pdemo/Makefile.am (hc-direct): Likewise.
	* tests/build-relink.test, tests/build-relink2.test,
	tests/cdemo-conf.test, tests/cdemo-shared.test,
	tests/cdemo-static.test, tests/demo-conf.test,
	tests/demo-nofast.test, tests/demo-shared.test,
	tests/demo-static.test, tests/depdemo-conf.test,
	tests/depdemo-nofast.test, tests/depdemo-shared.test,
	tests/depdemo-static.test, tests/hardcode.test,
	tests/mdemo-conf.test, tests/mdemo-shared.test,
	tests/mdemo-static.test, tests/pdemo-conf.test,
	tests/tagdemo-conf.test, tests/tagdemo-shared.test,
	tests/tagdemo-static.test: Likewise.

	* libtool.m4 (AC_PROG_EGREP):
	New macro, defined if Autoconf doesn't define.
	(AC_PATH_TOOL_PREFIX, AC_PROG_LD_GNU): Use it.
	(AC_PROG_LD, AC_PROG_NM, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE):
	Use shell pattern matching rather than egrep.
	(AC_LIBTOOL_CONFIG): Set lt_EGREP and EGREP.

	* demo/Makefile.am (SET_HARDCODE_FLAGS): Use sed instead of egrep.
	* pdemo/Makefile.am (SET_HARDCODE_FLAGS): Likewise.

	* tests/defs (EGREP, FGREP): New vars.

	* ltmain.in: egrep -> $EGREP
	* tests/assign.test, tests/demo-exec.test, tests/demo-inst.test,
	tests/pdemo-exec.test, tests/pdemo-inst.test, tests/sh.test:
	Likewise.

	* tests/hardcode.test: fgrep -> $FGREP

	* tests/f77demo-exec.test: test -a -> test &&

2002-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltmain.in: When using gcc, pass -mfoo to the linker
	via $compiler_flags in order to pass architecture information to
	the linker (e.g. 32 vs 64-bit). This may also be accomplished via
	-Wl,-mfoo but this is not reliable with gcc because gcc may use
	-mfoo to select a different linker, different libraries, etc, while
	-Wl,-mfoo simply passes -mfoo to the linker. If there is a better
	solution, please let me know what it is.

2002-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tests/Makefile.am: Conditional assignment of FFLAGS = @FFLAGS@
	does not appear to be necessary given that Automake makes this
	assignment by default.  The condition is removed since Automake
	1.7.1 complains about it.

2002-11-18  Jakub Jelinek  <jakub@redhat.com>

	* libtool.m4: Support linking of 64-bit libraries on
	sparc{,v[789]}-*linux*, s390*-*linux*, ppc*-*linux*
	GNU/Linux systems when the platform default is to build
	32-bit libraries.

2002-11-18  Andreas Jaeger  <aj@suse.de>, Bo Thorsen  <bo@suse.de>

	* libtool.m4: Support linking of 32-bit libraries with ld
	on the x86-64, ppc64, s390x and sparc64 GNU/Linux systems.

2002-11-18  Akim Demaille  <akim@epita.fr>

	* ltmain.in: Do not change the PATH in the wrappers: let them
	launch the real binary using its path.

2002-11-18  Kevin Ryde  <user42@zip.com.au>

	* doc/libtool.texi (Library tips): Note array dimensions.

2002-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tests/*.test: MinGW's MSYS treats files under /dev
	specially. This causes 'test -r /dev/null/config/site' to
	improperly report success, causing configure to fail. Change the
	CONFIG_SITE definition from "/dev/null/config/site" to
	"/nonexistent" to avoid this problem.

2002-11-18  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (_LT_AC_LOCK): remove support for ancient
	versions of mingw and cygwin.
	(AC_LIBTOOL_POSTDEP_PREDEP): new function.
	moved the "find hidden library dependencies" code here
	from AC_LIBTOOL_LANG_CXX_CONFIG.  Attempted to make it
	multi-tag compatible, but currently only CXX calls it.
	(AC_LIBTOOL_LANG_CXX_CONFIG): set
	enable_shared_with_satic_runtimes to 'no' by default
	Set it to 'yes' for cygwin, mingw, pw32. Replace
	"find hidden library dependencies" code with a call
	to the new function AC_LIBTOOL_POSTDEP_PREDEP.
	Consolidate cygwin and mingw/pw32 stanzas.
	(AC_LIBTOOL_LANG_F77_CONFIG): set
	enable_shared_with_static_runtimes to 'no' by default
	(AC_LIBTOOL_CONFIG): add
	enable_shared_with_static_runtimes to the list of variables
	to write into ltmain.sh; include it in the libtool script
	template as allow_libtool_libs_with_static_runtimes.
	(AC_LIBTOOL_PROG_LD_SHLIBS): set
	enable_shared_with_static_runtimes to 'no' by default
	Set it to 'yes' for cygwin, mingw, pw32.
	(AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): only put cr in regexp
	if the build_os is mingw, not host_os

	* ltmain.in (case deplibs_check_method): for all appropriate
	cases, if allow_libtool_libs_with_static_runtimes, then remove
	predeps and postdeps from the list of dependencies that must
	be checked for "dynamicness".  For the "none" case, the
	presence of compiler-generated postdeps and predeps should
	not trigger "inter-library dependencies not supported" error.
	(initial setup after arg processing): on cygwin/mingw, allow
	compiler-generated dependent libs to be duplicated without
	elimination.
	(initial search loop for deplibs): if the deplib in question
	is a libtool lib, then if
	allow_libtool_libs_with_static_runtimes then parse the .la file.
	If the .la file only has an "old_library", add the deplib
	directly to the deplibs list (-lstdc++) and DON'T use the .la
	file; this allows the (case deplibs_check_method) change above
	to take effect.
	* ltmain.in (for pass in $passes loop): remove predeps,
	postdeps, and compiler_lib_search_path from dependency_libs.

2002-11-08  Robert Boehne  <rboehne@gnu.org>

	* doc/libtool.texi: Add --mode=* to every example using libtool.

2002-11-03  Ossama Othman  <ossama@doc.ece.uci.edu>

	* ltmain.in: add support for installing into temporary
	staging area (e.g. 'make install DESTDIR=...')

2002-11-03  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): restore setting
	allow_undefined_flag=unsupported for cygwin and mingw.
	(AC_LIBTOOL_PROG_LD_SHLIBS): ditto, for both "normal" gcc/ld
	and for the (unmaintained?) MSVC case.

2002-11-03  Charles Wilson  <cwilson@ece.gatech.edu>

	* doc/libtool.texi (Install mode): document new
	-inst-prefix option.

2002-11-02  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Print a warning if the mode is not specified.
	* doc/libtool.texi: Document the change that the mode must be
	specified.

2002-10-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): use printf, not
	echo. (AC_DEPLIBS_CHECK_METHOD): use new shell function
	win32_libid on w32 platforms
	* ltmain.in: add new section for shell functions. Add
	win32_libid() shell function.
	* f77demo/Makefile.am: add -no-undefined flag

2002-10-30  Rob Browning  <rlb@defaultvalue.org>

	* ltdl.c (realloc): Remove custom realloc. (#define
	rpl_realloc realloc) and comment out later code for custom
	realloc. You can't define your own malloc unless you know
	enough about the malloc in use to be able to tell how big
	the src ptr is. The disabled code incorrectly used the
	*destination* ptr to decide how much to copy. This
	sometimes results in out-of-bound accesses which cause
	segfaults. This is a quick hack for now; we may want
	something cleaner later.
	(tryall_dlopen_module): check to be sure (dirname_len > 0) before
	testing first character against '/'.
	(try_dlopen): check for feof(file) in read loop -- otherwise
	infinite loop?

2002-10-25  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in (-XCClinker): New flag passes a linking option
	directly to the compiler driver without appending ${wl}.

2002-10-25  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha: Add some release note templates for inspiration
	and consistency at release time.

	* Makefile.am (cvs-diff): Compress the generated diff file, ready
	for upload to ftp.gnu.org.

2002-10-25  Howard Chu  <hyc@highlandsun.com>

	* ltmain.in [aix]: Be sure to deal with xlc_r, cc_r and other
	compiler variants.

2002-10-25  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_FILE_IMPGEN_C): Removed.  No longer used.
	(_LT_AC_FILE_LTDLL_C): Ditto.
	(AC_LIBTOOL_CONFIG) [cygwin, mingw, pw32, os2]: Don't call
	_LT_AC_FILE_LTDLL_C or _LT_AC_FILE_IMPGEN_C.

2002-10-25  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: When LDFLAGS="-Wl,-brtl,[other options]", the
	-brtl special-case code for AIX never gets triggered because
	were are being too specific about how we search for -brtl.
	Use case statement to avoid this. Remove extraneous
	semicolon.
	* ltmain.in: Recognize the IBM xlc compiler.

2002-10-24  Andrew Suffield  <asuffield@debian.org>

	* libltdl/ltdl.c (lt_dlopenext): Corrected sense of "file not
	found" check.

2002-10-24  Ossama Othman  <ossama@doc.ece.uci.edu>

	* ltmain.in: Support compiler names matching g++*

2002-10-23  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtool.m4: Removed old Windows cruft.
	* libtool.m4: Adapted pw32 to be like Cygwin/MinGW.

2002-10-23  Robert Boehne  <rboehne@gnu.org>

	ltmain.in: Do not add 1 to the version under IRIX, it is
	not necessary.

2002-10-15  Charles Wilson  <cwilson@ece.gatech.edu>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): avoid long delay on
	 cygwin/Win9x when computing commandline length.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): fix postinstall_cmds when
	sources are in a subdirectory
	* ltdl.m4 (AC_LTDL_SYSSEARCHPATH): use $PATH_SEPARATOR, not
	$ac_path_separator
	* configure.ac: move depdemo-specific stuff.  You must configure
	libtool before you can try './libtool --features'.
	* mdemo-inst.test: set $PATH to include the directory in which
	the modules are installed (on cygwin, DLL search path is the
	$PATH)

2002-10-15  Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* ltmain.in: MinGW works identically to Cygwin.
	* libtool.m4: lt_cv_sys_max_cmd_len hard-coded to 8192
	*  Model MinGW configuration after Cygwin configuration.
	Some portions share implementation.

2002-10-15  Elizabeth Barham <soggytrousers@yahoo.com>

	* libtool.m4: Pattern MinGW library naming after that
	used by Cygwin except use 'lib' prefix rather than 'cyg'.
	* Transfer some configuration from Cygwin with adjustments
	for MinGW.

2002-10-15  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: When a module is built for AIX, the 'lib'
	prefix isn't needed, neither is the version. AIX dlopen
	will honor the RPATH in a library.

2002-10-11  Christoph Egger  <Christoph_Egger@gmx.de>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS, darwin): Add
	-install_name to the link line only when -dynamiclib is
	specified for a module.  Use -bind_at_load when linking C++
	shared libraries.

2002-10-04  Elizabeth Barham  <soggytrousers@yahoo.com>

	* libtool.m4 (AC_LIBTOOL_SETUP): GCC now checks -shared to
	create a dll for Windows targets.

2002-09-24  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Fixed a few spelling errors.

2002-09-17  Robert Boehne  <rboehne@gnu.org>

	* libltdl/ltdl.c: Commented out access() call that checks for a
	library file's existence and permissions, as it appears to fail
	in every case.

2002-09-09  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Custom $symcode for Tru64 UNIX to catch 'Q',
	read-only constants.

2002-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.de>

	* libtool.m4 (osf[345]): Append $major to soname_spec.
	Reflect this in library_names_spec.
	* ltmain.in (osf): Prefix $major with '.' for use as extension.

2002-08-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* ltdl.m4 & libltdl/ltdl.c: Port fully to native Win32 API.

2002-07-31  Robert Boehne  <rboehne@gnu.org>

	* f77demo/.cvsignore: New file, forgotten in the last commit.

2002-07-31  Eric Lindahl  <erik@theophys.kth.se>

	* libtool.m4 (AC_PROG_LIBTOOL): Added support for the new F77
	Fortran support tag.
	(AC_LIBTOOL_PROG_CC_C_O, _LT_AC_TAGCONFIG): Support F77 tag.
	(AC_LIBTOOL_F77, _LT_AC_LANG_F77, AC_LIBTOOL_LANG_F77_CONFIG):
	New macros for F77 tag Fortran support.
	* configure.ac: Add support for creating the new F77 tag.
	* bootstrap: Add f77demo directory to the list to be processed.
	* Makefile.am: Add support for FFLAGS and FLIBS.
	* tests/Makefile.am: Add new Fortran tests.
	* tests/f77demo-*.test: New files.
	* f77demo/configure.ac, f77demo/cprogram.c, f77demo/fooc.c
	* f77demo/foof.f, f77demo/foo.h, f77demo/fprogram.f
	* f77demo/Makefile.am, f77demo/README: New files.

2002-07-16  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (tryall_dlopen): We need to catch missing file
	errors early so that file_not_found() can detect what happened.

2002-06-26  Bob Friesenhahn  <bfreisen@simple.dallas.tx.us>

	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [mingw]: Remove
	extraneous '=' character which appears in gcc 3.1
	-print-search-dirs output.
	Handle both upper and lower case drive letters when testing for
	Windows vs POSIX style path output from -print-search-dirs
	output.

2002-06-24  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in (Piecewise linking): Add a clause to skip creating
	the export file until the reloadable object file(s) have been
	created, then use them as input for $export_symbols_cmds.

2002-06-23  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Need to quote [ and ] for
	Autoconf.

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): HP/UX needs
	libltdl_cv_sys_dlopen_deplibs set to yes.

2002-06-23  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_SETUP, _LT_AC_LOCK): Use
	AC_PROVIDE_IFELSE to test AC_LIBTOOL_WIN32_DLL and
	AC_LIBTOOL_DLOPEN, necessary for autoconf 2.53.

2002-06-23  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_insert): Actually, BEFORE can be NULL
	when *PARGZ_LEN is non-NULL, so the assertion to the contrary was
	bogus.
	Reported by Bob Friesenhahn <bfreisen@simple.dallas.tx.us>
	and Albert Chin-A-Young <china@thewrittenword.com>

2002-06-21  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (foreach_dirinpath): Ensure that filename is '\0'
	terminated by all code paths.
	Reported by Lutz Müller <lutz@users.sourceforge.net>

2002-06-20  Gary V. Vaughan  <gary@gnu.org>

	From Kevin Ryde  <user42@zip.com.au>:
	* doc/libtool.texi (Platform quirks): s/dependan/dependen/
	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Ditto.
	* TODO: Ditto.

2002-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* ltmain.in (irix, nonstopux): Set major before use.

2002-06-11  Daniel Kobras  <kobras@linux.de>

	* libltdl/ltdl.c (try_dlopen): Don't return bogus handle to user
	  if tryall_dlopen() fails.

2002-06-01  Gary V. Vaughan  <gary@gnu.org>

	* tests/pdemo-exec.test: Typo.  s/hell-static/hell_static/

2002-05-31  Charles Wilson  <cwilson@ece.gatech.edu>

	* NEWS: Updated.
	* libtool.m4: use $NM to create the symbol list on cygwin, not
	$ltdll_cmds as on mingw.  For all tags, (and host=cygwin) set
	allow_undefined_flag="" so that the --auto-import magic
	works properly.  For all tags (and host=cygiwn) set
	always_export_symbols=no -- it is unnecessary thanks to
	binutils' auto-export magic.
	* libltdl/ltdl.c: Don't force cygwin to use the LoadLibrary
	wrapper; use cygwin's builtin implementatino of dl*.
	* cdemo/Makefile.am: the downside of unsetting
	'allow_undefined_flag' -- we must include -no-undefined
	in the _la_LDFLAGS variable.
	* depdemo/l1/Makefile.am: ditto.
	* depdemo/l2/Makefile.am: ditto.
	* depdemo/l3/Makefile.am: ditto.
	* depdemo/l4/Makefile.am: ditto.
	* mdemo/Makefile.am: ditto.
	* tagdemo/Makefile.am: ditto.
	* demo/Makefile.am: ditto.  But also, we must make special
	provision to clean up the hell0 wrapper script.
	* pdemo/Makefile.am: ditto -no-undefined.  ditto hell0.
	And use 'hell_static' instead of 'hell.static'.
	* tests/pdemo-inst.test: use 'hell_static' instead
	of 'hell.static'.
	* tests/pdemo-exec.test: ditto.

2002-05-30  Charles Wilson  <cwilson@ece.gatech.edu>

	* tests/build-relink2.test: look for installed libl3.la
	in $prefix/lib/ as well as $prefix/lib/extra/.

2002-05-30  Gary V. Vaughan  <gary@gnu.org>

	* tests/hardcode.test: Use libtool --config to collect the
	variable values for the test, otherwise the tag values interfere
	with a straight grep.

2002-05-30  Gary V. Vaughan  <gary@gnu.org>

	Finally fix the annoying bug which always adds all tags to the
	libtool script built by your project configure.  Now we set the
	default tags depending on whether AC_PROG_CXX et. al. are actually
	called from configure.ac.

	* libtool.m4 (_LT_AC_TAGCONFIG): Don't default the tagnames when
	no --with-tags argument is given.
	(_LT_AC_SHELL_INIT): Factored out from the AC_DIVERT_PUSH code
	in...
	(_LT_AC_PROG_ECHO_BACKSLASH): ...which now calls the macro
	instead.
	(AC_LIBTOOL_CXX): Use _LT_AC_SHELL_INIT to add CXX to the
	initialisation sequence for tagnames.
	(AC_LIBTOOL_GCJ): Similarly for GCJ tag.
	(AC_LIBTOOL_RC): Likewise for RC tag.

2002-05-21  Jon Meredith  <jonm@alchemetrics.co.uk>

	* ltmain.in: Fix a problem on SCO OpenServer5 that caused a
	failure in three depdemo-make tests. For some reason the linker
	tries to find the dependent libraries using the library search
	path before it has read the libraries specified with absolute
	paths in the full commandline. This patch add -L's for each of
	the dependent library directories so that they can be resolved.

2002-05-09  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4: Update support for NetBSD
	* ltdl.m4: Make sure that libltdl_cv_func_dlopen and
	libltdl_cv_lib_dl_dlopen are set and used instead of the
	ac_cv_ versions. Also, use lt_cv_sys_global_symbol_pipe
	instread of global_symbol_pipe. This fixes the detection of
	dlopen on BSD derived plaforms and more importantly fixes
	need_uscore detection.

2002-05-06  Paul Eggert  <eggert@twinsun.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): head -1 -> sed 1q to
	port to POSIX 1003.1-2001 hosts, like textutils 2.0.21 with
	_POSIX2_VERSION=200112.

2002-05-06  Paul Eggert  <eggert@twinsun.com>

	* ltmain.in: Don't assume that "sort +2" works, as POSIX
	1003.1-2001 says that "sort +2" is supposed to sort the file
	named "+2".  An example host that behaves like this is
	textutils 2.0.21 with _POSIX2_VERSION=200112.

2002-05-06  Loren James Rittle  <rittle@latour.rsch.comm.mot.com>

	* ltmain.in: Detect and handle object name conflicts while
	piecewise linking a static library.

2002-05-02  Dave Vasilevsky  <thevas@mac.com>

	* ltmain.in: Remove convenience libraries from deplibs for Darwin.

2002-05-02  Fritz Elfert  <felfert@to.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Modify archive_expsym_cmds
	to catch properly handle dll alias symbols.

2002-04-24  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Use $build_os not $host_os.

2002-04-14  Robert Boehne  <rboehne@gnu.org>

	* doc/libtool.texi (C++ libraries): Finally updated to reflect
	Libtool's support for C++.

2002-04-14  Jean-Frederic Clere  <jfrederic.clere@fujitsu-siemens.com>

	* libtool.m4: Update support for Fujistu-Siemens Computers (FSC).
	* ltmain.in: Add support for EBCDIC based systems.

2002-04-07  Robert Boehne  <rboehne@gnu.org>

	* libtool.m4 (LT_AC_PROG_SED): Refactor, removing temporary directory
	and consistent use of the shell variable namespace "lt_ac_".

2002-04-02  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Finish the tag matching logic started yesterday and
	refactor it a bit.

2002-04-01  Robert Boehne  <rboehne@gnu.org>

	* ltmain.in: Handle the case when no tag is explicitly set, and
	$base_compile has a space in front of $CC, and revert the setting
	of tagname checked in on 2002-3-14.

2002-04-01  Robert Boehne  <rboehne@gnu.org>

	* tagdemo/foo.cpp: Use C++ IO to catch problems linking to C++
	runtime libraries.
	* tagdemo/main.cpp: Ditto.

2002-03-16  Gary V. Vaughan  <gary@gnu.org>

	* TODO: Removed obsolete comments about RMS' package system.

2002-03-14  Robert Boehne  <rboehne@gnu.org>

	ltmain.in: Touch-up to make testsuite pass, and default tagname
	to CC when it isn't explicitly set.

2002-03-14  Anthony Green  <green@redhat.com>

	* libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): Albert Chin's gcj fix.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Per Bothner's change for not
	using -DPIC with gcj.

2002-03-11  Bruce Korb  <bkorb@gnu.org>

	* ltmain.in(compile): bring a touch of order to the option processing

2002-02-09  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* THANKS: Added Rob Collins and Chuck Wilson for their cygwin
	work.

	From Robert Collins  <robert.collins@itdomain.com.au>:
	* configure.ac (AC_EXEEXT): Needed for DOSish systems.
	* libtool.m4 (shlibpath_overrides_runpath) [cygwin]: Set to yes
	when compiling with gcc.
	(lt_prog_compiler_pic) [cygwin]: No longer needs the -DDLL_EXPORT
	hack, so we just say the pic is the default.
	(AC_LIBTOOL_PROG_LD_SHLIBS) [cygwin]: Extract symbols from a
	library normally.
	[cygwin]: Declare C++ compiler characterisics for g++, taking into
	account the new auto-import support in cygwin ld.
	* ltmain.in (specialdeplibs) [cygwin]: Be careful about
	eliminating duplicate -lgcc's from the link line.
	[cygwin]: Be smarter about .exe suffixes.
	* demo/configure.ac (AC_EXEEXT, AC_LIBTOOL_WIN32_DLL):  Support
	DOSish systems properly.
	* depdemo/configure.ac (AC_EXEEXT, AC_LIBTOOL_WIN32_DLL):  Ditto.
	* demo/Makefile.am (deplibs-check): Allow for .exe suffix.  Use
	hell_static instead of hell.static for multi-`.' inhibited OSes.
	* tests/demo-exec.test: Ditto.
	* tests/demo-inst.test: Ditto.
	* demo/foo.h [cygwin]: Sanitize cygwin dll support.
	* demo/foo.c (_LIBFOO_COMPILATION_): No longer required.
	* demo/hello.c (_LIBFOO_COMPILATION_): Ditto.
	* depdemo/Makefile.am (bin_PROGRAMS): Use depdemo_static instead
	of depdemo.static for multi-`.' inhibited OSes.
	* tests/depdemo-exec.test: Ditto.
	* tests/depdemo-inst.test: Ditto.
	* mdemo/Makefile.am (bin_PROGRAMS):  Ditto for mdemo.static.
	* tests/dryrun.test: Ditto.
	* tests/mdemo-exec.test: Ditto.
	* tests/mdemo-inst.test: Ditto.
	* tests/build-relink.test:  Be careful about possible .exe
	suffixes.
	* tests/noinst-link.test: Allow for .exe suffix.

2002-02-07  Alexandre Oliva  <aoliva@redhat.com>

	Reverted incorrect patch:
	2001-10-24  H.J. Lu  <hjl@gnu.org>
	* ltmain.sh: Allow link against an archive when building a
	shared library.
	* libtool.m4 (lt_cv_deplibs_check_method): Always use
	file_magic for Linux ELF.

2002-01-30  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (LT_AC_PROG_SED): Removed a mysterious newline.

2002-01-28  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (LT_AC_PROG_SED): New macro tests sed for truncation of
	output.  AC_REQUIRE the new macro.
	* ltmain.in: Use $SED rather than plan old sed, as set by the new
	macro LT_AC_PROG_SED.

2002-01-10  Volker Christian  <voc@soft.uni-linz.ac.at>

	* libltdl/ltdl.c (find_handle_callback): treat the result of a call
	to access(2) correctly when deciding whether a library can be found
	in a directory from user_search_path.

2002-01-07  Robert Boehne  <rboehne@ricardo-us.com>

	* NEWS: Fixed wrong path for texinfo.tex.
	* configure.ac: Bumped version to 1.4e.

	GNU libtool 1.4d was released.

	* configure.ac: Bumped version to 1.4d.
	* NEWS: updated.
	* config.guess, config.sub, texinfo.tex:  Synchronised from
	ftp.gnu.org.

2001-12-06  Jens Petersen  <petersen@redhat.com>

	* ltmain.in: Replace all test "-a"s by "&& test"
	for portability.

2001-11-28  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Change the
	factor of saftey as 3/4 of the result was not low enough.

2001-11-28  Gary V. Vaughan  <gary@gnu.org>

	* libtoolize.in: The test for whether AC_PROG_LIBTOOL is defined
	in aclocal.m4 had bitrotted slightly.
	Reported by Takahiko Kawasaki <Takahiko_Kawasaki@cii.csk.co.jp>

2001-11-27  Donald D. Anderson  <dda@sleepycat.com>

	* ltmain.in: Treat freebsd like openbsd, in that -lc/-lc_r should
	not be explicitly used.  ld handles this depending on the presence
	of the -pthread option.

2001-11-27  Robert Boehne  <rboehne@ricardo-us.com>

	With help from Michael Matz <matz@kde.org>:
	* ltmain.in:  Add a new command line argument
	--preserve-dup-deps for preserving duplicate
	dependent libraries.
	* libtool.texi: Document it.

2001-11-27  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Send "test"
	warnings to /dev/null, helps FreeBSD and maybe others.

2001-11-15  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: quote LTCC because autoconf AC_PROG_CC_STDC
	macro might add to $CC if options needed by compiler to
	grok ANSI.

2001-11-15  Gary V. Vaughan  <gary@gnu.org>

	From Joseph S. Myers  <jsm28@cam.ac.uk>:
	* ltmain.in: Typo.

2001-11-15   Mo DeJong  <supermo@bayarea.net>

	* ltmain.in: Place parens around a generated relink_command
	so it is run is a subshell. This avoids an install error
	where libtool ended up in the wrong directory after
	relinking a .la file.

2001-10-31  Raja R Harinath  <harinath@cs.umn.edu>

	* configure.ac (pkgdatadir): Move the invocation of AC_INIT_AUTOMAKE
	before the use of $PACKAGE in $pkgdatadir.
	Reported by Bob Friesenhahn <bfreisen@simple.dallas.tx.us>

2001-10-28  Gary V. Vaughan  <gary@gnu.org>

	From Tom Bates  <Tom.Bates@compaq.com>:
	* libtool.m4 [mips-compaq-nonstopux]: New port.
	* ltmain.in [mips-compaq-nonstopux]: Support
	$version_type == nonstopux.

2001-10-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* libltdl/ltdl.c (foreach_dirinpath): change some types to size_t
	from int because strlen() returns size_t. argz_len changed to
	size_t because argzize_path() takes 3rd argument as size_t, not
	int.
	Based on lint run from Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

2001-10-27  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_TAGCONFIG): Cray sed does not allow character
	sets to contain the separator character.
	Reported by Kevin Ryde <user42@zip.com.au>

	* ltdl.m4 (AC_WITH_LTDL): New macro to add `--with-included-ltdl'
	option to configure, but to find an appropriate ltdl library and
	append the right options to link it.

2001-10-24  Kevin Ryde  <user42@zip.com.au>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Remove a stray ' quote.

2001-10-24  H.J. Lu  <hjl@gnu.org>

	* ltmain.sh: Allow link against an archive when building a
	shared library.
	* libtool.m4 (lt_cv_deplibs_check_method): Always use
	file_magic for Linux ELF.

2001-10-12  Guido Draheim  <guidod-2001q3@gmx.de>

	* ltdl.m4: Changed "underscode to underscore".

2001-10-06  Gary V. Vaughan  <gary@gnu.org>

	* configure.ac: General modernisation and cleanup.
	* cdemo/configure.ac: Ditto.
	* demo/configure.ac: Ditto.
	* depdemo/configrue.ac: Ditto.
	* ltdl/configure.ac: Ditto.
	* ltdldemo/configure.ac: Ditto.
	* mdemo/configure.ac: Ditto.
	* pdemo/configure.ac: Ditto.
	* tagdemo/configure.ac: Ditto.

2001-10-04  Albert Chin-A-Young <china@thewrittenword.com>

	* libltdl/ltdl.c: Match function return type with prototype
	(add static initializer to file_not_found).

2001-09-30  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBLTDL_CONVENIENCE): s/INCLTDL/LTDLINCL/ for
	consistency with gettext's INTLINCL.  Keep the old symbol too for
	backwards compatibility.
	(AC_LIBLTDL_INSTALLABLE): Ditto.
	* doc/libtool.texi (Distributing libltdl):  Adjust documentation.

2001-09-22  Albert Chin-A-Young  <china@thewrittenword.com>

	* ltdl.m4 (AC_LTDL_DLLIB): Even though HP-UX 10.20 and 11.00
	support shl_load *and* dlopen, dlopen works correctly only
	with a patch. Because we want to avoid the situation where we
	build on a system with the patch but deploy on a system without,
	use shl_load exclusively if found.

2001-09-22  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_FILE_LTDLL_C): Be carefule that the start
	marker searched for by sed must start in column 0.
	(_LT_AC_FILE_IMPGEN_C): Ditto.
	Reported by Tor Lillqvist <tml@iki.fi>

2001-09-22  Tor Lillqvist  <tml@iki.fi>

	* libtool.m4 [mingw* cygwin*]: Small improvement for mingw-hosted
	tool support (while still running libtool on cygwin). In that case
	PATH_SEPARATOR is ':', but gcc -print-search-dirs still prints its
	search path with ';' as separator.
	(AC_LIBTOOL_RC, AC_LIBTOOL_LANG_RC_CONFIG): Add support for .rc
	files (Windows resource files), compiled by the resource compiler
	(windres in mingw) to .o files.
	(AC_PROG_NM): Minor bug fix for $PATH elements with spaces in
	them.
	* configure.ac: Use LT_AC_PROG_RC.
	* ltmain.in: Check for .rc files.
	* NEWS: Updated.

	* ltmain.in: Add a space to $base_compile in the case statement,
	as the case labels checks for trailing spaces, but there aren't
	necessarily in $base_compile.

2001-09-22  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: When setting archive_cmds for CC, don't
	test for $GXX but for $GCC on HP-UX. Indentation fixes.

2001-09-21  Gary V. Vaughan  <gary@gnu.org>

	From Tor Lillqvist <tml@iki.fi>:
	* ltmain.in [cygwin* mingw*]: Take care of the difference between
	wrapper script name and executable name.

	* libtool.m4 (archive_cmds) [darwin1.[0-2]]: Darwin uses zsh-3.1.6
	for /bin/sh, and that shell does not handle escaped quotes
	properly yet.
	Reported by Christopher Pfisterer <cp@chrisp.de>

2001-09-21  Albert Chin-A-Young  <china@thewrittenword.com>

	* libltdl/ltdl.c: Match function return type with prototype
	(add static initializer to some functions) to prevent warnings
	from HP-UX cc.

2001-09-21  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c: Added support for dmalloc, and uncovered some
	memory bugs as a result.

2001-09-21  Albert Chin  <china@thewrittenword.com>

	* libtool.m4: Don't include main() when testing for command to
	parse $NM output because some C++ compilers don't allow you to
	take the address of main (e.g. HP-UX aCC).

	* libtool.m4: Some uses of $GXX were unquoted, but GXX is either
	NULL or yes.  Use "$GXX".

2001-09-13  Assar Westerlund  <assar@sics.se>

	* ltdl.m4 (AC_LTDL_DLLIB): call dlopen with arguments so the test
	does not fail due to a prototype in dlfcn.h

2001-09-13  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4 (AC_CHECK_HEADERS): Check for assert.h.
	* libltdl/ltdl.c:  If not, disable assertions manually.

2001-09-11  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Be robust to having no files that need removing.

	* libltdl/configure.ac (AM_INIT_AUTOMAKE): Bump libltdl version to
	1.2.
	* libltdl/Makefile.am (libltdl_la_LDFLAGS):  Bump libtool library
	version info to 4:0:1.

2001-09-11  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: No need to undefine([symbols]), proper quotation is
	enough.

2001-09-10  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: CVS Autoconf guarantees a decent default IFS, so
	there is no need for us to preset it anymore.
	Be careful not to set IFS="${IFS}$PATH_SEPARATOR" for PATH
	splitting, otherwise spaces in directory names will be lost.
	Use $PATH_SEPARATOR... don't rely on $ac_path_separator, which was
	an autoconf internal until just now, when it disappeared!
	* ltmain.in: Default IFS once, at the start.
	Reported by Akim Demaille <akim@epita.fr>

2001-09-10   Brad  <brad@comstyle.com>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Missed an instance of
	Autoconf square bracket quoting style normalisation.

	* ltmain.in (-lc_r): Style improvement.

	* doc/libtool.texi: Remove obsolete references to ltconfig.
	* tests/quote.test: s/ltconfig/\$0/

2001-09-09  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: Use Autoconf square bracket quoting style
	consistently throughout.

2001-09-08  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Cleanup `autom4te' and `libtool' so that we don't
	get caught by something from a previous build.

	* libtool.m4 (archive_cmds, archive_expsym_cmds) [solaris*]: Revert
	my 2001-09-06 patch.
	(no_undefined_flag)i [solaris*]: Revert Alexandre's 2001-04-11 patch.

2001-09-07  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (foreach_dirinpath): argz_len should be a size_t.
	Reported by Albert Chin <china@thewrittenword.com>

2001-09-06  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [solaris*]: Typo. s/GXX/GCC/.

	* libtool.m4 (archive_cmds, archive_expsym_cmds) [solaris*]: Changing
	no_undefined_flag from `-z text' to `-z defs' (see entry below at
	2001-04-11  Alexandre Oliva  <aoliva@redhat.com>) has a problem.
	when linking a shared library with gcc calling /usr/ccs/bin/ld (eg.
	the gcc supplied with Solaris 8 companion CD), using the flag
	-no-undefined, shared library linking will always fail because of
	the unresolved symbols from libgcc.a.  Consequently we have to
	provide a path to libgcc.a when linking shared libraries in
	conjunction with -no-undefined!

	From Michael Pruett <mpruett@engr.sgi.com>:
	* libltdl/ltdl.c (find_module): `0' valued arguments to
	tryall_dlopen_module() must be explicitly cast to avoid compiler
	warnings on some environments.

	From Daniel Johnson <danielj7@mac.com>:
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [darwin*]: Move from GNU
	ld section to non-GNU ld section.

2001-09-05  Robert Boehne  <rboehne@ricardo-us.com>

	* pdemo/Makefile.am (helldl):  Automake 1.4 can't find the target
	if we use helldl$(EXEEXT), and Automake 1.5 barfs unless we do.
	Using both targets to the left of the colon seems to work though!

2001-09-03  Gary V. Vaughan  <gary@gnu.org>

	* demo/Makefile.am (helldl):  Automake 1.4 can't find the target
	if we use helldl$(EXEEXT), and Automake 1.5 barfs unless we do.
	Using both targets to the left of the colon seems to work though!

2001-09-03  Brad  <brad@comstyle.com>

	* ltdl.m4 [AC_LTDL_SYS_DLOPEN_DEPLIBS]: Teach ltdl about the
	behavior of OpenBSD's dlopen().

2001-09-03  Gary V. Vaughan  <gary@gnu.org>

	From Marius Vollmer <mvo@zagadka.ping.de>:
	* libltdl/ltdl.c (tryall_dlopen_module): Don't forget to propogate
	errors over recurse levels.

2001-09-03  Brad  <brad@comstyle.com>

	* libtool.m4 [openbsd*]: More improvements to the OpenBSD port.

2001-09-02  Gary V. Vaughan  <gary@gnu.org>

	From Albert Chin <china@thewrittenword.com>:
	* libtool.m4 (_LT_AC_LANG_C_CONFIG) [aix4*]: Be careful with
	shared namespaces for static and shared libs.
	(AC_LIBTOOL_DLOPEN_SELF): If all else fails, try dld_link from GNU
	DLD.

2001-09-02  Christopher Pfisterer <cp@chrisp.de>

	* libtool.m4, ltmain.in: Linker flag and version numbering fixes
	for darwin.

2001-09-02  Gary V. Vaughan  <gary@gnu.org>

	Based on a patch from Marius Vollmer <mvo@zagadka.ping.de>:
	* NEWS: updated.
	* ltdl.m4 (AC_LIB_LTDL): Check for unistd.h.
	* ltdl.c: Include unistd.h if it exists.
	(LTDL_SEARCHPATH_VAR): Macro to prevent hardcoding
	"LTDL_LIBRARY_PATH".
	(LTDL_ARCHIVE_EXT): Macro to prevent hardcoding ".la".
	(archive_ext): Have only one copy of ".la" in the readonly
	segment of the compiled library.
	(find_handle_callback): Don't bother trying to dlopen the file if
	it doesn't exist.
	(find_handle): Don't bother searching for files if no search_path
	was supplied.
	(file_not_found): A new function to determine whether the last
	error was due to a file not found condition.
	(try_dlopen): Renamed from lt_dlopen() and changed to have the
	same footprint as tryall_dlopen.  This involved a minor rewrite of
	much of the internals of this function.
	(lt_dlopen): A new function wrapped arounf try_dlopen().
	(lt_dlopenext): If a file already has a suitable extension, don't
	bother adding additional extensions and trying to open those.
	Tidy up the rest of the code to prevent continued searching with
	an eventual FILE_NOT_FOUND when a genuine failure earlier in the
	search process could be legitimately reported.

	* demo/Makefile.am (helldl$(EXEEXT)): Automake-1.5 made me change
	this from just `helldl'.

2001-07-31  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) Fixed a problem
	with export_symbols_cmds not being set for CXX tags, and
	not being properly set for any tag under AIX/Power.

2001-08-19  Ossama Othman  <ossama@uci.edu>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG): Corrected and improved
	  error message that is displayed when there was a problem
	  compiling the C++ test program.  It still mentioned the now
	  non-existent `ltcf-cxx.sh' file.

	* doc/libtool.texi (LTDL_SET_PRELOADED_SYMBOLS): Removed
	  parentheses at end of starting "defmac" line, as pointed out by
	  makeinfo.

2001-08-18  Brad  <brad@comstyle.com>

	* ltmain.in: Do not remove -lm from deplibs for OpenBSD.

2001-08-16  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (argz_create_sep): Don't forget to include the
	terminating '\0' when counting argz_len.
	(argz_create_sep): When canonicalizing argz, don't forget to copy
	the terminating '\0', incase canonicalization has shortened argz.
	(argz_stringify): Don't covert the final '\0' to a separator.

2001-08-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlhandle_next): Now we can loop through all
	loaded module handles as originally intended.

	* libltdl/ltdl.c (lt_dlseterror): Oops.  This never worked
	either, due to a pair of typos.  Now fixed.

	* libltdl/ltdl.c (N_ELEMENTS):  Deleted.  How come nobody noticed
	there was no way this could have ever worked?
	(lt_dlcaller_set_data): Now that valid caller_ids must be
	non-zero, allocate an addition entry in the caller_data vector and
	use a zero valued key as the end marker.
	(lt_dlcaller_get_data): Iterate up to the end marker in one pass.

2001-08-14  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlcaller_register): Caller ids are allocated
	starting from value `1', so that clients can use a value of zero
	to indicate that libltdl has not yet initialised.

	* ltmain.in (exec_cmd): Fix quoting in execute mode so that the
	double quotes added by libtool (to prevent lossage with embedded
	spaces in filenames etc.) are not interpreted as literals by the
	shell.

2001-08-13  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (find_file_callback): Fix a multiple free()
	bug.
	(tryall_dlopen_module): Remove some unused variables.

	* libltdl/ltdl.c (lt_dlinsertsearchdir): Calculate the address
	of the end of user_search_path correctly.

	* libltdl/ltdl.c (rpl_argz_stringify): New fallback implementation.
	* ltdl.m4 (AC_LTDL_FUNC_ARGZ):  Test for argz_stringify in libc.
	* libltdl/ltdl.c (lt_argz_insertinorder): Renamed from
	lt_argz_insert to make room for...
	(lt_argz_insert): Wraps argz_insert with libltdl error handling.
	(lt_dlpath_insertdir): Insert new path elements into an
	argzized path.
	(lt_dlinsertsearchdir): New function to insert new search
	directories anywhere into user_search_path using the above.
	(lt_dladdsearchdir): Rewritten to use lt_dlpath_insertdir.
	* libltdl/ltdl.h (lt_dlinsertsearchdir): Prototype for export.
	* doc/libtool.texi (Libltdl interface): Document it.
	* NEWS: Updated,

2001-08-07  Gary V. Vaughan  <gary@gnu.org>

	From Albert Chin <china@thewrittenword.com>:
	* ltmain.in [irix*]: $with_gcc is either "yes" or "" (empty string)
	with current autoconf, so we need to be robust to that when testing
	it,

2001-08-06  Gary V. Vaughan  <gary@gnu.org>

	From Brad <brad@comstyle.com>:
	* libtool.m4 (deplibs_check_method) [aix*]: Removed redundant setting
	of this variable.

2001-08-05  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (load_deplibs): Insert missing 1st argument to
	LT_EMALLOC.

2001-08-05  Tim Van Holder  <tim.van.holder@pandora.be>

	* ltdl.m4: Canonicalize descriptive text used with
	AC_DEFINE.

	* libtool.m4 (_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR): Remove.
	(_LT_AC_PROG_ECHO_BACKSLASH): Use $ac_path_separator
	instead of $PATH_SEPARATOR.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Ditto.
	(_LT_AC_TAGCONFIG): Ditto.
	(AC_ENABLE_SHARED): Ditto.
	(AC_ENABLE_STATIC): Ditto.
	(AC_ENABLE_FAST_INSTALL): Ditto.
	(AC_PATH_TOOL_PREFIX): Ditto.
	(AC_PATH_MAGIC): Ditto.
	(AC_PROG_LD): Ditto.
	(AC_PROG_NM): Ditto.
	* ltdl.m4 (AC_LTDL_SYSSEARCHPATH): Ditto.

2001-08-05  Gary V. Vaughan  <gary@gnu.org>

	From Brad <brad@comstyle.com>:
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [openbsd]:  OpenBSD
	can build modules without a `lib' prefix and version number.
	Move the deplibs check code from here...
	(AC_DEPLIBS_CHECK_METHOD): ...to here.

2001-08-05  Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>

	* libtool.m4 [osf3*, osf4*, osf5*]: Tru64 *can* build modules
	without a `lib' prefix to the module name.

2001-08-05  Gary V. Vuaghan  <gary@gnu.org>

	From Guido Draheim <Guido.Draheim@tek.com>:
	* ltmain.in: Display better and different error messages when
	library linkage fails in various ways.

2001-08-05  Albert Chin-A-Young <china@thewrittenword.com>

	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Add newline after
	terminating '}' grouping character. Change '[0-9][0-9]'
	to '0' as we've already matched it.

2001-08-05  Gary V. Vaughan  <gary@gnu.org>

	From Brad <brad@comstyle.com>:
	* libtool.m4 (archive_cmds) [darwin, newsos, sysv4]: Replace
	1.3 era $linkopts references with $linker_flags.

	* libltdl/ltdl.c:  Fixed several careless mistakes in the
	foreach_dirinpath support functions.
	(foreach_dirinpath): Walk path elements with the argz API.

2001-08-04  Gary V. Vaughan  <gary@gnu.org>

	From Sedi Master Albert Chin <china@thewrittenword.com>:
	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Replace the awk invocation
	with an equivalent bit of sed wizardry.

	From Edouard G. Parmelan <egp@free.fr>
	* libtool.m4 [darwin, openbsd]: Fix quoting problems with
	unquoted [] expressions.

2001-08-03  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap:  s/ltdldemo // -- This demo soesn't work properly,
	so I haven't committed it yet.

2001-08-01  Ossama Othman  <ossama@doc.ece.uci.edu>

	* libtool.m4 (AC_LIBTOOL_SETUP): Require Autoconf-2.50 via the
	AC_PREREQ autoconf macro since the new libtool macros utilize
	macros from that version of Autoconf.

2001-08-01  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4: Bump serial number.
	General reformat and tify up in line with Autoconf-2.50 support.
	(AC_LTDL_FUNC_ARGZ): Test for system implementations of a
	handful of argz API calls, the error_t type, and the argz.h
	header.
	* libltdl/configure.ac (AM_INIT_AUTOMAKE): Bump version number.
	* libltdl/ltdl.c (rpl_argz_append, rpl_argz_create_sep.
	rpl_argz_insert, rpl_rgz_next):  Fallback implementations of
	the similarly named functions for machines that don;t use glibc.
	(lt_dlrealloc):  New memory function pointer that can be set by
	the client.  Defaults to rpl_realloc, which in turn uses only
	lt_dlmalloc and lt_dlfree.
	(LT_EMALLOC, LT_EREALLOC): Set internal out-of-memory error
	inside the functions called by these new macros.  Simplified all
	callers by removing explicit client error reporting.
	(memmove):  Fallback implementation of overlap safe memory copy
	function.
	(tryall_dlopen):  Factorized common code into...
	(tryall_dlopen_module): ...this new helper function.
	(canonicalize_path):  Changed function signature to return success
	or failure.  Updated all callers.
	(foreachfile_callback):  Make use of argz API.
	(LT_DLSTRLEN): Moved from here...
	* libltdl/ltdl.h (LT_STRLEN): ...to here.  Updated all callers.
	(lt_dlrealloc):  Declare new memory management handle.

2001-07-31  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (mingw*) Revert the previous change as it was
	applied by mistake.

2001-07-31  Guido Draheim  <Guido.Draheim@tek.com>

	* libtool.m4 (mingw*) sys_lib_search_path_spec:
	Sets the proper path separator for cross-compiling.

2001-07-30  Steve Ellcey  <sje@cup.hp.com>

	* libtool.m4 (ia64-*-hpux*) Add support for ia64*-*-hpux* platform.

2001-07-30  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC) [aix*]: Fixed an
	incorrect resetting of lt_prog_compiler_static when using gcc
	under AIX Power.

2001-07-31  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Remove generated files (incase they are links) before
	rerunning the autotools to regenerate them.

2001-07-30  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SETUP): Use Autoconf-2.50 era
	quadrigraphs and AC_HELP_STRING to bring AC_ARG_WITH/ENABLE
	macros up to date.
	(_LT_AC_LOCK): Ditto.
	(_LT_AC_TAGCONFIG): Ditto.
	(AC_PROG_LD): Ditto.
	(AC_ENABLE_SHARED): Ditto.  And eliminate the last remaining
	changequote invocations.
	(AC_ENABLE_STATIC): Ditto.  And Ditto.
	(AC_ENABLE_FAST_INSTALL):  Ditto.  And Ditto.
	* ltdl.m4 (AC_LTDL_ENABLE_INSTALL): Use Autoconf-2.50 era
	quadrigraphs and AC_HELP_STRING to bring AC_ARG_ENABLE
	macro up to date.
	* NEWS: Updated.

	* libtool.m4 [UnixWare7, OpenUNIX8]: Initial support for
	UnixWare7 and OpenUNIX8.  Accept these identifiers from the
	latest config.guess/config.sub as pseudonyms for sysv5uw[78].
	* NEWS: Updated.
	Reported by Boyd Lynn Gerber <gerberb@zenez.com>

2001-07-29  Gary V. Vaughan  <gary@gnu.org>

	* tests/sh.test: Add a new test to enforce X as the fill
	character in `test "X...'.
	Beef up the `test' tests to also check `test -.' and `test ! -.'
	phrases for compliance.
	* ltmain.in: Fix quoting problems uncovered by the new tests.

2001-07-29  Andrew C. Feren  <aferen@CetaceanNetworks.com>

	* tests/sh.test:  New test to disallow `test $foo', where
	`test "$foo"' is much safer.
	* ltmain.in: Fix quoting problems uncovered by the new test.

2001-07-29  Steve Ellcey  <sje@cup.hp.com>

	* libtool.m4 (lt_cv_sys_global_symbol_to_cdecl):  Change it from
	"extern char" to "extern int" so that GCC 3.0 won't complain and
	refuse to compile programs containing "extern char main()".

2001-07-29  Gary V. Vaughan  <gary@gnu.org>

	From Guido Draheim <Guido.Draheim@tek.com>:
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [mingw]: Support
	cross compilation to mingw by allowing `:' or ';' as a path
	separator.
	* NEWS: Updated.

2001-07-27  NIIBE Yutaka  <gniibe@m17n.org>

	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all
	for sh*-*-linux* (SuperH) too.

2001-07-25  Ossama Othman  <ossama@debian.org>

	From Thomas Poindessous <poinde_t@epita.fr>
	* ltmain.in (pic_mode):  Added missing quotes around shell
	variable in "if test" conditional.

	From Peter Moulder <pmoulder@longford.csse.monash.edu.au>
	* ltmain.in (xform): Add support for pre-processed
	(e.g. `*.{i,ii}' sources).

2001-07-25  Gary V. Vaughan  <gary@gnu.org>

	From Steve Ellcey <sje@cup.hp.com>:
	* libltdl/ltdl.c (foreach_dirinpath): Free unassigned pointer
	fix for `canonical'.

2001-07-23  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_LD_SHLIBS)
	[aix4*, aix5*]: Fixed a mispelled binder option under AIX.
	The option to throw errors for unresolved external references is
	-bernotok, not -bnoerok.

2001-07-23  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (EXTRA_DIST): Don't forget to distribute
	ChangeLog.1.

	From Erik Lindahl <E.Lindahl@chem.rug.nl>
	* libtool.m4 (_LT_AC_SYS_LIBPATH_AIX): Used on aix to discover
	the compiler's default library search path so that the MPI
	compiler suite is not hosed by the previously hardcoded path.
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [aix4*, aix5*]: Use it.

2001-07-23  Andreas Schwab  <schwab@suse.de>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use pass_all for
	s390*-*-linux* and m68*-*-linux*.

2001-07-19  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix tag support
	problems with CXX variables being overwritten by the individual
	macros.
	(AC_LIBTOOL_PROG_CC_C_O): Ditto.
	(AC_LIBTOOL_PROG_COMPILER_PIC): Ditto.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Moved call to
	AC_LIBTOOL_SYS_HARD_LINK_LOCKS after the call to
	AC_LIBTOOL_PROG_CC_C_O as it depends on the result.
	(AC_LIBTOOL_LANG_GCJ_CONFIG): Ditto.
	(AC_LIBTOOL_LANG_C_CONFIG): Ditto.
	(AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH): Used the macro
	_LT_AC_TAGVAR to ensure the correct variable is being queried.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Changed the naming of shared
	objects under IRIX back to what it was in the MLB.

2001-07-23  Mark Kettenis  <kettenis@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN) [gnu*]: Remove spurious
	"break" and bogus comment
	(_LT_AC_LANG_CXX_CONFIG): Add support for the Hurd.
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): Add support for the Hurd.

2001-07-16  Robert Boehne  <rboehne@ricardo-us.com>, Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): add cases and comments for
	more platforms, including AIX, Digital/Tru64 UNIX and IRIX.

2001-07-16  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix ia64 AIX
	run-time-linking when not using gcc.
	(AC_LIBTOOL_LANG_CXX_CONFIG):  Ditto.
	Reported by Dan McNichol <mcnichol@austin.ibm.com>

2001-07-12  Gary V. Vaughan  <gary@gnu.org>

	From dda@sleepycat.com (Don Anderson):
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [qnx]: New
	supported architecture.
	(AC_DEPLIBS_CHECK_METHOD) [qnx]:  Ditto.
	* NEWS: Updated.

	From Stefan Ondrejicka <ondrej@idata.sk>:
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [cygwin*]: Make
	sure that /lib/w32api is searched for system libraries to
	match recent versions of cygwin.
	* NEWS: Updated.

2001-07-12  Dan McNichol  <mcnichol@austin.ibm.com>

	From albert chin <china@thewrittenword.com>
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix AIX
	run-time-linking when using gcc.
	(AC_LIBTOOL_LANG_CXX_CONFIG):  Ditto.

2001-07-11  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG) [hpux, linux, osf,
	solaris]: Doh!  the evalled variable shouldn't have been
	quoted.

	* libtool.m4 (_LT_AC_LANG_CXX_CONFIG) [hpux, linux, osf,
	solaris]: output_verbose_link_cmd have unquoted `*' in case
	statements for these architectures.  Be sure to quote them
	with a sed expression before passing to eval.
	Reported by Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>

2001-07-09  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha:  s/configure.in/configure.ac.
	* configure.ac: Bumped version to 1.4c.

	GNU libtool 1.4b was released.

	* configure.ac: Bumped version to 1.4b.
	* NEWS: updated.
	* config.guess, config.sub, texinfo.tex:  Synchronised from
	ftp.gnu.org.

2001-07-09  Robert Boehne  <rboehne@ricardo-us.com>

	From Michael Elizabeth Chastain <chastain@cygnus.com>:
	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN):  Set max_cmd_len
	to a maximum of 512Kb, as it seems some HPUX 11.0 systems
	have trouble with 1MB.

2001-07-09  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha:  Upgrade distribution instructions to include
	canonical location of texinfo.tex.

2001-07-09  Timothy Wall  <twall@oculustech.com>

	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Don't disable shlibs
	on AIX5/IA64 with GNU ld.  Keep gnu defaults if using gnu tools
	on AIX5/IA64.

2001-07-09  Robert Boehne  <rboehne@ricardo-us.com>

	* libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN):  Set max_cmd_len
	to -1 on hurd, it has no command line argument limits.
	* ltmain.in Handle max_cmd_len=-1 for systems that don't have
	command line argument limits.

2001-07-05  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LANG_C_CONFIG):  Revert to 1.3.x
	sematics, and always build static libs when the host machine
	cannot build shared libs.  Even if static libs were explicitly
	disabled.

2001-07-02  Gary V. Vaughan  <gary@gnu.org>

	Cleanup of libltdl:
	* ltdl.c (lt_dladderror): Don't use `index' as a variable name,
	since it is a function on BSD based boxes.
	(lt_dlseterror): Ditto.
	(lt_dlexit): Remove unused errormsg declaration.
	(foreach_dirinpath):  Make sure filename is initialised.
	(find_handle):  Return NULL for a failed search.
	(foreachfile_callback): Don't reuse data2 symbol from prototype
	in func declaration to prevent symbol shadowing.
	* ltdl.h (lt_dlmutex_seterror): Don't use `error' as a parameter
	name, since it is a function on glibc boxes.

	* libtoolize.in:  Display --version in the same format as
	autoconf and automake.
	* ltmain.in: Ditto.

2001-06-30  Gary V. Vaughan  <gary@gnu.org>

	Merge test improvements from multi-language-branch:
	* tests/defs: Find and set the value of CC probed by libtool.m4
	* tests/link-2.test: Use a .lo wrapper script, and the value of
	CC set by defs instead of hardcoding gcc.
	* tests/link.test: Use the value of CC set by defs instead of
	hardcoding gcc.
	* tests/quote.test: Ditto.
	* tests/suffix.test: Ditto.

	* libtool.m4 (AC_LIBTOOL_PROG_COMPILER_PIC) [aix*]: Always set
	lt_prog_compiler_wl to `-Wl'.
	Reported by Albert Chin-A-Young  <china@thewrittenword.com>

	* ltdl.m4 (AC_LTDL_DLLIB) [sco3.2*]: When searching for a dlopen
	implementation, and adding `-ldl' has failed, try linking a call
	to dlopen, #including dlfcn.h, and without -ldl.  On sco3.2 the
	header files redefines the interface symbols to point at the
	implementation symbols in libc.
	Reported by "Golubev I. N." <gin@mo.msk.ru>

2001-06-29  Tim Van Holder  <tim.van.holder@pandora.be>

	General cleanup of autoconf-2.50 upgrade:
	* configure.ac: Mark as needing autoconf-mode in
	emacs.  Pass arguments to AC_INIT.
	* cdemo/configure.ac: Ditto.
	* demo/configure.ac: Ditto.
	* depdemo/configure.ac: Ditto.
	* libltdl/configure.ac: Ditto.
	* mdemo/configure.ac: Ditto.
	* pdemo/configure.ac: Ditto.
	* tagdemo/configure.ac: Ditto.
	* ltdl.m4: Mark as needing autoconf-mode in
	emacs.
	* libtool.m4: Mark as needing autoconf-mode in
	emacs.  Don't add () to AS_MESSAGE_LOG_FD.
	* libltdl/configure.ac: Use config-h.in as
	template for config.h.
	* tagdemo/configure.ac: Drop the AC_DIAGNOSTIC. Move
	AC_LANG([C++]) after the OBJEXT/EXEEXT check.

2001-06-29  Gary V. Vaughan  <gary@gnu.org>

	From Tim Van Holder <tim.van.holder@pandora.be>
	* tests/suffix.test: Typo in 2nd for loop.

	From Tim Van Holder <tim.van.holder@pandora.be>
	* libltdl/Makefile.am (OBJECTS):  This was an implicit variable.
	instead state the list of object variables explicitly.

	From Bruno Haible <haible@ilog.fr>
	* libtool.m4:  undefine the m4 builtin `symbols', so that the
	string `symbols' can be used in the rest of the code without
	causing errors with autoconf-2.13.

	From "Golubev I. N." <gin@mo.msk.ru>
	* tests/Makefile.am (CPPLAGS): Typo. s/CPPLAGS/CPPFLAGS.

	* mdemo/Makefile,am (foo1_la_LIBADD): Add libsub.la, since foo1
	does use symbols from libsub.la -- only platforms that allow
	undefined symbols in libraries were able to cope with this
	previously.
	Reported by Robert Collins <robert.collins@itdomain.com.au>

	From "Golubev I. N." <gin@mo.msk.ru>
	* libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS) [sco3.2v5*]: Needs
	-wl,-Bexport to make self dlopen work.

2001-06-28  Gary V. Vaughan  <gary@gnu.org>

	From  Alexander Bluhm  <Alexander.Bluhm@WiredMinds.de>
	* libltdl/ltdl.c (lt_dlopen): Fix bad memory initialisation
	assumptions.

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE) [HPUX]: Define
	lt_cv_sys_global_symbol_to_c_name_address to be a sed expression
	for mangling the output of the symbol pipe into a brace delimited
	C declaration of symbol name and address.
	* ltmain.in: Use it to generate the fooS.c symbol name
	Reported by Albert Chin-A-Young  <china@thewrittenword.com>

2001-06-28  Tim Van Holder  <tim.van.holder@pandora.be>, Gary V. Vaughan  <gary@gnu.org>

	* bootstrap: Use cp instead of ln -s, for systems without
	symlinks.  Reorder the statements to avoid repetition outside
	the loop.

2001-06-28  Paolo Bonzini  <bonzini@gnu.org>, Gary V. Vaughan  <gary@gnu.org>

	Libtool now builds with the help of Autoconf-2.50!
	* configure.ac (AC_PREREQ):  Require Autoconf-2.50 or newer.
	(AC_PROG_CPP, AC_EXEEXT, AC_OBJEXT):  Removed.  Autoconf-2.50
	doesn't have the AC_REQUIRE bug that required these to be called
	explicitly from here.  Autoconf-2.50 uses this file instead of...
	* configure.in: ...this, which is now deleted.
	* cdemo/configure.ac, cdemo/configure.in: Ditto.
	* demo/configure.ac, demo/configure.in: Ditto.
	* depdemo/configure.ac, depdemo/configure.in: Ditto.
	* libltdl/configure.ac, libltdl/configure.in: Ditto.
	* mdemo/configure.ac, mdemo/configure.in: Ditto.
	* pdemo/configure.ac, pdemo/configure.in: Ditto.
	* tagdemo/configure.ac, tagdemo/configure.in: Ditto.
	* libltdl/acconfig.h:  Deleted.
	* Makefile.am (libtool): libtool now depends on configure.ac.
	* libtool.m4 (_LT_AC_LOCK):  Use 2.50's AC_LANG_PUSH/AC_LANG_POP
	instead of 2.13's AC_LANG_SAVE/AC_LANG_RESTORE.
	(AC_LIBTOOL_LANG_C_CONFIG): Ditto.
	(AC_LIBTOOL_LANG_CXX_CONFIG): Ditto.
	* libtoolize.in:  Use $configure_ac, instead of hardcoding
	configure.in.

2001-06-28  Tim Van Holder  <tim.van.holder@pandora.be>

	* pdemo/Makefile.am:  Use '=' instead of '+=' to shut up
	automake.

2001-06-27  Gary V. Vaughan  <gary@gnu.org>

	From brad@openbsd.org:
	* NEWS: Updated.
	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER) [openbsd]: Improved
	support for various openbsd platforms.
	(AC_LIBTOOL_PROG_LD_SHLIBS): Ditto.
	* ltmain.in: Ditto,

2001-06-26  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* libltdl/ltdl,c (LT_DLMUTEX_LOCK): Renamed from MUTEX_LOCK to
	avoid potential namespace clash.
	(LT_DLMUTEX_UNLOCK, LT_DLMUTEX_SETERROR, LT_DLMUTEX_GETERROR):
	Ditto.
	(lt_dlmutex_lock_func): Renamed from mutex_lock to avoid a
	namespace clash of NCR MP-RAS.
	(lt_dlmutex_unlock_func, lt_dlmutex_seterror_func,
	lt_dlmutex_geterror_func): Ditto.
	Reported by Edouard G. Parmelan <egp@free.fr>

	* libltdl/ltdl.c (LT_DLSTRLEN): Call strlen only if the argument
	is non-NULL and non-zero in length.  Changed all calls to strlen
	appropriately.

	* libltdl/ltdl.c: Prototype all static functions.

	* ltdl.m4: Bump serial number to 3.
	(AC_LIB_LTDL): Require AC_HEADER_DIRENT for ltdl.c.
	* libltdl/ltdl.h (lt_dlforeachfile): Prototype for new function.
	* libltdl/ltdl.c: Include an appropriate header for the
	opendir/dirent api.
	(foreach_dirinpath): Visit each file in a list of directories.
	(find_file_callback): Factor out the core of find_file() to make
	use of foreach_dirinpath().
	(find_file): Use it!
	(find_handle_callback, find_handle): Ditto.
	(lt_dlforeachfile):  New function to find files in a searchpath.,,
	(foreachfile_callback): ...using this callback.
	* doc/libtool.texi (Libltdl interface): Document new
	lt_dlforeachfile api call.

2001-06-25  Gary V. Vaughan  <gary@gnu.org>

	* THANKS:  Added Albert Chin-A-Young.

	* libtool.m4 (IFS): When IFS is changed to split a string for
	examination in a loop, restore it inside the loop as well as
	outside incase IFS is needed by commands in that loop.
	Reported by Pavel Roskin <proski@gnu.org>

2001-06-25  Albert Chin-A-Young  <china@thewrittenword.com>

	* libtool.m4: Prefer shl_load to dlopen on HP-UX because dlopen
	won't work properly without a patch.

2001-06-25  Daniel Harvey <daniel@amristar.com.au>

	* libtool.m4 (ltdll_cmds): [$]0 doesn't appear to translate through
	the script correctly, change to $''0

2001-06-25  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use pass_all for
	mips-*-linux* and mipsel-*-linux*.

2001-06-24  Andreas Schwab  <schwab@suse.de>

	* libtool.m4 (AC_LIBTOOL_SETUP): Remove failed try to
	transform linux to linux-gnu in $host.
	(AC_LIBTOOL_SYS_DYNAMIC_LINKER): Match $host_os against
	linux*, not linux-gnu*.
	(AC_DEPLIBS_CHECK_METHOD): Likewise.

2001-06-24  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR):  Set
	PATH_SEPARATOR appropriately if it is not set already,
	(_LT_AC_TAGCONFIG): Use it.
	(AC_ENABLE_SHARED): Ditto.
	(AC_ENABLE_STATIC): Ditto.
	(AC_ENABLE_FAST_INSTALL): Ditto.
	(AC_PATH_TOOL_PREFIX): Ditto.
	(AC_PATH_MAGIC): Ditto.
	(AC_PATH_PROG_NM): Ditto.

	From Tim Van Holder  <tim.van.holder@pandora.be>:
	* libtool.m4: Use the canonical absolute path test
	([\\/]* | ?:[\\/]) and $PATH_SEPARATOR wherever
	appropriate.
	(AC_LIBTOOL_PROG_CC_PIC): Properly recognize DJGPP as a
	platform that doesn't support shared libraries.
	(AC_LIBTOOL_SYS_MAX_CMD_LEN): Avoid this test on DJGPP; use a
	fixed value (12K) instead.
	(AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Don't forget $ac_exeext
	when testing for link success.

	* configure.in (AM_INIT_AUTOMAKE): Bumped version to 1.4a.

	Complete the new configure time tags creation facility based on
	the ltcf-*.sh and ltconfig.in files from multi-language-branch:
	* libtool.m4:  More refactoring and reformatting.
	(_LT_AC_LANG_GCJ_CONFIG): Merged ltcf-gcj.sh from
	multi-language-branch.
	(_LT_AC_LANG_CXX_CONFIG): Merged ltcf-cxx.sh from
	multi-language-branch.
	* configure.in (AC_PROG_CXX, LT_AC_PROG_GCJ): Compiler checks must
	be done before AC_PROG_LIBTOOL which appends tags based on their
	results.

2001-06-12  Robert Boehne  <rboehne@ricardo-us.com>

	* docs/libtool.texi: Updated the libltdl interface documentation
	to bring it up to date.

2001-06-06  Gary V. Vaughan  <gary@gnu.org>

	* demo/Makefile.am (objdir): Use `libtool --config' for
	extracting configuration values, since a given value may
	be present in each tag.
	(hc-libpath): Ditto.
	(hc-minusL): Ditto.
	* libtool.m4 (_LT_AC_TAGCONFIG): Add tagged configurations from
	the --with-tags option.
	(_LT_AC_LTCONFIG_HACK): Factored out into separate configuration
	macros -- The interdependencies and running order are still
	immutable, and need a lot of work to fix.
	(AC_LIBTOOL_CONFIG): Taken from the previous incarnation of
	_LT_AC_LTCONFIG_HACK -- this macro is used both to create the
	primary (C language) libtool configuration from
	_LT_AC_LTCONFIG_HACK and also to append tagged configurations from
	_LT_AC_TAGCONFIG.
	* NEWS:  Merged from multi-language-branch.

2001-06-06  Robert Boehne  <rboehne@ricardo-us.com>

	* bootstrap: Added tagdemo and pdemo tests from
	multi-language-branch.
	* configure.in: Added pdemo and tagdemo to CONF_SUBDIRS
	and merged references to CXX and GCJ from multi-language-branch.
	* pdemo: Added test directory from multi-language-branch.
	* tagdemo: Added test directory from multi-language-branch.
	* tests/Makefile.am: Merged additional tests from
	multi-language-branch.
	* tests/pdemo-*.test: ditto.
	* tests/tagdemo-*.test: ditto.

2001-05-30  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: Merged ltconfig.in from multi-language-branch.

2001-05-28  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4: Reformatting for consistency, and some refactoring
	in preparation for ltcf-*.sh merge.

2001-05-27  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Merged from multi-language-branch.
	* libtool.m4: Merged from multi-language-branch.
	* ChangeLog: Started afresh.  Old ChangeLog history moved to...
	* ChangeLog.1: ...here.

2000-06-04  Mark Mitchell  <mark@codesourcery.com>

	* ltcf-c.sh (archive_cmds, archive_expsym_cmds) [solaris,
	with_gcc]: Use `gcc -shared' to build a shared library.

2001-06-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* ltcf-c.sh (archive_cmd) [hpux, with_gcc]: Use gcc to link shared
	archives.

2001-05-28  Simon Patarin <simon.patarin@inria.fr>

	* ltcf-cxx.sh (osf3/osf4/osf5): Support creation of C++  shared
	libraries when using g++ with native linker.

2001-05-28  Albert Chin  <china@thewrittenword.com>

	* ltconfig.in (version_type, soname_spec) [aix4* | aix5*]: Use
	linux-style versioning, and remove trailing .o from soname_spec.

2001-05-22  Alexandre Oliva  <aoliva@redhat.com>

	* ltcf-cxx.sh (allow_undefined_flag, no_undefined_flag)
	[aix4*|aix5*]: Prepend blank.

2001-05-20  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Reverted to 1.4, to avoid confusion with MLB.
	Mainline is the release snapshot, except for the ChangeLog version
	number, until the multi-language branch is merged into it.

	* ltconfig.in: Fix sh.test regression introduced in previous patch.

	* ltconfig.in (lt_cv_sys_max_cmd_len): Improve test to work better
	in case of non-built-in echo.  Set bounds correctly.

	* ltcf-cxx.sh (allow_undefined_flag) [aix4* | aix5*]: Fix quote
	error.

	* ltmain.in (exec_cmd): New variable.  Don't exec programs within
	the big `case'; set the variable instead, and exec the cmd
	afterwards, so that the shell gets a chance to clean up here-doc
	files.
	* NEWS: Update.

2001-05-16  Alan Modra  <amodra@one.net.au>

	* libtool.m4 (lt_cv_deplibs_check_method): pass_all for hppa*-linux.

2001-05-03  Andreas Jaeger  <aj@suse.de>, Andreas Schwab  <schwab@suse.de>

	* ltmain.in (relink_command): Arrange for wrapper script to save
	output to a variable and display it only if relinking fails.

2001-04-25  Gary V. Vaughan  <gary@gnu.org>

	* configure.in: bumped version to 1.4a.

	GNU libtool 1.4 was released.

	* configure.in: Bumped version to 1.4.
	* config.sub, config.guess:  Synchronised from ftp.gnu.org.
	* NEWS: updated.

2001-04-24  Peter Eisentraut  <peter_e@gmx.net>

	* libtool.m4: Support $host_os as /sysv5uw7*/ from newer
	config.guess in addition to older /unixware*/.  Use compiler
	driver, not linker, for linking shared libraries.

2001-04-24  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4, ltmain.in, libltdl/configure.in,
	tests/quote.test:  Remove stale references to ltconfig.

	* ltdl.m4 (AC_C_INLINE): No longer required.
	* libltdl/ltdl.c (strdup, strcmp, strchr, strrchr, memcpy, trim,
	free_vars):  Revoke inline keyword from declarations.  `static
	inline' is not very portable, and in addition Unixware 7.1.1's
	compiler says you can't access static variables from inline
	functions.
	Reported by Peter Eisentraut  <peter_e@gmx.net>

2001-04-24 Albert Chin-A-Young <china@thewrittenword.com>

	* libtool.m4: Handle case where /bin/nm -p outputs multiple
	symbol types (like under HP-UX 11.00).

2001-04-24  Thomas Tanner  <tanner@ffii.org>

	* TODO: describe problems with libltdl
	* ltmain.in (ILD): tidy up, add comments, remove dead code,
	  merge duplicate code
	* ltmain.in (ILD): don't touch newdependency_libs after scan or
	  dlopen pass
	* ltmain.in (ILD): don't dlpreopen dependency_libs of a dlopened
	  module (remove absolutely wrong quick hack)
	* ltmain.in (ILD): remove wrong comments about duplicate removal
	* ltmain.in (ILD): build a static-only module if it has
	  static libraries in its dependencies (so that libltdl can
	  safely load dependency_libs)
	* ltmain.in (argument parsing): prefix comparsions of -l args with X,
	  replace -lc with `-framework System' _after_ the ILD passes
	* ltmain.in (argument parsing): support dl[pre]open
	  for both .o and .lo files
	* ltmain.in (deplibs_check): use portable test syntax
	* ltmain.in (help): document -prefer-[non-]pic flags
	* ltmain.in: improve readablity by adding some comments,
	  rename uninst_* to notinst_* (more adequate name)

2001-04-24  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS:  More updates from subscribers to
	libtool@gnu.org.

	From Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>
	* tests/Makefile.am (TESTS_ENVIRONMENT): Make sure the *.test
	scripts get the same make that was used in the top level
	directory.

2001-04-23  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS:  Updated with more platforms successfully
	tested by members of libtool@gnu.org.

2001-04-23  Peter Eisentraut  <peter_e@gmx.net>

	* doc/PLATFORMS:  With this patch, freebsd4.3 passes the test
	suite.
	* libltdl/ltdl.c (lt_dlexit): Quit loop if only resident modules
	are left.

2001-04-23  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS:  With this patch, my Solaris boxes now pass the
	test suite,  Yay!
	From Albert Chin-A-Young <china@thewrittenword.com>
	* ltmain.in:  `test -L' is not portable, and infact breaks uninstall
	mode on Solaris.  Fallback to `test -h' and finally `test -f',
	but be careful not to let the failure status cause libtool to
	stop.

	From Simon Spero <ses@ibiblio.org>
	* ltdl.m4 (AC_LTDL_DLSYM_USCORE):  Add $LIBADD_DL while
	checking for dlsym _.

	From Simon Spero <ses@ibiblio.org>
	* libtool.m4 (lt_cv_deplibs_check_method) [darwin]: Set it!

	* TODO: Make a note to undo this later.
	From Christoph Pfisterer <cp@chrisp.de>
	* libtool.m4: Use $() execution substitution quotation to work
	around zsh builtin echo \ escape removal.

2001-04-22  Peter Eisentraut  <peter_e@gmx.net>

	* bootstrap: Allow overriding the location aclocal, automake,
	autoconf, autoheader from the environment.

	* demo/Makefile.am: Automake 1.4e does not allow `+=' assignments
	if the variable was not set with `=' earlier.  `+=' was not useful
	here anyway.

2001-04-22  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4 (AC_CHECK_HEADERS): UW7 has sys/dl.h, so we must
	check for that here.
	* libltdl/ltdl.c (HAVE_SYS_DL_H):  Include it if necessary for
	the dlopen loader.
	Reported by Matthew Schalit <mschalit@pacbell.net>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD):  Use pass_all for
	various releases of UnixWare and OpenServer that support it.
	Reported by Matthew Schalit <mschalit@pacbell.net>

	* doc/PLATFORMS:  Updated with various platforms successfully
	tested by members of libtool@gnu.org.

2001-04-21  Gary V. Vaughan  <gary@gnu.org>

	* TODO:  propose pkg-config merge.

2001-04-21  Nick Hudson  <skrll@netbsd.org>

	* ltmain.in: Correct an error in yesterday's patch.

2001-04-20  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4: Improve NetBSD support.
	* ltmain.in: ditto.

2001-04-19  Dan McNichol <mcnichol@austin.ibm.com>

	* libtool.m4: Build standard shared libraries on AIX POWER
	more like AIX does, with a shared object archived into lib<xxx>.a.
	On AIX -bexpall flag does strange things... Don't use it.
	Fix quotes around -berok flag.  Add support for AIX 5.
	Add support for run time linking on AIX POWER. (should work
	on AIX 4.2 and up).  Turn this feature on by adding -brtl flag
	to LD_FLAGS.  Add support for AIX on IA64. Note: AIX on IA64
	uses a SYSV type linker.  Add a comment telling what to do if the
	TOC starts getting too large on AIX.
	* NEWS: mention aix5 support.

2001-04-18  Alexandre Oliva  <aoliva@redhat.com>

	* TODO: Add -L- flag.

2001-04-11  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (no_undefined_flag) [Solaris ld]: Change to -zdefs.

2001-04-11  Ossama Othman  <ossama@uci.edu>

	* AUTHORS: Added myself to the list of maintainers.

2001-04-08  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (hardcode_libdir_flag_spec, osf4/osf5): Use ${wl}
	to pass -rpath when compiling with gcc.
	Reported by Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>

	* libltdl/ltdl.c (sys_shl_open): Cache a handle for the `self'
	module, since HPUX adds module symbols into the `self' pool if
	it is opened later.  Return the cached pointer if the caller
	subsequently tries to open `self'.
	(sys_shl_sym): Diagnose NULL modules.

	From Peter Eisentraut  <peter_e@gmx.net>
	* ltmain.in (clean,uninstall): test -e is not portable.  Well,
	neither is -L, but I'm hoping that redirecting error messages
	to /dev/null and relying on non-zero exit status will work okay
	on the few hosts that don't support -L.

2001-04-08  Nick Hudson  <skrll@netbsd.org>

	* ltmain.in: Improve check for valid -version-info parameter.

2001-04-08  Gary V. Vaughan  <gary@gnu.org>

	From Nick Hudson  <skrll@netbsd.org>
	* doc/Makefile.am (libtool_TEXINFOS): Add fdl.texi so that it
	is included in the distribution.

2001-04-07  Peter Eisentraut  <peter_e@gmx.net>

	* ltmain.in (clean,uninstall): Do not error if the file doesn't
	exist and 'rm -f' was used.  Exit with status 1 on error.

2001-04-06  Nick Hudson  <skrll@netbsd.org>

	* ltmain.in: Implement a new deplibs_check_method called
	match_pattern that does pattern matching on filenames...
	* libtool.m4: ...use it with NetBSD

2001-04-05  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Multiple dependencies): A note about the
	problems I've reintroduced by reverting the my patch of 2001-03-31.

	From Edward Lee <tailbert@yahoo.com>
	* libtool.m4: Typos.

	* tests/Makefile.am (TESTS): Delete references to depdemo-dups.test.
	* tests/depdemo-dups.test:  Removed, as part of the patch
	reversion below.
	* ltmain.in: Revert my change from 2001-03-31.  Although it
	was technically correct, it opens a whole can of worms we don't
	want to deal with right now.

	From Ahmed Masud <masud@googgun.com>
	* libltdl/ltdl.c (sys_shl_open):  Return a NULL module handle
	for self opening.
	(sys_shl_close):  Be careful not to close a NULL module handle.
	(sys_shl_sym):  Allow shl_findsym() to open NULL modules, but
	discard the modified module address it returns.

	* libltdl/ltdl.c (lt_dlopen):  When reading the .la file,
	reallocate the line buffer size if the line overflows the
	original buffer.
	Reported by Nick Hudson <skrll@netbsd.org>

	* NEWS (1.3d) Removed bogus ltconfig reference.

2001-04-03  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (_LT_AC_LTCONFIG_HACK):  Remove the spurious
	`dnl' from the help text of --with-pic.
	Reported by stefan <stefan@lkcc.org>

2001-04-02  Gary V. Vaughan  <gary@gnu.org>

	* configure.in: bumped version to 1.3e.

	GNU libtool 1.3d was released.

	* NEWS: inserted todays date.

2001-04-01  Christoph Pfisterer  <cp@chrisp.de>

	* libtool.m4: Fixed support for Darwin and Rhapsody. Now correctly
	hardcodes the library path and adds versioning. Other small
	fixes.
	* ltmain.in: Fixed special cases for libc and libm on Rhapsody and
	Darwin. One of them was misplaced. Added version_type case for
	Rhapsody and Darwin, named "darwin".

2001-03-31  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Remove the code for stripping duplicate deplibs
	from libtool link lines -- duplicates are somtimes necessary
	to satisfy inter-library dependencies, and never cause link to
	fail even if they are spurious.
	* tests/depdemo-dups.test: New file.  Make sure this bug doesn't
	creep back in again!
	* tests/Makefile.am (TESTS): Use the new test above.

2001-03-29  Edward M. Lee  <tailbert@yahoo.com>

	* libtoolize.in: Check configure.ac and prefer configure.ac to
	configure.in.

	* libtoolize.in: change recommendation from AM_PROG_LIBTOOL to
	AC_PROG_LIBTOOL.

	* libtool.m4: Generate dll/import libraries for cygwin according
	to the following: libFOO.a (static lib), libFOO.dll.a (import
	lib), cygFOO-version.dll (dll).  Update postinstall_cmds and
	postuninstall_cmds to reflect this.
	* ltmain.in: Generate installed .la files with dlnames set to
	../bin/cygFOO-version.dll for normal dlls. dlls for modules
	remain with the .la file.

	* libltdl/ltdl.c:  Use windows paths while calling LoadLibrary.

2001-03-16  Albert Chin  <china@thewrittenword.com>

	* libtool.m4 (save_CPPFLAGS): Fix typo.

2001-03-13  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (lt_cv_compiler_c_o): Cache it.
	(lt_cv_compiler_o_lo): Likewise.

2001-03-09  Peter Eisentraut  <peter_e@gmx.net>

	* ltmain.in (clean): Automatically remove $objdir (usually '.libs').

2001-03-08  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (library_names_spec): Undo latin-1 spaces I pasted
	in yesterday by mistake.

2001-03-07  Gary V. Vaughan  <gary@gnu.org>

	From Tor Lillqvist <tml@iki.fi>
	* libtool.m4 (export_symbols): On Windows, if the export_symbols
	file (which has been passed to libtool with the -export-symbols
	command line switch) already is a .def file, use it as is.

	* libtool.m4 (library_names_spec): Using m4 quotes correctly this
	time around!

	From Tor Lillqvist <tml@iki.fi>
	* libtool.m4 (library_names_spec): Use an appropriate filename
	prefix for dlls -- lib for mingw; cyg for cygwin; pw for pw32.

2001-03-06  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (can_build_shared) [AIX 4.[01], GCC]: GCC up to
	2.96 can't build shared libraries reliably.  Disable them.

	* ltmain.in: When dropping dependencies of a -no-undefined
	library, give up on building a shared library.

2001-03-05  Akim Demaille  <akim@epita.fr>

	* ltmain.sh: Don't quote the argument of case/esac and
	assignments.
	* libtool.m4: Likewise.

2001-03-03  Markus F.X.J. Oberhumer <markus@oberhumer.com>,
	    Alexandre Oliva <oliva@lsd.ic.unicamp.br>

	* libtool.m4: Added explicit return type to all C functions.

2001-02-22  Gary Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* doc/libtool.texi (Thread Safety in libltdl): New node describing
	the  application the new MT API.
	* libltdl/ltdl.h: Prototypes.
	* libltdl/ltdl.c: Use these functions throughout the rest of
	the file to provide thread locking.
	(lt_dlmutex_register): New function to set callbacks for
	multi-threaded calls into libltdl.
	(lt_dl_mutex_lock): Type of a locking callback function.
	(lt_dl_mutex_lock): Type of an unlocking callback function.
	(lt_dl_mutex_seterror): Type of a callback function to save the
	last libltdl error message in thread local storage.
	(lt_dl_mutex_geterror): Type of a callback function to retrieve
	the last saved error message from thread local storage.

2001-02-20  Gary Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlcaller_register): dont set an unsigned
	type to a negative number.
	Reported by Guenter Millahn <Guenter.Millahn@Informatik.TU-Cottbus.DE>

2001-02-05  Gary V. Vaughan  <gary@gnu.org>

	From Nick Hudson <skrll@netbsd.org>
	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): netbsd* is able to
	automatically load module deplibs without assistance from
	libltdl.

2001-02-02  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (load_deplibs): Make sure the depcount is reset,
	even when deplibs are not used because of the patch below.

	* ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): If we know that the host
	architecture automatically loads deplibs, then...
	* libltdl/ltdl.c (load_deplibs): ...don't manually load each one.

2001-01-31  Gary V. Vaughan  <gary@gnu.org>

	* TODO:  Updated.

	* libltdl/ltdl.c (load_deplibs): If loading a deplib fails,
	don't sweat -- it may be a lib that is already statically linked
	into the loading application.

	* libltdl/ltdl.c: Clean up the shadowing of the global handles
	variable.
	(LT_DLRESIDENT_FLAGS): Add extra parens to satisfy -Wall.
	(load_deplibs):  Cast isspace() argument to an int to satisfy
	-Wall.

2001-01-30  Robert Boehne  <rboehne@ricardo-us.com>

	* AUTHORS: added myself to the list of maintainers.

2001-01-28  Alexandre Oliva  <aoliva@redhat.com>

	* libltdl/Makefile.am (CLEANFILES): Clean conditionally-built
	libraries.

2001-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 (ld_shlibs) [aix4*]: Disable on unknown CPU types.

2001-01-07  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* doc/libtool.texi (User defined module data): Updated.
	* libltdl/ltdl.c (lt_dlhandle_next): New function.
	* libltdl/ltdl.h (lt_dlhandle_next): Prototypes.

2001-01-05  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* doc/libtool.texi (User defined module data):  Document it all.
	* ltdl.m4:  Check for memcpy, or else bcopy.
	* ltdl.c (lt_caller_data): New type.
	(lt_dl_handle_struct): Add an lt_caller_data field.
	(lt_dlcaller_register, lt_dlcaller_set_data,
	lt_dlcaller_get_data): New functions.
	(rpl_memcpy): A minimal fallback implementation.
	(rpl_realloc): A realloc implemented with lt_dlmalloc and
	lt_dlfree.
	(LT_DLMALLOC, LT_DLFREE, LT_DLREALLOC, LT_DLMEM_REASSIGN):
	New memory handling convenience macros.  Use them
	appropriately throughout the rest of this file.
	* ltdl.h (lt_dlcaller_register, lt_dlcaller_set_data,
	lt_dlcaller_get_data): Prototyped.

2001-01-04  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h:  formatting change.

2000-12-23  Gary V. Vaughan  <gary@gnu.org>

	From vvv@vsu.ru:
	* doc/fdl.texi (GNU Free Documentation License): contained @bye
	command which prevented part of document to be generated (indices,
	etc).
	* doc/libtool.texi (Dlpreopening): the @deftypevar did not contain
	a space after a type.

2000-12-22  Akim Demaille  <akim@epita.fr>

	* libtool.m4: s/[ \t]*$//

2000-12-22  Aneesh Kumar K.V  <kvaneesh@hotmail.com>

	* libtool.m4 (OSF/1):  Revert my patch of 2000-12-16.

2000-12-20  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlexit): Was checking for residency of the
	wrong module.
	Reported by Robert Boehne  <rboehne@ricardo-us.com>

	* ltmain.in (dlprefiles): Now that `2000-12-15 Utz-Uwe Haus' patch
	below can detect preopened library deplibs correctly in libltdl,
	we need to ensure that libtool library deplibs are also preloaded
	into the binary for that phase to work.

2000-12-16  Aneesh Kumar K.V  <kvaneesh@hotmail.com>

	* libtool.m4 (OSF/1): Change the way to pass linker flags through
	compiler on a Tru64 machine.

2000-12-16  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (sys_lib_search_path_spec): Use test instead of
	`['.
	(archive_cmds): And another one.

	* libtool.m4 (darwin*): Fixed a pair of stupid typos I made in the
	last patch.

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD):  moved rogue settings from
	sequent, ncr and newos6 back into here from other macros.

2000-12-16   Wilfredo Sanchez  <wsanchez@apple.com>

	* libtool.m4: (dyld/darwin*) Much improved port.
	* ltmain.in: (dyld/darwin*) Much improved port.

2000-12-16  Sascha Schumann <sascha@schumann.cx>

	* libtool.m4: Accept darwin as an alias for rhapsody.
	* ltmain.in: ditto.

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD): Use the HPUX 10.20
	methods to check for library dependencies on HPUX 11.

2000-12-16  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4 (netbsd*, deplibs_check_method): Enable ILD support
	for NetBSD a.out.

2000-12-15  Akim Demaille  <akim@epita.fr>

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Rename
	`ac_cv_sys_global_symbol_pipe' as `lt_cv_sys_global_symbol_pipe'.
	Similarly with `lt_cv_global_symbol_to_cdecl
	(_LT_AC_LTCONFIG_HACK): Similarly with `ac_cv_prog_cc_pic',
	`ac_cv_prog_cc_shlib', `ac_cv_prog_cc_wl', `ac_cv_prog_cc_static',
	`ac_cv_prog_cc_no_builtin', `ac_cv_prog_cc_can_build_shared',
	`ac_cv_prog_cc_static_works', `ac_cv_archive_cmds_need_lc'.
	(AC_PATH_TOOL_PREFIX): Similarly with `ac_cv_path_MAGIC_CMD'
	(AC_PROG_LD) <ac_cv_path_LD>: Likewise.
	(AC_PROG_LD_GNU) <ac_cv_prog_gnu_ld>: Likewise.
	(AC_PROG_NM) <ac_cv_path_NM>: Likewise.

2000-12-15  Utz-Uwe Haus  <haus@mail.math.uni-magdeburg.de>

	* libltdl/ltdl.c (lt_dlopen): Changed "dl_dependency_libs" keyword
	to "dependency_libs".

2000-12-14  Tod Milam  <tmilam@traclabs.com>

	* libltdl/ltdl.c (lt_dlexit): Reset the loaders value to zero when
	the last module has been unloaded.

2000-12-14  Michael Schmitz  <mschmitz@iname.com>

	* libtool.m4: Port to *-sni-sysv4 (Reliant Unix)
	* README: added Reliant Unix to hte list of supported platforms
	* doc/PLATFORMS: added note on tests on Reliant Unix

2000-12-14  Masahiro Nobori  <nobori@ss.titech.ac.jp>

	* README:  Updated.
	* NEWS: Updated.
	* libtool.m4:  New port to NEWS-OS Release 6.

2000-12-14  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4 (hardcode_libdir_flag_spec):  Remove linker
	specification for netbsd.

2000-12-14  Akim Demaille  <akim@epita.fr>

	* libtool.m4:  Don't depend on Autoconf internals:
	s/ac_cv_prog_gcc/GCC/.

2000-12-14  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): Don't empty
	out ac_cv_global_symbol_to_cdecl inside the loop, incase we
	need to go around again and try with underscore prefix.
	(_LT_AC_TRY_DLOPEN_SELF): On some hosts (cygwin for instance)
	self dlclosing unloads the main program and causes a SIGSEGV.  So
	don't do it for now.

2000-12-05  Gary V. Vaughan  <gary@gnu.org>

	Oh My! Cygwin support has bitrotted while I was looking the other
	way.  This should fix it some:
	* libtool.m4 (extract_expsyms_cmds): There is a quoting problem
	with autoconf-2.13 that prevents [$]0 from expanding.  Use shell
	quotes instead to delay eval of $0.
	(impgen.c) The '# ' sequence stripped by sed works again.

2000-12-01  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (Libltdl interface):  Add documentation.
	* libltdl/ltdl.h (lt_dlmakeresident, lt_dlisresident):  Add
	prototypes.
	(LT_DLERROR_CLOSE_RESIDENT_MODULE): New error status.
	* libltdl/ltdl.c (lt_dlmakeresident, lt_dlisresident):  Allow
	making and testing of resident module status, which prevents a
	module from being lt_dlclosed.
	(lt_dlopen):  If lt_dlopen()ing self, make the module resident.
	(lt_dlclose):  Return an error if the module is resident.

	* libtool.m4 (_LT_AC_LTCONFIG_HACK): Move the tests for dlopen
	from here...
	(AC_LIBTOOL_DLOPEN_SELF): ...to here.
	(_LT_AC_CHECK_DLFCN):  Factor out repeated code for dlfcn.h
	(_LT_AC_TRY_DLOPEN_SELF): Factor out repeated code for
	checking dlopen status.
	* ltdl.m4 (AC_LIB_LTDL):  Use _LT_AC_CHECK_DLFCN.
	dlopen compile time checking.  Use _LT_AC_CHECK_DLFCN.
	(AC_LTDL_DLSYM_USCORE):  Use _LT_AC_TRY_DLOPEN_SELF.

2000-11-29  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (lt_dlhandle): Rename the wrapped structure
	to prevent nameclash when used from C++.
	* libltdl/ltdl.c: Fixed all references.

2000-11-25  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dlopen):  Change the default search order
	for modules.  If the named module has no directory component,
	always start the search with the user_search_path directories,
	and then fall back on the current directory only if that fails.

2000-11-20  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/Makefile.am (libltdl_la_LDFLAGS): increment the version
	number to reflect the breakage of binary compatibility.
	* doc/libtool.texi (Libltdl interface):  Document
	LT_NON_POSIX_NAMESPACE.
	* libltdl/ltdl.h (LT_POSIX_NAMESPACE):  Deleted.  The default is
	now to use this namespace, so the cpp macro is no longer
	necessary.

2000-11-20  Morten Eriksen  <mortene@sim.no>

	* ltdl.m4 (AC_LIB_LTDL, AC_LTDL_SYMBOL_USCORE): Break a circular
	dependency between AC_LTDL_SYMBOL_USCORE and AC_LTDL_DLSYM_USCORE.

2000-11-20  Paul Berrevoets  <paul@swi.com>

	* ltmain.in: Some versions of expr respond with "0" if a
	regexp fails to match.

2000-11-19  Paul Berrevoets  <paul@swi.com>

	* libtool.m4 (_LT_AC_LTCONFIG_HACK): Quote the $ in $#, $2 and
	$3 in variable 'archive_expsym_cmds' for cygwin.

2000-11-19  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.c: Relegate non-POSIX-compliant symbols (e.g. those
	ending in ``_t'') to deprecated #define compatibility macros.
	Also ease up on the namespace pollution, so that only ``lt_''
	and ``LT_'' prefixes are taken from the global namespace.
	* ltdl.h: ditto.

2000-11-17  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.c: Reformatted.
	* ltdl.h: ditto.

2000-11-11  Gary V. Vaughan  <gary@gnu.org>

	* ltdl.m4 (AC_LTDL_SYMBOL_USCORE): Use $ac_ext for conftest
	sourcefile.
	* libtool.m4: Use $ac_ext and $ac_objext respectively for conftest
	sources and objects.
	Reported by Carlo Wood <carlo@alinoe.com>

	* doc/fdl.texi: New file.  The license for distributing the
	libtool manual.
	* doc/libtool.texi: Reference the new license.

2000-10-31  Morten Eriksen  <mortene@sim.no>

	* libtool.m4 (_LT_AC_LTCONFIG_HACK): Quote argument to avoid
	error output from cygpath when $srcdir is empty.

2000-10-31  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap:  rm Makefiles to prevent infinite loop during
	configure when libtool.m4 is newer than Makefile.

2000-10-31  Akim Demaille  <akim@epita.fr>

	* libtool.m4: Adjust the copyright notice.
	Quote all the macro names when defined.
	Some minor formatting changes.
	(AM_PROG_LIBTOOL, AM_ENABLE_SHARED, AM_ENABLE_STATIC)
	(AM_DISABLE_SHARED, AM_DISABLE_STATIC, AM_PROG_LD, AM_PROG_NM):
	Don't use indir when useless.  Don't add trailing `dnl' either.

2000-10-30  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi:  Corrected another attack of CRLF line
	endings.

2000-10-30  Ossama Othman  <ossama@debian.org>

	* libtool.m4 (archive_expsym_cmds): Fix typo where line was broken
	in the middle of an expression.

2000-10-30  Aneesh Kumar K.V <kvaneesh@hotmail.com>

	* libtool.m4 (archive_expsym_cmds):  Support for -export-symbol
	option on Tru64.
	(hardcode_libdir_flag_spec): Fixed cxx throwing error while using
	libtool.  Done by passing -rpath directlty to the compiler.

2000-10-27  Robert Boehne  <rboehne@ricardo-us.com>

	* docs/libtool.texi: Added pointers to documentation
	of Hewlett-Packard, Compaq Tru64 and IBM AIX systems.

2000-10-02  Gary V. Vaughan  <gary@gnu.org>

	From Bruce Korb <bkorb@cruzio.com>
	* ltmain.in (execute_dlfiles): Reduce obfuscation.

2000-09-30  Alexandre Oliva  <aoliva@redhat.com>

	* libtool.m4 [netbsd*] (deplibs_check_method, file_magic_cmd,
	file_magic_test_file): Removed inappropriate duplicate
	definitions; these variables are set in AC_DEPLIBS_CHECK_METHOD.

	* libtool.m4 (lt_cv_file_magic_cmd): Don't use '${MAGIC_CMD}' or
	'${OBJDUMP}'; Solaris' /bin/sh loses with `}' in cache files.
	(ac_cv_path_MAGIC_CMD): Renamed to lt_cv_path_MAGIC_CMD.

2000-09-28  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (MAGIC_CMD): Don't use MAGIC, since BSD versions of
	the file command use this environment variable to hold the
	location of the magic database.
	Reported by Marc Espie <Marc.Espie@liafa.jussieu.fr>

2000-09-19  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS: Updated.
	* demo/configure.in:  Revert to the `libtool --features' test.
	* Makefile.am (libtool):  This needs to rerun configure now that
	libtool is generated entirely by AC_PROG_LIBTOOL again.
	(ltconfig): Removed.
	(ltmain.sh):  Is now regenerated when ltmain.in changes.
	* libtool.m4 (_LT_AC_LTCONFIG_HACK): Now does all of the work for
	generating libtool immediately in configure.in, rather than
	deferring part of the creation until config.status runs.

2000-09-17  Gary V. Vaughan  <gary@gnu.org>

	* bootstrap:  Backed out yesterdays patch which is no longer
	necessary.
	* Makefile.am (libtool): Reworked rule for regeneration of libtool,
	now that it is built entirely withing config.status.
	(libtoolize): Tidied for orthogonality with the other generation
	rules.
	(ltconfig):  This is now generated by AC_PROG_LIBTOOL, called from
	make by running config.status --recheck.
	(ltmain.sh): Moved primary generation of this file into here...
	* configure.in (AC_OUTPUT): ...instead of here.
	* libtool.m4 (AC_OUTPUT_COMMANDS):  Write the config to ltconfig
	where it can be reused, rather than directly to libtool.
	* demo/configure.in:  libtool is no longer present immediately
	after AC_LIBTOOL_M4 has completed, so the tests now grep through
	ltconfig instead -- which *will* be present.

2000-09-16  Gary V. Vaughan  <gary@gnu.org>

	* TODO: Removed the item describing the change below, and added a
	similar item to remind us to change the ltdl.m4 macros again when
	_LT_AC_LTCONFIG_HACK is divided into proper macros.
	* ltdl.m4 (AC_LTDL_SNARF_CONFIG):  Removed.  No longet required
	now that ltconfig has migrated to libtool.m4.
	(AC_LTDL_SHLIBEXT): Require _LT_AC_LTCONFIG_HACK.
	(AC_LTDL_SHLIBPATH): ditto.
	(AC_LTDL_SYSSEARCHPATH): ditto.

	* ltdl.m4 (AC_LTDL_DLPREOPEN): Require the libtool.m4 symbol_pipe
	macro.
	(AC_LTDL_SYMBOL_USCORE): ditto.
	(AC_LTDL_GLOBAL_SYMBOL_PIPE): Removed, since it is a duplicate
	of...
	* libtool.m4 (AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE): ...this new
	macro, extracted from _LT_AC_LTCONFIG_HACK.

	* ltdl.m4 (changequote): An audit of changequote and m4
	quote usage -- all changequotes have been removed, and some
	latent unquoted `[' and `]' bugs have been fixed.

	* configure.in (AC_OUTPUT): ltmain.sh must be generated in the
	source tree since this is where it would be found in a freshly
	unrolled tarball.

	* configure.in: Replace `dnl' comments with `#' comments for
	more conformity with cvs autoconf.
	Removed emacs hack-local-variables, since there is now a
	proper Autoconf major mode.
	Removed a couple of changequote()s.

	* bootstrap (ltconfig): When bootstrapping libtool with a
	stock automake (i.e. without the README patch applied),
	references to ltconfig are manually removed from the generated
	Makefile.in files.

2000-09-15  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi: Removes references to ltconfig, and a small
	amount of tidying up to compensate.

2000-09-15  Nick Hudson  <skrll@netbsd.org>

	* libtool.m4 (netbsd): Improved support.

2000-09-15  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (version_type): Use "-iface" as the windows
	versioning scheme, where iface is the number of the oldest
	interface supported.

2000-09-14  Gary V. Vaughan  <gary@gnu.org>

	From Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
	* libtool.m4 (pw32): Initial support for pw32, assuming that
	libtool's behaviour in this environment is identical to under
	cygwin.
	* ltmain.in (pw32): ditto.
	* NEWS: Updated.

	* libtool.m4 (changequote): An audit of changequote and m4
	quote usage -- all changequotes (except a few with non-nesting
	square brackets) have been removed.

	* Makefile.am (EXTRA_DIST):  The bootstrap script should be
	distributed with libtool.

2000-09-13  Gary V. Vaughan  <gary@gnu.org>

	libtool.m4 (_LT_AC_LTCONFIG_HACK): Oh man!  Third time lucky.
	I just discovered that '&' needs to be escaped inside
	AC_TRY_EVAL.

2000-09-12  Michael Matz  <matz@ifh.de>

	* ltmain.in:  Be careful about filenames with multiple `.'s in
	them when calculating file extensions.
	Reported by Joel Reed <jreed@support.ddiworld.com>

2000-09-12  Gary V. Vaughan  <gary@gnu.org>

	libtool.m4 (AC_PROG_LIBTOOL):  Removed, as it was triggering a
	bug in Autoconf-2.13 AC_REQUIRE implementation which inserted
	some of the expanded tests too early in the generaated configure.
	(_AC_PROG_LIBTOOL): renamed to AC_PROG_LIBTOOL, and defines
	itself to an empty expansion to prevent multiple expansions.
	configure.in (AC_LIBTOOL_SETUP): Replaced by a call to
	AC_PROG_LIBTOOL now that the AC_REQUIRE bug has been worked
	around.

2000-09-09  Gary V. Vaughan  <gary@gnu.org>

	libtool.m4 (_LT_AC_LTCONFIG_HACK): Forgot to escape the
	redirections inside AC_TRY_EVAL in the need_lc tests. Doh!

	libtool.m4 (_LT_AC_LTCONFIG_HACK): Forgot to redirect the
	output of grep to /dev/null in the need_lc tests.

	configure.in (AC_PROG_LIBTOOL):  Using this in libtools own
	configure.in interacts badly with the AC_PROVIDE calls and
	results in several tests being inserted into configure too
	early.  Use AC_LIBTOOL_SETUP instead.

2000-09-08  Gary V. Vaughan  <gary@gnu.org>

	libtool.m4 (_LT_AC_LTCONFIG_HACK): The ltconfig.in code I
	ported from ltconfig.in was incomplete -- this is a backport
	of the missing code taken from the multi-language branch.

2000-09-07  Pavel Roskin  <proskin@gnu.org>

	* libtool.m4 (_LT_AC_LTCONFIG_HACK):  Fixed incorrect use of
	changequote

2000-09-07  Gary V. Vaughan  <gary@gnu.org>

	* NEWS:  Updated.
	* TODO:  Add a reminder to get rid of ltconfig in mlb.
	* README: Until things even out, I have added a note and a
	patch to make the installed automake cooperate with the new
	ltconfig free libtool.

	* libtool.m4 (_LT_AC_LTCONFIG_HACK): with_gcc is only useful in
	ltmain.sh as it has not yet been set in libtool.m4.  Use
	$ac_cv_prog_gcc instead.

	* doc/PLATFORMS: Updated.

	* configure.in (AC_PROG_AWK): Removed -- no longer required by
	the build process.
	* lineno: ditto.

	* libtoolize.in (files): Don't try to install ltconfig -- it
	doesn't exist!!
	* bootstrap: Fake an ltconfig incase the installed automake
	calls an installed libtoolize (as part of its --add-missing
	process) which thinks ltconfig should be there.

	* libtool.m4 (_LT_AC_LTCONFIG_HACK): Deleted a vital `;;'
	terminator from a case statement by mistake.

	* Makefile.am (ltmain.sh):  Make this depend on TSDEPS again
	so that the Changelog timestamp is used for ltmain.sh at `make
	dist' time.

2000-09-06  Gary V. Vaughan  <gary@gnu.org>

	libtool.m4 now contains a version of the code that used to run
	from ltconfig, so that ltmain.sh and then libtool are
	generated at configure time.

	* Makefile.am:  Don't generate ltmain.sh or ltconfig anymore.
	* bootstrap: ltconfig is no more!
	* configure.in: Call AC_PROG_LIBTOOL directly.
	(AC_OUTPUT): Generate tmain.sh.
	* libtool.m4: Don't build an argument list for ltconfig.
	(_LT_AC_LTCONFIG_HACK):  Refactoring of the former contents of
	ltconfig.in to take advantage of the m4 macros from autoconf.
	* ltmain.in: Don't do a version check against ltconfig.
	* tests/assign.test: Remove reference to ltconfig.
	* tests/hardcode.test: ditto.
	* tests/sh.test: ditto.

2000-09-05  Alexandre Oliva  <aoliva@redhat.com>

	* depdemo/main.c: Support -alt.
	* tests/build-relink2.test: Try it.

	* ltconfig.in: Removed all references to what used to be
	hardcode_into_libs=all.  2000-09-03's patch was wrong.
	* ltmain.in: Likewise.
	* tests/build-relink.test, tests/build-relink2.test: Adjust.
	* mdemo/Makefile.am (lib_LTLIBRARIES): Move libsub.la before
	libfoo2.la, so that they're installed in the right order.

2000-09-04  Alexandre Oliva  <aoliva@redhat.com>

	* tests/dryrun.test: Build libsub.la along with the object files,
	since it is needed by libfoo2.la.

	* mdemo/Makefile.am: Mark only libfoo2 as -no-undefined.
	Explicitly link it with libsub.la.

	* ltconfig.in (need_lc): Preserve allow_undefined_flag.

	* tests/*.test (CONFIG_SITE): Ultrix's /bin/sh fails on
	`. /dev/null'.  Set CONFIG_SITE to /dev/null/config/site, to make
	sure we pick a non-existent file.

	* Makefile.am (libtool, clibtool): Pass CONFIG_SHELL along with
	ECHO down to ltconfig.

	* ltconfig.in (hardcode_libdir_flag_spec, export_dynamic_flag_spec):
	Use ${wl}, not ${wlarc}.

	* ltmain.in (compile, need_lock): Don't create nor remove lock
	files in dry runs.

	* libltdl/ltdl.c (load_deplibs): Don't append shlib_ext; use
	lt_dlopenext() instead.

	* ltmain.in (link -static): Don't add $link_static_flag; only
	-all-static should do that.
	* mdemo/configure.in: Revert part of the previous delta.

	* mdemo/configure.in: Don't use -static on AIX4.1.
	* mdemo/Makefile.am: Likewise.

2000-09-03  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig.in: Get rid of hardcode_into_libs=all; use
	hardcode_into_libs=yes && shlibpath_overrides_runpath!=yes
	instead.
	[FreeBSD 3.[01]] (shlibpath_overrides_runpath): Set to no.
	* ltmain.in: Likewise.
	* tests/build-relink.test, tests/build-relink2.test: Adjust.

	* libtool.m4: Fix typo I introduced in yesterday's patch.

	* libltdl/ltdl.c (lt_dlopen): Set dlname from library_names if
	dlname is empty.

	* ltdl.m4 (HAVE_LIBDL): Look for dlopen in -lsvld.
	* ltconfig.in: Likewise.

	* tests/mdemo-exec.test: Modify failure message.

	* ltmain.in (newdlprefiles): Use dlname if it's available and
	old_library isn't; use linklib only if dlname is not available.

	* ltconfig.in (enable_dlopen): Set to no when lt_cv_dlopen is no.

	* libtool.m4: Don't quote CONFIG_SHELL nor ORIGINAL_CONFIG_SHELL.
	Quote $@ properly so that the shell expands it, not m4.

	* libtool.m4: Don't quote SHELL when `re-exec'ing, so that SHELL
	can be `/path/to/shell -x'.

	* tests/quote.test: Move the match test out of case statements, to
	work around bug in /bin/sh of several OSs.

	* ltmain.in (variables_saved_for_relink): Attempt to unset them
	instead of setting them to an empty string.

2000-09-02  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig.in [with_gnu_ld] (archive_cmds, archive_expsym_cmds)
	<solaris*, sysv5*, beos*>: Use compiler_flags instead of linker
	flags.
	Reported by Alex Hornby <alex@anvil.co.uk>

2000-09-02  Makoto Ishisone  <ishisone@sra.co.jp>

	* libtool.m4 (lt_cv_deplibs_check_method, freebsd): Fix typo,
	add support for compact format library.

2000-09-02  Alexandre Oliva  <aoliva@redhat.com>

	* ltdl.m4: Oops, I had forgotten to commit this part of Syd Polk's
	patch from 2000-06-17.

2000-09-02  Tom Kacvinsky  <tjk@ams.org>, Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>

	* libtool.m4: Ignore Tru64's nm's complaint.

2000-09-02  Pavel Roskin <proski@gnu.org>

	* ltconfig.in: only load $cache_file if it's a regular file

2000-09-02  Assar Westerlund  <assar@sics.se>

	* ltconfig.in: Add back ranlib calls for static libraries if there
	is a ranlib.

2000-08-31  Gary V. Vaughan  <gary@gnu.org>

	Move the echo detection code to a macro in libtool.m4.  The code
	at the top ofltconfig.in is ugly, but will go away when the rest
	of ltconfig is migrated.

	* Makefile.am (libtool):  Pass the value of $ECHO to ltconfig as
	an environment variable.
	* libtool.m4 (_LT_AC_PROG_ECHO_BACKSLASH): Quote the ECHO value
	correctly so that it inserts the correct code into configure.in
	suitably quoted for M4 expansion.  This code needs to be near
	the top of configure.in as it calls itself recursively, so I
	am using AC_DIVERSION_NOTICE (or simply NOTICE on CVS
	Autoconf).  The value of ECHO is also substitued into the
	Makefile to be used when Make calls ltconfig to generate
	libtool, so another layer of quotation is required for the
	Makefile.
	(AC_LIBTOOL_SETUP):  Use it.
	* ltconfig.in: Accept a value for ECHO from the environment, and
	carefully substitue for $0 if it is present in the ECHO value.
	Because ECHO was quoted for Make, when ltconfig is called by
	configure, it is overquoted, and one layer of quotes must be
	stripped.

2000-08-27  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (with_gcc):  Make the value of this option
	available to the generated libtool script.
	* ltmain.in (compile_command, finalize_command):  The native C
	and C++ compilers on IRIX require the -LANG:std in order to to
	compile correctly.   The same options should _not_ be passed
	through to gcc on IRIX, or at all on other architectures for
	backwards compatibility (among others).
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
	Reported by Albert Chin-A-Young <china@thewrittenword.com>

2000-08-26  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (old_reload_flag): typo.

2000-08-01  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltmain.in (shtool): Use echo|grep instead of expr, as in the
	original patch.

2000-08-01  Alexandre Oliva  <aoliva@redhat.com>

	* ltconfig.in (need_lc): Fix test message.

2000-07-24  Mocha  <netbsd_alpha@yahoo.com>

	* ltconfig.in (NetBSD, deplibs_check_method): Use file_magic.
	(NetBSD, file_magic_cmd, file_magic_test_file): Set.

2000-07-24  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>, David Kaelbling  <drk@orchietta.hudson.sgi.com>

	* ltmain.in (irix, major): Prepend a `.'.
	* ltconfig.in (irix, soname_spec, library_names_spec): Adjust.

2000-07-24  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>, Ralf S. Engelschall  <rse@engelschall.com>

	* ltmain.in: Support GNU shtool's install.

2000-07-24  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltconfig.in (linkopts): Don't set for test.

2000-07-24  Nick Hudson <skrll@netbsd.org>

	* ltconfig.in (linkopts): Replace with linker_flags.

	* ltmain.in (ILD): Fix addition of deplibs in relink case.

2000-07-18  H.J. Lu  <hjl@gnu.org>

	* ltconfig.in: Check if -lc is necessary for building shared
	library. Set build_libtool_need_lc to indicate it.
	* ltmain.in: Add -lc when building shared library only if
	necessary.

2000-07-10  Mo DeJong  <mdejong@redhat.com>

	* libtool.m4 (AC_PROG_NM): Fix macro so that it
	finds a cross NM on the PATH.

2000-07-10  Ken Block <block@zk3.dec.com>

	* libltdl/ltdl.h: Also check for __cplusplus, __STDC__ is not
	by Compaq C++ compiler

2000-07-10  Alexandre Oliva  <aoliva@lsd.ic.unicamp.br>

	* ltconfig.in (wlarc, netbsd, aout): Set to empty.
	(hardcode_dynamic_flag_spec, export_dynamic_flag_spec): Use it.

	* ltconfig.in (dynamic_linker, linux, powerpc): Do not disable
	shared libraries just because of MkLinux.

	* libtool.m4 (lt_cv_deplibs_check_method, freebsd): Do not depend
	on $version_type; check for ELF support as in other BSDs.

2000-06-17  Syd Polk  <spolk@redhat.com>

	* libtool.m4 (AC_LIBTOOL_SETUP): Do not generate a libtool based
	on target; use host instead.

2000-05-30  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (ORIGINAL_CONFIG_SHELL): Prevent lossage when
	the echo probing code falls into this branch without setting
	this variable.

	* ltconfig.in (netbsd*): archive_cmds and archive_expsym_cmds
	were reversed with respect to definition of __ELF__.
	From Keisuke Inoue <keisuke@csl.sony.co.jp>

2000-05-29  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (netbsd*): Use -L option to file_magic_cmd as for
	freebsd (below).
	* libtool.m4 (netbsd ELF): support file_magic.
	From Dan Winship <danw@helixcode.com>.

2000-05-29  Steven M. Schultz <sms@moe.2bsd.com>

	* libtool.m4 (bsdi4*): Add -L option to bsdi4's file_magic_cmd
	command.  Under BSD/OS 4.1 several libraries are now symlinks
	rather than regular files.  Adding -L tells the file program
	to follow the symlink.

2000-05-29  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (i*86-*-freebsd*): Forgot to changequote(,).

	* NEWS: Updated.
	* libtool.m4 (i*86-*-freebsd*): Support a.out shared libs.
	From <suzukis@file.phys.tohoku.ac.jp>

2000-05-29  Fred Fish  <fnf@be.com>

	Support AR=mwld AR_FLAGS='-xml -o' for PPC Beos.
	* ltconfig (old_AR_FLAGS): Add.
	(old_archive_cmds): Use AR_FLAGS rather than hardcoding "cru".
	(archive_cmds): Use AR_FLAGS rather than hardcoding "cru".
	(AR_FLAGS): Default to "cru" if not set.

2000-05-29  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (echo): The following code actually prints the
	double quotes -- so I removed them:
	    echo='printf "%s\n"' /bin/ksh -c '$echo \\t'
	From Tuukka Toivonen <tutoivon@mail.student.oulu.fi>

	* NEWS: Updated.

2000-05-29  Bernhard Rosenkraenzer <bero@redhat.de>

	* libtool.m4: adding ia64 as supported linux platform

2000-05-29  Michael Matz  <matz@ifh.de>

	* ltmain.in: fix quoting for $var_value.

	* ltconfig.in: check for dlfcn.h: include return value
	to make -Wall in CFLAGS work.

2000-05-27  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha: note new location of config.(guess|sub).

2000-05-27  Chad Cunningham  <ccunning@math.ohio-state.edu>

	* ltconfig.in (rhapsody*): New Port.
	* ltmain.in (rhapsody*): ditto.

2000-05-27  Chris Lattner  <sabre@skylab.org>

	* ltconfig.in (*-sequent-sysv4): New Port.

2000-05-17  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: cygwin-1.1.0 and higher no longer grok backslash path
	separators.

2000-05-14  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* libtool.m4 (AC_LIBLTDL_CONVENIENCE, AC_LIBLTDL_INSTALLABLE):
	Pick LIBLTLD from top_builddir and INCLTDL from top_srcdir.
	* mdemo/configure.in: Remove comments on
	AC_LIBLTLD_CONVENIENCE.

	* libtool.m4 (_AC_PROG_LIBTOOL): Renamed from...
	(AC_PROG_LIBTOOL): Just AC_REQUIRE(_AC_PROG_LIBTOOL), to avoid
	effects of multiple runs.

2000-05-11  Thomas Tanner  <tanner@ffii.org>

	* NEWS: update
	* doc/libtool.texi (libltdl): rename lt_(find|next|add|remove)_dlloader
	  to lt_dlloader_*
	* libltdl/ltdl.c: ditto
	* libltdl/ltdl.h: ditto, add declaration of lt_dlloader_(find|remove)

2000-05-06  Pavel Roskin  <pavel_roskin@geocities.com>

	* libltdl/ltdl.c: Typo.

	* libtool.m4 (AC_LIBTOOL_SETUP): CVS autoconf no longer sets
	target to "NONE", but to an empty string.

2000-05-05  Paul Sokolovsky  <Paul.Sokolovsky@technologist.com>

	* ltdl.c: support lt_dlopen(0) for win32

2000-05-03  Thomas Tanner  <tanner@ffii.org>

	* doc/libtool.texi (libltdl): fix typos,
	  INCLTDL starts with top_srcdir, replace NULL with @code{NULL}

	* ltmain.in (ILD): search in newlib_search_path, too

	* ltmain.in (ILD): fix bugs in conv pass, expand convenience
	  libs to deplibs and link them later on

	* ltmain.in (ILD): don't allow convenience libs to be
	   -dlopen/preopen'ed

	* ltmain.in (ILD): it's not required to link all deplibs
	  in fast-install mode

	* ltmain.in (ILD): if hardcode_into_libs=all, only relink
	  a library if it is linked against uninstalled libtool libraries,
	  rename link_against_libtool_libs to uninst_deplibs

	* ltmain.in (ILD): tidy up, add some comments

2000-05-03  John Wehle  (john@feith.com)

	* libtool.m4 (hpux10.20*): use file_magic for
	inter-library dependency tracking.

2000-05-02  Gary V. Vaughan  <gary@gnu.org>

	* AUTHORS:  Update my email address.
	* commit: ditto.

2000-04-11  Thomas Tanner  <tanner@ffii.org>

	* NEWS: update
	* libtool.m4: add AC_LIBTOOL_PICMODE
	* ltconfig.in: move pic_mode checks to ltmain.in
	* ltmain.in: add -prefer-pic and -prefer-non-pic

2000-03-29  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltmain.in (tmpdir): Do not accept an existing directory, and
	force its mode to 700, for security reasons.
	Reported by Joseph S. Myers <jsm28@cam.ac.uk>

2000-03-27  Thomas Tanner  <tanner@ffii.org>

	* NEWS: reformatting

	* ltmain.in (ILD): add extra convenience library scanning pass

	* ltmain.in (ILD): accept -R flags for libraries, too

	* ltmain.in (ILD): correclty merge the dlpreopened libraries
	  with deplibs

	* ltmain.in (install mode): remove directories from filenames
	  before relinking (reported by Elrond <Elrond@Wunder-Nett.org>)

	* doc/libtool.texi (libltdl): rename Library -> Lesser,
	  clarify exception clause
	* libltdl/ltdl.c, libltdl.h (License): ditto

2000-03-21  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltconfig.in (variables_saved_for_relink): Set to `PATH
	$shlibpath_var $runpath_var'.  If with_gcc, add gcc-related
	environment variables.  Add it to the configuration section.
	* ltmain.in (relink_command): Expand those variables.

2000-03-14  Christopher A. Knight  <chriskn@crt.com>

	* ltconfig.in: added main() definition in compile
	check for header `dlfcn.h' to fix link errors
	when built with Sun Workshop Pro CC 4.2 (and perhaps
	others).

2000-02-03  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_find_dlhandle): Deleted.  This was B.S.
	far cleaner to use lt_dlforeach and lt_dlgetinfo.
	* libltdl/ltdl.h:  Prototype deleted.
	* doc/libtool.texi: Documentation deleted.
	* NEWS: annoncement deleted.

2000-02-23  Thomas Tanner  <tanner@ffii.org>

	* ltmain.in: remove duplicates from deplibs, handle
	  interdependent libraries (e.g. -la -lb -la),
	  this requires adding deplibs in reverse order

	* ltmain.in: link dlpreopened libraries before other libraries
	  (reported by Pavel Roskin)
	* mdemo/Makefile.am: build and link libsub.la
	* mdemo/sub.c: new file used by both dlopened modules
	* mdemo/foo*: use sub() defined in libsub
	* tests/dryrun.test: build libsub.la

	* mdemo/Makefile.am: always link mdemo.static with -static
	* mdemo/configure.in: ditto

	* ltmain.in: fix dlopen/dlpreopening of objects

	* ltmain.in (ILD): fix misplaced `continue' in -R* argument handler

	* ltmain.in: merge duplicated code of clean and uninstall mode

	* libtool.m4: recognize powerpc*linux* (reported by
	  Dirk A. Mueller <dmuell@gmx.net>)

2000-02-23  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (old_MAGIC, old_STRIP, old_reload_flag,
	old_deplibs_check_method, old_file_magic_cmd):  New variabes.
	Treat these as old_CC etc.
	(STRIP, MAGIC): Create and set these variables in the generated
	libtool script.
	Reported by Pavel Roskin <pavel_rosin@geocities.com>

	* configure.in: Due to a bug in autoconf-2.13 implementation of
	AC_SUBST, `AC_SUBST(FILE)' can never work.  Use MAGIC as the
	holder of the command to run in file_magic_cmd instead.
	* ltconfig.in: s/FILE/MAGIC/g.
	* libtool.m4 (AC_PROG_LIBTOOL): set MAGIC in the environment when
	calling ltconfig.
	(AC_PATH_MAGIC):  renamed from AC_PATH_FILE.
	(AC_PATH_TOOL_PREFIX):  s/FILE/MAGIC/g.  Also set file_magic_cmd
	to '${MAGIC}' so that make can grok it.
	* Makefile.am (libtool):
	(clibtool): ditto.

2000-02-21  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_find_dlhandle): New function.
	(tryall_dlopen): Use it.
	* libltdl/ltdl.h:  Prototype it.
	* doc/libtool.texi: Document it.
	* NEWS: updated.

	* libltdl/ltdl.c (lt_dlinit): removed unused variable, `loader'.

	* libltdl/ltdl.c (lt_remove_dlloader): typo, s/=/==/g.

2000-02-03  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (lt_dlloader_data_t):  New type for loader
	instance data.
	(lt_user_dlloader): New lt_dlloader_data_t field.
	(lt_module_open_t): Add lt_dlloader_data_t parameter.
	(lt_module_close_t): Add lt_dlloader_data_t parameter.
	(lt_find_sym_t): Add lt_dlloader_data_t parameter.
	(lt_dlloader_exit_t): Add lt_dlloader_data_t parameter.
	* libltdl/ltdl.c:  A sprinkling of /*ARGSUSED*/ markers to
	reassure lint that the unused arguments are intentional.
	(lt_dlloader_t): New lt_dlloader_data_t field.
	(lt_dlloader_data): New function to return the contents of the
	dlloader_data field.
	(sys_dl_open): Take an additional lt_dlloader_data_t argument.
	(sys_dl_close): Ditto.
	(sys_dl_sym): Ditto.
	(sys_dl): Initialise lt_dlloader_data_t field.
	(sys_shl_open, sys_shl_close, sys_shl_sym, sys_shl): As above.
	(sys_wll_open, sys_wll_close, sys_wll_sym, sys_wll): As above.
	(sys_bedl_open, sys_bedl_close, sys_bedl_sym, sys_bedl): As
	above.
	(sys_dld_open, sys_dld_close, sys_dld_sym, sys_dld): As above.
	(presym_init, presym_exit, presym_open, presym_close, presym_sym,
	presym): As above.
	(lt_dlinit): Call presym_init with additional argument.
	(lt_dlexit): Call dlloader_exit method with additional argument.
	(tryall_dlopen): Call module_open method with additional argument.
	(lt_dlclose): Call module_close method with additional argument.
	(lt_dlsym): Call find_sym method with additional argument.
	(lt_add_dlloader): Initialise dlloader_data field.
	(lt_remove_dlloader): Call dlloader_exit method with additional
	argument.

	* libltdl/ltdl.c (find_file): Prevent early release of memory
	in filename/*pdir.
	From Jon Leichter <jon@symas.com>

	(sys_wll_init): Deleted.  No longer required.  And this time,
	with feeling!
	(sys_wll_exit): Ditto.

2000-02-02  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: updated.
	* doc/libtool.texi (Libltdl interface): Moved user defined module
	loader documentation from here...
	(Module loaders for libltdl) ...to here, and updated the text and
	added examples.
	* ltdl.m4 (AC_CHECK_FUNCS): check strcmp for lt_find_dlloader.
	* libltdl/ltdl.h: Reformatted and commented for readability.
	(struct lt_user_dlloader): New data type for passing
	initialisation pointers to lt_add_dlloader.
	(LTDL_ERROR_INVALID_LOADER):  New error message when non loader
	handles are passed to the user loader API.
	(LTDL_ERROR_INIT_LOADER): New error when loader initialisation
	fails.
	(LTDL_ERROR_REMOVE_LOADER): New error when loader removal fails.
	(lt_module_open_t): renamed from lt_lib_open_t.
	(lt_module_close_t): renamed from lt_lib_close_t.
	(lt_dlloader_exit_t): renamed from lt_dlloader_exit_t.
	* libltdl/ltdl.c: Reordered builtin loaders so that the "dld"
	loader no longer occurs before "dlopen" on some platforms and
	after it on others.
	(lt_dlloader_t): Moved here from ltdl.h, added a field,
	"loader_name", for identifying the loader, and renamed from
	lt_dltype_t.  Renamed type variables to loader IFF of type
	lt_dlloader_t.
	(lt_module_t): Renamed from lt_syshandle. Renamed handle variables
	to module IFF of type lt_module_t.
	(LTDL_TYPE_TOP): Deleted.  No longer required.
	(sys_dl): Initialised as a struct lt_user_dlloader.
	(sys_dl_init): Deleted.  No longer required.
	(sys_dl_exit): Ditto.
	(sys_shl): Initialised as a struct lt_user_dlloader.
	(sys_shl_init): Deleted.  No longer required.
	(sys_shl_exit): Ditto.
	(sys_wll): Initialised as a struct lt_user_dlloader.
	(sys_wll_init): Deleted.  No longer required.
	(sys_wll_exit): Ditto.
	(sys_bedl): Initialised as a struct lt_user_dlloader.
	(sys_bedl_init): Deleted.  No longer required.
	(sys_bedl_exit): Ditto.
	(sys_dld): Initialised as a struct lt_user_dlloader.
	(sys_dld_init): Deleted.  No longer required.
	(sys_dld_exit): Ditto.
	(sys_presym): Initialised as a struct lt_user_dlloader.
	(lt_mod_init_t): Moved to here from ltdl.h.
	(lt_dlinit): Add builtin loaders using the user loader API.
	(lt_dlexit): Unregister and free all loaders.
	(lt_add_dlloader): New function to add a new module loader after the
	loader specified in the argument.
	(lt_remove_dlloader): New function to remove a module loader.
	(lt_next_dlloader): New function for iterating over module loaders.
	(lt_dlloader_name): Accessor function for name of dlloader.
	(lt_find_dlloader): New function to get a reference to a registered
	module loader.
	(strcmp): static implementation incase the host has none.
	(lt_dlgettypes, lt_dlsettypes): Removed.

2000-02-02  Thomas Tanner  <tanner@ffii.org>

	* libltdl/ltdl.c: replace NULL with 0, remove unused system
	  and app_private pointers from lt_dlhandle_t
	* libltdl/ltdl.c (presym_add_list): new preloaded symbols
	  don't need to be added to the end

	* libltdl/ltdl.c (lt_dlgetdata, lt_dlsetdata): removed
	* libltdl/ltdl.h: ditto
	* doc/libtool.texi (libltdl interface): ditto

2000-02-01  Thomas Tanner  <tanner@ffii.org>

	* ltmain.in: support -dlopen/dlpreopen for libraries
	* NEWS: updated
	* TODO: updated
	* ltmain.in: rename dlopen to dlopen_support
	* ltconfig.in: ditto
	* doc/libtool.texi: ditto

	* ltmain.in: check whether libraries are moved out of $libdir,
	  replace .a and .lib with .$libext, .o and .obj with .$objext

2000-01-31  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (lt_dlrealloc): removed declaration.
	* libltdl/ltdl.c (lt_dlrealloc): removed definition.
	(lt_dladderror): Instead of calling lt_dlrealloc, use lt_dlmalloc,
	and lt_dlfree.

2000-01-30  Ossama Othman  <ossama@debian.org>

	* libtool.m4 (lt_cv_cc_needs_belf): Set the test language to C
	prior to executing the test that checks if the C compiler needs
	"-belf."
	Reported by Chris Butler <chrisb@sandy.force9.co.uk>

2000-01-28  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_DEPLIBS_CHECK_METHOD):  Use changequote to
	protect `[' and `]' in deplibs_check_method.

	* libltdl/ltdl.h (lt_dlrealloc): Added declaration.
	* libltdl/ltdl.c (lt_dlrealloc): Added default definition.

	* libltdl/ltdl.c (lt_dlseterror): Catch errorcodes below 0 as
	invalid.
	* libltdl/ltdl.h (LTDL_ERROR): Added missing '_' in K&R
	definition.

	* libltdl/ltdl.h (ltdl_error_table): Added missing error code, and
	fixed typo in another code.
	* doc/libtool.texi (Libltdl interface): Added missing @end
	clause.

2000-01-27  Thomas Tanner  <tanner@ffii.org>

	* ltconfig.in: Oops, replace the remaining $objdir's

	* ltmain.in: merge library linking code of programs and libraries,
	  some cleanups

2000-01-27  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* doc/libtool.texi (Libltdl interface): Document new entry
	points.
	* libltdl/ltdl.c (lt_dladderror): New function to add a user
	defined error message to the tables used by lt_dlerror().
	(lt_dlseterror):  New function to allow setting of last_error by
	user modules.
	(ltdl_error_strings): New preprocessor generated table of internal
	error diagnostic strings.
	(user_error_strings): New internal list of registered user error
	diagnostic strings.
	(throughout!): Use error messages from ltdl_error_strings.
	* libltdl/ltdl.h (ltdl_error_table): New macro to tabulate
	internal diagnostic error strings alongside enum keys.

	* NEWS: Updated.
	* doc/libtool.texi (Libltdl interface): Document new entry
	points.
	* libltdl/ltdl.c (lt_dltype_t):  Use new type definitions for
	existing fields.
	(lt_dladdtype): New function to add a new ltdl dynamic loader
	type to the end of the list of valid types..
	(lt_dlgettypes): New function to return the complete list of ltdl
	dynamic loader types.
	(lt_dlsettypes): New function to replace the list of ltdl dynamic
	loader types entirely -- e.g. to prepend a new type to the
	existing list.
	(sys_dl_open, sys_dl_close, sys_dl_sym): Work with lt_syshandle.
	(sys_shl_open, sys_shl_close, sys_shl_sym): ditto.
	(sys_dld_open, sys_dld_close, sys_dld_sym): ditto.
	(sys_wll_open, sys_wll_close, sys_wll_sym): ditto.
	(sys_bedl_open, sys_bedl_close, sys_bedl_sym): ditto.
	(presym_open, presym_close, presym_sym): ditto.
	(tryall_dlopen): Call lt_lib_open_t functions lt_syshandle
	compatibly.
	(lt_dlclose): Call lt_lib_close_t functions lt_syshandle
	compatibly.
	(lt_dlsym): Call lt_find_sym_t functions lt_syshandle compatibly.
	(lt_dltype_t): moved type declaration from here...
	* libltdl/ltdl.h (lt_dltype_t): ...to here.
	(lt_syshandle): new type for low level system handles passed by
	loader functions
	(lt_mod_init_t):  New type for functions implementing the
	initialisation for an ltdl dynamic loader.
	(lt_mod_exit_t): Type of exit functions for the same.
	(lt_lib_open_t): Type of loader functions for the same.
	(lt_lib_close_t): Type of unloader functions for the same.
	(lt_find_sym_t): Type of symbol resolver functions for the same.

	* libltdl/ltdl.c (sys_dl_init, sys_dl_exit, sys_dl_open,
	sys_dl_close, sys_dl_sym):  Preprocess these away on cygwin to
	avoid spurious error messages.

2000-01-24  Thomas Tanner  <tanner@ffii.org>

	fix severe bugs reported by Elrond <Elrond@Wunder-Nett.org>

	* ltconfig.in: replace $objdir with $output_objdir

	* ltmain.in: change to the builddir before relinking programs

	* ltmain.in, ltconfig.in, libtool.m4, ltdl.m4:
	  remove unnessary spaces from line endings

2000-01-19  Thomas Tanner  <tanner@ffii.org>

	* ltmain.in: rewrite of the ILD code, merge linking code for
	  programs, libraries and objects, allow linking of shared libraries
	  against static libraries/objects on platforms that support it
	  but print a warning, fix some typos

	* partially revert my previous change and
	  update only copyright notices of files that were actually modified

	* NEWS: update

	* libltdl/Makefile.am: version number was wrong

	* libltdl/ltdl.c (tryall_dlopen): revert Gary's change
	  since it breaks dlpreopening
	* ltdl.m4: ditto

	* libltdl/ltdl.c (sys_search_path): search in the system default
	  library search path, too
	* ltdl.m4 (AC_LTDL_SYSSEARCHPATH): extract the path

	* libltdl/ltdl.c (find_module): remove bogus file_not_found_error

	* libltdl/ltdl.c (load_deplibs): implement loading of dependency
	  libraries
	* libltdl/ltdl.c (unload_deplibs): implement unloading of dependency
	  libraries
	* libltdl/ltdl.c (lt_dlexit): correctly close all modules and
	  their dependencies

	* libltdl/ltdl.c (lt_dlforeach): new function
	* libltdl/ltdl.h: ditto
	* doc/libtool.texi (using libltdl): document it

	* libtool.m4: reformatting, only add -I$topsrc_dir/libltdl to
	  INCLTDL

	* libtoolize.in: reformatting
	* ltconfig.in: reformatting
	* ltmain.in: reformatting

	* mdemo/configure.in: AC_SUBST INCLTDL
	* mdemo/Makefile.am: use INCLTDL

	* tests/Makefile.am: reexport OBJEXT and EXEEXT
	* tests/dryrun.test: use them for building main.obj and mdemo.exe

2000-01-17  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (tryall_dlopen): Abort with
	file_not_found_error before trying all lib_open() methods
	if the file to be dlopened doesn't exist.
	* ltdl.m4 (AC_HAVE_HEADERS): add unistd.h.

2000-01-16  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (find_file): memory error fixed.

2000-01-14  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (Usage): Now it matches the code!
	Reported by Jon Leichter <jon@symas.com>

	* README:  Some notes about libtool release numbers.

	* mdemo/README: Explain the deliberate incompleteness of the
	Windows port.
	* mdemo/configure.in: Use AC_LIBTOOL_WIN32_DLL.
	* mdemo/Makefile.am (LDFLAGS):  Add -no-undefined.

	* libltdl/ltdl.h (LTDL_STMT_START, LTDL_STMT_END):  Macros for
	wrapping other macros to make a portable compound statement from
	multiple C statements in the expansion.
	(LTDL_SET_PRELOADED_SYMBOLS): Use the above macros to add an
	extern declaration for lt_preloaded_symbols, to remove
	dependency on undefined symbol from libltdl.dll on cygwin (and
	other -no-undefined architectures).
	* libltdl/ltdl.c (lt_preloaded_symbols): No longer defined here.

	* libtool,m4 (AC_LIBTOOL_SETUP):  The result of lt_cv_need_dllmain
	was set to the opposite of what it should be.
	* configure.in (AC_LIBTOOL_WIN32_DLL):  Call to this macro is
	required for libtool configury to test lt_cv_need_dllmain on
	Windows.

	* ltconfig.in (opt_cr, mingw*): replace unescaped ? with correctly
	escaped and portable \{0,1\} in sed expression.
	From Jon Leichter <jon@symas.com>

2000-01-13  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_LIBLTDL_CONVENIENCE): Add -I${top_srcdir}/libltdl
	to default INCLTDL for VPATH.
	(AC_LIBLTDL_INSTALLABLE): ditto.
	Reported by Tom Tromey <tromey@cygnus.com>

2000-01-12  Thomas Tanner  <tanner@ffii.org>

	* update all copyright notices to 2000

	* doc/libtool.texi (using libltdl): document new lt_dlinfo struct,
	  replace NULL with @code{NULL}, document lt_dlsetdata(),
	  lt_dlgetdata() and lt_dlgetinfo()
	* libltdl/Makefile.am: increment interface version number
	* libltdl/configure.in: set version number to 1.1
	* libltdl/ltdl.c: make some variables public by moving them
	  to the info struct, add support for application specific data
	  within module handles, new lt_dlsetdata(), lt_dlgetdata() and
	  lt_dlgetinfo() functions,
	  fix memory leaks, minor cleanups
	* libltdl/ltdl.h: ditto
	* mdemo/main.c: demonstrate use of lt_dlgetinfo,
	  improved handling of errors

	* ltconfig.in: set hardcode_into_libs = yes for GNU/Hurd, Linux
	  and Solaris, only hardcode *all* run-paths if hardcode_into_libs
	  is set to 'all', otherwise hardcode only user-specified rpaths
	  into libraries
	* ltmain.in: minor cleanups, we don't need to add user-specified
	  rpaths to compile_rpath, finalize_rpath is sufficient

	* ltconfig.in: transform linux* -> *linux-gnu* _after_ host_os has
	  been set! (reported by Bruno Haible <haible@ilog.fr>)

	* configure.in: AC_SUBST reload_flag, deplibs_check_method
	  and file_magic_cmd

	* README: use 'libtool --version' instead of 'ltconfig --version'
	  (suggested by François Pinard <pinard@iro.umontreal.ca>

2000-01-10  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (LTDL_DIRSEP_CHAR): Leave undefined when
	not compiling for a Windows target.
	* libltdl/ltdl.c (canonicalize_path): New function to
	ensure internal paths use '/' directory separators.
	(find_file): use canonicalize_path.  Memory management
	changed to cope.
	(lt_dlopen): ditto.
	(free_vars): Removed `dir' and `name', which are now handled
	internally.

	* libltdl/ltdl.h (LTDL_DIRSEP_CHAR): Define to '/' or '\\',
	as suitable for the target host.
	(LTDL_PATHSEP_CHAR): Similarly with ':' or ';'.
	* libltdl/ltdl.c: Use LTDL_DIRSEP_CHAR and LTDL_PATHSEP_CHAR
	instead of hardcoding throughout.
	Reported by Jon Leichter <jon@symas.com>

1999-12-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltmain.in: Oops, `largarg' -> `lastarg'.

	* ltmain.in (-Wc, -Xcompiler): Implemented in compile mode.

	* ltmain.in (-Xcompiler, -Xlinker): Add to compile_command and
	finalize_command.
	(-Wc, -Wl): Likewise.

	* tests/quote.test: Adjust quoting style of -Wl.

	* ltmain.in: Oops, `echo' -> `$echo'.

	* ltmain.in (-Wl, -Wc): Make commas argument separators, just like
	in gcc.

	* ltmain.in (libtool_args): Get all arguments properly enclosed in
	quotes and backslash-protected when needed.

1999-12-16  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltdl.m4: Renamed from...
	* libltdl/ltdl.m4: that no longer exists.
	* configure.in (ACINCLUDE_M4_LIST): Removed libltdl/acinclude.m4.
	* Makefile.am (aclocal_macros): Added ltdl.m4.
	(libltdl/acinclude.m4): Concatenate libtool.m4 and ltdl.m4.
	* bootstrap: Likewise.
	* libltdl/Makefile.am (ACLOCAL): Remove the definition.  Relying
	upon -I may lead to duplicates.
	* doc/libtool.texi: Suggest appending ltdl.m4 to acinclude.m4.
	* libtoolize.in: Check AC_LIB_LTDL version number in aclocal.m4.

	* libltdl/configure.in (with_auxdir): Do not use it as the
	argument of AC_CONFIG_AUX_DIR, automake requires a literal here.
	Use AC_CONFIG_AUX_DIRS/DIR_DEFAULT instead.

	* libltdl/Makefile.am (ACLOCAL): Define with `-I .', as in
	bootstrap.

1999-12-15  Thomas Tanner  <tanner@ffii.org>

	* libltdl/configure.in: path to auxiliary files can be specified
	  using --with-auxdir (idea by Howard Chu <hyc@highlandsun.com>)

	* ltmain.in: don't remove multiple occurences from dependency_libs
	  of a library, otherwise many dependencies would get lost

	* bootstrap: use "aclocal -I ." instead of adding the contents
	  of ltdl.m4 to acinclude.m4

1999-12-13  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: updated.
	* libltdl/Makefile.am: Use -no-undefined for dll compliance.
	* libltdl/configure.in: Use AC_LIBTOOL_WIN32_DLL for dll
	compliance.
	* libltdl/ltdl.c: Define and use LTDL_GLOBAL_DATA to correctly
	export global data symbols from libltdl.dll.
	* libltdl/ltdl.h: Define and use LTDL_SCOPE to declare data
	symbols as dllexport, dllimport or plain ornary extern depending
	in the context in which it is used.

	* doc/libtool.texi (Distributing libltdl): document use of
	ltdl.m4.
	* libltdl/configure.in: Removed header checks, as they are
        automatically performed by AC_LIB_LTDL.
	* libltdl/ltdl.m4: Added header checks from configure.in, so that
	AC_LIB_LTDL is sufficient to compile ltdl.c.
	Reported by Stephan Kulow <coolo@kde.org>.

	* ltconfig.in (ltdll_obj): fixed typo: objdir -> $objdir

1999-12-12  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (cygwin*, mingw*, export_symbols_cmds): keep any
	DATA tags associated with symbols by recent dlltool.
	(cygwin*, mingw*, archive_expsym_cmds): Honor any DATA tags
	found in the symbol list.
	Reported by Jon Leichter <jon@symas.com>.

1999-12-10  Gary V. Vaughan  <gary@gnu.org>

	From Stephan Kulow <coolo@kde.org>
	* libltdl/ltdl.m4:  Add arg 3 to AC_DEFINE's to save the user
	from having to hack acconfig.h.

1999-12-06  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Updated.
	* TODO: Note some cleanups that are now needed.
	* libltdl/configure.in: Use the new macroised tests.
	* libltdl/ltdl.m4: New file, macroised tests formerly in
	libltdl/configure.in.
	Reported by Stephan Kulow <coolo@kde.org>.

	From Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
	* ltconfig.in:  split off the osf3 section, so that the osf4 and
	osf5 sections can add `-msym' to arguments passed to the linker
	for shared libs.

1999-12-03  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltconfig.in (ac_compile): Use $ac_ext instead of .c.
	(ac_link): Likewise.
	(dlfcn.h, ac_try): Do not add filename, it is already in
	ac_compile.
	Reported by Stephane Conversy <Stephane.Conversy@lri.fr>

	* ltconfig.in (linux-gnu*): Disable hardcode_into_libs until it
	works together with fast_install.

	* libtool.m4: Use host when --target is not specified.

	* configure.in: AC_SUBST variables that are used by ltconfig to
	build libtool.

	* ltconfig.in (irix6*): Do not override deplibs_check_method
	here.

	* libtool.m4: Do not AC_SUBST anything other than LIBTOOL.

1999-11-20  Michael Forster  <email@michael-forster.de>

	* ltconfig.in (linux-gnu*): Set hardcode_into_libs=yes.

1999-11-29  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in:  Be friendlier to C++ compilers when testing
	for dlopen support.
	Reported by Stephan Kulow <coolo@itm.mu-luebeck.de>

1999-11-26  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4:  better use of $target instead of $host to support
	cross compilation.
	Reported by Sam Latinga <slouken@devolution.com>

1999-11-16  Thomas Tanner  <tanner@ffii.org>

	* configure.in: generate ltconfig and ltmain.sh before configuring
	  libltdl

1999-11-04  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* tests/sh.test: New test to detect uses of quotes within
	backticks within quotes.
	* ltconfig.in, ltmain.in: Fix detected errors.  Mark false
	positives with a comment that disables the detector.
	Reported by Akim Demaille <akim@epita.fr>

	* configure.in: Move ltconfig and ltmain.sh generation back...
	* Makefile.am: here.

1999-11-02  Thomas Tanner  <tanner@ffii.org>

	* NEWS: updated
	* THANKS: added Olly Betts and Pavel Roskin
	* doc/libtool.texi: fix typo

	* fix major bugs which rendered libtool virtually
	  unusable (i.e. not portable):
	* ltconfig.in: don't hardcode system dependent variables in ltconfig!!
	  but set sane defaults
	* Makefile.am: pass variables from AC_LIBTOOL_SETUP to ltconfig
	* libtool.m4: ditto, fix typo in AC_PROG_LD_RELOAD_FLAG

	* ltconfig.in: use old_deplibs for archives, too
	  remove second occurence of sysv5
	* ltmain.in: fix typo, fix the second occurence of -DPIC, too

	* libltdl/Makefile.am: increment version number, fix typo
	* libltdl/ltdl.c (lt_dlsym): don't report an error if the
	  libltdl-style symbol name wasn't found

1999-11-02  Wolfgang Rapp <ulris@bn-ulm.de>

	* ltconfig.in: add support for Unixware (sysv4.2uw2*)

1999-10-29  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in:  Damnit!  Cygwin cvs committed all the
	dos line endings.

1999-10-28  Stephane Conversy  <Stephane.Conversy@lri.fr>

	* ltmain.in (-DPIC):  changed the order of pic flags a little to
	prevent upsetting the sgi c++ compiler.

1999-10-28  Olly Betts  <olly@muscat.co.uk>

	* ltconfig.in (opt_cr):  Handle crlf sequences output by the
	mingw toolchain.

	* libtool.m4:  Third time lucky, with Tor's patch.

1999-10-19  Tor Lillqvist  <tml@iki.fi>

	* libtool.m4:  these was a missing `*' in the -mno-cygwin
	match.
	* ltconfig.in (cygwin, ltdll_obj): fixed a quoting error.
	(export_symbols_cmds): added missing cosmetic newline.

1999-10-18  Tor Lillqvist  <tml@iki.fi>

	* libtool.m4: test command used == which should be =.
	Support -mno-cygwin flag for building mingw32 dlls.
	* ltconfig.in (file_magic_cmd): add missing quotes.
	(deplibs_check_method): and here.

1999-10-16  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* libltdl/ltdl.c (lt_dlopen): Do not search paths when the
	specified library is not just a basename.

1999-10-10  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_PATH_FILE): new macro replaces
	AC_PATH_TOOL_GREP_OUTPUT.
	(AC_PATH_TOOL_PREFIX): new macro replaces
	AC_PATH_PROG_GREP_OUTPUT.
	(AC_LD_RELOAD_FLAG):  migrated from ltconfig.in.
	(AC_DEPLIBS_CHECK_METHOD): ditto.
	* ltconfig.in (reload_flag): moved to libtool.m4.
	(deplbs_check_method): ditto.

1999-10-07  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AC_PATH_PROG_VERSION_GREP): removed in favour of the
	more general AC_PATH_PROG_GREP_OUTPUT.
	(AC_PATH_TOOL_VERSION_GREP): removed in favour of the more general
	AC_PATH_TOOL_GREP_OUTPUT.
	(AC_PROG_LIBTOOL):  Search for a working find program in the
	user's PATH using the new macros.

1999-10-06  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: updtaed.
        * ltconfig.in: Accept osf5.
        Reported by Sascha Schumann <sascha@schumann.cx>

1999-10-04  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (-no-install):  This doesn't work on win32 since
	the search path for libraries is not encoded in the binary,
	and dlls not in $PATH won't be found.  Fall back to -no-fast-install
	instead.

	* ltmain.in (-no-fast-install):  Wrapper script used to add the
	exeext on again when naming the wrapped executable.

1999-10-03  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in:  Set $FILE to @FILE@ for substitution with
	the value found in libtool.m4 at configure time.
	* libtool.m4 (AC_PATH_TOOL_GREP_VERSION):  New macro, combines
	AC_PATH_PROG and AC_CHECK_TOOL with a test which greps the
	output of $ac_dir/${ac_prefix}<tool> --version for a
	given regex.
	(AC_PATH_PROG_GREP_VERSION):  New macro used by the above.
	(AC_LIBTOOL_SETUP): Use the new macros to search the PATH
	[starting at /usr/bin] for a file program which accepts
	--version and has "file" in its --version output.

1999-10-03  Thomas Tanner  <tanner@ffii.org>

	* NEWS: new -no-install flag
	* configure.in: fix typo
	* doc/libtool.texi(Link mode): document -no-install flag,
	  correct -no-fast-install docs
	* libtool.m4: check for "file" command
	* ltconfig.in: don't hardcode /usr/bin/file, remove second
	  definition of sysv5, replace linkopts -> linker_flags
	* ltmain.in: add new -no-install flag, print help for -no-install
	  and -no-fast-install flags

1999-10-03  Olly Betts <olly@muscat.co.uk>

	* ltmain.in: always create output_objdir

1999-10-03  Pavel Roskin  <pavel_roskin@geocities.com>

	* libltdl/Makefile.am: don't preserve file attributes when
	  installing the libltdl sources

1999-10-01  Gary V. Vaughan  <gary@gnu.org>

	* configure.in (AC_OUTPUT_COMMANDS): generate ltmain.sh
	* Makefile.am (ltmain.sh ltconfig): removed.  Automake inserts the
	rules to automatically call config.status.

	* libtool.m4: be sure to AC_SUBST values no longer tested in
	ltconfig.in.
	* ltconfig.in: replaced several of the simple feature tests with
	substitutions from config.status.
	* Makefile.am (ltconfig): generate ltconfig with config.status.
	* configure.in (AC_OUTPUT): generate ltconfig with config.status.

1999-09-30  Donald Anderson  <dda@world.std.com>

	* ltconfig.in (sco3.2v5): use pass_all deplibs_check_method
	for SCO3.2.

1999-09-29  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (whole-archive-flag-spec):  I had been
	wondering why my file system was filling up with empty
	files named `71'... seems I forgot to hold in the
	shift key when redirecting stderr, 2>&1.  Doh!

1999-09-29  Vadim  <vadim@olly.ru>

	* ltconfig.in (sysv):  More UW7 support.

1999-09-28  Albert Cheng  <acheng@ncsa.uiuc.edu>

	* ltmain.in (shlibpath_var): ensure the variable is non-empty before
	exporting it.

1999-09-27  Manfred Weichel  <weichel@global.nacamar.de>

	* ltconfig.in (sysv5): Added support required for shared
	library linking on SCO UW7.

1999-09-22  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (whole-archive-flag-spec): test whether the
	version of GNU ld being used understands --whole-archive
	before using it.

1999-09-19  Thomas Tanner  <tanner@ffii.org>

	* ltmain.in: don't ignore convenience libraries for objects/archives
	  (temporary hack)

1999-09-14  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* ltconfig.in (CDPATH): Set to `:' instead of empty.
	* ltmain.in (CDPATH): Likewise.
	Reported by Greg McGary <gkm@eng.ascend.com>

1999-08-24  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (ltdll.c, impgen.c): Prevent the shell from
	expanding variables & backslash escapes when writing these
	files to the libtool script.

1999-08-24  Thomas Tanner  <tanner@ffii.org>

	* NEWS: mention fixes
	* doc/PLATFORMS: GNU/Hurd update
	* depdemo: make use of variables
	* ltconfig.in: use CC -E when checking for ELF support
	  on NetBSD (reported by Todd Vierling <tv@pobox.com>),
	  replace all occurences of 'linkopts' with 'linker_flags'
	* ltmain.in: move ltdll.c and impgen.c to ltconfig.in and
	  only add them to the libtool script if it's necessary

1999-08-24  Boyd Gerber  <gerberb@zenez.com>

	* ltconfig.in: add support for UnixWare 7.X.X
	* doc/PLATFORMS: add new platforms

1999-08-24  Pavel Roskin  <pavel_roskin@geocities.com>

	* doc/libtool.texi: document use of noinst_LTLIBRARIES for
	  convenience libraries

	* ltconfig.in: check for freebsdelf3, not just freebsd3.
	Set hardcode_into_libs=yes for FreeBSD 3.0 and 3.1

	* ltmain.in: enable workaround for freebsdelf3.0

1999-08-24  Bert Driehuis  <bert_driehuis@nl.compuware.com>

	* ltconfig.in: export_dynamic_flag_spec is -rdynamic on BSD/OS

1999-08-07  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/COPYING.LIB: Update to version 2.1.
	* libltdl/ltdl.h, libltdl/ltdl.c: Update FSF address.

1999-08-03  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (mingw*, AC_PROG_LD): use tr for carriage return
	stripping.
	* ltconfig.in: ditto.
	From Olly Betts <olly@muscat.co.uk>

1999-08-02  Olly Betts  <olly@muscat.co.uk>

	* doc/libtool.texi (Compile mode): typo correction.
	(Link mode): and another.
	(Release numbers):  and another.
	(Distributing libltdl): and another.
	(Test descriptions): and another.
	(libtool script contents): and one more.

	* libtool.m4 (AC_PROG_LD): strip carriage returns from the
	output of gcc -print-prog-name=ld.
	* ltconfig.in: ditto.

1999-07-30  Pavel Roskin  <pavel_roskin@geocities.com>

	* ltmain.in: Ensure that gcc on HPsUX uses -fPIC, or else
	initialised structures are sometimes emitted in the code section.

1999-07-30  Mumit Khan  <khan@xraylith.wisc.edu>

	* ltconfig.in:  Read line at a time to avoid tokenisation by
	shell.

1999-07-29  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in: Fix creation of relative links to object files in
	sub-dirs.

1999-07-29  Olly Betts  <olly@muscat.co.uk>

	* ltconfig.in(cygwin mingw32, archive_expsym_cmds): Only compile
	and link ltdll.c if the libtool.m4 macros discovered that it is
	required.

1999-07-26  Olly Betts  <olly@muscat.co.uk>

	* libtool.m4(cygwin mingw32, AC_LIBTOOL_SETUP): Oops.  Fix some
	typos made by Evil Gary while (mis)applying my patch :-).

	* libtool.m4(cygwin mingw32, AC_LIBTOOL_SETUP):  On second
	thoughts, only probe for -mdll vs -dll on mingw, and revert to
	the old `-Wl,--dll -nostartfiles' on cygwin.

1999-07-24  Erez Zadok  <ezk@cs.columbia.edu>

	* doc/PLATFORMS (i*86-*openbsd2.5):  New platform.
	Slight reordering of other bsd entries.

1999-07-24  Olly Betts  <olly@muscat.co.uk>

	* NEWS: Note new user visible changes.
	* libtool.m4 (mingw32, AC_LIBTOOL_SETUP): probe for -mdll vs -dll
	under cygwin/mingw.
	probe whether the cygwin/mingw library supplies a stub DllMain
	(but this information isn't yet used).
	* ltconfig.in (mingw32, extract_expsyms_cmds): if HOST_CC is set,
	use that to build impgen so we can use it when cross-compiling.
	use correct entry points for mingw so static C++ constructors get
	called for code in the DLL.
	* ltmain.in (impgen.c): define O_BINARY to 0 if it is not in the
	system headers.

1999-07-24  Bert Driehuis <bert_driehuis@compuware.com>

	* ltconfig.in:  Updated bsdi4 soname specs to be more like
	linux as discussed on the bsdi mailing list.

1999-07-20  Gary V. Vaughan  <gary@gnu.org>

	* configure.in (AC_PROG_RANLIB):  No longer required as we now use
	AC_CHECK_TOOL in AC_LIBTOOL_SETUP.
	* libtool.m4 (AC_PROG_LIBTOOL):  Pass the $build variable to
	ltconfig.
	(AC_PROG_RANLIB): replaced with AC_CHECK_TOOL.
	* ltconfig.in (build): new variable to hold the build triplet
	which is now checked for unless --no-verify is specified.
	(--build): new argument to set the build triplet.
	(ranlib): Prefer ${host_alias}-ranlib[.exe] if $build is different
	to $host.
	* doc/libtool.texi (Invoking ltconfig): Document --build option.
	* NEWS: Note --build option.

1999-07-19  Erez Zadok  <ezk@cs.columbia.edu>

	* doc/PLATFORMS: Updated mostly *bsd platforms.

1999-07-19  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/libtool.texi (Porting inter-library dependencies): Typos
	Reported by Petter Reinholdtsen <pere@hungry.com>

1999-07-17  Thomas Tanner  <tanner@ffii.org>

	* NEWS, TODO: updated (pic flags)
	* libtool.m4 (AC_PROG_LIBTOOL): added --with-pic flag
	* ltconfig.in: new pic_mode variable and --prefer[-non]-pic flags,
	  fixed the strip check (reported by Keith Bostic <bostic@bostic.com>)
	* ltmain.in (compile mode): build only PIC/non-PIC code depending
	  on pic_mode
	* libltdl/README: document the supported dlopen interfaces
	* doc/libtool.texi (tests): documented new tests
	* tests/Makefile.am: added new tests
	* tests/demo-pic.test: new test to test --with-pic
	* tests/demo-nopic.test: new test to test --without-pic
	* tests/build-relink2.test: variant of build-relink.test that
	  uses depdemo

1999-07-09  Olly Betts  <olly@muscat.co.uk>

	* doc/libtool.texi (C++ Libraries):  fixed a typo.

1999-07-06  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha:  improved the release instructions to mention
	actual list addresses for announcements, and urls for upload
	locations.

1999-07-03  Thomas Tanner  <tanner@ffii.org>

	* doc/PLATFORMS: 1.3b passes all tests on cygwin

1999-07-03  Pavel Roskin <pavel_roskin@geocities.com>

	* ltconfig.in: finish_cmds for FreeBSD removed
	* depdemo/l3/Makefile.am: install libl3.la into an extra directory

1999-07-02  Gary V. Vaughan  <gary@gnu.org>

	* configure.in: bumped version to 1.3c.

	GNU libtool 1.3b was released.

	* NEWS: inserted todays date.

1999-07-02  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/PLATFORMS: Tested on as many platforms as possible for me.

1999-07-01  Thomas Tanner  <tanner@ffii.org>

	* NEWS: updated
	* doc/PLATFORMS: updated
	* changed my email address

1999-06-30  Thomas Tanner  <tanner@ffii.org>

	* demo/foo.h: use LT_PARAMS instead of LTDL_PARAMS (this is not libltdl)
	* tests/build-relink.test: also check for hardcode_into_libs = yes,
	  if set, we need to relink at install-time

1999-06-29  Thomas Tanner  <tanner@ffii.org>

	* NEWS: mention -no-fast-install, rename dummy to force
	* doc/PLATFORMS: 1.3b passes all tests on GNU/Linux,
	  FreeBSD (2.2.6 and 3.1)
	* doc/libtool.texi: it's possible to link libtool libraries
	  using -L and -l, better documentation of uninstall and clean mode,
	  rename dummy to force, documented -no-fast-install,
	  AC_LIBLTDL_* must be called before AC_PROG_LIBTOOL,
	  documented hardcode_into_libs and striplib/old_striplib,
	* ltconfig.in: search for strip program, added hardcode_into_libs
	  and striplib/old_striplib variables, set strip commands for GNU strip,
	  on FreeBSD >= 3.2 set hardcode_into_libs to yes,
	  fast-install mode doesn't work if hardcode_into_libs = yes
	* ltmain.in: reimplemented hardcoding into libraries:
	  new relink mode, preserve all libtool args, relink libraries
	  when installing if necessary
	  added -no-fast-install flag, removed unnecessary `dlname'
	  initialization, use striplib/old_striplib for stripping libraries,
	  dlname is always soname or in library_names so we don't need
	  to handle different file names

1999-06-29  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (freebsd*, shlibpath_overrides_runpath): Set to yes
	up to release 3.1, and to no from 3.2 on.
	Reported by Pavel Roskin <pavel_roskin@geocities.com>

1999-06-29  Pavel Roskin <pavel_roskin@geocities.com>, Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (freebsd*, shlibpath_overrides_runpath): Set to
	yes; tested on 3.1-ELF by Pavel and on 2.2.6 by Alexandre.

1999-06-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (linux-gnu*, deplibs_check_method): Use pass_all on
	alpha, x86 and sparc architectures by now, reverting to file_magic
	at least on ARM, where it breaks.

1999-06-23  Thomas Tanner  <tanner@ffii.org>

	* NEWS: updated
	* README: added GNU Hurd to the supported platforms
	* doc/libtool.texi: document `-dlpreopen dummy'
	  instead of `-dlopen dummy'
	* libltdl/ltdl.c (strchr): fixed typo (missing star)

1999-06-23  Stephan Kulow <coolo@itm.mu-luebeck.de>

	* libltdl/ltdl.c (strrchr): fixed typo (missing star)
	* libltdl/ltdl.c (trim): use `const' to silence -Wwrite-strings

1999-06-23  Olly Betts  <olly@muscat.co.uk>

	* ltmain.in (ltdll.c): Support for crosscompiling from linux to
	mingw32.

1999-06-23  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (cygwin, export_symbols_cmds): If there is already
	an extracted and compiled ltdll.c, then don't delete, reextract
	and recompile.
	(cygwin, archive_expsym_cmds): Make sure the ltdll source has been
	extracted and compiled before referencing the object, since there
	are paths through the code which run archive_expsym_cmds without
	running export_symbols_cmds.

1999-06-20  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in:  moved the test for NM after the test for
	no_builtin_flag.

1999-06-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in: Use sed '$q' instead of sed "" for copying ltmain,
	just in case some sed does not support an empty command.

	* ltconfig.in (link_static_flag, ac_cv_prog_cc_static): Use the
	latter in the test.

1999-06-18  Thomas Tanner  <tanner@ffii.org>

	* ltconfig.in (bsdi4, deplibs_check_method): use a less restrictive
	  regex (reported by Chris P. Ross <cross@eng.us.uu.net>)
	* ltmain.in: support `-dlopen dummy', define lt_preloaded_symbols
	  if dlself != no
	* doc/libtool.texi (Compile and Link mode): document it,
	  documented the -Wc, -Wl flags, libtool does also support non C
	  source code

1999-06-18  Teun Burgers  <burgers@ecn.nl>

	* ltconfig.in: CR/LF fix for broken DJGPP bash
	* ltmain.in: CR/LF fix for DJGPP

1999-06-18  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (outputname): When generating the executable wrapper
	script, $outputname already has the $exeext suffix, so we needn't
	add it again.

1999-06-16  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/configure.in (ac_cv_lib_dl_dlopen): missing "x" in test
	comparison corrected.

	* libltdl/ltdl.c (sys_wll_open): libltdl expects this function to
	fail if it is unable to physically load the library.  Sadly,
	LoadLibrary will search the loaded libraries for a match and
	return one of them if the path search load fails.  Simulate a
	failure in this case for compatibility with the other APIs.
	Also, LoadLibrary takes the liberty of adding `.dll' to library
	names passed without an extension, we now add a trailing `.' to
	prevent this from happening.

1999-06-15  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (sys_wll_close): Strangely enough, Microsoft have
	decided that LoadLibrary returns `0' for success, yet FreeLibrary
	returns `0' for failure!  The FreeLibrary call used to interpret
	`0' as success for both functions.

1999-06-14 Thomas Tanner  <tanner@ffii.org>

	* ltconfig.in: use eval when setting have_dlfcn_h, reformatting

1999-06-12 Thomas Tanner  <tanner@ffii.org>

	* ltmain.in: store old archives in deplibs and old_deplibs,
	  retain the order of dependency libraries (even old archives),
	  determining the absolute directory name didn't work due to a typo,
	  add the library search paths of all dependency libraries when
	  linking a library (fixes IRIX 5.2 bug)

1999-06-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in: Reverted June 6's patch for new GNU ld output, it
	is no longer needed, as ld reverted to the original format.
	* NEWS: Likewise.

	* ltconfig.in: When testing self-dlopening, test whether dlclose
	crashes.  On FreeBSD 3.1, it does.  :-(
	* libltdl/configure.in: Likewise.
	* NEWS: Note work-around.
	Reported by Pavel Roskin <pavel_roskin@geocities.com>

1999-06-09  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (exeext): autoconf's AC_EXEEXT uses "no" to indicate
	no extension, and we must do the same in order to share the cache
	value. Also we must ignore conftest.err which HPsUX (at least)
	fills with gratuitous warnings.
	(objext): for consistency, do the same as above.
	Reported by Pavel Roskin <pavel_roskin@geocities.com>

1999-06-09  Pavel Roskin  <pavel_roskin@geocities.com>

	* ltconfig.in (exeext): Use quotes in the test, to prevent a
	failure in sh.test.

1999-06-09  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in: Reordered tests to be more like configure.in's
	recommended order (programs first, then libraries, etc.).
	Performed a manual ``constant folding pass'' (eg: s/eval "test
	\"echo '$''{'lt_cv_dlopen'+set}'`\" != set/test
	"${lt_cv_dlopen+set}" != set/).
	s/test "${foo+set}" = "set"/test "X${foo+set}" = Xset/g

	* ltconfig.in (link_static_flag): Accept, in order of decreasing
	preference: the cached value; the default value for the current
	host.  Also test that the compiler accepts the flag, and cache
	that result too.

	* ltconfig.in (pic_flag): Accept, in order of decreasing
	preference:  the cached value; the default value for the current
	host.  Also test that the compiler accepts the flag, and cache
	that result too.

1999-06-08  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (LN_S): Accept, in order of decreasing preference:
	the cached value; an environment setting; ``ln -s'' if it works;
	``ln'' if ``ln -s'' doesn't appear to work.

	* ltconfig.in (objext): Accept, in order of decreasing preference:
	the cached value; the result of a test object compilation.

	* ltconfig.in (RANLIB): Accept, in order of decreasing preference:
	the cached value; an environment setting; the first file called
	``ranlib'' in the user's path.

	* ltmain.in (exeext): Use $exeext when working out the names of
	programs (but not the wrapper script itself due to a stupidity in
	win32 which hardwires the .exe extension to the binary loader!).
	* ltconfig.in (exeext): Now that the wrapper script tries to move
	executables, we need to know whether they have an extension (ala
	AC_EXEEXT).  Since we can't rely on AC_EXEEXT having been called
	in configure.in, we must be able to check for ourselves, though we
	can look for a cached result incase AC_EXEEXT was called.

	* ltconfig.in (cygwin, pic_flag):  Force separate compilation of
	objects for dlls vs. objects for static archives.  Using a cpp
	macro also allows us to decide whether or not we need to use
	dllexport/import declarations.

	* ltconfig.in (cygwin, need_version): Set to no, otherwise module
	dll's end up with mighty long names!

1999-06-06  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in: Support new GNU ld --help output format.
	* NEWS:  Likewise.
	Reported by Gaël Quéri <gael@baoule.dyndns.org> and
	H.J. Lu <hjl@varesearch.com>.

1999-06-05  Mark Kettenis  <kettenis@gnu.org>

	* ltconfig.in: Update support for the Hurd.  Make sure that the
	soname includes the major version number and create the	right
	links.  Allow shared objects without the `lib' prefix and without
	version information.

1999-06-02 Nick Rasmussen <nick@jive.org>

	* ltmain.in (link): use "$nonopt" as the compiler for
	  compile/finalize_command

1999-05-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* TODO: Remove the short list of people interested in C++
	constructors; it's not meaningful, since there are so many more
	people requesting this feature, and we just can't maintain it
	accurate.

1999-05-27  Pavel Roskin  <pavel_roskin@geocities.com>

	* ltconfig.in (GNU Hurd, deplibs_check_method): Use pass_all.

1999-05-27  Alexandre Oliva  <oliva@dcc.unicamp.br>, Olly Betts  <olly@muscat.co.uk>

	* ltmain.in: Expand convenience libraries when creating reloadable
	objects.
	* NEWS: Ditto.

1999-05-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS: Mention the two bugfixes below.

	* ltmain.in: Only create directory into which to extract
	convenience libraries when $convenience is not empty.  It would
	always be created on systems that did not support
	whole_archive_flag_spec.

	* ltconfig.in (export_symbols_cmds): Add $convenience.
	(cygwin, export_symbols_cmds): Ditto.
	* ltmain.in: Generate export symbol list before expanding
	convenience libraries, to avoid passing whole_archive_flag_spec to
	$NM.
	Reported by Godmar Back <gback@cs.utah.edu>

1999-05-27  David Jones  <jones@mosaid.com>

	* libltdl/ltdl.c (LTDL_BIND_FLAGS): Remove BIND_VERBOSE, to avoid
	printing error messages.

1999-05-26  Alexandre Oliva  <oliva@dcc.unicamp.br>

	GNU libtool 1.3.2 was released.

1999-05-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS: List fixed problems.
	* doc/PLATFORMS: Tested for 1.3.2.

	* config.guess: Synch with GNU common.

	* ltmain.in: Revert to stripping .exe on all platforms.
	* TODO: Note about this problem.  Demo is fixed on win32.  Support
	`empty' convenience libraries.

	* ltconfig.in (solaris*, ld_shlibs): Do not enable shared
	libraries with GNU ld 2.8.*, it's broken.  Emit a warning
	suggesting an upgrade.
	Reported by Brian Ford <ford@vss.fsi.com> and Ronald Pijnacker
	<Ronald.Pijnacker@best.ms.philips.com>

1999-05-25  Frank Ch. Eigler <fche@cygnus.com>

	* ltmain.in: file_magic check would not avoid cyclic links.

1999-05-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* depdemo/main.c, depdemo/l1/l1.c, depdemo/l2/l2.c: K&R-ize.
	* depdemo/l3/l3.c, depdemo/l4/l4.c: Likewise.

	* ltmain.in: Remove object files before writing to them, to avoid
	circular links.
	Reported by Ron O'Hara <rono@sentuny.com.au>

1999-05-24 Thomas Tanner  <tanner@ffii.org>

	* NEWS: support for installing stripped libraries using GNU strip
	* ltconfig.in: set deplibs_check_method=pass_all on FreeBSD,
	  Linux and Solaris since no one can reproduce the famous deplibs
	  bug
	* ltmain.in: preserve $CC (reported by Tom Tromey),
	  strip libraries using GNU strip if it's available and the
	  -s flag was passed to "install"

1999-05-23  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/PLATFORMS: Release 1.3.1 passes on GNU Hurd/x86.
	Reported by Pavel Roskin <pavel_roskin@geocities.com>

1999-05-23 Thomas Tanner  <tanner@ffii.org>

	* ltmain.in: strip off the .exe suffix only on *Win
	  (Reported by Matthew D. Langston <langston@SLAC.Stanford.EDU>)

1999-05-22 Thomas Tanner  <tanner@ffii.org>

	* NEWS: updated
	* TODO: -Wc, -Wl, implemented
	* AUTHORS: changed my email address
	* doc/libtool.texi: fix "wierd" typo :)
	* ltmain.in: linking against convenience libraries was broken,
	  implemented the "-Wc," "-Wl," "-Xcompiler" "-Xlinker" flag for
	  compiler and linker-specific flags,
	  add -lc before we do the deplibs check
	* ltconfig.in: linkopts -> compiler_flags for $CC and linker_flags
	  for $LD, link_all_deplibs=yes on IRIX

1999-05-22  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: insert todays date alongside 1.3.1 release.
	* Makefile.in: use gnu not gnits rules
	* config.guess: synch with gnu common & apply Takabatake-san's
	MIPS *000 patch.
	* config.sub: synch with gnu common.

1999-05-22  Doug Evans  <devans@casey.cygnus.com>

	* libltdl/configure.in (dlerror): Fix typo in dlopen found in -ldl
	test.

1999-05-21  Pavel Roskin  <pavel_roskin@geocities.com>

	* Makefile.am (EXTRA_DIST): Don't distribute instutils.
	(install-data-hook): use libltdl/Makefile.am's local-install files
	rule.
	* libltdl/Makefile.am (local-install-files):  New rule to install
	libltdl without creating links or mode 777 directories.
	* instutil/*: deleted.

1999-05-21  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/PLATFORMS: Updated to 1.3.1 for all platforms I've got.
	Added sparc-unknown-linux-gnu.

1999-05-21  Gary V. Vaughan  <gary@gnu.org>

	* demo/foo.h: s/PARAMS/LTDL_PARAMS/g
	* libltdl/ltdl.h: ditto.
	* libltdl/ltdl.c: ditto.

	* demo/foo.h: s/__P/PARAMS/g
	* libltdl/ltdl.h: ditto.
	* libltdl/ltdl.c: ditto.
	Reported by Akim Demaille <demaille@inf.enst.fr>

1999-05-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS: Updated docs.
	* TODO: Recommend libtool.m4 to be inserted in acinclude.m4. AIX
	4.3.2.0 no longer fails on static dlopening.  GNU DLD no longer
	has to support .la files, since libltdl already does.  Convenience
	libraries and reloadable objects should be tested in the
	testsuite.  We could support some amount of control on the soname
	of libraries.
	* doc/libtool.texi: Notes about convenience libraries and
	automake.  Documented INCLTDL.

1999-05-20 Thomas Tanner  <tanner@gmx.de>

	* cdemo/main.c: "Welcome _to_ ..."
	* mdemo/main.c: ditto
	* libltdl/configure.in: support multiple dlopening mechanisms
	  at once
	* libltdl/ltdl.c: prefix system dependent functions with "sys_"
	  to avoid symbol conflicts (libdld didn't work)
	* libtool.m4 (AC_LIBLTDL_*): set INCLTDL to the path of ltdl.h
	* ltconfig.in: check for dlopen with -ldl first

1999-05-19  Gary V. Vaughan  <gary@gnu.org>

	* NEWS: Added 1.3.1 news items.
	* doc/PLATFORMS: updated the boxes I have access to, to 1.3.1
	in preparation for the next release.

1999-05-18  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (cygwin*, whole_archive_flag_spec): dlltool chokes
	on this, so leave it unset in this case so that the ltmain code
	knows it has to unpack convenience archives by itself.

1999-05-17  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Do not exit when an unknown library name is passed
	passed in, simply warn and continue since some compilers require
	-LANG:* like options to work.
	Reported by Adam C. Powell, IV <adam.powell@nist.gov>

1999-05-17  Jiro Takabatake  <jiro@din.or.jp>

	* ltconfig.in: port to NEC UX/4800.
	* NEWS: updated.

1999-05-17  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (beos*, deplibs_check_method): set to pass_all.  BeOS
	is PIC by default.
	Reported by "Shawn T . Amundson" <amundson@gimp.org>

	* libltdl/configure.in: Fix test failures on AIX 4.3.2 by checking
	for dlopen *with* -ldl first.
	Reported by Greg Wooledge <ic5035%tss1crs.amgreetings.com@rose.amgreetings.com>

	* demo/foo.h: Don't set any declspecs until we have full dll
	support.

1999-05-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (solaris2.6, whole_archive_flag_spec): Do not use
	-Wl for allextract.

1999-05-14  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* instutil/chmod: New script to avoid chmod'ing files while
	installing libltdl's sources.
	* instutil/ln: New script to avoid hard-linking libltdl's sources
	in the install tree.
	* Makefile.am (EXTRA_DIST): Dist them.
	(instal-data-hook): Add srcdir/instutil to the beginning of the
	PATH before installing libltdl's sources.

1999-05-09  Gary V. Vaughan  <gary@gnu.org>

	* TODO: updated.

1999-05-06  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (install-data-hook):  make sure the install directory
	is not left world writable.
	Reported by Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

1999-04-30  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4: Use ifelse instead of if.
	Reported by David Mazieres <dm@amsterdam.lcs.mit.edu>

1999-04-29  Alexandre Oliva  <oliva@dcc.unicamp.br>

	GNU Libtool 1.3 was released.

	* NEWS: Summarize news from 1.2 to 1.3.

	* ltmain.in: Save exit status of link_command before removing
	symbol table object file.

1999-04-29  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS: updated my hpux-10.20 and cygwin box entries.

1999-04-29  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS: Improved support for DU and IRIX too.

	* config.sub, config.guess: Updated from GNU common.

	* mdemo/configure.in: Move AC_LIBLTDL_CONVENIENCE before
	AM_PROG_LIBTOOL, as suggested by autoconf.

	* doc/libtool.texi (Distributing libltdl): Document that -static
	may cause the same problems on libltdl as -all-static.
	* TODO: We might want to fix this in the future.

	* doc/libtool.texi: Clear up overfull hbox.

	* libltdl/Makefile.am (ltdl.lo): Add dependencies.
	* libltdl/configure.in: Clean up some duplicate defines.  Enable
	support for multiple dlopening mechanisms.
	* libltdl/acconfig.h: New file.  Add #undefs for defines that
	would be duplicated.

1999-04-29  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (cygwin*|mingw*, DLLTOOL, OBJDUMP, AS): Only expand the
	code that makes these configure time checks on hosts that need the
	tools *and* if the AC_LIBTOOL_WIN32_DLL macro is used.

1999-04-29  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (nlist, SYMFILE): Use outputname instead of output for
	names within output_objdir.

1999-04-28  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (AC_ENABLE_SHARED, AC_ENABLE_STATIC,
	AC_ENABLE_FAST_INSTALL): Do not call AC_BEFORE here, they're
	AC_REQUIREd by AC_LIBTOOL_SETUP.
	(AC_DISABLE_SHARED, AC_DISABLE_STATIC, AC_DISABLE_FAST_INSTALL):
	Call AC_BEFORE here, and now with two arguments, since these do
	change the default.
	(AC_LIBLTDL_CONVENIENCE, AC_LIBLTDL_INSTALLABLE): Fix calls to
	AC_BEFORE.

1999-04-28  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (ltconfig_enable_win32_dll): pass --enable-win32-dll to
	ltconfig if this is set.
	(AC_LIBTOOL_WIN32_DLL): New macro required for libtool to attempt
	a dll build on win32 hosts.
	* ltconfig.in (--enable-win32-dll): new flag for the cli.
	(cygwin*|mingw*|os2*, ltconfig_enable_win32_dll): if this is not set
	to yes, then do not attempt to build shared libraries.
	* doc/libtool.texi: document AC_LIBTOOL_WIN32_DLL.
	* NEWS: noted new macro.

1999-04-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (AC_LIBTOOL_DLOPEN, AC_ENABLE_SHARED,
	AC_ENABLE_STATIC, AC_ENABLE_FAST_INSTALL, AC_LIBLTDL_CONVENIENCE,
	AC_LIBLTDL_INSTALLABLE): Warn if they appear after
	AC_PROG_LIBTOOL.  AC_LIBTOOL_SETUP, actually.
	(AC_LIBTOOL_SETUP): Check whether DLOPEN support is to be enabled
	at autoconf time, not configure time.  Simplify code and
	improve (?) help message about --disable-libtool-lock.

1999-04-27 Thomas Tanner  <tanner@gmx.de>

	* NEWS: new clean mode
	* THANKS: added Ossama Othman
	* doc/libtool.texi: documented the new `clean' mode
	* ltconfig.in: set need_version=no on OSF (reported by
	  Marcus Sundberg <mackan@stacken.kth.se>)
	* ltmain.in: allow absolute non-existant -L paths,
	  always use output_objdir instead of objdir for temporary files,
	  delete generated temporary symbol lists,
	  don't add .la twice in the pseudo-library header,
	  implemented and documented clean mode (deletes libraries,
	  programs and object files and the files associated with them),
	  if build_libtool_libs=no and no static library is available,
	  try to link the program against the shared library,
	  don't add a statically linked library to the dependency_libs
	* ltmain.in (help uninstall): added a missing backslash
	  after echo (reported by Ossama Othman)

1999-04-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (old_archive_cmds): Iterate on oldobjs to find out
	which links to object files we must create.  Do not test for empty
	pic_flag to create such links.  Use objext when searching for
	object files extracted from convenience library.

	* ltconfig.in (compiler_c_o): Make sure the compiler does not
	create temporaries in the current directory when output should go
	elsewhere.  We must perform locking if it does.

1999-04-27  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (old_archive_cmds): Ensure that there are always .o
	objects available before running old_archive_cmds.

1999-04-26  Erez Zadok  <ezk@cs.columbia.edu>

	* doc/PLATFORMS: Updates for netbsd 1.3.3 and 1.4.

1999-04-26  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (aix4.[01], always_export_symbols): The case pattern
	would never match; fixed.
	Reported by Stephan Kulow <coolo@itm.mu-luebeck.de>

1999-04-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (OBJDUMP): Pass it to ltconfig.
	* configure.in: AC_SUBST DLLTOOL, OBJDUMP and AS.
	* Makefile.am (libtool, clibtool): Pass them to ltconfig.

1999-04-25  Frank Ch. Eigler  <fche@cygnus.com>

	* libtool.m4 (cygwin*): Look for target objdump tool.
	* ltconfig.in (cygwin*, file_magic_cmd): Use autoconf-located target
	objdump tool.  Track OBJDUMP like DLLTOOL and AS.

	* ltconfig.in (cygwin*, deplibs_check_method): Accept
	"architecture: i386" as optional suffix, for it is printed on a
	separate line sometimes.

	* ltmain.in (cygwin*, ltdll.c): Wrap DllMain declaration in extern "C".

	* ltmain.in (deplibs_check_method=file_magic): Redirect stderr to
	/dev/null, to suppress error messages from target objdump.

1999-04-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (irix*, soname_spec, library_names_spec): Missing
	dots before $versuffix and $major.

	* ltconfig.in (solaris*, whole_archive_flag_spec): Use -z
	allextract/defaultextract from Solaris 2.6 on.
	Reported by Brian Ford <ford@vss.fsi.com>

	* ltconfig.in (beos*, allow_undefined_flag): Do not build shared
	libraries with undefined symbols.

	* ltconfig.in (aix4*, allow_undefined_flag): Set to -berok.
	(aix4*, shared_flag): Set to -shared or ${wl}-bM:SRE.
	(aix4*, archive_cmds): Use -bexpall.
	(aix4*, archive_cmds, archive_expsym_cmds): Use shared_flag and
	allow_undefined_flag.
	(aix4*, always_export_symbols): Set to yes up to AIX 4.1.*,
	because -bexpall is supported from 4.2 on.
	Reported by Greg Wooledge
	<ic5035%tss1crs.amgreetings.com@rose.amgreetings.com>

	* ltconfig.in (hpux*, hardcode_minus_L): Set to yes.
	(hpux*, hardcode_libdir_flag_spec): Do not use +s by default.
	(hpux*, shlibpath_overrides_runpath): Set to no.

	* ltconfig.in (irix*, osf*, archive_cmds): Write so_locations
	within objdir.

	* ltconfig.in (irix*, soname_spec): Append $major.
	(irix*, library_names_spec): Add new soname.
	Reported by David Kaelbling <drk@sgi.com>

	* ltconfig.in (irix*, sys_lib_dlsearch_path_spec): /usr/local/lib
	is not searched by default.  /usr/lib is searched before /lib.
	* ltconfig.in (irix*, sys_lib_search_path_spec): /usr/lib is
	searched before /lib.

	* ltconfig.in (irix5*, need_lib_prefix, need_version): Set to no,
	by unifying with irix6*.

	* ltconfig.in (irix*, osf*, deplibs_check_method): Use pass_all.

	* ltconfig.in (old_LDFLAGS, old_LIBS): Save and write to comments
	in output file.

	* ltmain.in (prefer_static_libs): New variable, set to no by
	default, but set to yes by -static and -all-static.  Used instead
	of build_libtool_libs to decide whether to use a shared or static
	version of a library, when both versions are available.

1999-04-25  Boyd Lynn Gerber  <gerberb@zenez.com>

	* ltconfig.in (sco3.2v5*): Use LD_RUN_PATH for hard-coding.

1999-04-25  Pavel Roskin  <pavel_roskin@geocities.com>

	* Makefile.am (uninstall-local): Remove installed libltdl tree.

1999-04-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* demo/Makefile.am (hc-direct, hc-libflag, hc-libpath, hc-minusl):
	Added CFLAGS to link commands; SCO OSR needs it for -belf.

	* TODO: -Wl and -Wc options.

1999-04-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c: Remove trivial warnings.

1999-04-22  Frank Ch. Eigler  <fche@cygnus.com>

	* ltconfig.in: Correct sed expression that extracts symbols
	from cygwin def files.  Ignore demangled C++ names, if any.

1999-04-12  John David Anglin  <dave.anglin@nrc.ca>

	* libltdl/ltdl.c (shl_close): shl_t was correct here...
	(shl_sym): ... but we have to pass the handle by reference here.

1999-04-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/libtool.texi (Invoking ltconfig): Document environment
	variables used.

	* doc/libtool.texi (Invoking ltconfig): Document --cache-file.

	* doc/libtool.texi (Invoking ltconfig): Document
	--disable-fast-install, --enable-dlopen, --with-gnu-ld and
	--disable-lock.

1999-04-11 Thomas Tanner  <tanner@gmx.de>

	* libltdl/configure.in: check for shl_load in libdld
	* libltdl/ltdl.c (shl_close, shl_sym): use (shl_t *) instead of shl_t
	* ltconfig.in (check for gcc): removed a bogus line,
	  check for shl_load in libdld
	* ltmain.in: added a warning to the header of the .la file
	  to warn users against deleting the file,
	  link shared against static libraries if
	  deplibs_check_method == pass_all

1999-04-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (AC_PROG_LD, AC_PROG_NM): When looking for programs,
	try $ac_exeext too, so that they're found on DJGPP/MS-DOS.
	* ltconfig.in: Likewise.
	Reported by Robert S. Maier <rsm@math.arizona.edu>

	* ltconfig.in (Usage): Removed --enable-dlopen-self.
	Reported by Pavel Roskin <pavel_roskin@geocities.com>

	* ltconfig.in: Moved sysv4 before sysv4.*.
	(symcode): Brian's overrider is specific to sysv4, not sysv4*.

1999-04-09 Thomas Tanner  <tanner@gmx.de>

	* NEWS, README: Motorola System V 4 support
	* doc/PLATFORMS: added mk88-motorola-sysv4
	* ltconfig.in: installed patch from Brian Ford <ford@vss.fsi.com>
	  to support mk88-motorola-sysv4

	* doc/libtool.texi: some cleanups in the libltdl documentation

1999-04-07  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (--fallback-echo): Do not put an inline document and
	an exec in the same if construct; otherwise the inline document
	may not be removed.
	* ltmain.in (--fallback-echo): Likewise.
	Reported by John David Anglin <dave.anglin@nrc.ca>

	* dryrun.test: It would still fail at random times, because `cp'
	and `mv' are not guaranteed to preserve the timestamps of the
	installed files.  Instead of preserving them, just remove them
	before the dry uninstall test.  Redirect dry-run output to stderr,
	so that it can be easily separated from the regular output.

1999-04-07 Thomas Tanner  <tanner@gmx.de>

	* NEWS: support for moved libraries
	* libtool.m4: another DJGPP fix

1999-04-07  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/PLATFORMS: Updated to 1.3 for all platforms I've got.  I'll
	make sure 1.3 won't be released unless it passes all tests on
	those platforms.

	* doc/libtool.texi (Compile mode): Document potential problem and
	work-around for `-c -o dir/foo.lo'.

	* tests/dryrun.test: The constant modifications of libtool would
	cause main.o to be updated at the wrong time; the new approach is
	to modify the libtool script so that it enables dry run depending
	on whether an environment variable is set or not.  I've also moved
	`after' and `before' to a directory deep within $objdir, instead
	of creating it in ../tests.
	* tests/Makefile.am (CLEANFILES): Removed.

1999-04-06  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* tests/dryrun.test: We cannot rely on setting LIBTOOL, because
	automake may use sub-makes, and the setting will not be propagated
	to them on some makes.  Instead, create a dry version of libtool
	and switch between it and the original one before and after dry
	runs.
	* tests/Makefile.am (CLEANFILES): Added libtool-*, created by
	dryrun.test.

	* tests/dryrun.test: Use cmp instead of diff.
	(before, after): Create them within ../tests.
	(libtool): Set to `/bin/sh ./libtool' by default, but use LIBTOOL,
	SHELL and top_builddir from the environment if available.  For dry
	runs, use "$libtool -n".
	* tests/Makefile.am (CLEANFILES): Added before and after.
	* ltmain.in: Do not create links to object files in dry runs.

1999-04-06 Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: added a missing line of the ILD patch

	* NEWS: improved DJGPP support
	* doc/libtool.texi: removed hardcode_into_libs documentation
	* libtool.m4: some DJGPP fixes
	* ltconfig.in: ditto, reverted one of my previous patches: we need
	  to check for NM, removed the hardcode_into_libs support since
	  no platform seems to support it
	* ltmain.in: some DJGPP fixes, removed the hardcode_into_libs support

1999-04-05  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (netbsd*, GNU ld): Support a.out shared libraries

	* Makefile.am (CVS): allow command-line overriding of cvs

	* ltconfig.in (exclude_expsyms): Exclude _GLOBAL_OFFSET_TABLE_ by
	default, as most a.out platforms use it, and end up in trouble if
	we preload it, so it's safer to rule it out by default, and
	special case its removal from exclude_expsyms if someone ever
	complains.

1999-04-05 Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi: reorder tests to reflect execution order,
	  documented dryrun.test and depdemo*
	* ltmain.in (lt_preloaded_symbols): dry-run mode bugfix
	* tests/dryrun.test: new test to check whether the dry-run
	  mode works properly

	* demo/run.test: removed the unnecessary test
	* demo/Makefile.am: ditto
	* ltmain.in: set the DLL search path on cygwin,mingw and os2

1999-04-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (sunos4*, GNU ld): -Bstatic is not enough for
	deplibs.test to work with GNU ld; -Bshareable is needed here.

	* ltconfig.in (ld_shlibs, amigaos*): Disable shared libs with
	native ld too.

	* ltconfig.in (sunos4*, GNU ld): Reordered.

	* ltconfig.in (archive_cmds, sunos4*): Revert to -Bstatic; the
	native linker doesn't even support -Bshareable, only GNU ld does.
	Do not use `gcc -shared' in archive_cmds, it breaks deplibs.test.

	* ltconfig.in: if ld_shlibs=no, set can_build_shared=no too,
	otherwise it will just be disregarded.  This would cause
	netbsd/m68k with GNU ld a.out, and certainly many other platforms,
	to incorrectly believe that shared libraries were supported, while
	archive_cmds was empty, causing shared libraries not to be created

1999-04-03  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS: improved support for AIX and HP/UX

1999-04-03 Thomas Tanner  <tanner@gmx.de>

	* NEWS: updated
	* libtool.m4: check for main in libm instead of cos
	* ltmain.in: cosmetic fixes, don't try to link libraries only once
	  (although it's not necessary on many platforms and looks ugly...),

1999-04-02  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (convenience): fixed race condition when more than one
	library was linked with the same convenience library by
	uniquifying the extract directory.  It is now named after the new
	library *and* the old one, and lives in the objdir of the new one.

	* ltmain.in (-L*): do not abort just because a directory specified
	with -L does not exist; just warn and discard it

	* depdemo/l1/Makefile.am (AUTOMAKE_OPTIONS): no-dependencies
	* depdemo/l2/Makefile.am (AUTOMAKE_OPTIONS): ditto
	* depdemo/l3/Makefile.am (AUTOMAKE_OPTIONS): ditto
	* depdemo/l4/Makefile.am (AUTOMAKE_OPTIONS): ditto

	* ltconfig.in (archive_cmds, sunos4*): where we used -Bstatic, we
	should have been using -Bshareable

	* demo/Makefile.am (CLEANFILES): clean EXTRA_* from deplibs-check

	* libtool.m4 (LDFLAGS, LIBS): pass them to ltconfig, for the tests
	that involve linking
	* Makefile.am (LDFLAGS, LIBS, libtool, clibtool): ditto
	* tests/Makefile.am (CFLAGS, CPPFLAGS, LDFLAGS, LIBS): set
	(LDFLAGS, LIBS, TESTS_ENVIRONMENT): pass them down

1999-04-02  Erez Zadok  <ezk@cs.columbia.edu>

	* doc/PLATFORMS: 1.2f ok on various versions of hpux cc

1999-04-02  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (link_all_deplibs): set to unknown by default
	* ltmain.in: test != no, not = yes
	* doc/libtool.texi: document unknown

1999-04-01 Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi: documented deplibs.test

	* demo/Makefile.am: moved testsuite specific declarations to the end,
	  the deplibs check is now optional
	* libltdl/configure.in: read libtool --config only once,
	  merged AC_SYS_SYMBOL_UNDERSCORE+AC_SYS_NM_PARSE from libtool.m4
	* libtool.m4: AC_SYS_SYMBOL_UNDERSCORE+AC_SYS_NM_PARSE were not
	  used, lt_dlopen and silent may be empty, AC_SYS_LIBTOOL_CYGWIN
	  no longer necessary
	* ltconfig.in: NM is already checked in libtool.m4,
	* ltmain.in: always link all static dependency_libs
	* tests/Makefile.am: added deplibs.test
	* tests/demo-exec.test, demo-inst.test: removed hell0
	* tests/deplibs.test: new test to test the deplibs_check_method

1999-03-31 Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: always link a library before its dependency libs
	* mdemo/Makefile.am: test -export-symbols-regex

1999-03-30 Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi: fixed a typo
	* libtoolize.in: add the libtool scripts to libltdl.tar.gz
	* libtool.m4: don't AC_SUBST(USE_SYMBOL_UNDERSCORE),
	  AC_CHECK_LIBM sets LIBM, AC_LIBLTDL_INSTALLABLE doesn't work
	  when libltdl is already installed
	* *demo/Makefile.am: use LIBM
	* *demo/configure.in: AC_SUBST LIBM
	* libltdl/configure.in: use ac_cv_sys_symbol_underscore instead of
	  USE_SYMBOL_UNDERSCORE
	* ltconfig.in: added link_all_deplibs variable
	* doc/libtool.texi: document it
	* ltmain.in: always search for libname.la - don't eval libname_spec,
	  when linking libraries against static ones just print a warning
	  and add them to dependency_libs, add -lc before deplibs,
	  always link all dependencies of a static library or if
	  link_all_deplibs is yes, hardcode library paths if
	  hardcode_into_libs is no, don't link against dependency_libs
	  that already are deplibs

1999-03-30  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (aix4*, collect2name): make sure collect2 exists
	before running string on it, to avoid errors on old gccs
	Reported by Erez Zadok <ezk@cs.columbia.edu>

	* ltconfig.in (aix4*, hardcode_libdir_flag_spec): unless we're
	using gcc with old collect2, use -b libpath to hardcode the
	library search path

	* ltmain.in, ltconfig.in: reverted most of the quoting changes
	from 1999-03-25; Gary's delay_variable_subst patch from 1999-02-19
	obviates it.  Keep only quoting of $PATH, for uniformity with
	other systems that already did it

1999-03-29  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.c (lt_dladdsearchdir): Forgot to mallocate the
	extra byte of memory for the teminating NUL, and forgot to
	strcpy the original path in to the new memory before appending
	the new path compononent.

1999-03-27 Thomas Tanner  <tanner@gmx.de>

	* NEWS: updated
	* README: updated (BeOS support, no longer shared libraries
	  support for AmigaOS), cleanups, we have now two mailing lists
	* REAMDE-alpha: autogen -> bootstrap, we have now two mailing lists
	* THANKS: added Xavier Pianet
	* doc/PLATFORMS: BeOS works
	* doc/libtool.texi: we have now to two mailing lists,
	  updated -dlopen self documentation, documented libltdl's license,
	  put each author in a separate line,
	  inter-library dependencies on uninstalled libtool libraries are
	  now supported, cleanups and minor corrections
	* libltdl/COPYING.LIB: new file
	* libltdl/ltdl.[ch]: added special exception to the LGPL license
	* libtool.spec: removed, it was outdated
	* Makefile.am: removed libtool.spec
	* ltmain.in: use TMPDIR when possible, create a subdirectory
	  in the temporary directory, added -export-symbols-regex to the help,

1999-03-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* demo/Makefile.am: create a static library, link two libtool
	archives with it, then link the program hell0 with both
	* demo/hell1.c, demo/hell2.c: dummy files used to create the
	libtool archives without introducing symbol conflicts
	* tests/demo-exec.test, tests/demo-inst.test: run the new program
	* ltconfig.in (irix5*, irix6*, deplibs_check_method): pass_all

	* ltmain.in ($PATH): instead of modifying the PATH, better prevent
	its expansion the first time *_cmds variables are eval'ed.  Modify
	$show within loops that eval them so as to expand variables
	* ltconfig.in (*_cmds): quote $ so that they're not expanded by
	the first eval

1999-03-25  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in ($PATH):  Expand any tildes in the users path to the
	contents of $HOME to avoid problems with *_cmds splitting and
	evaluation.

1999-03-24 Thomas Tanner  <tanner@gmx.de>

	* TODO: support -dlopen for libraries
	* doc/PLATFORMS: Erez Zadok reported that libtool works on bsdi 4.0.1
	* doc/libtool.texi (libltdl): libltdl supports BeOS
	* libltdl/ltdl.c: shlib_ext was declared even if LTDL_SHLIB_EXT
	  didn't exist, partially reverted my previous patch: BeOS will
	  automatically search in ADDON_PATH
	* ltmain.in: don't allow relative run-paths, fixed a typo in a warning,
	  ignore -dlopen self for libraries and objects,
	  only accept -L paths that exist, minor cleanups,
	  bugfix: add -lc for normal libraries, not convenicence libraries
	  removed offensive warnings/comments

1999-03-24  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (ld_shlibs, amigaos*): disable shared libraries

1999-03-23  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/configure.in: the sed expression for finding the shared
	library extension used to think the . in [.] for the cygwin
	shared_library_names_spec was the start of the extension!!  We now
	remove anything in square brackets (assuming that the square
	brackets delimit a sed or expr expression which is not part of the
	extension) before looking for the extension.

	* TODO (cygwin):  food for thought re: mutually dependant dlls.

1999-03-21  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* tests/build-relink.test: if we relink and have hardcode_direct,
	removing an uninstalled library breaks an uninstalled program

	* doc/libtool.texi: documented convenience libraries
	* TODO: removed entry about it

	* tests/*-unst.test: if directory is not configured, skip it
	* tests/demo.test, tests/mdemo.test: unused, removed
	* tests/depdemo.test: ditto

1999-03-20 Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi (link mode): documentation for -module updated
	* ltconfig.in: fast-install mode doesn't work for
	  hardcode_into_libs=yes
	* ltmain.in: bugfix: "-dlopen self [-all]-static" wouldn't use
	  dlopen_self_static, automatically enable -export-dynamic when
	  using "-dlopen self",	always make run-paths absolute,
	  ignore -lc only on platforms that don't have such a library,
	  cleanups in the ILD code, find even installed libtool libraries
	  that were moved, before generating the DLL-import library we need
	  to set libname, improved hardcoding of shlibpath for libraries,
	  don't generate an installable pseudo-library for convenience
	  libraries, bugfix: export_symbols would be removed immediately
	  before it is used

1999-03-19 Thomas Tanner  <tanner@gmx.de>

	* use the same header in all configure.in's and Makefile.am's
	* NEWS: improved support for BeOS and Cygwin
	* TODO: ILD branch was merged, all internal variables and macros
	  are now documented
	* demo/Makefile.am: use $(LIBS) instead of -lm
	* doc/libtool.texi: documented new variable hardcode_into_libs
	  and thread_safe_flag_spec, renamed all AM_ENABLE/DISABLE_* macros
	  to AC_*, documented AC_DISABLE_FAST_INSTALL and AC_LIBTOOL_DLOPEN
	* libltdl/ltdl.c: added two new error messages (cannot_open_error,
	  cannot_close_error), use them where approriate,
	  BeOS support (thanks to Xavier Pianet), on BeOS search modules
	  additionally in ADDON_PATH
	* libtool.m4: rewrote AC_CHECK_LIBM: BeOS and Cygwin don't have
	  libm and *-ncr-sysv4.3* requires libmw
	* ltconfig.in: don't check for LoadLibrary, hardcode dlopen
	  configuration for BeOS and Cygwin
	* ltmain.in: fix sourcing of .la files on Solaris
	  (patch by Raja R Harinath)

1999-03-19  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (sunos4*, with_gnu_ld, hardcode_minus_L): remove,	we
	have -rpath
	(aix4*, without_gnu_ld, hardcode_shlibpath_var): unsupported is
	default
	(hpux9*, hpux10*, hpux11*, archive_cmds): drop +s, unneeded here
	(hpux9*, hpux10*, hpux11*, hardcode_libdir_flag_spec): add +s
	before +b
	(hpux9*, hpux10*, hpux11*, shlibpath_overrides_runpath): since +s
	appears before +b, set it to yes
	(hardcode_shlibpath_var, hardcode_action): do not use
	shlibpath_var to specify the compile-time search path; it loses,
	and we may end up linking with pre-installed older versions of
	libraries instead of yet-to-be-installed ones
	(*, hardcode_direct, hardcode_minus_L): remove entries that set
	them to no, that is default

	* demo/Makefile.am (hc-direct, hc-libpath, hc-minusL): link with
	$$hardcode_libdir_flag_spec, if available, with libdir=$(libdir),
	to make sure the hardcode_* variables will produce the expected
	results even in the presence of a hardcoding flag; depend on
	libhello.la having been installed already
	(hc-libflag): link with the installed library, but try to
	hard-code the uninstalled one
	* doc/libtool.texi: document the changes

	* tests/*.test: when a test fails, skip tests that depend on it.
	If a certain configuration is not supported, skip all its tests.

	* doc/libtool.texi: reorder tests to reflect execution order

	* tests/noinst-link.test: new test
	* tests/Makefile.am (TESTS): added noinst-link.test
	* doc/libtool.texi: document it

1999-03-19  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (dependency_libs): There is no reason to infer that
	the pseudo library is invalid if dependency_libs='' at
	install-time, or else libltdl/libltdl.la is invalid!!

1999-03-18  Thomas Tanner  <tanner@gmx.de>

	* merged my inter-library dependencies code from the ILD branch:
	* NEWS: inter-library dependencies are now supported
	* configure.in: add the depdemo subdirectory
	* depdemo/*: new demo to demonstrate inter-library dependencies
	* tests/depdemo*: new tests for depdemo
	* ltconfig.in: added hardcode_into_libs (whether library paths
	  should be hardcoded into the libraries),
	  it currently defaults to 'no'
	* ltmain.in: new internal 'relink' mode to relink libraries
	  on platforms with hardcode_into_libs=yes, save command line
	  arguments in libtool_args, accept relative -L directories,
	  ignore -lm on BeOS and Cygwin, always ignore -lc,
	  handle -l, -L and .la arguments later, always make the library
	  installation directory (-rpath) absolute, in relink mode don't
	  delete the not-relinked library and exit immediately after relinking,
	  try to find already-installed libtool libraries that were specified
	  using -l, support hardcoding of library paths into libraries too,
	  export shlibpath before linking libraries, and a lot of other
	  big changes that I don't want to describe here... please read
	  the source.

	* merged Gary's Win32 code from the ILD branch:
	* NEWS: Win32 DLLs are now supported
	* TODO: removed .a library namespace clash for win32.  It is
	  now resolved.
	* ltconfig.in (cygwin, library_names_spec):  removed $libname.a.
	  Creating a dll with libtool no longer creates an import library.
	* ltconfig.in (extract_expsyms_cmds): Create $objdir if it does
	  not exist -- i.e. we need to generate import an import library
	  in a directory which has no libs of its own.
	* doc/libtool.texi (old_archive_from_expsyms_cmds,
	  extract_expsyms_cmds): documented these new variables.
	* ltconfig.in (extract_expsyms_cmds): New variable.  Commands to
	  extract the exported symbol list from a dll.
	  (old_archive_from_expsyms_cmds): New variable.  Commands to build
	  an old archive from the extracted expsyms list.
	* ltmain.in: run the cmds in extract_expsyms_cmds and
	  old_archive_from_expsyms_cmds as necessary.
	* ltconfig.in (cygwin, old_archive_from_new_cmds): no longer
	  required.
	* ltconfig.in (cygwin, shlibpath_overrides_runpath): I'm not even
	  sure whether win32 honours the runpath at all when searching for
	  a dll to load!  Anyway, when set to yes this prevents a gratuitous
	  warning.
	* ltmain.in (deplib): The cygwin environment doesn't actually have
	  -lm, and although the linker fakes having one, specifiying it to
	  libtool will break ILD, so we ignore it when generating
	  dependencies.

1999-03-17  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS: Thanks to Alexandres changes below, both my
	hp boxes pass the entire test suite.

1999-03-17  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (hpux*, hardcode_minus_L): should be no, we have +b
	(hpux*, hardcode_libdir_separator): set to colon

1999-03-17  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/PLATFORMS: egcs is gcc; updates from Erez Zadok

1999-03-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (deplibs, beos*): don't append -lc
	Reported by Xavier Pianet <xavier@xingo.com>

	* tests/build-relink.test (hardcode_action): when set to relink,
	skip the test with lt-hell

	* Makefile.am (EXTRA_DIST): add mkstamp
	Reported by Xavier Pianet <xavier@xingo.com>

	* Makefile.am (EXTRA_DIST): add ChangeLog.0

1999-03-16  Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi: some minor corrections to the "-dlopen self"
	  documentation
	* tests/Makefile.am: sorted by name, added assign.test
	* ChangeLog: started new file

	* ltconfig.in: some cosmetical changes
	* ltmain.in: ditto

1999-03-15  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in, libtool.spec, NEWS: bump to 1.3a
	* Branched for release 1.3 (branch-1-3)
	* configure.in, libtool.spec, NEWS: bump to 1.2g

	* configure.in, libtool.spec: bump to 1.2f
	* doc/PLATFORMS: ditto
	* NEWS: libtool 1.2f released

	* ltmain.in: silence ``unbug'' :-) detected by sh.test

1999-03-14  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* TODO: we now use full pathnames for `file'

1999-03-14  Thomas Tanner  <tanner@gmx.de>

	* TODO: libltdl is now documented
	* doc/libltdl.texi (linking with installed libtool libraries):
	  fixed typo
	* doc/libltdl.texi (libltdl): added documentation for building
	  libtool modules and examples how to embed libltdl
	* ltmain.in: don't ignore user-specified run-paths (fixed it
	  at the right place)

1999-03-14  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (deplibs_check_method=none): discard -L and -R
	switches when testing whether deplibs contains some library

1999-03-14  Erez Zadok  <ezk@cs.columbia.edu>

	* config.sub: recognize hppa2.0w, yet to be installed at GNU

	* config.guess: minor update for FreeBSD-elf, yet to be installed
	at GNU

1999-03-14  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (bsdi4*, sys_lib_search_path_spec,
	sys_lib_dlsearch_path_spec): fix thinko in variable names; add
	standard directories

	* ltmain.in (exclude_expsyms): exclude symbols before sorting,
	otherwise only the sorted list will have them excluded

	* ltconfig.in (file_magic_cmd, file_magic_test_file, freebsd-elf*,
	bsdi4*): use full pathnames when possible

	* Makefile.am (all-recursive): depend on ACINCLUDE_M4_LIST
	(all-local, check-local): remove, unused

	* doc/PLATFORMS: updated platforms tested on 1.2f-pre; clean up;
	reorder; untabify

	* config.guess, config.sub: updated from GNU common

	* doc/libtool.texi: notes on thread-safety problems of
	libltdl/dlopen on GNU/Linux and FreeBSD

	* ltconfig.in (aix3*, aix4*): GNU ld on AIX is very broken: it
	cannot create working shared libraries.  Print a warning
	suggesting the user not to use it and disable shared libraries.

1999-03-13  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (global_symbol_to_cdecl): was reset before trying
	`symprfx=_', rendering the test with `_' useless

	* doc/libtool.texi (AM_PROG_LIBTOOL): eliminate overfull boxes

	* doc/libtool.texi: complete dlopening/libltdl documentation

	* ltconfig.in (osf3*, osf4*, deplibs_check_method): pass_all does
	not really work; use file_magic instead.
	(osf3*, osf4*): customize sys_lib_[dl]search_path_spec

	* ltconfig.in (file_magic_test_file): new variable; if set, it
	will be used as an argument for $file_magic_cmd to test whether
	the regex in deplibs_check_method matches its output
	(file_magic_cmd): use full pathnames whenever possible

	* ltconfig.in (sys_lib_dlsearch_path_spec): new variable, that
	lists the system *run-time* search path.  Listed directories are
	not implicitly hard-coded into executables.
	* ltmain.in: use it, but *never* discard -R flags
	* doc/libtool.texi: document it
	* NEWS: ditto
	Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

	* tests/sh.test: look for `$Xsed' without `$echo "X...'
	* ltconfig.in, ltmain.in: fixed a few such occurrences

	* ltmain.in (-static, -all-static): revert March 11's patch, I was
	barking up the wrong tree

1999-03-12  Thomas Tanner  <tanner@gmx.de>

	* libltdl/ltdl.c: removed FILENAME_MAX since LTDL_FILENAME_MAX
	  is sufficient and doesn't break HP/UX

1999-03-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in: (global_symbol_pipe) extract symbol tag from the
	output of NM too
	(global_symbol_to_cdecl): new variable; convert the output of
	global_symbol_pipe to valid C declarations; on HP/UX, convert
	text symbols to function declarations
	* libtool.m4: similar modifications
	* doc/libtool.texi: document new variable
	* ltmain.in: use global_symbol_to_cdecl to generate lt_dlpreopened
	symbols; avoid extracting symbol lists from dlpreopened files
	twice; do not filter symbols from dlpreopened libraries
	* TODO: fixed HP/UX dlpreopening problem

	* ltmain.in (-static, -all-static): set dlopen_self to
	$dlopen_self_static regardless of link_static_flag or pic_flag

	* ltmain.in: FreeBSD bug that needs symbol table compiled with
	-fPIC is fixed in release 3.1; use it only for 2.* and 3.0

1999-03-11  Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: when building a library it doesn't make
	  sense to remove a relinked program ("lt-" prefix)

1999-03-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* mdemo/main.c (main, test_dl, test_dlself): propagate error
	conditions better, to avoid false positives

	* */configure.in: AC_SUBST(LIBTOOL_DEPS)
	* */Makefile.am $(OBJECTS): depend on libtool
	(libtool): rebuild automatically

	* ltconfig.in: set dlopen_* variables to unknown when appropriate
	* ltmain.in: only emit warning about lack of AC_LIBTOOL_DLOPEN if
	*all* dlopen_* variables are set to unknown

1999-03-11  Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: delete the old output files (incl. the relinked binary)
	  before linking.

	* ltconfig.in: replaced `configure' with $progname and all
	  line numbers with @LINENO@

1999-03-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (strdup): cannot return str when it's NULL
	because of const correctness

1999-03-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (strdup): always use our own, because the
	standard strdup won't use lt_dlmalloc

	* ltconfig.in (dlfcn.h): function definition may cause warnings;
	define variable instead

	* ltmain.in: properly create an export file for a program,
	avoiding error messages about not finding it

	* TODO: need to document AC_LIBLTDL_*; static self dlopening
	problem fixed

	* libtool.m4 (AC_LIBTOOL_DLOPEN): just set lt_dlopen=yes
	(AC_LIBTOOL_SETUP): if lt_dlopen=yes, add --enable-dlopen to
	libtool_flags; drop --enable-dlopen-self
	* ltconfig.in: perform all the dirty work of testing for dlopening
	support, because we need platform-dependent equivalents for
	-export-dynamic, for self dlopening, and -static, for static self
	dlopening
	(dlopen_self_static): new configuration variable that is set to
	yes only if static programs can dlopen themselves
	* ltmain.in (-static, -all-static): dlopen_self=dlopen_self_static

	* libltdl/configure.in (libltdl_cv_need_uscore): do not assume
	dlfcn.h and LTDL_LAZY exist; use LTDL_GLOBAL and LTDL_LAZY_OR_NOW.
	This test is likely to fail if self-dlopening does not work,
	especially because we do not link the program with
	-export-dynamic.  Let's just hope that platforms whose symbol
	names start with underscores will also accept underscores for
	dlopen.  We should probably use libtool to compile and link this
	test, so that we can use -export-dynamic.

	* mdemo/Makefile.am (@LIBLTDL@): depend on ../libltdl/config.h

	* configure.in: fix AC_OUTPUT_COMMANDS for ltconfig and ltmain.sh
	so that they work if srcdir is relative too

	* libtool.m4 (AC_LIBLTDL_INSTALLABLE, AC_LIBLTDL_CONVENIENCE):
	avoid introducing multiple --enable options when re-running
	config.status
	* libltdl/configure.in: if enable_ltdl_* is not set, assume no
	* configure.in: if enable_ltdl_install is not set, enable it

	* libltdl/configure.in: only assume implicit installation if
	libltdl was libtoolized.  If not, print a warning message
	suggesting the use of --enable-ltdl-install or of one of the
	AC_LIBLTDL_* macros.

	* libtool.m4 (AC_LIBTOOL_SETUP): new macro, that does all the
	configure-work that AC_PROG_LIBTOOL used to do; add
	--cache-file=$cache_file to libtool_flags
	(AC_PROG_LIBTOOL): call AC_LIBTOOL_SETUP, save the cache, run
	ltconfig and reload the cache
	* configure.in: run AC_LIBTOOL_SETUP, then set LIBTOOL_FLAGS to
	libtool_flags
	* ltconfig.in: support --cache-file switch.  If it is used, load
	the cache in the beginning and save it just before terminating

	* tests/Makefile.am (TESTS): run demo-nofast before demo-shared

	* configure.in: create ltconfig and ltmain.sh at the end of
	config.status, if they do not exist.  This fixes the bootstrap
	problem reported by Erez Zadok <ezk@cs.columbia.edu>

1999-03-10  Thomas Tanner  <tanner@gmx.de>

	* NEWS: sorted by importance
	* Makefile.am: set LIBTOOL_FLAGS when generating libtool
	* configure.in: check for dlopen support and set LIBTOOL_FLAGS
	  accordingly

	* configure.in: fix spacing for --disable-ltdl-install,
	  always configure libltdl, add libltdl/acinclude.m4 to
	  ACINCLUDE_M4_LIST, disable installation of libltdl if necessary
	* libltdl/Makefile.am: set version info for libltdl.la
	* libltdl/configure.in: don't check whether
	  enable_ltdl_convenience/install was set so that libltdl
	  can be used as independent package (libltdl.tar.gz) without
	  the need to use --enable-ltdl*
	* libltdl/ltdl.c: minor cleanups, allocate the line cache
	  dynamically (lt_dlopen)

1999-03-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (lt_dlopen): some preprocessors choke if the `#'
	of `#define' is not in column 1; let's go back to fortran! :-)
	Add #undefs too, to avoid potential warnings or errors.

1999-03-09  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (AC_LIBLTDL_INSTALLABLE, AC_LIBLTDL_CONVENIENCE):
	renamed convenience libltdl, dropped toinst hack for installable
	* libltdl/Makefile.am: ditto
	* libltdl/configure.in: ditto; abort if none of the macros is used

	* ltmain.in: $output_objdir/$objdir/ -> $output_objdir/lt-

1999-03-09  Thomas Tanner  <tanner@gmx.de>

	* libltdl/ltdl.c (lt_dlopen): don't hardcode the length of the
	  constant strings

1999-03-09  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.am (install-data-hook): install libltdl as a directory,
	not as a tar-file, so that we do not modify the build tree at make
	install time
	* libtoolize.in (ltdl, ltdl_tar): update

	* configure.in, Makefile.am, NEWS: install libltdl by default

	* libtool.m4 (AC_LIBLTDL_INSTALLABLE, AC_LIBLTDL_CONVENIENCE):
	new macros
	* NEWS: ditto
	* libltdl/configure.in: if none of the new macros or configure
	arguments are used, warn and build convenience library only
	* libltdl/Makefile.am: conditionally build convenience libltdl.la
	* mdemo/configure.in: use AC_LIBLTDL_CONVENIENCE
	* mdemo/Makefile.am: refer to @LIBLTDL@

1999-03-09  Gary V. Vaughan <gary@gnu.org>

	* NEWS: updated.

1999-03-08  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in: extract symbols from program objects to nlist first,
	then translate them to the export_symbols format.  Now it works,
	but it appears to be needlessly extracting the symbol list from
	dlpreopened libraries twice

	* ltmain.in: temporarily disable dlopen_self when linking with
	-static or -all-static, until we figure out how to test whether it
	works at configure time

	* TODO: remember to fix this later

	* tests/build-relink.test: when hell is expected to fail, run it
	within a subshell and redirect stderr to stdout, so that dynamic
	linker errors are only printed in verbose mode

	* ltmain.in (hardcode_libdir_separator, compile_rpath,
	finalize_rpath): only substitute hardcode_libdir_flag_spec if
	hardcode_libdirs is non-empty

	* libtool.m4 (AC_LIBTOOL_DLOPEN): do not depend on the existence
	of dlfcn.h nor on the definition of RTLD_LAZY

	* tests/build-relink.test: hellT was renamed to lt-hell

	* libltdl/Makefile.am (@TOINST@/libltdl.la): do not hide the
	command that creates the TOINST directory; remove `-o $@' from the
	LINK command, $(LINK) already contains it.

1999-03-08  Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi (tests): documented demo-nofast.test and
	  renamed cdemo* to demo*

1999-03-08  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/Makefile.am, libltdl/configure.in, mdemo/Makefile.am:
	libltdl must not be renamed; if there's a problem with the install
	option, let's fix it, not just work around it by breaking code of
	users of the convenience library

	* tests/build-relink.test: link broken libhello.la with at least
	one libtool object

1999-03-08  Thomas Tanner  <tanner@gmx.de>

	* TODO: updated (libltdl build problem fixed)
	* doc/libtool.texi (libltdl interface): removed the line which
	  promised that lt_dlopen will return NULL if it can't resolve all
	  symbols
	* libltdl/Makefile.am, libltdl/configure.in: fixed build problem:
	  renamed the convenience library to libltdlc.la and the
	  installed version to libltdl.la
	* ltmain.in (wrapper script): replaced the "T" suffix of the program
	  file name with a "lt-" prefix
	* mdemo/Makefile.am: use libltdlc.la
	* tests/Makefile.am, tests/demo-nofast.test: added demo to
	  test --enable-fast-install=no

1999-03-07  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* tests/Makefile.am (TESTS): run hardcode before build-relink
	trashes libhello.la
	* tests/hardcode.test (need_prefix): set to yes so that _inst is
	not removed

	* ltmain.in (compile_command): append finalize search path to
	compile search path

	* tests/build-relink.test: new; check shlibpath_overrides_runpath
	* tests/Makefile.am (TESTS): add build-relink.test; remove
	hardcode.test duplicates
	* doc/libtool.texi: document it

	* ltmain.in (relink_command): do not prepend cd `pwd` to it, the
	scripts already enters the correct directory, and expanding the
	pathname would prevent the build tree from moving

	* ltconfig.in (enable_fast_install): force it to no only if we
	need relink; in the other cases, set it to needless
	* ltmain.in (fast_install): if needless, set relink_command empty
	* doc/libtool.texi (fast_install, shlibpath_overrides_runpath):
	document the new behavior

	* ltconfig.in (enable_fast_install): test whether it can be forced
	off after shlibpath_overrides_runpath and enable_shared are set

1999-03-07  Thomas Tanner  <tanner@gmx.de>

	* TODO: updated
	* NEWS: updated

	* TODO: scheduled some items for next release/future
	* demo/configure.in: use AC_LIBTOOL_DLOPEN
	* libtool.m4: added AC_ENABLE/DISABLE_FAST_INSTALL macro
	* ltconfig.in: added --disable-fast-install flag
	* ltmain.in: partially reverted Alexandre's patch and implemented
	  on-demand linking in such a way that the old developer-friendly
	  linking style is optional,
	  don't hardcode library paths that are in the system search path,
	  fixed a typo in lib_search_path,
	  implemented -export-symbols-regex for programs

1999-03-06  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (LTDL_LAZY_OR_NOW): renamed from LTDL_NOW; prefer
	LAZY loading because it's much faster and NOW is apparently
	partially broken on FreeBSD
	Reported by Archie Cobbs <archie@whistle.com>

	* ltconfig.in (archive_expsym_cmds, solaris, without_gnu_ld):
	$lib.exp already starts with $objdir/
	Reported by Godmar Back <gback@cs.utah.edu>

	* ltmain.in (freebsd): compile symbol table file with pic_flag
	only on FreeBSD and when not static linking; it's been causing
	trouble on platforms such as OpenBSD.

1999-02-26  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (cygwin): s/\\(mingw\\|cygwin\\)32/\\1/g.  Must've
	missed this file when I changed to cygnus' new sanction name.

	* ltconfig.in (sub_uncdrive): removed.  This won't work with
	the next version of cygwin.
	(sub_uncdir): removed. We use <drive>:/path/to/executable now.
	* libtool.m4 (AC_PROG_LD): removed sub_uncdrive and sub_uncdir.

1999-02-25  Thomas Tanner  <tanner@gmx.de>

	* TODO: added items for next alpha release, ILD etc.
	* libltdl/ltdl.c: removed unnecessary check from presym_sym,
	  fixed bug in lt_dlclose, allow lt_dlopenext(NULL),
	  set deplibs for lt_dlopen(NULL)

1999-02-24  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (file_magic_regex): sed `10q' is faster than `11,$d'

1999-02-22  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in (dlopen, dlopen_self): default is unknown
	* ltmain.in: fixed -dlopen self, print a warning
	  if -dlopen is used without AC_LIBTOOL_DLOPEN
	* mdemo/Makefile.am: use -dlopen self

1999-02-22  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in: added missing mkdir $progdir for on-demand executable

	* ltmain.in: create on-demand executable as $progdir/$$-$program,
	and rename it to $progdir/$program only when it's finished, to
	avoid race conditions.  We can still get the program linked
	multiple times, if multiple instances are started simultaneously
	and the program does not exist, but they are very unlikely to
	interfere with each other.  There's still a possibility that one
	process removes the $program another has just created, and doesn't
	replace it before the other tries to run it, in a system whose
	`mv' is not atomic, so it will $rm then $mv, but so what? :-)
	Locking files have been avoided to prevent dead-locks in case they
	are left over after a reboot or crash.

	* TODO: removed ILD, soon to be merged, and added convenience
	libraries docs

	* ltconfig.in (irix5*, irix6*, shlibpath_overides_runpath): yes

	* ltmain.in: remove on-demand executable in the proper place, and
	just warn if it can't be removed; add wrapper code to test whether
	the install-executable is newer than the build-executable, to
	relink it when it appears to be out-of-date

	* libltdl/configure.in: check for dld.h
	* libltdl/ltdl.c: include dld.h
	(dld_open) it's spelled memory_error, not no_memory_error
	Reported by Stefan Burstroem <f94sbu@efd.lth.se>

	* ltmain.in: fix typos in my last change (s/ocmpile/compile/)

1999-02-21  Thomas Tanner  <tanner@gmx.de>

	* libltdl/ltdl.c (lt_dlopen): use newhandle instead of handle
	  when dlopening the executable
	* libtool.m4 (AC_LIBTOOL_DLOPEN): removed the redundant "yes: "
	  prefix for lt_cv_dlopen, renamed lt_cv_dlopen_LIBS
	  to lt_cv_dlopen_libs (more consistent)
	* ltmain.in: implemented -dl[pre]open self, necessary for
	  lt_dlopen(NULL), generation of exported symbols was broken

1999-02-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in: avoid duplication of -L switches, it sometimes breaks
	IRIX 5.2's linker

	* ltconfig.in (freebsd*, finish_cmds): expand objformat here
	Reported by Vladimir Kushnir <kushn@mail.kar.net>

1999-02-20  Vladimir Kushnir <kushn@mail.kar.net>

	* ltconfig.in (freebsd-elf*, need_version, need_lib_prefix): no
	(freebsd-elf*, library_names_spec): add $libname.so instead of
	$libname.so$versuffix; add $libname$release.so

1999-02-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/libtool.texi: remove ticks from menu items; it breaks TeX
	Reported by Erez Zadok <ezk@cs.columbia.edu>

	* ltmain.in: fixes for export-symbols dry-run

	* ltconfig.in (shlibpath_overrides_runpath): new variable;
	determines whether LD_LIBRARY_PATH or equivalent can be used to
	override a hard-coded library search path; default to unknown
	(linux-gnu*): set it to no
	(solaris*, sunos4*): set it to yes
	* ltmain.in (build_libdirs_flags, build_libdirs, build_rpath): if
	shlibpath_overrides_runpath is not yes, arrange that wrapper
	scripts create, on demand, programs that use uninstalled libraries

	* doc/libtool.texi: document it

	* libtool.m4 (AC_LIBTOOL_DLOPEN): check for dlopen in libc before
	trying in dl.  Add the actual dlopening type to lt_cv_dlopen, and
	add any needed libraries to lt_cv_dlopen_LIBS.  Add test for
	MS-Windows' LoadLibrary.  Check whether a program can dlopen
	itself only if we really have dlopen(), not some equivalent
	function, but leave room for testing with other mechanisms.
	(AC_PROG_LIBTOOL): assume some form of dlopen, but not
	dlopen(NULL), is available if AC_LIBTOOL_DLOPEN is not used, for
	backward compatibility.

1999-02-20  Archie Cobbs  <archie@whistle.com>

	* libltdl/ltdl.c (lt_dlopen): use newhandle instead of handle
	where appropriate, when dlopening a non-libtool library

1999-02-19  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (export_symbols_cmds): renamed from
	export_symbols_cmd.
	(cygwin, mingw): Be sure to compile the ltdll.c object before
	extracting the exported symbol list.  Extract only the names
	of the exported symbols from the def file [otherwise we might
	run into trouble with -export-symbols-regex].
	(archive_expsym_cmds): Regenerate the def file from the symbol
	export list.
	(delay_variable_subst): New sed expression to allow us to delay
	evaluation of $foo in a double_quote_subst evaluated variable by
	using \$.
	* ltmain.in (export_symbols_cmds): evaluate each ~ delimitted cmd
	separately.
	* doc/libtool.texi (libtool script contents): new paragraph to
	explain the difference between _cmd and _cmds suffixes for
	variable names.
	(export_symbols_cmds): renamed from export_symbols_cmd.

1999-02-18  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (ld_shlibs): move -soname and similar flags to the
	end of archive_cmds and archive_expsym_cmds, so as to prevent
	gcc's collect2 from inserting an object file between -soname and
	the library name

	* ltconfig.in (openbsd*, netbsd*, library_names_spec): append
	alternate name without ${release}, otherwise build fails when
	-release is used

1999-02-18  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (archive{,_sym}_commands): Be careful not to
	re-export the dll entry points DllMain@12, _cygwin_dll_entry@12 and
	_cygwin_noncygwin_dll_entry@12 to avoid bugs with the wrong entry
	function being called with inter-dll dependencies.
	Reported by DJ Delorie <dj@delorie.com>
	* THANKS: Added DJ Delorie, since his code inspired the impgen.c
	program and because he has patiently answered all of the
	irritating dll and win32 questions I have fired at him.

	* ltmain.in (version_type):  Oops.  Irix versioning implies that
	major version numbers are 1 based (not zero based).  Fixed.

	* ltmain.in (version_type): Implement irix versioning.
	* ltconfig.in (irix{5,6}*): Use new irix shared object versioning.
	* TODO: remove irix versioning from TODO list.

	* ltmain.in (impgen.c): Added a new embedded C file that can be
	used under win32 to extract a def file (symbol export list) from a
	dll that has none.  Code to use it might need to wait for the ILD
	merge before it will be useful...

1999-02-18  Thomas Tanner  <tanner@gmx.de>

	* TODO: updated
	* autogen: only libltdl needs autoheader
	* doc/libtool.texi (link mode): documented -export-symbols-regex
	  and updated -export-symbols
	* doc/libtool.texi (script contents): documented
	  always_export_symbols, export_symbols_cmd, exclude_expsyms,
	  include_expsyms, dlopen and dlopen_self
	  more detailed description of need_lib_prefix
	* ltconfig.in: a "'" was missing in the default value
	  of export_symbols_cmd
	* ltmain.in: implemented -export-symbols-regex

1999-02-17  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in: (freebsd2*, sunos4*, exclude_expsyms): exclude
	_GLOBAL_OFFSET_TABLE_
	* ltmain.in: implement exclude_expsyms with egrep

	* libltdl/ltdl.c (lt_dlmalloc, lt_dlfree): SunOS' cc can't cope
	with argument lists, we __P even in the definition

1999-02-15  Thomas Tanner  <tanner@gmx.de>

	* cdemo/Makefile.am: renamed *foo1 to *foo, removed $(MATH_LIB)
	* cdemo/foo1.c: renamed to foo.c
	* libltdl/ltdl.c: eliminated lt_dltype, in presym_open():
	  search for @PROGRAM@ if filename == 0, in lt_dlopen():
	  fixed bug for filename == 0
	* libltdl/ltdl.h: use __P macro for lt_dlmalloc/free
	* libtool.m4: new macro AC_LIBTOOL_DLOPEN: checks for dlopen
	  and dlopen(NULL) support
	* ltconfig.in: added new variables dlopen and dlopen_self,
	  --enable-dlopen[-self] flags for AC_LIBTOOL_DLOPEN
	* ltmain.in: use dlopen[_self], dlpreopen files if there's no
	  dlopen support, build lt_preloaded_symbols only if
	  -dl[pre]open was used, include program symbols if -export-dynamic
	  was specified and there's no dlopen(NULL) support
	* mdemo/configure.in: use AC_LIBTOOL_DLOPEN
	* mdemo/main.c: demonstrate lt_dlopen(0)

1999-02-15  Gary V. Vaughan  <gary@gnu.org>

	* demo/dlmain.c (_WIN32): The lt_symlist structure is now const,
	so my original horrible temporary win32 hack no longer worked.
	Here is a new horrible temporary hack to prevent helldl from SEGVing
	on win32.  I will fix this properly when we figure out how to do
	data exports from dlls.

1999-02-14  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (AC_CHECK_LIBM): do not set MATHLIB or AC_SUBST it,
	this has a negative side-effect of causing automake to add MATHLIB
	to every single Makefile.  Let's use plain AC_CHECK_LIB, so that
	LIBS get set, until we find a better alternative
	* *demo/Makefile.am: remove $(MATHLIB)

	* libltdl/configure.in: add a DESCRIPTION argument to AC_DEFINEs
	where appropriate, so as to get rid of acconfig.h
	* libltdl/acconfig.h: removed

1999-02-13  Thomas Tanner  <tanner@gmx.de>

	* *demo/Makefile.am: use $(MATHLIB)
	* *demo/configure.in: use AC_CHECK_LIBM
	* doc/libtool.texi: renamed file_magic_command to file_magic_cmd,
	  renamed archive_sym_cmds to archive_expsym_cmds
	* ltconfig.in: ditto
	* ltmain.in: ditto
	* libltdl/ltdl.c: use lt_dlmalloc/free
	* libltdl/ltdl.h: define lt_dlmalloc/free
	* libtool.m4: added AC_CHECK_LIBM macro
	* ltconfig.in: renamed archive_sym_cmds to archive_expsym_cmds,
	  added always_export_symbols, export_symbols_cmd, exclude_expsyms,
	  include_expsyms, removed archive_cmds for cygwin/mingw and AIX,
	  on Solaris store the exported symbols list in objdir
	* ltmain.in: allow -export-symbols for modules, use thread_safe flag,
	  add include_expsyms to the exported symbols

1999-02-12  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/ltdl.h (_LTDLL_EXTERN): libltdl is no longer linked as a
	shared library, so the _declspec's were preventing the linker from
	resolving symbols on win32.  They have been removed now.

1999-02-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in: don't try to read objdir/libname.la before it is
	created!

	* ltmain.in: create libname.lai at link time, not at install time,
 	but still create it at install time if it is missing
	Reported by Akim Demaille <demaille@inf.enst.fr>

	* libltdl/ltdl.c (tryall_dlopen): strcmp filenames was reversed

1999-02-11  Thomas Tanner  <tanner@gmx.de>

	* autogen: libltdl needs autoheader
	* demo/Makefile.am: renamed hell.debug to hell.static
	  (we're demonstrating static linking, not debugging)
	* tests/demo*: ditto
	* doc/libtool.texi (libltdl): documented new lt_dlopen(NULL)
	  feature
	* libltdl/acconfig.h: required for config.h
	* libltdl/configure.in: use config.h
	* libltdl/ltdl.c: use config.h, support lt_dlopen(NULL)
	  (returns a handle for the program itself)
	* ltconfig.in: minor reformatting
	* ltmain.in: in lt_preloaded_symbols always define
	  the program's symbols first, for -export-dynamic list all
	  program symbols together, -export-symbols was broken for
	  programs, minor reformatting
	* mdemo/Makefile.am: renamed mdemo.debug to mdemo.static
	* tests/mdemo*: ditto, mdemo.test was completely broken

1999-02-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (irix5*, irix6*, osf3*, osf4*): do not use
	-set_version in archive_cmds if verstring is empty
	(irix6*, shlibpath_var, sys_lib_search_path-spec,
	deplibs_check_method): set appropriate values depending on
	selected ABI, -32, -n32 or -64, as set in LD by libtool.m4
	(uts4*): remove dot between .so and versuffix

1999-02-08  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (irix5*, irix6*, deplibs_check_method): use
	file_magic for inter-library dependency tracking

	* ltconfig.in (irix5*, hardcode_libdir_separator): set it to a
	colon, because on IRIX 5 only the last -rpath switch prevails, and
	it can be a list of colon-separated directories.  This change will
	affect irix6 too, but that's not a problem.

	* ltconfig.in (irix5*, library_names_spec): add soname_spec,
	otherwise we can't dlopen

1999-02-08  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: according to Marcus Sundberg <mackan@stacken.kth.se>
	  HP/UX, IRIX, OpenBSD, Digital Unix and SunOS support
	  need_version=no and need_lib_prefix=no,
	  fixed a bug in Solaris' archive_sym_cmds

1999-02-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (ac_cv_sys_global_symbol_pipe): accept TAB in
	addition to space as separator, and allow more than one space
	between the symbol code and the symbol name; HP/UX's nm, for
	example, uses two spaces
	* ltconfig.in (global_symbol_pipe): ditto
	(bsdi4, deplibs_check_method): variable name was misspelled
	* libltdl/configure.in (libltdl_cv_preloaded_symbols): rewrite
	test, so as not to depend on the way global_symbol_pipe is
	initialized; the current test would get false positives, as
	global_symbol_pipe was initialized `x=""', not `x='

	* libltdl/ltdl.c (find_module): initialize filename if dir is NULL
	Reported by Godmar Back <gback@cs.utah.edu>

1999-02-04  Godmar Back  <gback@cs.utah.edu>

	* libltdl/ltdl.c (lt_dlopenext): missing space for terminator when
	allocating memory for shlib_ext

1999-02-03  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (lt_dlopenext): tmp would be trashed if shlib_ext
 	was longer than 3 characters

1999-02-02  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in: new config.guess returns *-*-cygwin now instead of
	*-*-cygwin32.  sed -e 's%\(cygwin\|mingw\)32%\1%g' ltconfig.in
	* ltmain.in:   sed -e 's%\(cygwin\|mingw\)32%\1%g' ltmain.in

	* ltconfig.in (hardcode_libdir_flag_spec, allow_undefined_flag,
	archive_cmds, archive_sym_cmds, old_archive_from_new_cmds):
	removed duplication of config by assuming that `test $with_gcc =
	yes' implies gnu ld, otherwise MSVC++ (which I haven't tested
	since I inheritted the code from Ian Lance Taylor btw!) is implied.

1999-01-28  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in: Reverted this change of Alexandre's from the
	1999-01-25; "don't try to use .o instead of .lo just because
	there's no PIC flag.  It loses if --disable-static, and there's
	not much point if we're referring to the same file anyway...",
	because not all linkers will accept .lo object names.
	* ltmain.in: In the case where --disable-static is specified (as
	noted in Alexandre's log entry), we just link some .o files to
	prevent the original error.
	Reported by Andrey Slepuhin <pooh@msu.ru>

1999-01-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtoolize.in: search for A[MC]_PROG_LIBTOOL, not
	AM_PROG_LIBTOOL
	Reported by Jeff Garzik <jgarzik@pobox.com>

1999-01-27  Gary V. Vaughan  <gary@gnu.org>

	* THANKS: Now that we have a policy, applied it to the existing
	list.  This in no way demeans the work of those people removed
	from the THANKS file, who are still credited in the ChangeLogs and
	without who's work, libtool would not work so well on many
	platforms, but serves to highlight the outstanding and continued
	contribution the remaining people have made.  And I quote, "We
	reserve THANKS for people who have made major contributions, and
	leave the credit to the others for the ChangeLog only."

	* THANKS: added Sam Vilain.
	* ltconfig.in ($echo):  When using printf to replace echo the shell
	expands %s\n to %sn.  Changed to use "%s\n" (with quotes).
	Reported by Sam Vilain <sam.vilain@nz.unisys.com>

1999-01-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (find_file): fix endless loop condition
	(find_module): filename allocation was off by 1

	* libltdl/Makefile.am (distclean-local): renamed from
	distclean-hook, that didn't work

	* libltdl/ltdl.c (lt_dlopen, non-.la): find_file now returns 0 on
	failure

	* Makefile.am (ltconfig, ltmain.sh): some broken makes don't like
	macros in targets; replace $(srcdir) with @srcdir@
	* configure.in (ACINCLUDE_M4_LIST): same problem; expand $srcdir

	* libltdl/Makefile.am (@TOINST@/libltdl.la): if installation is
	enabled, create to-be-installed libltdl.la within @TOINST@
	directory
	(noinst_LTLIBRARIES): even if installation is enabled, build
	convenience libltdl.la, otherwise builds of random packages may
	fail if the user happens to enable installation
	(distclean-hook): wipe out $(TOINST)
	* libltdl/configure.in: set TOINST and LIBLIBS as appropriate;
	don't set NOINSTLIBS any more
	* mdemo/Makefile.am: use libltdl.la

	* libltdl/ltdl.c (find_file): oops, filenamesize was miscomputed

	* libltdl/ltdl.c (find_file): allocate filename dynamically

	* libltdl/configure.in (AC_PROG_LIBTOOL): automake does not
	recognize it and fail, better keep using AM_PROG_LIBTOOL until the
	next release of automake
	* demo/configure.in, cdemo/configure.in: ditto
	* depdemo/configure.in, mdemo/configure.in: ditto

	* libltdl/ltdl.c: make all global strings char[], not char*; check
	that all calls to malloc() are properly cast
	(strdup, strchr, strrchr, trim, free_vars): declare as inline
	(find_module): allocate filename dynamically; support null dir
	(free_vars): free dir and name only if non-null
	(lt_dlopen): keep dir as NULL if not given; fix expression that
	calculated the size of name; only free and name if non-null
	(lt_dlopenext): allocate tmp dynamically

	* configure.in (pkgdatadir): expand ${PACKAGE} at configure-time,
	just like automake does

	* configure.in (pkgdatadir): define pkgdatadir explicitly, and
 	comment that automake does not need it, but libtoolize does

	* Makefile.am (aclocaldir): do not set it explicitly, automake
	does already

	* configure.in (TIMESTAMP): use mkstamp here too

1999-01-27  Thomas Tanner  <tanner@gmx.de>

	* cdemo/configure.in: renamed AM_PROG_LIBTOOL to AC_PROG_LIBTOOL
	* demo/configure.in: likewise
	* depdemo/configure.in: likewise
	* libltdl/configure.in: likewise
	* mdemo/configure.in: likewise
	* libltdl/ltdl.c: in find_module() check whether libdir is defined,
	  tryall_dlopen(): move deallocation of an already opened handle
	  to lt_dlopen(), allocate the directory in lt_dlopen() dynamically,
	  minor cleanups, fixed memory leak (name)
	* libtool.m4: renamed all AM_ macros to AC_ and added aliases for
	  compatibilty, updated AC_SYS_NM_PARSE (no undefined symbols,
	  don't count the symbols)
	* ltconfig.in: added thread_safe_flag_spec (not used yet),
	  added generic variable for linker options "linkopts" in
	  all archive_cmds
	* ltmain.in: added -thread-safe flag (unused)

1999-01-26  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (LTCONFIG_VERSION): damn!, adding TIMESTAMP doesn't
 	always work, because then different ChangeLog timestamps fail to
 	pass the version test.  Instead of forcing both ltconfig and
	ltmain.sh to be updated every time ChangeLog changes, better
	revert it

	* ltconfig.in (LTCONFIG_VERSION): add TIMESTAMP, remove
	explicit quotes and add it to the list of variables to quote

	* ltmain.in: reworded `dropped inter-library dependencies'
	message, and added a warning about inter-library dependencies even
	for non-module builds

1999-01-26  Gary V. Vaughan  <gary@gnu.org>

	* Makefile.am (install-data-hook): Don't show the if expression
	that tests for gzip with a conditional error message; just do it
	quietly and show the error if it fails, or the next action if it
	succeeds.

	* configure.in:  It seems Alexandre accidentally removed the
	AC_SUBST(pkgdatadir) line recently which breaks libtoolize.
	Reverted that small change.

1999-01-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (find_module): test old_name and dlname for NULL,
	not len==0

	* libltdl/configure.in (libltdl_cv_objdir): yes, appending the "/"
	in configure.in was much simpler
	* libltdl/ltdl.c (objdir): ditto

	* libltdl/ltdl.c (objdir): string collation isn't portable; strcat
	"/" explicitly.  Or should this be moved to configure.in?

1999-01-25  Thomas Tanner  <tanner@gmx.de>

	* libltdl/ltdl.c: allocate the variables in lt_dlopen() dynamically

1999-01-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (file_magic): use egrep instead of expr to support
	more general regular expressions
	(file_regex): remove it; the name is misleading, it's not used
 	anywhere, and probably will never be
	* ltconfig.in, doc/libtool.texi: ditto
	* ltconfig.in (linux-gnu*, deplibs_check_method): extend regex to
	support `LSB dynamic lib' in the output of `file'
	Reported by Scott D. Heavner <sdh@po.cwru.edu>

	* ltmain.in (dependency_libs, xrpath): add -R switches to
	dependency_libs only just before creating the .la file; they
	should not be passed to the C compiler or linker at
	library-creation time, since we don't know whether it is supported

	* ltconfig.in (freebsd2.2*, hardcode_minus_L): for FreeBSD 2.2.6,
	this must be `no'

	* mkstamp: move the sed script to extract revision and date
	information into a separate shell-script, so that we can break
	lines between commands; FreeBSD's sed doesn't like `;' after `t'
	Reported by Axel Thimm <Axel.Thimm@physik.fu-berlin.de>
	* Makefile.am: use mkstamp
	* THANKS: added Axel Thimm

	* ltmain.in: don't try to use .o instead of .lo just because
	there's no PIC flag.  It loses if --disable-static, and there's
	not much point if we're referring to the same file anyway...

	* ltmain.in (pass_all=none, droppeddeps): set only if deplibs was
	non-empty

1999-01-24  Thomas Tanner  <tanner@gmx.de>

	* libltdl/ltdl.c: minor bugfixes, append a "/" the search
	  directory only if necessary
	* ltconfig.in: added support for FreeBSD >= 3.0
	  (patch from Kurt D. Zeilenga)
	* THANKS: added Kurt D. Zeilenga

1999-01-24  Thomas Tanner  <tanner@gmx.de>

	* doc/libtool.texi (libltdl): list supported dlopen mechanisms,
	  added function lt_dlopenext(), removed reference to
	  LTDL_PRELOADED_SYMBOLS in LTDL_SET_PRELOADED_SYMBOLS
	* libltdl/ltdl.c: partially reverted Alexandre's dynamic string
	  allocation change (it was not necessary and the code was unreadable),
	  cleanups, removed usr_search_path_size, renamed usr_search_path
	  to user_search_path, in find_module() also check for moved
	  modules, merged find_file() and find_library(),
	  added lt_dlopenext(), in lt_dladdsearchdir() no longer reset
	  the search path if 'search_dir' == NULL and don't use realloc()
	  (might not be available on all platforms),
	  removed __P((void)) in the declaration of lt_dlgetsearchpath()
	* libltdl/ltdl.h: added lt_dlopenext()
	* ltconfig.in: AIX archive commands were broken,
	  fixed a MAJOR bug in global_symbol_pipe which caused
	  "demo-shared.test;demo-make.test" to fail (libtool must not extract
	  undefined symbols of libraries, i.e. symcode must not contain 'U')
	* tests/Makefile.am (clean-local): "make distclean" in cdemo, too

1999-01-22  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.am (ltconfig, ltmain.sh): add ChangeLog Revision to
	TIMESTAMP
	* configure.in: get values of PACKAGE and VERSION set by
	AM_INIT_AUTOMAKE, and extract only TIMESTAMP from the ChangeLog

	* libltdl/ltdl.c (lt_dlopen): if we're reusing a previously opened
	handle, don't reset its name nor add it to the list, and free the
	name we have allocated
	Reported by Edouard G. Parmelan <Edouard.Parmelan@France.NCR.COM>

	* Makefile.am (ltconfig, ltmain.sh, TIMESTAMP): let's not assume
	anything about the format of the date, just that it does not
	contain `$'

1999-01-22  Gary V. Vaughan  <gary@gnu.org>

	* configure.in (date): echo the version number during
	configuration, and show $date for cvs versions.

	* Makefile.am ($(srcdir)/ltconfig): Oops.  cvs co keyword
	expansion ate the sed expression! Changed sed separator to '%'
	because there are '/' in the date.  Added missing '\(' to search
	expression.  Inserted a null string to stop cvs from expanding it
	next time =)O|
	($(srcdir)/ltmain.sh): ditto.

1999-01-22  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.am (TSDEPS_DIST): dist-time dependencies for timestamps
	(timestamps, update-timestamps): check whether TSDEPS_DIST are
	up-to-date and update ltconfig and ltmain.sh if needed
	(ltconfig, ltmain.sh): depend on TSDEPS; replace @TIMESTAMP@ with
	the Date tag in the ChangeLog
	(TSDEPS): empty unless overridden by update-timestamps
	* ltconfig.in, ltmain.in (TIMESTAMP): append timestamp to most
	references to VERSION

1999-01-22  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (ild): Revert the change which allowed libtool to
	link libraries with dependencies on .la libs.
	* NEWS: Removed reference to win32, incase 1.3 ships before
	ild is ready.
	* doc/PLATFORMS: Removed i686-pc-cygwin32, for the same reason.
	* doc/libtool.texi: Removed win32 refs, for the same reason.

1999-01-22  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (Xsed): add 1 to Xsed definition that goes into
	temporary wrapper scripts
	* libtool.m4: we don't have Xsed here, expand it manually
	Reported by Pavel Roskin <pavel_roskin@geocities.com>

1999-01-22  Edouard G. Parmelan  <Edouard.Parmelan@France.NCR.COM>

	* ltmain.in (finalize_hardcode_libdirs, finalize_rpath): in
	platforms that use -rpath, programs must be finalized at
	installation time, otherwise build-tree programs will
	prefer installed libraries over build-tree ones

1999-01-22  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* mdemo/Makefile.am (../libltdl/libtool): if it does not exist,
	the sub-make for libltdlc.la will take care of it, but we must at
	least provide an empty rule for it, otherwise the sub-make will
	never run

	* demo/configure.in, demo/Makefile.am (DLPREOPEN): reverted; it
	didn't make any difference.

1999-01-21  Gary V. Vaughan  <gary@gnu.org>

	* THANKS: Added Chris Laas <golem@MIT.EDU>

	From Chris Laas <golem@MIT.EDU>
	* ltmain.in (compile):  corrected a typo in compile mode which
	caused "gcc: unrecognized option -c-fPIC" errors due to a missing
	space.

1999-01-21  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/configure.in: reintroduce code to detect native library
	extension
	* libltdl/ltdl.c (lt_dlopen): if a .la file name is given, that's
	all.  Otherwise, lt_dlopen now tries to append .la first.  If this
	fails, it tries the given filename, and, at last, tries to append
	the native library extension to the given filename.
	* doc/libtool.texi (lt_dlopen): explain new lookup strategy

	* libltdl/ltdl.c: major rewrite to avoid almost all fixed-size
	buffers; only `tmp' in lt_dlopen remained.  But the code got ugly
	:-(

	* ltconfig.in (linux-gnu*, finish_cmds): remove erroneous backslash

	* demo/configure.in: set DLPREOPEN to -dlopen if we don't have
	shared libraries
	* demo/Makefile.am (DLPREOPEN): use instead of -dlpreopen
	(STATIC): use $(STATIC), not @STATIC@
	* mdemo/Makefile.am (STATIC): ditto

	* tests/demo-shared.test, tests/demo-static.test: new tests
	* tests/mdemo-shared.test, tests/mdemo-static.test: ditto
	* tests/Makefile.am: ditto
	* doc/libtool.texi: document them
	* demo/Makefile.am, mdemo/Makefile.am (STATIC): do not use
	-static unconditionally, it can't work with --disable-static
	* demo/configure.in, mdemo/configure.in: check whether libtool was
	configured to build static libraries and, if not, set STATIC to an
	empty string

1999-01-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (module, droppeddeps): if libtool could not satisfy
	all dependencies of a module, it will only build a static version
	of it, and display a warning message

1999-01-20  Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>

	* ltconfig.in (aix4*, with_gcc, archive_cmds): fix typo in Andrey
	Slepuhin's last patch

1999-01-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.am (@DIST_MAKEFILE_LIST@): work around Ultrix /bin/sh bug
	* tests/nomode.test (must specify a MODE): ditto
	Reported by Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
	* THANKS: Added Rainer Orth

1999-01-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* ltconfig.in: No known version of Solaris 2 hardcoded -L paths.

1999-01-20  Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>

	* ltmain.in: s/n\'t/ not/
	* doc/PLATFORMS: updates for sunos4/m68k and aix

1999-01-20  Andrey Slepuhin  <pooh@msu.ru>

	* ltconfig.in (aix4*): check for reworked collect2, always pass
	-bnoentry option to linker when building a shared library

1999-01-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (file_magic): follow soft-links before running `file'
	on the candidate library; try to avoid entering endless loop
	Suggested by Nix <nix@esperi.demon.co.uk>

	* ltconfig.in (linux*, solaris*, bsdi4*, sys_lib_search_path):
	remove expansion of $LD_LIBRARY_PATH
	* ltmain.in (lib_search_path): append the expansion of $shlibpath_var
	* doc/libtool.texi: document it

	* THANKS: Added Steven Schultz

1999-01-20  Steven M. Schultz <sms@wlv.iipo.gtegsc.com>

	* ltconfig.in (bsdi4*, check_shared_deplibs_method): file_magic
	(bsdi4*, sys_lib_search_path): add /shlib and other dirs

1999-01-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* cdemo/main.c (main): use K&R definition syntax
	* mdemo/main.c (test_dl, main): ditto
	(test_dl): casts return value of lt_dlsym to appropriate types

	* ltmain.in (dlsyms): #define const to nothing if not __STDC__

	* ltconfig.in (global_symbol_pipe): #define const to nothing if
	not __STDC__

	* demo/dlmain.c (main): cast s->address to the appropriate pointer
 	types, otherwise StunOS4's cc refuses to compile it

	* ltconfig.in (sunos4*, without_gnu_ld, with_gcc, archive_cmds):
 	add -fPIC, because libgcc is multilibbed, and we want the PIC
 	version of it for shared libraries, otherwise ld complains

	* demo/dlmain.c (main): add missing const to declaration of name

	* libltdl/ltdl.c (find_module): remove the libdir argument, and
	try to  open library only as old_name and dir/dlname
	(lt_dlopen): use `installed' variable in .la file to decide
	whether to use libdir or objdir

	* demo/configure.in (AC_C_CONST): added, for portability
	* mdemo/configure.in (AC_C_CONST): ditto
	* libltdl/configure.in (AC_C_CONST, AC_C_INLINE): ditto
	* libltdl/ltdl.c (LTDL_FILENAME_MAX): use FILENAME_MAX if defined
	(FILENAME_MAX): replace all explicit uses with LTDL_FILENAME_MAX
	(presym_free_symlists, trim): don't return void, for portability
	(lt_dlgetsearchpath): replace (void) with __P((void))

	* ltmain.in (compile): when compiling both PIC and non-PIC, write
 	the PIC object to .libs/.lo and only rename it to .lo after
 	compiling the .o, to avoid fooling make dependencies

	* mdemo/main.c (LTDL_PREOPENED_SYMBOLS): remove

1999-01-20  Gary V. Vaughan  <gary@gnu.org>

	* TODO: Added inter-library deps for ltlibs.

	* THANKS: Added Vladimir Kushnir.

1999-01-20  Vladimir Kushnir  <kushn@mail.kar.net>

	* ltconfig.in (freebsd3*): Define `deplibs_check_method' and
	`file_magic_command' for freebsd-elf.

1999-01-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* TODO: should we also build a `static' copy of a convenience
 	library out of .o files?

	* ltconfig.in (bsdi4*, netbsd*, uts4*, library_names_spec,
	soname_spec): removed duplicate dot before $major
	Reported by Steven M. Schultz <sms@wlv.iipo.gtegsc.com> (bsdi4*)

	* THANKS: added Manfred Weichel

1999-01-20  Manfred Weichel  <Manfred.Weichel@pdb.siemens.de>

	* ltconfig.in (sysv5*): same as sysv4.3*

1999-01-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (lt_dlopen): properly detect error condition when
	full pathname of non-libtool library is provided

	* libltdl/configure.in (libltdl_cv_preloaded_symbols,
	HAVE_PRELOADED_SYMBOLS): test whether we support -dl*open
	* libltdl/ltdl.c (!HAVE_PRELOADED_SYMBOLS, lt_preloaded_symbols):
	define it to an empty list if libtool won't generate it, so as to
	avoid link errors.  This will cause silent dlopening failures, but
	maybe this is better than failing to link the program...

	* libltdl/ltdl.h (LTDL_PRELOADED_SYMBOLS): remove it; better to
	declare lt_preloaded_symbols
	* doc/libtool.texi (LTDL_PRELOADED_SYMBOLS): ditto

	* ltmain.in (dlpredeps): removed, reverting 1999-01-17's change

1999-01-19  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/Makefile.am (Makefile): depend on libtool

	* ltmain.in (lt_preloaded_setup): function added to symbol list
	source file to work around FreeBSD problem

	* Makefile.am (check-local): depend on libltdl/Makefile

	* mdemo/Makefile.am (mdemo_LDFLAGS, mdemo_LDADD): moved -dlopen
	flags to LDADD
	* doc/libtool.texi (Using Automake): how to add -dlopen to LDADD

1999-01-19  Gary V. Vaughan  <gary@gnu.org>

	From Andrey Slepuhin <pooh@msu.ru>
	* ltmain.in (hardcode_action) Oops, misapplied the patch!

	* ltconfig.in (compile_dependencylbs): removed this
	variable and pick up the library dependencies from $deplibs.
	* ltmain.in (compile_dependencylibs): removed this
	variable, use deplibs to hold these dependencies.

	From Andrey Slepuhin <pooh@msu.ru>
	* ltmain.in (hardcode_action) make sure deplibs is set to include
	all the	extra libs added to compile_command.

1999-01-18  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (LIBTOOL_DEPS): set it
	* libltdl/configure.in (LIBTOOL_DEPS): AC_SUBST it
	* libltdl/Makefile.am (libtool): use it
	* doc/libtool.texi (AM_PROG_LIBTOOL): document it

	* Makefile.am (libltdl.tar.gz): don't create it as part of the
	build, since it is likely to become stale if we do
	(install-data-hook): create and install libltdl.tar.gz, without
	depending on GNU tar
	Reported by Manfred Weichel <Manfred.Weichel@pdb.siemens.de>

1999-01-17  Thomas Tanner  <tanner@gmx.de>

	* Makefile.am: added libltdl.tar.gz to CLEANFILES
	* ChangeLog: some reformatting
	* TODO: documentation updates
	* doc/libtool.texi: added preliminary libltdl documentation,
	  updated dlopen and -module documentation,
	  renamed -avoid-versioning to -avoid-version
	  documented the libtool script variables compiler_c_o,
	  compiler_o_lo, need_locks, old_postuninstall_cmds,
	  postuninstall_cmds, sys_lib_search_path_spec,
	  fix_srcfile_path, objdir, objext, libext,
	  documented the two new flags (--ltdl[-tar]) of libtoolize
	* libltdl/Makefile.am: incremented the version, removed
	  libtool dependency so that it can be build independently
	* libltdl/configure.in: removed LTDL_SHLIB_EXT hack,
	  set version to 1.0, use AM_MAINTAINER_MODE,
	  DLPREOPEN is always supported, check for libtool's objdir variable
	  (LTDL_OBJDIR)
	* libltdl/ltdl.c: some cleanups (moved constants to the beginning
	  of the file and prefixed all of them with LTDL_, minor optimizations
	  in find_file() and find_module()), renamed lt_dlpreopen* to
	  lt_dlpreload* for consistency, removed LTDL_SHLIB_EXT hack,
	  we don't need unistd.h, DLPREOPEN is _always_ supported,
	  reverted Alexandre's lt_dlpreopen_default_ change,
	  try to open the not-installed module before the installed one,
	  replaced lt_dlsearchpath() with lt_dladdsearchdir(),
	  lt_dlsetsearchpath() and lt_dlgetsearchpath()
	* libltdl/ltdl.h: renamed lt_dlpreopen* to lt_dlpreload*
	  for consistency, removed the declaration of lt_preloaded_symbols
	  (should be imported by programs),
	  reverted Alexandre's lt_dlpreopen_default_ change and added
	  two new macros LTDL_PRELOADED_SYMBOLS and
	  LTDL_SET_PRELOADED_SYMBOLS(),
	  added lt_dladdsearchdir(), lt_dlsetsearchpath() and
	  lt_dlgetsearchpath()
	* libtool.m4: some reformatting
	* libtoolize.in: implemented --ltdl, bugfix when checking for
	  the libtool package directory
	* ltconfig.in: removed $thread_safe_flags from Andrey Slepuhin's
	  AIX patch, renamed sys_lib_search_path to sys_lib_search_path_spec,
	  some reformatting, fixed typo in deplibs_check_method (unkwnon)
	* ltmain.in: documented -o for compile mode, some reformatting,
	  renamed -avoid-versioning to -avoid-version
	  renamed sys_lib_search_path to sys_lib_search_path_spec
	* mdemo/Makefile.am: use -avoid-version
	* mdemo/main.c: use LTDL_PRELOADED_SYMBOLS and
	  LTDL_SET_PRELOADED_SYMBOLS()

1999-01-17  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (wlarc): set to either '${wl}' or an empty string,
 	depending on whether archive_cmds runs CC or LD
	(gnu_ld=yes, whole_archive_flag_spec): "$wlarc" instead of '${wl}'

	* mdemo/Makefile.am (../libltdl/libltdlc.la): depend on
	../libtool, because ../libltdl/libtool depends on it
	(mdemo_debug_*): copy from mdemo_*, adding -static to LDFLAGS

	* ltmain.in (dlpredeps): append dependencies from dlopened modules
	(but not dlpreopened ones) after all explicitly linked libraries

	* ltconfig.in (need_lib_prefix, need_version,
 	deplibs_check_method): default to unknown, so that we're
 	remembered that this needs porting; unknown is interpreted as yes,
 	yes and none, respectively
	(freebsd2*, freebsd3*, sunos4*, need_version): set to yes
	(freebsd2*, freebsd3*, library_names_spec): libraries without a
	version number are not used by `ld'; add $versuffix;
	Reported by Ben Jackson <ben@ben.com>
	* ltmain.in (deplibs_check_method): alias unknown to none
	(need_version): if vinfo was not provided and release info was,
	zero out versuffix only if we don't need_version.
	* doc/libtool.texi: document what `unknown' means

	* libltdl/ltdl.h (lt_dlpreopen_default): reverted to a macro
	without arguments, that calls lt_dlpreopen_default_ with
	lt_dlpreloaded_symbols
	* libltdl/ltdl.c (lt_dlpreopen_default_): renamed from
	lt_dlpreopen_default
	(find_module) tryall_dlopen old_name first, so that we don't
 	override statically linked symbols with dlopened ones

1999-01-15  Gary V. Vaughan  <gary@gnu.org>

	From Andrey Slepuhin <pooh@msu.ru>
	* libtoolize.in (cd $pkgdatadir): Make sure we return the the
	working directory when this is done.

	From Andrey Slepuhin <pooh@msu.ru>
	* ltconfig.in (aix): Use shared library support correctly on
	aix4*, and tweak the config for aix3.
	* NEWS: added aix3 and aix4 to list of hosts with improved
	support.
	* THANKS: added Andrey Slepuhin <pooh@msu.ru>.

1999-01-15  Thomas Tanner  <tanner@gmx.de>

	* Makefile.am (@DIST_MAKEFILE_LIST@): added a second '$'
	  before abs_scrdir, removed ltconfig and ltmain.sh from
	  EXTRA_DIST (automake distributes them by default)

1999-01-14  Thomas Tanner  <tanner@gmx.de>

	* autogen: moved faking of the libtool scripts before
	  the call of automake, so that ltconfig and ltmain.sh
	  are included in the distribution
	* ltconfig.in: when checking whether PIC is supported assume
	  only on HP/UX that warnings during compilation mean that
	  PIC is not supported (Thanks to Ron O'Hara)
	* THANKS: added Ron O'Hara

1999-01-14  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.am: Moved ltconfig and ltmain.sh back into srcdir, and
	add them to the distribution.  Added work-around if `mv -f' fails.
	fix @AINCLUDE_M4_LIST@ and @DIST_MAKEFILE_LIST@ for relative and
	absolute specifications of srcdir

1999-01-14  Thomas Tanner  <tanner@gmx.de>

	* libltdl/ltdl.c: added variable symbol prefix, added user-defined
	  library search path (can be set using lt_dlsearchpath()),
	  added default_preloaded_symbols which are independent of
	  lt_dlinit/exit
	* libltdl/ltdl.h: added lt_dlsearchpath() and
	  lt_dlpreopen_default()
	* mdemo/Makefile.am: use -export-dynamic until libtool
	  and libltdl are able to handle module dependencies

1999-01-14  Gary V. Vaughan  <gary@gnu.org>

	* THANKS: added Mark Elbrecht.
	* ltconfig.in (PATH_SEPARATOR): new variable to hold valid $PATH
	separator characters for the build host, to support DJGPP
	environment.
	* ltconfig.in: Use PATH_SEPARATOR instead of hardcoded `:'.
	Reported by Mark Elbrecht <snowball3@usa.net>

	* cdemo/README: typo: mdemo->cdemo

1999-01-14  Thomas Tanner  <tanner@gmx.de>

	* autogen: fake the libtool scripts to help fixing
	  the bootstrapping problem
	* Makefile.am: always configure libltdl, however after building
	  the libtool scripts,
	  build the libtool scripts in builddir, not srcdir
	  (unfortunately this breaks building when srcdir!=objdir,
	   but it was just plain wrong - needs to be fixed),
	  build and install libltdl.tar.gz,
	  copy acinclude.m4 instead of linking them, so that we
	  can 'make dist' in libltdl,
	  fixed configuring of subdirectories
	* configure.in: removed --enable-ltdl-install - libltdl is supposed
	  to be installed by packages, not by libtool itself
	* libtoolize.in: new flags --ltdl and --ltdl-tar to install libltdl
	  in packages (--ltdl doesn't work yet),
	  install only the necessary libtool scripts, not just all
	  files in pkgdatadir
	* mdemo/Makefile.am: removed the rule for libltdl configuration

1999-01-13  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* mdemo/Makefile.am (../libltdl/libtool): mkdir and configure
	../libltdl

1999-01-13  Thomas Tanner  <tanner@gmx.de>

	* demo/dlmain.c, libltdl/ltdl.c, ltconfig.in, ltmain.in,
	  doc/libtool.texi: renamed dld_preloaded_symbols to
	  lt_preloaded_symbols, symbol lists are 'const'
	* cdemo/configure.in: don't check for string.h
	* demo/dlmain.c: renamed dld_symlist to lt_symlist,
	  preloaded symbols are 'const', use lt_ptr_t instead of void*
	* demo/foo.h: define lt_ptr_t
	* doc/libtool.texi: document lt_preloaded_symbols correctly
	* libltdl/Makefile.am, mdemo/Makefile.am: renamed libtest to libltdlc
	* libltdl/ltdl.c: fixed some minor typos, renamed dldpre to presym,
	  bugfix: search in search_path only if we have no directory
	  and a search_path, in lt_dlsym() check whether symbol != 0
	* libltdl/ltdl.h: removed lt_dlpreopen_default()
	* ltconfig.in (dlpreopen): removed dld_preloaded_symbol_count
	* ltmain.in: added help for -avoid-versioning, -export-symbols,
	  -module, add @SYMFILE@ if one of -export-dynamic, -dlopen or
	  -dlpreopen is used
	* mail/deplibs.html: added Gordon Matzigkeit's inter-library
	  dependencies article
	* mdemo/Makefile.am: removed -export-dynamic from LDFLAGS
	  (no longer necessary, since libtool defines lt_preloaded_symbols
	  when -dlopen is used), initialize with lt_preloaded_symbols

1999-01-13  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* doc/libtool.texi (Test descriptions): cdemo-static works, thanks
	to Edouard Parmelan!

	* THANKS: added Sebastian Wilhelmi

	* ltconfig.in (solaris): define `need_version' to no

1999-01-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* ltconfig.in (solaris): Define `deplibs_check_method',
	`file_magic_command', `need_lib_prefix' and `sys_lib_search_path'
	* ltmain.in (file_magic_regex): Add space before matching pattern,
	such that it works on solaris (solaris has a tab between the
	library name (including the colon) and the `ELF' and such the
	`ELF' will never be matched).

1999-01-13  Edouard G. Parmelan  <Edouard.Parmelan@France.NCR.COM>

	* ltconfig.in (NM): PATH search was not updated like in
	libtool.m4, in last Alexandre Oliva's change to it
	(sysv4*, ncr): pass all library dependencies
	* ltmain.in (dependency_libs, -R): use `deplib' instead of `arg' to
	iterate, otherwise we'd overwrite `arg'
	(convenience, old_libs): if --disable-shared, convenience
	libraries are just old archives, as .lo's are of no use
	* tests/cdemo-static.test: print --disable-shared here

1999-01-13  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/configure.in (libltdl_cv_shlibext, LTDL_SHLIB_EXT):
	system-dependent extension of shared libraries
	(libltdl_cv_shlibpath_var, LTDL_SHLIBPATH_VAR): system-dependent
	run-time shared library search path
	* libltdl/ltdl.c (dldpre_init, dldpre_exit): unrelate init/exit
	from add/remove symlists, so one may add dld_preloaded_symbols
	from main(), when only a library will call dldpre_init
	(lt_dlopen): use LTDL_SHLIBPATH_VAR, if defined, as secondary
	search path.  Also, if a requested .la file cannot be found, try
	with the LTDL_SHLIB_EXTension instead.

	* ltmain.in (old_archives, oldobjs): use find to SYMDEF here too

	* Makefile.am (@DIST_MAKEFILE_LIST@): `$' must be doubled

	* configure.in (AC_CONFIG_DIRS): configure only libltdl, and then,
	only if --enable-ltdl-install
	(CONF_SUBDIRS): list directories that are configured on demand,
	but that must be included in the distribution
	(ACINCLUDE_M4_LIST, DIST_MAKEFILE_LIST): generated from CONF_SUBDIRS
	* Makefile.am (AUTOMAKE_OPTIONS): added version 1.3e and
	readme-alpha, to handle README-alpha automatically
	(EXTRA_DIST): removed README-alpha
	(BUILD_SUBDIRS): subdirectories that are always built
	(SUBDIRS): BUILD_SUBDIRS plus BUILD_LTDL
	(DIST_SUBDIRS): BUILD_SUBDIRS plus CONF_SUBDIRS, from configure
	(all-local, check-local): depend on $(ACINCLUDE_M4_LIST), from
	configure, and libtool, so that it is built before subdirs
	(configure-subdirs): new target
	(configure-subdirs, distdir): depend on $(DIST_MAKEFILE_LIST),
	from configure
	(@DIST_MAKEFILE_LIST@): create subdir if needed, then run
	configure.
	On-demand configuration of subdirs at distribution time was
	suggested by Gary V. Vaughan <gary@gnu.org>

	* libtool.m4, ltconfig.in (NM): search for NM in PATH before
	/usr/ccs/bin, /usr/ucb and /bin.  However, if the found one isn't
	BSD-compat keep searching.  If no BSD-compat is found, use the
	first we found.

	* THANKS: added Raffaele Sena

1999-01-13  Raffaele Sena  <raff@aromatic.com>

	* libltdl/ltdl.c: replaced RTDL with RTLD

1999-01-13  Manish Singh  <yosh@gimp.org>

	* ltconfig.in (osf3*, osf4*, irix6*): include
	${libname}{release}.so for library_names_spec

1999-01-13  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in (AC_CONFIG_SUBDIRS): added cdemo
	* Makefile.am (DIST_SUBDIRS): ditto
	(ACINCLUDE_M4_LIST): ditto
	* tests/Makefile.am (TESTS): added cdemo-shared.test
	* tests/cdemo-static.test: disable shared libraries here
	* tests/cdemo-shared.test: disable static libraries here
	* doc/libtool.texi (Test descriptions): added cdemo tests
	* THANKS: added Edouard G. Parmelan

1999-01-13  Edouard G. Parmelan  <Edouard.Parmelan@France.NCR.COM>

	* ltmain.in: fix convenience libraries when static libraries
	are disables.
	* cdemo/README, cdemo/Makefile.am, cdemo/configure.in, cdemo/foo.h,
	cdemo/foo1.c, cdemo/main.c, cdemo/.cvsignore, test/cdemo-conf.test,
	test/cdemo-make.test, test/cdemo-exec.test, test/cdemo-static.test:
	new tests for convenience libraries.
	* autogen, Makefile.am, test/Makefile.am: ditto.

	* ltconfig.in, doc/PLATFORMS: Added support for NCR MP-RAS
	(i586-ncr-sysv4.3*) with native compiler.
	* README, doc/libtool.texi: Added note for NCR MP-RAS compiler.

1999-01-12  Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: before using LN_S remove the symlink
	* libltdl/ltdl.c: support multiple symbol lists, moved library-
	  and file searching to separate functions, renamed "preload_libs"
	  to "dl_dependency_libs", set the LT_SYMBOL_OVERHEAD to the correct
	  value (7), fix to support lt_dlsym() for not-libtool modules again,
	  check for invalid handles, when using strdup() check whether
	  it fails
	* libltdl/ltdl.h: declare the lt_dlsymlist type for lt_dlpreopen()
	* mdemo/README: rewritten
	* mdemo/configure.in: check only for math.h (string.h is no longer
	  necessary)

1999-01-12  Gary V. Vaughan  <gary@gnu.org>

	* configure.in (ltdl-install): Fixed up the indentation so that
	`configure --help' is pretty again.

1999-01-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in, NEWS, doc/libtool.texi: Added support for -R flag
	* ltmain.in, doc/libtool.texi: documented that -rpath is the same
	as -R for programs
	* ltmain.in: softened the instructions for linking with installed
	libraries, and noted that libtool can be used to link with them;
	documented that -rpath is not required for convenience libraries

	* ltconfig.in (symxfrm): don't print $pipe_works twice, once for
	each $ac_symprfx
	Reported by Godmar Back <gback@cs.utah.edu>

	* ltmain.in (convenience, libobjs): get only .o and .lo files from
	the files extract from the convenience library.  Some systems,
	such as FreeBSD2, will add a SYMDEF file, that is not an object
	file, and therefore should not be fed to the linker

	* libtool.m4 (AM_SYS_NM_PARSE): while we are at it, we may well
	cache the value of ac_cv_sys_symbol_underscore

	* libtool.m4 (AM_SYS_NM_PARSE): need for underscore prefix is now
	auto-detected, by trying first without, then with it.

	* ltconfig.in: ditto

1999-01-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in (AC_CONFIG_SUBDIRS): add libltdl, demo, mdemo and
	depdemo commented out, so that `dist' works before `check'
	(BUILD_LTDL): will contain libltdl if --enable-ltdl-install
	* Makefile.am (DIST_SUBDIRS): expand SUBDIRS and add depdemo,
	commented out
	(SUBDIRS): add $(BUILT_LTDL)
	* libltdl/Makefile.am (EXTRA_LTLIBRARIES): add libtest.la, the
	same as libltdl but always a convenience library.  Not built by
	default.  Both libraries now depend on the libtool script, that
	depends on ../libtool and is rebuilt when needed
	* mdemo/Makefile.am (mdemo, mdemo.debug): depend on and link with
	../libltdl/libtest.la, that is rebuilt if needed
	(mdemo_LDADD): removed $(LIBADD_M), to avoid silent failures
	(foo1.la): renamed from libfoo1.la; test removing the lib prefix
	* mdemo/foo1.c: renamed libfoo1_LTX symbols to foo1_LTX
	* mdemo/main.c: don't include string.h nor math.h, nor refer to
	sin nor cos
	* tests/mdemo-exec.test: renamed libfoo1.la to foo1.la
	* tests/mdemo-inst.test: ditto

	* libltdl/ltdl.c (FILENAME_MAX): use it instead of MAX_FILENAME,
	and don't redefine it if already defined; default to 1024, as on
	most systems
	(LT_SYMBOL_LENGTH): renamed from MAX_SYMBOL_LENGTH
	(LT_SYMBOL_OVERHEAD): new macro, that accounts for the size of
	the _LTX_ separator and the initial underscore
	(lt_dlsym): sym now points to a stack buffer (lsym) if possible,
	or is dynamically allocated.  If allocation fails, a
	buffer_overflow_error is returned.

1999-01-10  Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: define dld_preloaded_symbols if at least one of
	  -export-dynamic, -dlopen or -dlpreopen was specified,
	  do not include program objects in the symbol list
	  if -export-dynamic was not enabled
	* libltdl/ltdl.c: limit symbols to max. 256 bytes
	* mdemo/Makefile.am: build libltdl in a subdirectory,
	  do not use -export-dynamic for mdemo and mdemo.debug
	* tests/mdemo-conf.test,tests/mdemo-make.test,tests/mdemo-inst.test:
	  do not check for libltdl

1999-01-09  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c (lt_dlopen): missing strlen in bound test

1999-01-09  Thomas Tanner  <tanner@gmx.de>

	* NEWS: support for BSD/OS 4.x was not documented
	* demo/Makefile.am: link against libm only if available
	* mdemo/Makefile.am: likewise, use -avoid-versioning flag
	  instead of -avoid-version (typo)
	* demo/configure.in: check for libm, string.h and math.h
	* mdemo/configure.in: likewise
	* depdemo/configure.in: check for libm and math.h
	* libltdl/configure.in: check for dlerror
	* libltdl/ltdl.c: check for buffer overflows, implemented
	  dlerror, fixed a severe bug which occured when opening
	  non-libtool modules, dlopen with the flags GLOBAL and NOW
	* mdemo/main.c: report the error using lt_dlerror()

1999-01-08  Gary V. Vaughan  <gary@gnu.org>

	* doc/libtool.texi (old_archive_from_new_commands): Documented
	this ltcofig variable.

1999-01-07  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.sh (cygwin, allow_undefined): Unfortunately, there are
	problems with this variable when trying to make a dll which has
	undefined symbols, in which case not even a static library is
	built.  For now, we need to specify -no-undefined on the libtool
	link line when we can be certain that all symbols are satisfied,
	otherwise we get a static library.

1999-01-06  Thomas Tanner  <tanner@gmx.de>

	* ChangeLog: merged in tests/ChangeLog
	* tests/ChangeLog: deleted
	* libltdl/ltdl.c: assigned copyright to the FSF
	* libltdl/ltdl.h, mdemo/foo*,main.c: likewise

1999-01-06  Gary V. Vaughan  <gary@gnu.org>

	* ltmain.in (dllsearchpath): add absolute directory paths to
	dllsearchpath so that the wrapper scripts can be called from any
	directory (e.g. tests) on cygwin.

	* ltconfig.in (cygwin, library_names_spec): revert Alexandre's
	change from yesterday to use `-dll.a' suffix.  That change caused
	$libname-dll.a to be a symlink to $soname, which isn't even an
	`ar' archive.  Before the import library suffix can be changed, we
	need to figure out how to handle building objects differently for
	linking with an import library versus an equivalent static library.

	* TODO: Added details of a Linux wrapper script bug.
	Reported by Jeff Garzik <jgarzik@pobox.com>.

1999-01-05  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (libobjs_save, oldobjs): when building an
	old-fashioned archive, use a copy of libobjs saved before
	convenience libraries are appended

	* libltdl/ltdl.h (_LTDLL_EXPORT, _LTDLL_IMPORT): use cygwin or
	unix library import/export primitives; this may be convenient for
	people willing to create DLLs
	(_LTDLL_EXTERN): select _LTDLL_EXPORT or _LTDLL_IMPORT depending
	on _LTDL_COMPILE_
	* libltdl/ltdl.h, libltdl/ltdl.c (lt_dlpreopen): new function,
	that replaces the current preloaded_symbols list with its
	argument, and returns the old value, initially NULL
	(dldpre_init): don't refer to dld_preloaded_symbols any more
	(dldpre_open, dldpre_sym): search preloaded_symbols
	(lt_dlpreopen_default): call lt_dlpreopen with
	dld_preloaded_symbols, that is declared as extern; it should be
	called from the main program or from some static library without
	-no-undefined
	(lt_dlerror): new function, that returns the error message for the
	last error occurred; the error message is kept in the static
	variable last_error
	* libltdl/configure.in (enable-ltdl-install): moved back from
	enable-install; other packages might use enable-install already,
	better have fine grained control over this.
	* libltdl/Makefile.am (libltdls.la): discarded

1999-01-05  Thomas Tanner  <tanner@gmx.de>

	* configure.in: do not configure libltdl by default
	* Makefile.am: do not build libltdl by default
	* libltdl/Makefile.am: ltdls.lo depends on libtool
	* tests/Makefile.am: before starting the tests
	  make sure that libtool was build
	* tests/mdemo-conf.test: configure libltdl
	* tests/mdemo-make.test: build libltdl

1999-01-05  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (SP2NL, NL2SP): Don't delete empty lines, as this
	would lose for files with embedded blanks.

	* ltconfig.in (cygwin, archive_cmds, archive_sym_cmds): Moved
	ltdll.c into ltmain.in, to avoid its duplication, and added a sed
	script to extract it.  Also, create def and base files in $objdir,
	and don't remove them after the compilation.
	(cygwin, library_names_spec): Create static part of the dll with
	suffix -dll.a, to avoid conflicts with actual static libraries.
	* ltmain.in: Added ltdll.c, as commented out text

1999-01-01  Thomas Tanner  <tanner@gmx.de>

	* NEWS: new BeOS support
	* THANKS: added Joseph Beckenbach
	* libltdl/ltdl.h: use dllimport/export on Win32

1998-12-31  Joseph Beckenbach III <jrb3@best.com>

	* ltconfig.in: added support for BeOS
	* ltmain.in (shlibpath_var): added a workaround for
	  an odd bug in the BeOS R4 sed

1998-12-31  Thomas Tanner  <tanner@gmx.de>

	* verified all copyright notices
	  and updated them to 1999
	* TODO: added some things that need to documented
	* doc/libtool.texi: -export-symbols is not
	  supported on all platforms
	* doc/PLATFORMS: added a few new platforms

1998-12-30  Thomas Tanner  <tanner@gmx.de>

	* NEWS: updated
	* THANKS: added Todd Vierling <tv@pobox.com>

1998-12-30  Todd Vierling  <tv@pobox.com>

	* ltconfig.in: improved shared object handling on both
	  a.out and ELF platforms for NetBSD

1998-12-29  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: do not rely on a leading space when concatenating
	  variables as suggested by Erez Zadok
	* ltmain.in: likewise
	* doc/PLATFORMS: updated and reformatted
	  (thanks to Erez Zadok for the testing)

1998-12-27  Thomas Tanner  <tanner@gmx.de>

	* THANKS: added Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>

1998-12-26  Erez Zadok  <ezk@shekel.mcl.cs.columbia.edu>

	* ltconfig.in: support i486-ncr-sysv4.3.03
	shared libraries.

	* ltmain.in: before every ln -s, remove the link name

1998-12-25  Thomas Tanner  <tanner@gmx.de>

	* depdemo/configure.in: removed last relics of demo
	* depdemo/sysdep.h: ditto
	* mdemo/Makefile.am: ditto
	* libltdl/Makefile.am: fixed the version number, build libltdls if
	  -enable-install and -enable-dlpreopen are enabled
	* libltdl/configure.in: libltdl is version 0.1, not 1.0,
	  renamed -enable-ltdl-install to -enable-install,
	  conditionals for libltdls, check for strchr and index,
	  replaced NULL with 0
	* libltdl/ltdl.c: replaced NULL with 0, dlpreopen only if
	  USE_DLPREOPEN was defined, integrated shl_load code from GModule
	  (still untested)

1998-12-24  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/configure.in: fixup spacing in --enable-ltdl-install
	help string so that it lines up nicely for configure --help.

	* ltmain.in (dllsearchpath): keep track of what the dll search path
	will need to be in the wrapper scripts as deplibs are calculated.
	Make sure the wrapper script doesn't end in `.exr', which makes
	win32 try to execute it as a binary!
	Add the contents of dllsearchpath to $PATH in the wrapper script.
	Use the relative path to the wrapped program so that the dll
	search path is calculated properly by win32 OSes.
	* TODO: removed the item for making wrapper scripts work on win32.

	* TODO: removed the reference to making libltdl and demo work on
	win32.  They *do* work now that wrapper scripts are functioning.

	* ltmain.in (file_magic_command): It turns out that if the
	file_magic_command generates huge output (e.g. running `objdump
	-f' over a large import lib [say libX11.a]) the expr to check it
	against the file_magic_regex blows up.  There is now an optimistic
	heuristic, to save only the first 10 lines of running
	file_magic_command which (at risk of sounding like Bill) should be
	enough for anyone =)O|.

	* ltmain.in: Set the compile_dependencylibs and	dllsearchpath for
	non-libtool libs, or else libdeps only works between ltlibs for
	cygwin32.

1998-12-23  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (SP2NL, NL2SP): use `tr' magic to avoid passing very
	long lines to sed
	* doc/libtool.texi (sed): very long lines are no longer a problem

	* libltdl/Makefile.am: install libltdl conditionally...
	* libltdl/configure.in: ... if --enable-ltdl-install is issued
	* libltdl/ltdl.c: removed #ifdef DEBUG
	* mdemo/Makefile.am (mdemo_debug_LDADD, mdemo_debug_DEPENDENCIES):
	use libltdl.la

1998-12-23  Gary V. Vaughan  <gary@gnu.org>

	* doc/PLATFORMS: added my cygwin32 box (i686-pc-cygwin32).

	* TODO: remind myself of the win32 tasks remaining.

	* ltconfig.in (archive_cmds, archive_sym_cmds,
	old_archive_from_new_cmds): Fixed a bug which left an a.exe in the
	build directory.  Fixed a bug where $soname-def was never deleted.

	* ltconfig.in (file_magic_command): new variable holds the command
	(including any args) to run to generate the string to match
	against the regex in $file_magic.  Use the variable where
	necessary. Added to libtool header output.
	(deplibs_check_method): use file_magic for win32, but compare the
	output of `objdump -f' with the regex (see below).
	(archive_cmds, archive_sym_cmds): use compile_dependencylibs for
	each $CC invokation (see below).

	* ltmain.in: Set allow_undefined to `no' for win32 variants by
	default, otherwise it is impossible to link a dll without forcing
	the makefile maintainer to figure out whether to pass
	--no-undefined at every libtool invokation.
	(compile_dependencylibs): save the list of dependency library
	flags needed for a deplib build on win32.
	(link_against_libtool_libs): commented out the check for this;  if
	it is left in, then ltlibs (i.e. *.la files) cannot be deplibs for
	subsequent links.
	Don't add -lc to the deplibs line for win32 platforms (which don't
	have a libc as such).
	(file_magic_command): use this to get some output to compare with
	the file_magic regex (instead of hardcoding `file' which doesn't
	exist on win32.
	* doc/libtool.texi (Porting inter-library dependencies): Updated
	to document the changes above.

	* ltconfig.in (deplibs_check_method): Changed the file_magic regex
	to match more linux variants.  This is less lenient than Thomas
	Tanner's commit to fix the same problem below.
	Reported by Joel Klecker <espy@debian.org>
	* THANKS: added Joel Klecker <espy@debian.org>

1998-12-23  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: fixed file-magic for Linux shared libraries
	* ltmain.in: removed the unused -force-static flag
	* libltdl/ltdl.c: added strchr, search modules in LTDL_LIBRARY_PATH,
	  check whether actual module was already dlopened,
	  read in preload_libs rather than dependency_libs

1998-12-23  Thomas Tanner  <tanner@gmx.de>

	* libltdl/Makefile.am: build two versions of libltdl:
	  libltdl (support native dlopen if available, otherwise dlpreopen),
	  libltdls (like libltdl, but always support for dlpreopen)
	* libltdl/ltdl.c: ditto
	* libltdl/configure.in: warn if dlopen is not supported
	* mdemo/Makefile.am (mdemo.debug): use libltdls

1998-12-22  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in: revert Thomas Tanners change to create all
	libraries without the `lib' prefix on win32, otherwise `gcc foo.c
	-lbar' can't find libbar.a.

1998-12-22  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.am (SUBDIRS): prepend `.' to avoid am-recursive
	dependency hack

1998-12-21  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: indentation is now 8 character wide tabs
	* ltmain.in: ditto
	* ChangeLog: ditto
	* ltmain.in: renamed check_shared_deplibs_method to
	  deplibs_check_method (we_dont_want_too_long_variable_names :)
	* doc/libtool.texi (Porting inter-library dependencies): ditto
	* depdemo/.cvsignore: renamed hell* to depdemo*, added *.lo,*.la
	* mdemo/.cvsignore: ditto

1998-12-21  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AM_SYS_NM_PARSE): apparently  __ptr_t is predefined
	on some systems - use lt_ptr_t instead.
	* ltconfig.in: ditto.
	* ltmain.in: ditto.

	* libtool.m4 (AM_SYS_SYMBOL_UNDERSCORE): use an AC_SUBST to pass
	the result of this into the compile rather than AC_DEFINE which
	breaks when building with older versions of autoconf.
	* ltconfig.in (symxfrm): Don't put the leading underscore back
	with the global_symbol_pipe.
	* demo/dlmain.c (main): No need to specialcase underscores in
	dld_preloaded_symbols - it is fixed by symxfrm above!
	* libltdl/configure.in: use AM_SYS_SYMBOL_UNDERSCORE from
	libtool.m4 rather than reinvent the wheel here =)O|

	* ltmain.in:  Fix deplibs methods to not rely on a.out (cygwin
	uses a.exe!).

	* libltdl/configure.in: Cleanups - fix header comment and emacs
	local-vars.

	* demo/dlmain.c (win32_force_data_import_address): a nasty hack
	to force the address of imported data symbols into
	dld_preloaded_symbols on win32, which does data imports
	differently to function imports (sheesh!).  This functionality
	needs to be moved into the dld_preloaded_symbols generation code.
	demo/helldl with static linking is broken on win32 by this change,
	probably until after libtool-1.3 =(O|
	* demo/foo.h: make sure __CYGWIN32__ is always defined on cygwin32
	systems.  Use the correct __declspec macro for lib exports/imports
	on cygwin32.
	* demo/foo.c, demo/hello.c: Make sure we tell foo.h that these
	sources are inside libfoo, and want to export symbols.

1998-12-20  Thomas Tanner  <tanner@gmx.de>

	* autogen: configure demo, depdemo, libltdl and mdemo
	* tests/mdemo-exec.test: renamed hell* to mdemo*
	* tests/mdemo-inst.test: ditto

1998-12-19  Thomas Tanner  <tanner@gmx.de>

	* libltdl/Makefile.am: build a normal libtool library
	* libltdl/ltdl.c: get LTDL_LIBRARY_PATH but don't make use of it yet,
	  some reformatting
	* ltmain.in: fixed a bug which listed symbols in
	  dld_preloaded_symbols twice
	* TODO: removed symbol export lists and deplibs

1998-12-18  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: added need_lib_prefix and need_version,
	  which determine whether we must prefix modules with 'lib'
	  and whether versioning is required for libraries.
	* ltmain.in: allow modules names without 'lib' prefix,
	  new -avoid-versioning option
	* doc/libtool.texi (link flags): updated documentation for -module,
	  added -avoid-versioning
	* doc/libtool.texi (libtool script contents):
	  documented the two new flags and archive_sym_cmds
	* doc/libtool.texi (tests):
	  added (partially very short) documentation for assign.test,
	  nomode.test, quote.test, sh.test
	* libltdl/ltdl.c: canonicalize module names,
	  some cleanups and bugfixes,  __ptr_t is predefined on
	  some systems - use lt_ptr_t instead
	* mdemo/: renamed hell* to mdemo* (hell is already used in
	  demo), updated the documentation, import sin and cos in main
	  program rather than linking libfoo1 statically

1998-12-17  Gary V. Vaughan  <gary@gnu.org>

	* libtool.m4 (AM_PROG_LIBTOOL): Added AC_PREREQ(2.12) to prevent
	people using libtool with old autoconfs that don't provide the
	features we need.

1998-12-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS, configure.in, libtool.spec: Bumped to 1.2e for CVS

	* NEWS, configure.in, libtool.spec: Bumped to 1.2d for release

	* Makefile.am (cvs-dist): our release tags are in lower case
	(cvs-diff): ditto
	(EXTRA_DIST): added README-alpha
	* README-alpha: minor adaptations
	* demo/Makefile.am, mdemo/Makefile.am, depdemo/Makefile.am:
	removed comment about special needs for distribution
	* depdemo/Makefile.am: don't generate dependencies
	* depdemo/configure.in: modified version number

	* ltmain.in (-force-static, force_static): removed
	* libltdl/Makefile.am (CFLAGS): ditto
	* libltdl/configure.in: check for memory.h, rindex() and
	dlpreopening.  Fixed NEED_USCORE caching policy.
	* libltdl/ltdl.h (lt_dlsym): make the name argument const
	* libltdl/ltdl.c (types): new variable: head of list of available
	dlopening mechanisms
	(lt_dltype_t): interface of a dlopening mechanism, with pointers
	to functions for init, exit, open, close and sym
	(lt_dlhandle_t): added pointer to interface type
	(strdup): don't name it strdup; it can be troublesome
	(strrchr): ditto; use rindex if available
	(LIBTOOL_STATIC): check HAVE_DLPREOPEN instead, and move to the
	end of the file, so that it becomes the header of the list
	(all): renamed all interface-implementation functions, to avoid
	name clashes, and created lt_dltype_t nodes for all of them
	(lt_dlinit): initialize all available interfaces; remove those
	that fail from the list.  Return failure only if no interfaces
	could be initialized.
	(lt_dlexit): return number of failures
	(tryall_dlopen): try to open the library with all available
	interfaces
	(lt_dlopen): use tryall_dlopen; increased size of fixed buffers.
	We should probably make these bound-checked or dynamically
	allocated for the final release!  Fix bug when filename did not
	contain slashes; should we check for `\\' too?  Try old_library if
	everything else fails.
	(lt_dlclose): use the interface type for closing
	(lt_dlsym): make `symbol' const, use interface type for looking up
	* mdemo/Makefile.am: moved mdemo/modules/* back into mdemo
	(SUBDIRS): removed
	(libfoo2_la_LDFLAGS): added -static; nice test.  However, since it
	causes -lm to linked into hell*, it causes tests that should fail
	to pass
	(noinst_HEADERS): no need to install foo.h
	* mdemo/configure.in: remove modules/Makefile
	tests/mdemo-exec.test: updated accordingly

	* NEWS: Added Thomas Tanner and Gary V. Vaughan to the list of new
	maintainers.  Detailed expected failures of libltdl+mdemo.  Listed
	recent ports.  Added full URL for the home page.  Note that
	libtool C program is unusable.

1998-12-16  Bruno Haible  <haible@ilog.fr>

	* doc/libtool.texi (Tested platforms): broken `sed' programs

1998-12-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* THANKS: added Stephan Kulow; removed Gary V. Vaughan and Thomas
	Tanner, now that they're AUTHORS

1998-12-16  Stephan Kulow  <coolo@kde.org>

	* ltmain.in (freebsd-aout, freebsd-elf): added missing dot to
	versuffix

1998-12-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/Makefile.am (EXTRA_DIST): removed, nothing needed
	(libtool): automatically update

	* libltdl/configure.in (stdlib.h, unistd.h, stdio.h): check
	* libltdl/ltdl.c: include them

	* demo/configure.in (BINARY_HELLDL): test whether dlopen is
	supported at configure time
	* demo/Makefile.am (helldl): use automake conditionals to build
	helldl as a script or as a binary program

	* tests/Makefile.am (EXTRA_DIST): remove ltdl-*.test
	(clean-local): don't clean libltdl any more
	* tests/ltdl-conf.test: removed
	* tests/ltdl-inst.test: ditto
	* tests/ltdl-make.test: ditto
	* tests/ltdl-unst.test: ditto
	* tests/mdemo-make.test: updated accordingly
	* tests/mdemo-inst.test: ditto
	* tests/mdemo-unst.test: ditto
	* doc/libtool.texi: ditto

	* ltmain.in (-DSTATIC): changed to -DLIBTOOL_STATIC, and defined
	only for -force-static; it should be removed soon, before people
	start to use it

	* configure.in (AC_CONFIG_SUBDIRS): added libltdl
	* Makefile.am (SUBDIRS): build libltdl by default
	(DIST_SUBDIRS): simplify distribution of demo and mdemo
	(libtool, clibtool, libtoolize, ltconfig, ltmain.sh): add
	srcdir where appropriate
	(ACINCLUDE_M4_LIST): new rule for maintaining links from
	acinclude.m4 to libtool.m4
	(*demo/Makefile.in): don't update autoconf/automake files any
	more; make check is needed

1998-12-14  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in (archive_cmds): tweaked for cygwin b18->b20.1
	compatibility and fixed a bug with generating the export
	definitions file.  This is only tested on b20.1, but should
	work back to b18 at least.

1998-12-11  Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: -module implies now -export-dynamic,
	  dlpreopen files if we're linking statically
	* doc/libtool.texi (link flags): added documentation for -module
	  and the tests for mdemo and libltdl
	* mdemo/Makefile.am: replaced -dlpreopen with -dlopen

1998-12-09  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* PORTING: removed the text Akim Demaille converted to .texi

1998-12-09  Akim Demaille  <demaille@inf.enst.fr>

	* doc/libtool.texi: converted inter-library dependencies
	instructions from PORTING

1998-12-09  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (convenience, deplibs): propagate dependencies
	* libltdl/Makefile.am (noinst_HEADERS): don't install ltdl.h yet
	(noinst_LTLIBRARIES): ditto for libltdl.la

1998-12-08  Gary V. Vaughan  <gary@gnu.org>

	* README-alpha: adapted the release procedure from
	  automake/HACKING.
	* Makefile.am: adapted the cvs-dist and cvs-diff rules from
	  automake/Makefile.am.  I guess this is probably safe to use
	  already, but I didn't test it as it tags the CVS tree.  If
	  it needs tweaking, we'll find out come 1.2d.

1998-12-08  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: fixed some typos in archive_sym_cmds
	* ltmain.in: replaced basename with a sed expression

1998-12-07  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in: we no longer use PRCS

	* doc/libtool.texi (author): listed all the AUTHORS
	(Dlopen issues): added reference to libltdl, still undocumented
	(C++ libraries): it's not *that* simple, after all :-(
	(Inter-library dependencies): they're back!

1998-12-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (ac_cv_sys_symbol_underscore): `test a == b' doesn't
	work, use `test a = b' instead

	* Makefile.am (mdemo_distfiles): libfoo[12].sym no longer exist

	* ltconfig.in (solaris): do not use $CC for linking if GNU ld is
	not available

1998-12-04  Manfred Weichel  <Manfred.Weichel@pdb.siemens.de>

	* ltconfig.in: Port to SCO UnixWare 7.x.

1998-12-03  Thomas Tanner  <tanner@gmx.de>

	* ChangeLog: converted CR/LF back to CR format
	* ltconfig.in: new variable sys_lib_search_path for searching
	of installed libraries, export archive_sym_cmds and
	sys_lib_search_path
	* ltmain.in: use sys_lib_search_path, removed extradeplibs
	(they're not portable)

1998-12-02  Gary V. Vaughan  <gary@gnu.org>

	* libltdl/configure.in: look for string.h or else strings.h, and
	also check for ANSI strrchr() function.  Fix `undescore before
	symbols' macro to not rely on a.out (cygwin uses a.exe!).  Fix
	`underscore for dlsym' to set cache variable properly, not just in
	environment of AC_DEFINE(NEED_USCORE).
	* libltdl/ltdl.h (__ptr_t): for K&R compatibility using char*.
	* libltdl/ltdl.c (strrchr): fallback function incase none is
	defined in libc.
	(trim, ltdlopen): replace rindex with ANSI strrchr.
	Add static function declarations so that we get type checking with
	ANSI compilers.  Use __ptr_t instead of void*.

1998-12-01  Thomas Tanner  <tanner@gmx.de>

	* ltconfig.in: added -export-symbols support for GNU ld and
	Solaris (untested), archive_sym_cmds for -export-symbols
	* doc/libtool.texi, ltmain.in: -export-symbols is now
	independent from -export-dynamic and does not work for modules
	anymore
	* ltmain.in: added some checks for -export-symbols
	* mdemo/modules/Makefile.am: replaced -export-symbols with
	-export-dynamic since it doesn't work for modules

1998-12-01  Gary V. Vaughan  <gary@gnu.org>

	* README: Updated homepage pointer to gnu libtool page.

	* ltconfig.in (ltdll.c): update the ltdll.c file for cygwinb20.
	Based on code from Mumit Khan <khan@xraylith.wisc.edu>.
	(archive_cmds): correct typo libtool.c->ltdll.c.  Update shell
	commands for cygwin32.

	* libtool.m4 (AM_SYS_SYMBOL_UNDERSCORE): New macro; find out
	whether compiled symbols have an extra leading underscore.
	(AM_SYS_NM_PARSE): New macro (converted to m4 from ltconfig.in);
	find a sed expression to parse global symbols from the output of
	$NM.
	(AM_PROG_LIBTOOL): require AM_SYS_NM_PARSE and
	AM_SYS_SYMBOL_UNDERSCORE.
	* demo/dlmain.c (main): Remove a single	leading underscore from
	compiled symbol names if necessary.

1998-12-01  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* config.guess, config.sub: imported from autoconf pre-2.13

1998-11-27  Gary V. Vaughan  <gary@gnu.org>

	* libtool (AM_PROG_LD): Oops... we need to know the host_os for
	the changes below.  I'm not sure whether mingw32 and os2 support
	UNC paths, if they did we wouldn't need the check, we could use
	UNC paths on all three; or if the bug with $LD not being
	shell-meta escaped was fixed, we could use '\\' separators on all
	three. AC_REQUIRE'ed AC_CANONICAL_HOST.

	* libtool.m4 (AM_PROG_LD): Cannonicalize the absolute path for the
	ld program;  The order is funny to provide canonicalization to
	paths with '\\' separators as well as '/'.
	* ltconfig.in: ditto.

	* AUTHORS: Added myself as a co-maintainer.

	* ltconfig.in (archive_cmds): The `;\' in a compound statement is
	expanded wrongly for cygwin32, mingw32, aix3 and aix4. Changed to
	`;'.

1998-11-25  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.spec (URL): point to www.gnu.org
	(Source): point to ftp.gnu.org

	* Makefile.am (EXTRA_DIST): removed libtool.prj
	Reported by Akim Demaille <demaille@inf.enst.fr>

1998-11-24  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (echo): avoid shell error messages when we're
	testing for large command line support
	Reported by Axel Thimm <Axel.Thimm@physik.fu-berlin.de>

	* doc/PLATFORMS: updated last-tested release for platforms I've
	got access to

	* THANKS: added Chris P. Ross

1998-11-24  Chris P. Ross  <cross@eng.us.uu.net>

	* ltconfig.in: added recognition of the dynamic linker on BSD/OS 4.x
	* README: added BSD/OS 4.x to the list of supported platforms
	* doc/PLATFORMS: added BSD/OS 4.x support for various host id's

1998-11-24  David Heine  <dlheine@truffle.Stanford.EDU>

	* ltmain.in (pass_all): actively pass the flags

1998-11-24  Thomas Tanner  <tanner@gmx.de>

	* depdemo: added inter-library dependencies demo (doesn't work yet!)
	* AUTHORS: added myself to the list of maintainers

1998-11-22  Thomas Tanner  <tanner@gmx.de>

	* libltdl: added support for .la files, LGPL license,
	K&R compatibility, some API changes and bugfixes
	* ltmain.in: renamed -module flag (for compiling) to -force-static,
	define -DSTATIC when compiling static .o files,
	do not include directories in dld_preloaded_symbols
	* mdemo: modified mdemo to work with the new libltdl
	* tests/mdemo-exec.test, tests/mdemo-inst.test: use .la files

1998-11-21  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libltdl/ltdl.c: replace NULL with 0, so that we don't depend on
	header files defining it.

	* ltconfig.in (archive_cmds, osf3, osf4, solaris, sunos4): create
	libraries with gcc -shared if using gcc without GNU ld.

	* ltconfig.in: replaced occurrences of solaris2 with solaris, to
	prepare for Solaris 7

1998-11-19  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* mdemo/Makefile.am (hell_debug_LDFLAGS): -dlpreopen -> -dlopen
	(hell_LDFLAGS): added -export-dynamic and -dlopen
	(SUBDIRS, INCLUDES): added modules directory
	(foo1.c, foo2.c, foo.h, libfoo1.sym, libfoo2.sym): moved to modules
	* Makefile.am: ditto
	* tests/mdemo-exec.test, tests/mdemo-inst.test: libraries moved
	* mdemo/modules/Makefile.am: new file

	* */Makefile.am (AUTOMAKE_OPTIONS): added no-dependencies

	* ltmain.in: missing `test' between `&&' and `"$module"'

	* ltconfig.in (echo_test_string): the whole ltconfig script was
	too much for DU4.0's ksh, but the first 50 lines will be enough.

	* ltmain.in (installed): new variable defined within a .la file,
	so that libtool can now link already-installed libraries into a
	program.
	* NEWS: ditto
	* doc/libtool.texi (Linking executables): document it

	* ltmain.in (output_objdir): compute it from $output, not $arg

	* tests/mdemo-inst.test (libltdl): install it
	* tests/mdemo-unst.test (libltdl): uninstall it
	* tests/Makefile.am (TESTS): list ltdl-unst.test before mdemo-conf.test

1998-11-18  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* NEWS: -module and libltdl
	* mdemo/Makefile.am: ../libltdl is within $(srcdir)

1998-11-18  Thomas Tanner  <tanner@gmx.de>

	* libltdl, Makefile.am: added libltdl (a system independent
	dlopen wrapper library extracted from mdemo)
	* ltmain.in: added -module flag for compiling and linking of
	modules. If enabled it compiles always both .o (with -DLT_RENAME)
	and .lo files
	* mdemo: modified mdemo to work with libltdl
	* tests/ltdl*: added tests for libltdl

1998-11-16  Steve Price  <sprice@hiwaay.net>

	* ltconfig.in: when $host_os is freebsd[23]* determine whether
	the current linker format is a.out or ELF
	* ltmain.in: add two new $version_type's, freebsd-aout and
	freebsd-elf, to support above change

1998-11-16  Stephan Kulow  <coolo@kde.org>

	* ltconfig.in: extent no_builtin_flag to contain -fno-rtti and
	-fno-exceptions in case we compile with a gcc, that supports
	this options (egcs and gcc >= 2.8)

1998-11-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (C_compiler): copy $CC before it is overwritten with
	command-line compiler, so that we can use it to compile C sources
	generated during the build.  This fixes the problem that showed up
	with -export-dynamic of C++ programs in egcs 1.1.
	* NEWS: ditto

1998-11-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* PORTING: Porting instructions are in the libtool manual already

	* NEWS: Mention -export-symbols and new dlpreopen

1998-11-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (IFS): revert Gary's patch when parsing version
	information; we still use `:' here :-)

	* NEWS: updated
	* PORTING: new file, with general instructions and inter-library
	dependencies tips

1998-11-11  Gary V. Vaughan  <gary@gnu.org>

	* ltconfig.in: make use of '~' field separator in reload_cmds,
	old_archive_from_new_cmds, old_archive_cmds, archive_cmds,
	old_postinstall_cmds, postinstall_cmds, old_postuninstall_cmds,
	postuninstall_cmds and finish_cmds, so that the semi-colons inside
	if/then/else/fi and for/do/done etc. do not break the eval loop in
	ltmain.in (below).
	* ltmain.in: changed all of the eval loops to use an IFS of `~',
	to allow differentiation between the end-of-statement-;
	(now `~' is used) and end-of-substatement-; (still `;').  This
	fixes AIX and win32 at least.

1998-11-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (sunos*, sympat, symxfrm): remove underscore
	prepended by the compiler

1998-11-10  Toshio Kuratomi  <badger@prtr-13.ucsc.edu>

	* ltconfig.in: re-enable deplibs
	* ltmain.in: support deplibs, at least for GNU/Linux/x86
	Updated to current libtool by Thomas Tanner  <tanner@gmx.de>

1998-11-10  Gordon Matzigkeit  <gord@trick.fig.org>

	* ltmain.in (link): Make the relink warning less harsh.

1998-11-07  William M. Perry  <wmperry@aventail.com>

	* ltconfig.in (aix3, aix4): uniquify symbol names in archive_cmds

1998-11-07  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in: add --falback-echo, to be used if everything else
	fails.  The tests now check the behavior of $echo for very large
	strings, because some echo commands would just core dump (e.g.,
	Solaris' printf).  If too large strings fail, smaller ones are
	tested.
	(ltecho): arrange that, if the --fallback-echo method is selected,
	echo will be defined in the libtool script so as to re-run itself,
	not ltconfig
	* ltmain.in: add --fallback-echo
	(qecho) ensure that, if --falback-echo is being used, qecho is
	defined with the full pathname of the libtool script

	* tests/sh.test (test X): ensure that the double-quote supposed to be
	reported is really reported

1998-11-07  Thomas Tanner  <tanner@gmx.de>

	* mdemo/main.c: removed hardcoded library names; link against -lm
	* tests/mdemo-exec, tests/mdemo-inst: pass the library names
	to the program

1998-11-07  Marc J. Fraioli  <fraioli@dg-rtp.dg.com>

	* README: Added DG/UX
	* doc/PLATFORMS: ditto

1998-11-04  Michael Tiemann  <tiemann@cygnus.com>

	* ltconfig.in (irix6): it's a little bit different from irix5

1998-11-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* THANKS: Added Thomas Tanner and Gary V. Vaughan

	* ltconfig.in, ltmain.in: updated and fixed the patches below

1998-11-04  Thomas Tanner  <tanner@gmx.de>

	* mdemo/*: added new demo to demonstrate building of dlopenend
	modules
	* tests/Makefile.am, tests/mdemo*: added some tests for mdemo

1998-11-04  Gary V. Vaughan  <gary@gnu.org>

	* demo/configure.in: added AC_EXEEXT macro so that the tests can
	work on cywin32/mingw32 hosts.  This requires the current CVS
	autoconf

1998-11-04  Thomas Tanner  <tanner@gmx.de>

	* ltmain.in: New flag -export-symbols; new dlpreopen system
	* demo/dlmain.c: removed dld_preloaded_symbol_count

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltmain.in: On installation, don't get confused if the same name
	appears more than once in the list of library names.

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: Add objext and libext variables.  Check for object
	suffix.  Check for mingw32* as well as cygwin32*.  Use objext when
	testing compiler.  Add support for Visual C++ on cygwin32 when not
	using gcc.  Add objext, libext, and fix_srcfile_path to generated
	libtool script.
	* ltmain.in: Use .${objext} rather than .o.  Use fix_srcfile_path
	if it is set.  Check for .obj as well as for .o, and for .lib as
	well as for .a.  Use .${libext} rather than .a when creating old
	libraries.
	* libtoolize.in: Change initial /bin/sh to @SHELL@.
	* libtool.m4 (AM_PROG_LIBTOOL): Add AC_REQUIRE for
	AC_CANONICAL_BUILD, so that autoconf doesn't get mixed up by the
	AC_REQUIRE in AC_CHECK_TOOL.

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: Look in the right directory for libtool.c in
	archive_cmds for cygwin32.

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: Fix cygwin32 support to avoid using a double
	extension, to delete the def file, to set version_type to windows,
	and to include versuffix in the DLL name.
	* ltmain.in: Add support for a version_type of windows.

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: Add cygwin32 support.
	* libtool.m4 (AM_PROG_LIBTOOL): Call AM_SYS_LIBTOOL_CYGWIN32 on a
	cygwin32 host.  Pass DLLTOOL and AS to ltconfig.
	(AM_SYS_LIBTOOL_CYGWIN32): New macro.

1998-11-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* libtool.m4 (sco): fix typo

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: On AIX, don't treat GNU ld specially.

1998-11-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (hardcode_minus_L): Revert Ian's patch for
	ltconfig.in.  Although -L hardcoding is not used with GNU ld, it
	does happen, so hardcode_minus_L must be set to yes.

	* ltconfig.in (compiler_o_lo): check whether we can write directly
	to a .lo

	* ltmain.in (compiler_o_lo): if not, write to .o and rename it

1998-11-04  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: For sunos4 using GNU ld, set hardcode_minus_L to
	no.
	* ltmain.in: Add some hacks to make SunOS --enable-shared work
	when using GNU ld.

1998-11-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* THANKS: Added Marc J. Fraioli

1998-11-04  Marc J. Fraioli  <fraioli@dg-rtp.dg.com>

	* ltconfig.in (dgux): new supported platforms

1998-11-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltconfig.in (need_locks): if neither `-c -o' nor hard links are
	available, fallback to not so safe mechanism, by setting
	need_locks to warn
	* ltmain.in (need_locks): when need_locks is set to warn, use the
	lockfile to try to fail in case of incorrect concurrent builds

	* THANKS: Added Eric Estievenart

1998-11-04  Eric Estievenart  <eric@via.ecp.fr>

	* doc/libtool.texi (Compile mode): Document that -o is fully
	supported.

	* libtool.m4 (libtool-lock): new ARG_ENABLE; sets (need_locks)
	* ltconfig.in (disable-lock): control need_locks
	(hard_links): check whether hard-links can be used for locking
	* ltmain.in (need_locks): use $output_obj.lock for locking

1998-11-03  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in: correctly create libraries and programs with
	directory components in their names

1998-11-03  Eric Estievenart <eric@via.ecp.fr>

	* ltmain.in (output_obj): typo

1998-11-02  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: For sunos4, add ${libname}.so$versuffix to
	library_names_spec.
	* ltmain.in: For version_type of sunos, set versuffix even if
	-version-info was not used.

1998-11-02  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* ltmain.in (libobj): default value must not contain directory
	components

1998-11-02  Eric Estievenart <eric@via.ecp.fr>

	* ltconfig.in (compiler): detect if the compiler supports
	-c and -o flags, create a variable compiler_c_o. Also issue
	a big warning if it is not supported

	* ltmain.in (compile): enable the -o option as input for libtool.
	The objects are not moved if the compiler supports -o with -c.
	Sources and objects can contain relative directories.
	(link): enable the linking of executables into relative directories

1998-11-02  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* AUTHORS: added myself as a co-maintainer
	* THANKS: and removed my name from here

	* autogen: new script; run it to bootstrap libtool after checking
	it out from CVS

	* libtool.m4 (CFLAGS): check whether -belf is needed on SCO, as
	suggested by Robert Lipe <robertl@dgii.com>

1998-10-31  Gordon Matzigkeit  <gord@trick.fig.org>

	* demo/Makefile.am (hc-libpath): Use parameters from the libtool
	in the top build directory, since the one in the demo directory is
	not guaranteed to exist.

1998-10-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* demo/Makefile.am (objdir): there are no longer quotes around
	objdir in the libtool script

1998-10-27  Gordon Matzigkeit  <gord@trick.fig.org>

	* ltconfig.in (dynamic_linker): Echo the result to fd 6, so that
	--silent works correctly.  From William M. Perry.

1998-09-24  Gordon Matzigkeit  <gord@trick.fig.org>

	* ltmain.in (link): Fix problems when building only static
	libraries.  From Owen Taylor.

1998-08-20  Gordon Matzigkeit  <gord@trick.fig.org>

	* ltmain.in (install): When library_names_spec has redundancies,
	avoid deleting the main library when installing symlinks.  From
	Jeff Dairiki.
	(link): Get rid of backticks in a here doc comment.
	This causes segfaults on Solaris 2.  From Aleksandar Bakic.
	(finish): Don't display messages

	* ltconfig.in (archive_cmds): On HP-UX 9, make sure we don't try
	to move a file to itself.  From Jeff Dairiki.

1998-08-19  Gordon Matzigkeit  <gord@trick.fig.org>

	* ltconfig.in: Make changes to accomodate ltmain.c.

	* Makefile.am (clibtool): New target for the C version of libtool.

	* ltmain.c: Experimental C version of libtool.

1998-07-10  Ian Lance Taylor  <ian@cygnus.com>

	* ltmain.in (install): Test against both $SHELL and /bin/sh.

1998-06-30  Gordon Matzigkeit  <gord@trick.fig.org>

	* ltmain.in: Convenience archive support.  From Ulrich Drepper.

	* ltconfig.in (postinstall_commands): Change libraries to be
	executable on Solaris in order to prevent ldd from moaning.  From
	Julian Gosnell.
	(whole_archive_flag_spec): New variable to shortcut convenience
	archive expansion.  From Ulrich Drepper.

1998-06-11  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in, ltmain.in: Change globs to accept forward slashes
	in absolute directory names used on DOS-like systems.  From Robert
	S. Maier.

Thu May 28 18:59:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: Use $SHELL when invoking shell scripts.

1998-05-21  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (compile): Don't have `-static' turn off libtool
	libraries, so that people can use it just to guarantee that `.o'
	files exist.  Suggested by David Mosberger-Tang.

1998-05-18  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (link): Possibly reexec the shell from within the
	wrapper script.
	Allow `-version-info' and `-release' to coexist again.  If people
	want to shoot themselves in the foot, I'd better let them do so,
	so that people who are smart enough not to can squeeze out another
	ounce of functionality.  From Tim Janik.
	(version_vars): Delete dead variable.

	* ltconfig.in (hardcode_minus_L): FreeBSD 3.0 doesn't hardcode, at
	last.  Reported by Jason Nordwick.

	* libtoolize.in, ltconfig.in, ltmain.in: Change a bunch of `if
	test ...; then : ; else ...' constructs to `if test ! ...; then
	...', for clarity.

1998-05-17  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (LC_ALL, LANG): Save these values and restore them
	during execute mode.  From Pavel Kankovsky.
	(mode): Accept strace and truss as programs that throw us into
	execute mode.  From Pavel Kankovsky.

1998-05-07  Ian Lance Taylor  <ian@cygnus.com>

	* ltconfig.in: Don't use .$versuffix or .$major.  Instead, assume
	the variable will include any required prefix.
	* ltmain.in: If no -version-info option was used, produce empty
	version strings rather than 0.0.0.  When making library symlinks,
	avoid making a symlink if the name would be the same.

1998-04-27  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (link): Support `unsupported' as a hardcode_action.
	Reported by Lars Hecking.
	(lib_linked): Do some sanity checking to make sure that we
	actually do link libtool libraries into the program to prevent the
	above problem from happening again.

1998-04-20  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in: Maybe reexec under $SHELL, if $echo doesn't work.
	Reported by Lars Hecking.

1998-04-19  Gordon Matzigkeit  <gord@profitpress.com>

	* Makefile.am (maintainer-rekey): New rule to force us to change
	Project-Version after we make a release.  This keeps all version
	numbers in sync, rather than branching just before the release.
	(maintainer-release, maintainer-checkin): Use maintainer-rekey.

	* ltmain.in (finish): Notice when a finish command fails, so that
	we can add it to the list of recommendations.

1998-04-17  Gordon Matzigkeit  <gord@profitpress.com>

	* libtool.m4 (AM_PROG_LIBTOOL): Append file descriptor 5 to
	config.log, so that configure doesn't clobber the messages that
	ltconfig put there.  From David Taylor.

1998-04-15  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (archive_cmds): Try using `$CC -shared' when
	configuring for GCC under irix5 and irix6.  From Wolfram Gloger.
	(ofile): Add `--output' flag to change the name of the generated
	libtool.  Suggested by Wolfram Gloger.

1998-04-14  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in: Remove all hardcoded references to ltmain.in in
	favour of $PACKAGE and $PROGRAM.
	(install): Compute the installation name for programs, in case we
	install a relinked file which has a different name.  Reported by
	Pieter Schoenmakers.

	* ltconfig.in (echo): Try using the ksh(1) `print -r' builtin
	command, before reverting to printf(1).

	* Makefile.am (libtool): Use $(SHELL) when invoking ltconfig.

	* ltconfig.in (echo): Rewrite the test for a working echo so that
	we win on Solaris by avoiding printf(1), if possible.

	* tests/quote.test (echo): Update the echo test from ../ltconfig.in.

1998-04-13  Ian Lance Taylor  <ian@cygnus.com>

	* libtool.m4 (AM_PROG_NM): Don't override NM in the environment.

1998-04-13  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in: New `--config' flag to print out all configured
	variables.

	* libtool.m4: Pass ltconfig the undocumented --no-reexec flag,
	since we call it explicitly using CONFIG_SHELL.

	* ltconfig.in: Restart the script under a different shell if
	CONFIG_SHELL is not /bin/sh.  This way, people can use Bash if
	they don't have a working echo program.

	* ltmain.in, ltconfig.in: Use $SHELL instead of /bin/sh when
	generating executable scripts.

	* libtoolize.in, ltconfig.in, ltmain.in: Implement the `--debug'
	flag to begin shell tracing.

	* ltconfig.in (archive_cmds): Don't use `gcc -shared', even if we
	have GNU ld.  Reported by Robert S. Maier.

1998-04-06  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (pic_flag): Create more than just a null C file, so
	that the SunPRO 4.2 cc doesn't complain.  From Bob Friesenhahn.
	(gnu_ld_acts_native): Delete this variable.  There is just too
	much version skew to try to pretend GNU ld is the same as the
	system ld.  Reported by Ian Lance Taylor.
	(hardcode_action): Don't bother relinking or aborting on systems
	that are too dynamic to have a consistent hardcode method.
	Reported by Doug Winterburn.

1998-03-24  Gordon Matzigkeit  <gord@profitpress.com>

	* doc/libtool.texi: A little proofreading.  From Albert
	Chin-A-Young.

1998-03-23  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in: Treat HP-UX 11 just like HP-UX 10.  From Jeff Law.

1998-03-21  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (reload_flag): Correct a tiny bug where `--silent'
	would still print out the reload flag.  From Stephan Kulow.

1998-03-20  Ian Lance Taylor  <ian@cygnus.com>

	* libtool.m4: Use changequote to avoid problems with square
	bracket patterns.

1998-03-20  Gordon Matzigkeit  <gord@profitpress.com>

	* Release 1.2.

1998-03-18  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in: Rearrange some of the echos to make them more
	consistent.

1998-03-14  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in: Break up an echo command that causes Solaris printf
	to dump core.  Apparently the Solaris people hardcoded a 2110-byte
	buffer into their printf(1).  Feh.  From John Judge.

1998-03-11  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in: Change the test for the PIC compiler flag so that
	we assume it doesn't work if there are any warning messages.  This
	fixes a bug using old GCC's on HP-UX.  Reported by Akim Demaille.

1998-03-10  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile.am ($(srcdir)/ltconfig): Remove bogus command to create
	a file ltconfig in the build directory.

1998-03-09  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* ltmain.in: Avoid unnecessary use of command substitution,
	replacing foo=`eval \\$echo \"$mumble\"` by eval foo=\"$mumble\".

	(link): Use ${1+"$@"} in wrapper scripts in order to pass
	arguments safely to a program.

	* ltconfig.in: Use -fpic instead of -fPIC if $host_cpu matches
	m68*.

1998-03-08  Gordon Matzigkeit  <gord@profitpress.com>

	* Release 1.1.

	* ltmain.in: <sigh> I like `here documents' a lot, but apparently
	they are so badly handled by old and buggy /bin/sh's, that
	replacing `cat <<EOF ... EOF' by `$echo "..."' improves libtool's
	speed by a factor of 5.  So, I've eliminated here docs from the
	all-important ltmain.in.  From Tom Lane.

	* tests/tlibtool: Eliminate from distribution.

	* tests/defs (libtool): Don't use tlibtool anymore, since we can now use
	the generated libtool directly.

1998-03-07  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in: Copy the contents of ltmain.sh into the generated
	libtool.  This should more than halve the execution times on old
	or buggy /bin/sh systems, such as HP-UX 9 and SunOS 4.1.4.  From
	Tom Lane.

1998-03-05  Gordon Matzigkeit  <gord@profitpress.com>

	* libtool.m4 (AM_ENABLE_SHARED, AM_ENABLE_STATIC): Add support for
	the `default' package, so that people can control unnamed
	packages.
	(LD): Only add an ABI flag under IRIX 6.x, since IRIX 5.x doesn't
	support them.  From Alexandre Oliva.

1998-03-01  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in: Port to UnixWare 2.x.  From Christopher Olsen.

1998-02-25  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (compile): For consistency, honour the `-static' flag
	during compilation.

1998-02-23  Brendan Kehoe  <brendan@cygnus.com>

	* libtool.m4 (AM_ENABLE_SHARED, AM_ENABLE_STATIC): For
	--enable-shared, heed the value of $PACKAGE from AM_INIT_AUTOMAKE
	if given as the argument for the library to be built shared.

1998-02-20  Gordon Matzigkeit  <gord@profitpress.com>

	* libtool.m4, ltconfig.in (NM): Fix up a typo confusion between
	$ac_dir and $dir.  Reported by Akim Demaille.

	* ltmain.in (link): Don't allow both `-version-info' and
	`-release'.  Reported by Danny Backx.

1998-02-18  Gordon Matzigkeit  <gord@profitpress.com>

	* Makefile.am (noinst_SCRIPTS): Remove lineno from distribution.

	* lineno: Remove from distribution, as it is no longer needed.

	* Makefile.am ($(srcdir)/ltconfig.in, $(srcdir)/ltmain.sh):
	Rewrite these rules not to use config.status or lineno.  This
	makes things simpler, and reduces dependencies, so that the
	scripts are rebuilt and installed in srcdir only when necessary.
	Reported by Stephan Kulow.

	* tests/sh.test (scripts): Remove the lineno script, since it is no
	longer distributed.

	* tests/assign.test, if.test, test-e.test: Even though 15 tests looks
	impressive, these are now redundant.  Remove them from the
	distribution.

	* tests/sh.test: Do what assign.test, if.test, and test-e.test used to
	do.

1998-02-16  Gordon Matzigkeit  <gord@profitpress.com>

	* libtool.m4, ltmain.in, ltconfig.in: Correctly identify absolute
	directory names on MS-DOS.  Suggested by Bob Friesenhahn.

	* ltconfig.in, ltmain.in, libtool.m4: Change a bunch of `sed N!d'
	commands to `sed Nq', for efficiency.

	* ltmain.in: Only egrep the first few lines of files in order to
	determine if they were libtool-generated.  This prevents egrep(1)
	from taking forever to look at a 10MB binary on Solaris.  From
	Stephan Kulow.

	* tests/defs: Correctly identify absolute directory names on MS-DOS.
	Suggested by Bob Friesenhahn.

1998-02-11  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (no_undefined_flag): Add a flag to declare under
	Solaris that the library should not have any undefined
	references.  Suggested by Bob Friesenhahn.

	* ltmain.in (mkdir): Fix one more mkdir race.  From H.J. Lu.

1998-02-08  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in, ltmain.in (striplib, old_striplib): Ditto.

	* ltconfig.in (profile_flag_pattern): Get rid of dead code.

1998-02-07  Gordon Matzigkeit  <gord@profitpress.com>

	* libtool.m4 (AM_ENABLE_SHARED, AM_ENABLE_STATIC): New macros to
	modify the `--enable-shared' and `--enable-static' defaults in the
	configure script.  This works a lot better than the old
	`enable_shared' and `enable_static' variables did.  Reported by
	Bob Friesenhahn.

	* tests/suffix.test (extensions): Added GNAT (GNU Ada Translator)
	suffices, `.ada', `.ads', `.adb'.  From Samuel Tardieu.

1998-02-07  Samuel Tardieu  <sam@inf.enst.fr>

	* ltmain.in: Recognize .ada, .ads and .adb as known suffixes (they
	are used by GNAT, the GNU Ada compiler).

1998-02-06  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in: Turn on IRIX shared libraries again!

	* libtool.m4 (LD): Use file(1) to discover which ABI we're using
	on IRIX, and propagate the correct linker flag.  From Jim Wilson.

	* ltconfig.in, ltmain.in (Xsed): `arg=-n; echo "$arg" | sed ...'
	gives problems, because the `-n' is interpreted as an option to
	echo(1).  So, use `echo "X$arg" | sed -e 's/^X//' ...' everywhere,
	via the $Xsed convenience variable.  Suggested by H.J. Lu.

1998-02-02  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in: Turn off IRIX shared library support until 32-bit
	and 64-bit ABI differences can be resolved.

1998-01-28  Gordon Matzigkeit  <gord@profitpress.com>

	* libtool.m4 (LD): Reverse yesterday's change because `-old_ld'
	isn't accepted by GCC.

1998-01-27  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (soname_spec): Add in user-specified release numbers
	for every host system that supports an soname that differs from
	the linkname.

	* libtool.m4 (LD): Add `-old_ld' to the list of flags that need to
	be passed through on SGI.  Reported by Chris Lee.

	* ltmain.in (release): Prepend a hyphen to the release number, and
	fix a typo because `-version-info' takes only 3 args.  From
	H.J. Lu.

1998-01-25  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (library_names_spec): On Linux, use the
	user-specified release.

	* ltmain.in (link): Allow the user to specify a release number for
	the library using the `-release' flag.  Suggested by H.J. Lu and
	Ian Lance Taylor.

1998-01-23  Gordon Matzigkeit  <gord@profitpress.com>

	* tests/Makefile.am (TESTS_ENVIRONMENT): Export some important
	environment variables.  Reported by Ian Haggard.

1998-01-19  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (old_postuninstall_cmds): Reorder so that chmod
	happens after ranlib.  From Markus F.X.J. Oberhumer.

	* ltmain.in (mode): Added `gcc*' and `*-gcc*' to the patterns that
	recognize compilers.  From Pieter Schoenmakers.
	(link): Recognize `.a' files again.  Suggested by Pieter
	Schoenmakers.

1998-01-18  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (compile): Recognize `.asm' extension, for use with
	the nasm assembler.  From Markus F.X.J. Oberhumer.

	* tests/suffix.test (extensions): Recognize `.asm'.  From Markus
	F.X.J. Oberhumer.

1998-01-12  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in (runpath_var): Use instead of
	`hardcode_runpath_var'.

1998-01-11  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (finish): Add a better --finish message.  Suggested by
	Kenneth Albanowski.

	* ltconfig.in, ltmain.in: Fix a few typos.

1998-01-03  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in (link): Quote the definition of $echo in the wrapper
	script.

	* ltconfig.in (export_dynamic_flag_spec): Use `--export-dynamic'
	instead of `-export-dynamic', which is not accepted by all GNU
	ld's.  From Eiichi Takamori.

	* ltmain.in (install): Don't print silly `library stripping'
	warnings.  Reported by François Pinard.

1997-12-19  Gordon Matzigkeit  <gord@profitpress.com>

	* ltmain.in: Don't forget to quote the CDPATH substitution.  From
	Tor Lillqvist.

1997-12-18  Gordon Matzigkeit  <gord@profitpress.com>

	* ltconfig.in, ltmain.in (CDPATH): Unset this environment variable
	so that HP-UX shells, at least, don't print out the directory name
	after a `cd' command.  From Tor Lillqvist.

1997-12-10  Gordon Matzigkeit  <gord@gnu.org>

	* demo/Makefile.am (hardcode): Change a bunch of references to
	`$(LIBS)' to `-lm', since we no longer put -lm in LIBS.

	* demo/configure.in: Delete the test for libm, since it is
	standard on every system.

	* demo/Makefile.am (libhello_la_LDFLAGS): Change to include -lm,
	in accordance with new inter-library dependency code.

	* ltmain.in (dependency_libs): Added to help people link programs
	without having to explicitly specify inter-library dependencies.

	* ltconfig.in (COLLECT_NAMES): Oops... I forgot to apply the AIX 3
	restriction to the generated libtool script.  Reported by Stefan
	Westerfeld.

1997-12-05  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in (thisdir): Quote $echo in the generated libtool
	script for HP-UX.  From Markus F.X.J. Oberhumer.

	* ltmain.in (link): Recognize the `.s' suffix.  From Markus
	F.X.J. Oberhumer.

	* ltconfig.in (link_static_flag): Don't quote ${wl} on HP-UX
	because link_static_flag is never evaled.  From Eric Backus.

	* tests/suffix.test (extensions): Recognize `.s'.  From Markus
	F.X.J. Oberhumer.

1997-12-01  Gordon Matzigkeit  <gord@gnu.org>

	* demo/Makefile.am (helldl_DEPENDENCIES): Add `libhello.la' to our
	dependencies so that parallel builds work correctly.  From Jim
	Meyering.

	* Makefile.am ($(srcdir)/ltconfig, $(srcdir)/ltmain.sh): Rewrite
	these rules so that they are parallelizable.  Reported by Jim
	Meyering.

	* ltconfig.in (ltecho): We need special handling to quote the
	`echo' variable itself.  From Alexandre Oliva.

1997-11-29  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in (COLLECT_NAMES): Enable this workaround for a broken
	collect2 only on AIX 3.  This avoids problems on other AIX
	versions.  Reported by Stefan Westerfeld.

	* ltmain.in, ltconfig.in (finish_eval): Variable like finish_cmds,
	except it is a single command which is evaled, and not shown.

	* ltconfig.in: Port to AmigaOS.  From Joop van de Wege.

	* ltmain.in (echo): Delete preamble to check for a working echo,
	since we just use the one included in the generated libtool.

	* ltconfig.in (echo): Include this definition in the generated
	libtool script.

1997-11-28  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in, libtool.m4 (NM): Add /usr/ccs/bin to the PATH
	before checking.  From Kaveh R. Ghazi.
	(NM): Delete an extraneous egrep from ltconfig.

	* ltconfig.in (finish_cmds): Change back to using `ldconfig -n'.
	This makes Linux behave like other systems, which is more in line
	with what libtool needs.

1997-11-27  Gordon Matzigkeit  <gord@gnu.org>

	* ltmain.in: Change a whole bunch of `progname' variables to
	`modename'.  This is for clarity, and to fix a tiny typo in finish
	mode.

	* libtool.spec (Name, Version): Ditto.

	* configure.in (AM_INIT_AUTOMAKE): Use PRCS to automatically generate
	the proper package name and version number.

	* ltconfig.in (gnu_ld_acts_native): Treat GNU ld like the native
	linker on SunOS 4.x.  Suggested by Alexandre Oliva.
	(deplibs): Change the defaults all over, since most systems cannot
	handle inter-library dependencies.

	* libtool.m4, ltconfig.in (NM): Only look at the first line of the
	output from NM when determining whether it supports a command line
	option.  This prevents false positives on OSes which ignore
	invalid flags, like HP-UX, which prints `nm: unknown option "B"
	ignored'.  Reported by Kaveh R. Ghazi.

	* ltconfig.in (finish_cmds): On Linux, update ld.so.cache by
	removing the `-n' flag from ldconfig.  Suggested by Kenneth
	Albanowski.

	* Makefile.am (maintainer-checkin, maintainer-release): New
	commands to reap the full benefit of using PRCS to maintain
	libtool version numbers.

	* ltconfig.in, ltmain.in (global_symbol_pipe): Explicitly cast all
	addresses to __ptr_t.  This fixes a bug due to a strict IRIX
	compiler.  Suggested by Kaveh R. Ghazi.

1997-11-23  Gordon Matzigkeit  <gord@gnu.org>

	* ltmain.in (echo): For aesthetics, avoid using `$echo' when
	`echo' will do *exactly* the same thing.  This prevents ugly
	`printf %s\n timestamp > some.lo' commands from appearing in the
	libtool output.
	(link): Delete the `-allow-undefined' flag because it is now the
	default.  Make `-no-undefined' in order for people to declare that
	a library is entirely self-contained.  This prevents maintainers
	from accidentally creating shared libraries that won't work on
	AIX.  Reported by Stefan Westerfeld and Danny Backx.

	* ltconfig.in (echo): Use an echo variable, just as in ltmain.in,
	because we need it for quoting substitutions.  For most of the
	script, though, use the default echo, just like Autoconf does.
	Without this patch, character \001 ends up in global_symbol_pipe.
	Reported by Lars Hecking and Jürgen Fluk.

	* ltmain.in (echo): Set default to `echo=echo'.  Ooops.  That's
	what you get for testing obscure code paths and forgetting to
	revert to the original version.  Reported by Danny Backx.

1997-11-14  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in (hardcode_libdir_flag_spec): Set to `-R' for FreeBSD
	2.2.  From Sean Kelly.
	(postuninstall_cmds, old_postuninstall_cmds): Commands to run
	after uninstall mode deletes the libraries.  Suggested by Joop van
	de Wege.
	(export_dynamic_flag_spec): On HP-UX, add the `${wl}-E'
	export_dynamic_flag_spec.  Reported by Matthias Hoelzer.

1997-11-11  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in, ltmain.in (sed_quote_subst): Oops.  We forgot to
	quote backticks.  Reported by Joop van de Wege.

	* tests/quote.test: Add backticks to the backslashify test.

1997-11-09  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in (symcode): On IRIX, don't extract undefined
	symbols.  When a function is inlined by G++, references to it are
	still marked as undefined in the object file.  This means that our
	symbol file causes undefined references, because there are
	actually no matching global symbols.  Reported by Paul Kendall.

1997-11-08  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in: Don't forget to redirect the COLLECT_NAMES libtool
	script fragment to the generated libtool, rather than to stdout.

1997-11-07  Gordon Matzigkeit  <gord@gnu.org>

	* libtool.m4 (LD): Add a more sophisticated test to determine the
	ABI flag on IRIX 6.  Suggested by Lars Hecking and Ian Lance
	Taylor.

	* ltconfig.in, ltmain.in (COLLECT_NAMES): Only export this
	variable if we are running under AIX.  Otherwise, we tickle a g++
	bug under IRIX.  From Paul Kendall.

	* Change bug reporting address to <bug-libtool@gnu.org>.

	* ltconfig.in (allow_undefined_flag): OSF/1 3.x also requires a
	wildcard argument to `-expect_unresolved'.  From Stephan Kulow.

1997-11-06  Gordon Matzigkeit  <gord@gnu.org>

	* ltmain.in (link): Use libname_spec.

	* ltconfig.in (pic_flag): Somehow, the HP-UX pic_flag (`+Z') was
	dropped between libtool-1.0 and now.  Add it back in.  Reported by
	Akim Demaille.
	Integrated more patches for OS/2.  From Jeff Freedman.
	(libname_spec): New variable for OSes that don't require their
	libraries to look like `libNAME.a'.

	* ltmain.in (link): Only use global_symbol_pipe if it has been
	defined.  From Stephan Kulow.

	* ltconfig.in (global_symbol_pipe): Protect C fragment under C++
	compilers.  From Stephan Kulow.

	* Makefile.am ($(srcdir)/acinclude.m4,
	$(srcdir)/demo/acinclude.m4): Change rules to use LN_S so that
	they can be run on any system.

	* ltconfig.in (archive_cmds): For NetBSD, don't include deplibs.
	From Dieter Baron.

	* ltmain.in (mkdir): Check that the directory doesn't exist before
	we exit with error, so that we don't get races during parallel
	builds.  From H.J. Lu.
	(fbsd_hideous_sh_bug): Apparently, some FreeBSD /bin/sh's have a
	bug that will empty base_compile unless we do this dummy
	assignment.  From Marc van Kempen.

1997-10-22  Gordon Matzigkeit  <gord@gnu.org>

	* libtool.m4 (libtool_shared, libtool_static): Fixed logic error
	to reenable override of libtool's defaults by setting
	enable_shared or enable_static in configure.in.  Reported by Tom
	Tromey and Stephan Kulow.

	* ltmain.in (link): Add explicit support for compiler options that
	begin with `+'.  Reported by Aubert Pierre.

1997-10-20  Gordon Matzigkeit  <gord@gnu.org>

	* ltmain.in: Silly me.  Change a bunch of occurances of "* $dir *"
	into *" $dir "*.

	* ltconfig.in (pic_flag): PIC is the default for AIX.  From Mark
	Kettenis.  It is also the default for OSF/1.

	* demo/Makefile.am (objdir): Quote double-quotes.  From Mark
	Kettenis.

	* ltconfig.in (global_symbol_pipe): This variable is not
	double-evaled, so it should not be double quoted.  From Mark
	Kettenis.

1997-10-19  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in (LD): Same as below.

	* libtool.m4 (LD): Set LD if we discover an absolute path to GNU
	ld.  This prevents breakage when `$CC -print-prog-name=ld' returns
	an absolute directory name.  Reported by Ulrich Drepper.

	* ltconfig.in: Port to OS/2 using EMX.  From Jeff Freedman.

	* ltmain.in (link): Use old_archive_from_new_cmds.

	* ltconfig.in (old_archive_from_new_cmds): New variable to
	support DLL libraries.

	* ltmain.in (link): Only `eval' export_dynamic_flag_spec if it is
	not empty.  Reported by Stephan Kulow.

1997-10-18  Gordon Matzigkeit  <gord@gnu.org>

	* ltconfig.in (objdir): Use the .libs directory on all systems for
	which that name is valid, and _libs on the others (like MS-DOS).
	Suggested by Juergen Erhard.

1997-10-14  Gordon Matzigkeit  <gord@gnu.org>

	* ltmain.in (link): Added a bit more inter-language support to the
	symbol file generation process.
	Instead of complaining about unrecognized argument suffices, pass
	them to the linker.  This prevents libtool from barfing on
	mandatory arguments to linker flags.  Reported by Michael
	Tiemann.

1997-10-09  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.in (link): Change the wrapper script to follow symlinks
	in order to find thisdir.  This should put the final nail in the
	coffin for problems with wrapper scripts.  From Ian Lance Taylor.

1997-10-07  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.in: Change a few `$echo' commands into `$show' to make
	--silent mode behave as advertised.

	* ltconfig.in (allow_undefined_flag): On OSF/1 4.x, use
	`-expect_unresolved \*'.  From Christian Mondrup.

	* ltmain.in (install): Change install mode to allow a specified
	/bin/sh argument at the beginning of the install_prog.  Also,
	specify the shell to run when invoking libtool recursively for
	finish mode.  From Chris Provenzano.

	* libtool.m4 (LIBTOOL): Change definition to include $(SHELL).
	From Chris Provenzano.

	* ltconfig.in: Port to UTS 4.x.  From Alistair Crooks.

	* demo/Makefile.am (hc-libflag): Add rules to make this binary for
	hardcode.test.

	* tests/hardcode.test (hardcode_libdir_flag_spec): Check the hardcoding
	properties of the flag_spec, too.

1997-09-24  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (LD): As with libtool.m4, don't override LD.
	Do a whole bunch of ac_t quoting.

1997-09-24  Ian Lance Taylor  <ian@cygnus.com>

	* libtool.m4 (AM_PROG_LD): Don't override LD in the environment.

1997-09-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtool.m4, ltconfig.in (NM): Arguments to the for loop must be
	whitespace separated.  This fixes a bug under FreeBSD's /bin/sh.
	From George Scott.

	* tests/defs, tests/Makefile.am (clean-local): Change =inst to
	_inst to fix portability on MS-DOS.  From Robert Hoehne.

1997-09-20  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.in (deplibs): When building shared libraries, always add
	-lc to deplibs.  Reported by Andreas Jellinghaus.

1997-09-15  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in, ltmain.in (COLLECT_NAMES): If the COLLECT_NAMES
	environment variable has not been set, set it to empty.  This
	apparently fixes the AIX bug with GCC's collect2.  Reported by
	Mark Kettenis.

	* demo/Makefile.am, ltmain.in, tests/hardcode.test (objdir):
	Changed objdir variable .libs to _libs.  This is another MS-DOS
	portability fix.  Suggested by Robert Hoehne.

	* tests/hardcode.test (objdir): New variable to simplify change from
	.libs to _libs (MS-DOS portability fix).

1997-09-13  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in, ltmain.in (hardcode_minusL): Fix typo by renaming
	hardcode_minusL to hardcode_minus_L.  Also add FreeBSD
	hardcode_libdir_flag_spec. From Paul Traina.

	* ltmain.in (link): Honour multiple `-rpath' flags when linking
	programs.  Suggested by Bengt Martensson.
	Quote appearances of $echo in the wrapper script.  From Alexandre
	Oliva.

	* Makefile.am, configure.in, tests/tlibtool: Use ltmain.in instead
	of ltmain.sh.in.

	* ltmain.in: Rename ltmain.sh.in to ltmain.in.  This fixes a
	portability problem (on MS-DOS, of all places!).  From Robert
	Hoehne.

1997-09-11  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Do not transform libtool objects to regular
	objects if we did not build old libs.  Reported by Tomas Hiller.

1997-09-05  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* demo/Makefile.am (hell_debug_LDFLAGS): Change hell.static to
	hell.debug in order to reflect the new static linking semantics.

	* ltmain.sh.in (link): Add new `-all-static' flag to prevent all
	dynamic linking.  The old `-static' flag just prevents dynamic
	linking against libtool libraries.  Suggested by Bengt
	Martensson.

	* ltconfig.in (with_gnu_ld): Add a test to make sure that we are
	actually using GNU ld.  This fixes an inconsistency when running
	ltconfig without using libtool.m4.  Reported by Ulrich Drepper.
	(global_symbol_pipe): Delete symbols that are not valid C
	identifiers.  Reported by Johan Danielsson and Bengt Martensson.

	* tests/demo-exec.test, tests/demo-inst.test: Change references from
	hell.static to hell.debug.

	* tests/quote.test (echo): Add the same Digital Unix echo test fixes as
	the ones to ltmain.sh.in from Todd Kover.

	* tests/if.test, tests/test-e.test (scripts): Add ../lineno to
	the scripts we check.
	* tests/if.test: Check for accidental use of test X$something rather
	than test "X$something".

1997-09-04  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (echo): Quote all the uses of `echo' in all eval
	statements.  Reported by Bengt Martensson and Alexandre Oliva.
	(echo): Need to surround test args with double quotes, or the echo
	test fails on Digital Unix 4.0.  From Todd Kover.

1997-08-28  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (echo): Change test to one that uses printf.
	This works on AIX, which has the same problems that Solaris does,
	but no working echo program.

	* tests/quote.test (echo): Change test to version that uses printf.
	Be less strict about return results.

1997-08-27  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Make sure that compile_command and
	finalize_command are always evaled.  Quote any unknown linker
	flags we need to pass through.
	(compile): Use quoting for flags we pass.
	(echo): I hate Sun!  The /usr/bin/echo on Solaris handles
	backslash sequences, which makes it impossible to do backslash
	quoting using echo and sed.  So, we search for an echo that obeys
	the `echo '\t'` = '\t' equality.  Then we use `$echo' everywhere
	in ltmain.sh.
	Put tabs back into the ${IFS=	} sequences.  Emacs untabify is
	libtool bane.

	* ltconfig.in: Quote all variable values that may contain
	metacharacters creating the libtool script.  This provides
	complete protection, so that even single-quotes may appear inside
	a libtool variable value.

	* ltmain.sh.in (link): Quote finalize_command before putting it in
	the wrapper script.

	* tests/quote.test (echo): Add the test for a non-backslash-mangling
	echo.

1997-08-26  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (sed_quote_subst): Change the quoting procedure
	again.  I think that the new one is robust for *all* characters,
	including whitespace and metacharacters.

	* tests/quote.test: New torture test for libtool metacharacter quoting.

1997-08-25  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Change quoting procedure because some shells
	cannot handle `]' in scan sets.  From Ian Dall.

1997-08-22  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (execute): Added -dlopen flag handling.  Suggested
	by Alexandre Oliva.

1997-08-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Change executable wrapper to fix up value
	of thisdir, as well as progdir, if the $0 path doesn't work.  This
	guarantees that shlibpath_var is set correctly.  Add support for
	execute mode.

	* ltmain.sh.in (execute): New mode to automatically set
	shlibpath_var, which allows easy debugging of uninstalled
	executables and libraries.  Suggested by Kenneth Albanowski.

1997-08-20  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am ($(srcdir)/ltconfig): Use lineno.

	* configure.in: Add AM_PROG_AWK for lineno.

	* lineno: New program to automatically put line numbers in
	ltconfig.

	* libtool.m4, ltconfig.in (AM_PROG_LD): Yet Another Rewrite, which
	incorporates the results of `gcc -print-program-name=ld'.
	Suggested by Alexandre Oliva.

1997-08-14  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Accept `--quiet' and `--silent' flags to turn off
	command echoing.  From Juergen A. Erhard.

	(compile): Recognize the Objective C `.m' extension.  From Juergen
	A. Erhard.

	(compile): Suppress error output from the second compilation (if
	any) so that we don't get those frustrating duplicate error
	messages.

	* tests/suffix.test (extensions): Added Objective C extension, `.m'.

1997-08-12  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Added messages to config.log to describe what sort
	of test we are running.
	(pic_flag): Added a sanity check for pic_flag.  This should fix
	bugs reported using the cc bundled with HP-UX 10.  Suggested by
	Bruno Haible and Akim Demaille.

1997-08-01  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Add -dlopen and -dlpreopen support for
	libtool objects.  This means that dlopened modules no longer need
	to be shared libraries.

	* ltconfig.in (pic_flag): GCC on IRIX 6 always builds PIC.
	Reported by Ian Lance Taylor.

	* libtool.m4 (LD): Always add `-n32' to the linker if we are using
	GCC on IRIX 6.  Reported by Ian Lance Taylor.

1997-07-30  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtool.m4 (AM_PROG_LIBTOOL): Explicitly check enable_shared and
	enable_static rather than just enableval.  This allows
	configure.in scripts to set their own defaults.  Suggested by
	Tommy Reilly.

1997-07-29  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Add NLS environment variable handling copied from
	ltconfig.in.  Reported by Akim Demaille.
	(link): If allow_undefined_flag is not supported, then turn on old
	libraries.  Reported by Akim Demaille.

	* demo/dlmain.c (main): Use dld_preloaded_symbol_count to display
	a message about the sortedness of the symbol table.

	* ltconfig.in (nlist): Use an nlist convenience variable, so that
	code can be shared directly with ltmain.sh.in.

	* ltconfig.in, ltmain.sh.in (dld_preloaded_symbol_count): Count up
	the number of symbols in the dld_preloaded_symbols.  Set to `-1'
	if the list wasn't both sorted and counted.  This allows
	applications to do a quick binary search, if they are so inclined.

1997-07-25  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Remove code for `-version-file', since it
	has been long-deprecated.

	Disable static linking if hardcode_direct is unsupported and there
	is no working link_static_flag.  This provides correct behaviour
	for all cases on AIX 3, regardless of whether collect2 is broken
	or not.  Reported by Mark Kettenis.

	* ltconfig.in: Fix typo in test polarity.  From Mark Kettenis.

1997-07-24  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (hardcode_direct): Set to `unsupported' if aix3 uses
	a broken collect2.  Adapted out of test results from Mark
	Kettenis.
	(link_static_flag): Make sure the link_static_flag actually works
	with a trivial binary.

	* ltmain.sh.in, ltconfig.in (export_dynamic_flag_spec): Renamed
	from export_dynamic_flag because we eval it in ltmain.sh.

	* ltmain.sh.in (link_static): Don't eval link_static_flag.

	* demo/dlmain.c (main): Change function prototype to be KNR
	compatible.  From Kaveh R. Ghazi.

	* ltmain.sh.in (link): Use no_builtin_flag.  This works around
	conflicting definitions of builtin functions with at least GCC.
	Reported by Kazuhiro Sasayama.

	* ltconfig.in (no_builtin_flag): New flag to turn off builtin
	functions when compiling an object file.
	(pipe_works): Use it.

	* tests/demo-exec.test (status): Use status variables so that we try to
	execute all the programs.

1997-07-23  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (pic_flag): According to the libg++ 2.7.2 configure
	script, DEC alpha CPUs are PIC-only, as well.  Reported by Kevin
	Jacobs.

1997-07-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in, ltmain.sh.in: Replace all occurances of "sed 'X;
	Y'" with "sed -e 'X' -e 'Y'".

	* ltmain.sh.in (link): Finish full integration for `-dlopen' and
	`-dlpreopen'.

	Fix two silly typos where I used a compile_command in place of a
	finalize_command, and vice versa.

	Change the wrapper script to check a hardcoded path only if the
	argv[0] method fails.  This is a compromise for the previous two
	patches, and should solve the majority of problems with wrapper
	scripts.  From Kenneth Albanowski.

	(link): Change a reference to hardcode_libdir_colon_separated to
	use the new hardcode_libdir_separator variable.

	* demo/Makefile.am (helldl_LDFLAGS): Add `-export-dynamic' and
	`-dlpreopen' for building helldl.

	* demo/dlmain.c (main): Succeed, even if none of the libhello
	symbols have been preloaded.

1997-07-20  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (global_symbol_pipe): Add `U' to the accepted global
	symbol types.  This means that we will get duplicate symbols, but
	we'll also be sure to get all global symbols used by the program.

	* ltconfig.in (pipe_works), ltmain.sh.in (link): Sort and make
	symbol output unique.

1997-07-19  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (pipe_works): Check to make sure our guessed
	global_symbol_pipe actually works.

	* ltmain.sh.in (link): Revert change from Kenneth Albanowski.  The
	wrapper scripts are more reliable when they just use the argv[0]
	value.  Generally, when the argv[0] method doesn't work, the user
	is trying to do something weird with an uninstalled binary, and
	should try a different approach.

	* ltconfig.in, ltmain.sh.in (CC): Always use `$CC' instead of
	`$cc'.  This fixes a FreeBSD bug.  Reported by Chuck Robey, and
	others.

1997-07-14  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): In wrapper scripts, hardcode the current
	directory to prevent phony argv[0] values from screwing up our
	program.  From Kenneth Albanowski.

1997-07-13  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am (demo_distfiles): Add demo/dlmain.c to the
	distribution.

1997-07-12  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* demo/Makefile.am: Add helldl, made from dlmain.c, to demostrate
	`-dlopen' usage.

	* demo/dlmain.c: New file to demonstrate preloaded modules.

	* ltmain.sh.in (link): Add `-dlopen' flag to preload dynamic
	modules, even on static platforms.  Use `$NM' and
	`$global_symbol_cmd' to extract symbols from required files.
	(dlname): Delete dlname mode entirely.  It is rendered obsolete
	because the `.la' file format is now a public interface.

	* ltconfig.in (NM): New variable for BSD-compatible nm program.
	(global_symbol_cmd): Pipeline to extract global symbols from the
	nm output.

	* ltmain.sh.in: The .la file header should depend on `ltmain.sh',
	not `$PROGRAM'.
	(link): Make sure $export_dynamic_flag is eval'ed before it is
	used.

	* tests/demo-exec.test, tests/demo-inst.test: Check the new
	helldl program,	too.

1997-07-11  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtool.spec: New Red Hat Package Manager specification file in
	order to help people prepare distributions of libtool for Linux.

	* ltmain.sh.in: Eliminate two accidental uses of the NONE magic
	value.  These were breaking libtool's behaviour when no mode is
	specified.

	* tests/nomode.test: New test to make sure there is correct behaviour
	when we don't specify a mode.

1997-07-08  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Release 1.0.

	* ltconfig.in: On SunOS, append /usr/etc to the PATH before
	running ldconfig; on *BSD, append /sbin.  This was done in line
	with the Linux change suggested by Kenneth Albanowski.

	* demo/Makefile.am (hardcode_tests): Aesthetic change to
	alphabetize order of compiling the hardcode tests.

	* Makefile.am (EXTRA_DIST): Delete README-automake.

	* README-automake: Remove from distribution.

1997-07-02  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): In the executable wrapper, strip trailing
	colons from the shlibpath_var because some ld.so's, notably
	OpenBSD 2.0's (!), don't parse colon-terminated values correctly.
	From Tim Pierce.

1997-07-01  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in, ltconfig.in: Eliminate uses of the NONE magic
	variable value.  Use an empty variable instead.

	* ltconfig.in (with_gcc, with_gnu_ld): Do the tests for the C
	compiler and linker if the variables are unset, or if they are not
	GNU C and ld.
	(RANLIB): Eliminate redundant `if' statement.

	* configure.in: Use AM_PROG_LD.

	* libtool.m4 (AM_PROG_LD_GNU): New macro to determine if LD is GNU
	ld.
	(AM_PROG_LD): Rename AM_PATH_PROG_LD to AM_PROG_LD.  Parameterize
	so that the user can specify `--with-gnu-ld' or `--without-gnu-ld'
	to indicate his preference.
	(AM_PROG_LIBTOOL): Use it.

1997-06-30  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Append /sbin to the path before running ldconfig on
	Linux.  This helps superusers who haven't set their PATH
	correctly.  Suggested by Kenneth Albanowski.

	* tests/if.test: New test to make sure that we haven't forgotten to
	follow an `if' statement with a `test' command.  This should avoid
	the majority of hard-to-track bugs.

1997-06-29  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Change all the `eval "$run ..."' sequences to
	`$run "eval ..."'.

	Change all `$ln_s ...' sequences to use `(cd /dir && $LN_S ...)'.
	This is the sequence recommended by the Autoconf manual, and
	should avoid any problems on older machines.  Eliminate all uses
	of `cp -p'.  Reported by Akim Demaille.

	(install): Use `test $# -gt 0' instead of `test -n "$1"'.

	* ltconfig.in (LN_S): Add test to see if `ln -s' works.

	* libtool.m4: Increment serial number, and require AC_PROG_LN_S.

1997-06-26  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Add missing `test' statement.  Reported by
	Akim Demaille.

1997-06-24  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtool.m4 (LD): Consistently use ac_cv_path_ld instead of
	am_cv_path_ld.  From Tim Pierce.

1997-06-20  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Redo two robustness fixes.  Alexandre had the
	correct approach, but I botched them.

	* ltconfig.in (dynamic_linker): Disable shared libraries on
	MkLinux unless GNU libc is in use.  Reported by Akim Demaille.

1997-06-19  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (install): Add a missing `test' command.  Reported
	by Joel Weber.
	Miscellaneous fixes to improve robustness.  From Alexandre Oliva.

	* tests/demo-conf.test (CONFIG_SITE): Set to /dev/null, so that the
	config.site file doesn't mess up our prefix.  Reported by Joel
	Weber.

	* tests/demo-inst.test: Always run both hell.static and hell.

	* tests/demo-conf.test: Always remove the local config.cache, but run
	`make distclean' only if the Makefile exists.  Otherwise, the demo
	directory is not cleaned up if a user uses their own config.cache.
	Reported by Joel Weber.

1997-06-14  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Create invalid libtool objects when partial
	linking if we don't have PIC.  From Jeff Dairiki.
	(install): Fix bug if libtool object is installed to a file name
	without directory components.  From Jeff Dairiki.

1997-06-13  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am (demo/configure): Fix up rules to run autoconf.
	(aclocal.m4): Now we depend on our own libtool.m4.

	* configure.in (AM_PATH_PROG_LD): Use it.

	* libtool.m4 (AM_PATH_PROG_LD): New macro to find the linker used
	by the C compiler.
	(AM_PROG_LIBTOOL): Use it.

	* ltmain.sh.in (install, uninstall): Support installing and
	uninstalling `.lo' files.  From Jeff Dairiki.

1997-06-11  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am (ltconfig, ltmain.sh): Only move if $(srcdir) is not
	the current directory.  Don't regenerate every time the package is
	reconfigured.  Reported by Tom Tromey.
	(MAINTAINERCLEANFILES): Added ltconfig, ltmain.sh, so that
	$(srcdir) is not messed with during a regular clean.

1997-06-10  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am (ltconfig, ltmain.sh): Be sure to move these files
	into $(srcdir) once they are created.

	* ltmain.sh.in (link): Disable building static libraries.
	People should use their favourite AR and RANLIB commands.
	Disable building old-style objects if `--disable-static' is
	given.  Suggested by Tom Lees and Stephan Kulow.

1997-06-08  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (host_cpu, host_vendor, host_os): Patch up
	definitions, to allow for the fact that the host_os may contain
	hyphens (as in linux-gnu).  From Scott Goehring.

	* ltmain.sh.in (link): Move the `dlname' setting closer to the top
	of the file.  Suggested by David Mosberger-Tang.
	Symlink the libtool archive into the `.libs' directory so that it
	can be found by programs that want to find a library's dlname by
	searching LD_LIBRARY_PATH.  Reported by David Mosberger-Tang.

1997-06-06  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Tell people to report bugs to the new libtool mailing list,
	<bug-libtool@gnu.ai.mit.edu>.

1997-06-05  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (allow_undefined_flag): New variable that implements
	`-allow-undefined'.
	(archive_cmds): Enable C++ constructors for FreeBSD 2.2.  From
	David Nugent.

	* ltmain.sh.in (link): Accept new `-allow-undefined' flag when
	building libtool libraries.  This tells libtool to allow
	unresolved symbols to exist in shared libraries.  Basically, this
	turns off shared libraries on AIX.  Suggested by Ian Lance Taylor.

1997-05-26  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtool.m4 (LD): On at least IRIX, many different flags need to
	be propagated to the linker if they are part of the compiler
	command line.  Reported by Anthony Green.

1997-05-10  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Trivial port to FreeBSD 3.  From David Nugent.

1997-04-25  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Remove all traces of `-whole-archive',
	`-no-whole-archive', and libtool convenience libraries.  They were
	more trouble than they're worth.  If these are ever reimplemented,
	they need more careful attention to make portable.

	* libtool.m4, ltconfig.in: Added a `--disable-static' flag to turn
	off static library creation.  From Tom Lees (who finally convinced
	me that it was the Right Thing to do).

1997-04-22  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (hardcode_runpath_var, runpath_var): Use them, if
	the linker has no -rpath flag.
	Quote the values we use to set runpath_var and shlibpath_var.
	(link): Use libobjlibs for libtool convenience libraries.

	* ltconfig.in (hardcode_runpath_var, runpath_var): Add new
	variables to describe linkers that honour `LD_RUN_PATH'.
	(host_cpu, host_os): Use these more specific variables, rather
	than the full canonical host system name.

	* ltmain.sh.in (dlname): Distinguish between missing
	`-export-dynamic' and when the library is only statically linked.

1997-04-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Trivial port to OpenBSD by making it an alias for
	NetBSD.  From Tim Pierce.

1997-04-16  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Temporary measures to check for a broken collect2
	program.  Right now, we just see if we're using GCC on AIX 3.

	* tests/hardcode.test: AIX also has arbitrary limits on the line length
	of input to fgrep(1), so we need to translate NUL characters to
	newlines in order to properly detect embedded `.libs'.  From Bruno
	Haible.
	Also redirect stderr to /dev/null, so that AIX users don't get
	worried by `fgrep: Maximum line length of 2048 exceeded.'.

1997-04-13  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (mode): Use `egrep -e' when inferring the operation
	mode.

1997-04-12  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (linker): Some GNU ld's don't accept `--version',
	but do accept `-v'.  From Jukka Honkela.
	(ld_shlibs): AIX lossage may be settling down.  AIX 3.2.5 ld does
	*not* hardcode direct libraries, but AIX 4.1.[45] ld does.

1997-04-07  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in (hardcode_action): Fix silly logic error.  From
	Bruno Haible.

1997-04-05  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (install): Relink if hardcode_action is `relink',
	rather than using complex conditionals based on the other
	hardcode variables.

	* ltconfig.in (hardcode_action): Set to `relink', not `immediate',
	if we can only hardcode existing directories.  Rearrange
	conditionals to make the intent clearer, otherwise this can be one
	hellish piece of code for the already-dizzy libtool maintainer.

1997-04-02  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* replfunc.m4: Delete from the distribution.  Documentation now
	describes how to set LTALLOCA and LTLIBOBJS in your own
	configure.in.

	* ltmain.sh.in (link): Make sure a libtool library only counts as
	a shared library if its library_names are non-null.
	Use timestamps for .lo's when PIC is turned off, rather than
	symlinking to the real object.  This helps invalid mixtures of PIC
	and non-PIC to fail.

1997-04-01  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am (EXTRA_DIST): Distribute libtool.prj.

	* Shameless plug: Changed source code management system from CVS
	to PRCS.

	* libtool.scm: Initial Guile implementation of libtool.

	* ltmain.sh.in: An unexpected inconsistency in my whole approach
	to shared libraries has proven that libtool needs to be completely
	rewritten if I'm going to give full shared library support for
	platforms that don't use the GNU C library version 2 (which to my
	knowledge currently only works on GNU Hurd and Linux/GNU systems).
	Porting the GNU C library should not be difficult, though.

	Platforms that don't have the dlopen(3) family of functions will
	need to install GNU DLD version 4 in order to build any kind of
	libraries at all.  Unfortunately, DLD 4 won't be released for a
	while, because I maintain it, and I'm too busy working on libtool.

	I'll keep the old ltconfig/ltmain.sh implementation around for as
	long as I can, and continue applying bug fixes, so that I'll have
	a reasonable starting point for this new libtool implementation.

	It looks like this implementation will be even more complex than
	the original (pre-0.7) libtool.  Initial estimates show that it
	may be up to 3 times slower, and 5 times larger than libtool-0.9.
	I'll probably have to rewrite it in Guile to get reasonable
	performance, which will severely limit its portability for a
	while.

	That will also introduce a bootstrapping issue, since the next
	release of Guile will use libtool to build shared libraries.  So,
	if users want to have shared Guile libraries, they will have to
	configure Guile with `--disable-shared', compile it, install it,
	then reconfigure Guile with `--enable-shared' and repeat.

	I was hoping to get libtool 1.0 out the door by early April, but
	now it looks like it will take at least another year before it'll
	be usable by the public at large.  April fools.  libtool.scm
	doesn't exist yet, either.

	* ltconfig.in (verify_host): Remove redundant `Transform *-*-linux*
	to *-*-linux-gnu*'.  From Bruno Haible.

	* tests/hardcode.test: AIX 3 doesn't have strings(1) so we need to do a
	funny tr and pipe the output to fgrep.  From Bruno Haible.

1997-03-31  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am: Use the new AUTOMAKE and ACLOCAL variables.

	* ltmain.sh.in (link): Only fail if a convenience library doesn't
	exist, and the user specified -whole-archive.
	Fix shell quoting that was breaking @OUTPUT@ substitution.

1997-03-28  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Use the hardcode_libdir_separator.
	Convenience libraries are libtool objects if we're not building
	libtool libs.

	* ltconfig.in (hardcode_libdir_separator): Added in case the
	linker only honours the last of the -rpath flags (but it can
	contain multiple colon-separated directories), such as on OSF/1.
	Reported by Carl D. Roth.

	* ltmain.sh.in (link): Set the dlname if -export-dynamic is given.
	(install, uninstall): Handle the dlname file separately.

	* ltconfig.in (export_dynamic_flag): Added to allow programs to
	use reflexive dlopens.

	* ltmain.sh.in: Include the mode name in any help messages.
	(dlname): New mode to give the name to be used with dlopen(3).

	* ltconfig.in (AR): Allow AR to be set by the user, and export it
	to ltmain.sh.

	* ltmain.sh.in: Remove broken profiled library support.
	Added `-whole-archive' and `-no-whole-archive' to manipulate
	convenience libraries.

1997-03-27  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Allow the creation of static convenience
	libraries made of libtool objects.  Suggested by David
	Mosberger-Tang.

1997-03-25  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: On AIX, libtool also needs to look for `B' symbols
	in nm output.  These are global variable definitions.

	* ltmain.sh.in: Linking with -static should link against the
	linklib if old_library is empty (like it is on AIX).

	* ltconfig.in: Change the order of OS detection, so that
	linux-gnu* is detected before gnu*.

	* Makefile.am (libtool): Use the correct CC, RANLIB, LD, when
	generating libtool.  From Carl D. Roth.

	* configure.in: Find out the user-supplied CC, LD, RANLIB.  From
	Carl D. Roth.

1997-03-24  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Linking with -static should link against the old
	library, not linklib.

	* README-automake: Updated to point to Automake 1.1m.

1997-03-15  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* demo/main.c: Use it.

	* demo/foo.h: Declare it.

	* demo/foo.c: Added definition of `nothing' so that we have an
	global variable definition, as well as functions.

1997-03-12  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Make sure either enable_shared or enable_static is
	configured.  Reported by Tom Tromey.

	* ltmain.sh.in: Bomb out if no library types are configured.

1997-02-22  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in, ltmain.sh.in (hardcode_libdir_flag_spec): Renamed
	from `hardcode_libdir_flag'.
	(library_names_spec): Renamed from `lib_names'.

	* ltconfig.in, ltmain.sh.in (hardcode_action): Change value from
	`rpath' to `immediate'.

	* replfunc.m4: Add AM_FUNC_ALLOCA, AM_FUNC_MEMCMP, and
	AM_STRUCT_ST_BLOCKS.

1997-02-18  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Transform *-*-linux* to *-*-linux-gnu* to support
	old-style config.guess scripts.

1997-02-17  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Create objdir *before* linking a program into it.

1997-02-12  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Any ld --version that returns GNU is probably a GNU
	ld.  From Marcus Daniels.

	* libtool.m4: Added AM_REPLACE_FUNCS.

1997-02-11  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Trivial port to *-*-osf4.  From Bruno Haible.

1997-02-10  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: AIX 3 and 4 ld only hardcodes LIBPATH if -L is not
	specified.  This behaviour is the same with both xlc and gcc.

1997-02-07  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* doc/platforms.texi: Yaay!  We found a workaround for HP-UX
	/bin/sh buffer overflows.  From Eric Backus.

1997-02-03  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Release 0.9.

	* PLATFORMS, doc/platforms.texi, Makefile.am, doc/Makefile.am:
	Move PLATFORMS to doc/platforms.texi.

	* ltmain.sh.in (link): Use hardcode_libdir_flag to get a library
	directory into the resulting binary.
	Use hardcode_action, and make many simplifying changes to have
	compilation and finalization be consistent with each other.

	* ltconfig.in: Not so amazing!  It's AIX cc that hardcodes direct
	libraries... gcc doesn't, though.
	(link_rpath_flag): Change link_rpath_flag to be
	hardcode_libdir_flag.
	(hardcode_action): New variable to simplify ltmain.sh.

	* tests/Makefile.am (TESTS): Do the full make sequence with
	--disable-shared, then without.

	* tests/demo-sttc.test: Configure the demo directory with
	--disable-shared.

1997-01-29  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Change to take advantage of linkers that don't
	hardcode direct libraries.

	* ltconfig.in: Amazing!  AIX 3 linker doesn't hardcode direct
	libraries, which makes it less buggy than AIX 4.  Reported by Mark
	Kettenis.

	* demo/configure.in: Check for the math library.

	* demo/foo.c (foo): Change to use the `cos' function, so that we
	need to link against another library.

	* tests/hardcode.test: Rewrite to use fgrep on output from ``strings
	-a'' if using fgrep directly on the binary files fails.  From Mark
	Kettenis.

1997-01-28  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Export the PATH variable in order to find
	the program, rather than giving a full path.  This helps give the
	program a less confusing value for argv[0].

	* tests/hardcode.test: Make sure that ../demo/libhello.la really is a
	shared library before running hardcoding tests.

1997-01-26  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Release 0.8.

1997-01-24  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Makefile.am (demo_distfiles): Add demo/acinclude.m4 to the
	distribution.

1997-01-22  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtool.m4: For IRIX 6, ld needs -n32 if cc uses it.  Reported
	by Bruno Haible.

	* ltconfig.in: IRIX ld does not hardcode direct libraries.
	Reported by Bruno Haible.

1997-01-18  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in, ltmain.sh.in (hardcode_shlibpath_var): Allow new
	value, `unsupported', since most linkers do not allow you to use
	shlibpath_var for initial linking.

	* ltconfig.in: Lots of bug fixes from Bruno Haible.  Set wl on
	OSF/1, fix definitions of hardcode_* variables.
	(archive_cmds): Fix not to use +h on HP-UX 9.x.  Reported by Bruno
	Haible.

	* tests/demo-conf.test: Use the CONFIG_SHELL environment variable when
	running configure in the demo directory.  From Bruno Haible.

	* tests/Makefile.am (clean-local): Make distclean in the demo directory,
	so that ``make clean; env CC=cc make check'' works as one would
	expect.

	* tests/demo-make.test: Fix typo (use $make instead of make).  Reported
	by Akim Demaille.

1997-01-17  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* libtoolize.in: Handle explicit AC_CONFIG_AUX_DIR settings.
	Suggested by Akim Demaille.

	* libtool.m4: Change ltconfig line to use $CONFIG_SHELL when it is
	specified.  Reported by Bruno Haible.

1997-01-16  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* demo/Makefile.am (hc-direct): Do better searching for the proper
	name to do a direct link.
	(hc-libpath): Make allowances if shlibpath_var cannot be used
	to find libraries at link time, such as on AIX.

	* Makefile.am (demo_distfiles): Remove ansi2knr.1 and ansi2knr.c.

	* demo/foo.c, demo/hello.c, demo/main.c: Change ANSI prototypes to
	KNR form, for better portability, and less ansi2knr hair.

	* demo/configure.in: Remove AM_FUNC_PROTOTYPES.

	* demo/Makefile.am: Remove ansi2knr from the AUTOMAKE_OPTIONS.

	* demo/ansi2knr.1, demo/ansi2knr.c: Removed these files.

	* ltmain.sh.in: Use 1>&2 consistently to direct errors and
	warnings to stderr.
	(compile): Fix missing single quote.

	* ltconfig.in (hardcode_direct): On Solaris at least, using
	DIR/libNAME.so does not hardcode DIR, so introduce a new hardcode
	variable to reflect that.

	* ltmain.sh.in (link): If linking with $link_static_flag fails,
	then retry without it, but still use the .a versions of
	uninstalled libtool archives.

	* tests/tlibtool: Rewrote to grab all the settings from the generated
	libtool script.

	* tests/hardcode.test: Make allowances if shlibpath_var cannot be used
	to find libraries at link time, such as on AIX.

1997-01-15  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Eval $link_static_flag.  Reported by Bruno
	Haible.

	* PLATFORMS: Add to distribution.  Suggested by Bruno Haible.

1997-01-14  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* tests/demo-conf.test, tests/demo-inst.test, tests/demo-unst.test,
	tests/hardcode.test:
	Use $make instead of make.

	* tests/defs (make): Add definition of $make that uses the $MAKE
	environment variable, if set.  Suggested by Bruno Haible.

	* tests/demo-unst.test (leftovers): Change the find command to ignore
	files beginning with a dot, as egrep -v doesn't seem to do the
	trick.  Reported by Bruno Haible.

1997-01-13  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Add support for SCO OpenServer 5.x.  From
	Christopher Olsen.

	(can_build_shared): Initialize at the top of the file, so that
	shared libraries aren't built on platforms that don't support
	them.

	* tests/hardcode.test: Added a test to make sure that libtool's idea of
	hardcoding system linkers is correct.

1997-01-11  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in, ltconfig.in, libtoolize.in, doc/libtool.texi:
	Update the copyright completion years.

1997-01-08  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Port to IRIX 5.3, 6.2.

1997-01-06  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: HP-UX 9 support is the same as HP-UX 10, so the
	port is trivial.

	* libtoolize.in: Add --dry-run option, -n for short.

1997-01-03  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): On at least SunOS, /bin/sh doesn't
	understand "export something=val".  From Bruno Haible.

	* tests/Makefile.am (distclean-local): Remove all files that the tests
	may have created.  Reported by Bruno Haible.

	* For all tests, discover srcdir when running from the command
	line.

	* tests/demo-unst.test: Don't fail if make uninstall doesn't delete
	files beginning with a dot, since spurious .nfsXXX files may be
	present when running NFS.  Reported by Bruno Haible.

1997-01-02  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (compile): Recognize valid source file suffixes for
	Fortran and C++.

	* tests/suffix.test: New test to guarantee that libtool compile
	recognizes valid source file suffices.

1996-12-17  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Don't allow *._o and *.l_o to be valid
	object type suffixes, in spite of Automake's current ansi2knr
	implementation.  Not all compilers allow non-`.o' suffixes.

1996-12-16  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Delete the `libtool' version type.

1996-12-12  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Use the full autoconf syntax when checking for GNU
	C.  Delete library stripping program, until we have a correct
	test.

1996-12-11  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: On AIX 3, use /usr/ucb/nm, not /ucb/nm.  From Mark
	Kettenis.

1996-12-09  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	Reported by Charles Kerr:
	* doc/libtool.texi (Creating Object Files): Doc fix independant ->
	independent.

	* ltconfig.in (ld_shlibs): SunOS 4 doesn't support shared library
	dependencies.

1996-12-08  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* Release 0.7.

	* Makefile.am (EXTRA_DIST): Add README-automake to the
	distribution.

	* ltmain.sh.in (link): When linking libtool libraries, use
	standard objects if they are PIC.  This prevents spurious warnings
	about invalid suffixes on AIX.

	* demo/Makefile.am: Rename libhell to libhello, so that we're not
	quite as offensive.

	* ltconfig.in: Remove unnecessary host validity checking.

	* ltmain.sh.in: Don't force people to use libNAME.la: SOMETHING.la
	is good enough (for consistency with *.a handling).

	* tests/demo.test: Break up into demo-conf.test, demo-make.test,
	demo-exec.test, demo-inst.test, and demo-unst.test, so that passes
	and failures are reported more quickly.

	* tests/link-2.test: Test to make sure that .lo files don't get built
	directly into programs.

1996-12-07  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Accept files ending in .a as standard
	object files.  Reported by Ulrich Drepper.
	Remove support for creating profiled libraries (for now).
	Transform all library objects into standard objects when linking a
	program.

	* ltconfig.in (thisdir): How embarrassing!  An error in the regexp
	for finding the directory component of the script path.

	* tests/tlibtool: A typically-configured libtool script, that uses
	../ltmain.sh.in for its backend.

	* tests/link.test: Make sure that it is legal to link against .a files.

1996-12-05  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (compile): Support `.S' (preprocessed assembler)
	files.  Reported by Anthony Green.

	* libtoolize.in: Give clearer instrutions for how to update
	aclocal.m4.

	* ltconfig.in, ltmain.sh.in (link): Add support for creating
	reloadable objects.

1996-12-04  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (install): Fix passing -n flag to `libtool
	--finish'.
	(compile): Compile `.lo' and `.o' objects at the same time so that
	non-PIC objects (if they are available) can be used for linking
	into programs and creating static archives.  Suggested by Ulrich
	Drepper.

1996-12-03  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (link): Give the full path to the libtool library
	when sourcing it.

	* ltconfig.in (old_striplib): Do a configuration test to determine
	if old-style libraries actually can be stripped or not.

1996-12-02  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* tests/demo.test: Try compiling the ../demo subdirectory, with no
	special options.

	* test-e.test: Check that we haven't used `test -e' anywhere in
	our portable shell scripts.

1996-12-02  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Delete reference to ABOUT-LIBS.

	* tests: Added new subdirectory.

	* doc/libtool.texi: Doc fixes, and finished up the Configuring
	chapter.

	* ltmain.sh.in (link): Allow *._o and *.l_o to be valid object
	file suffixes, for Automake's ansi2knr implementation.
	New option -version-info replaces -version-file.

	[help]: Give a pointer to mode-specific help when appropriate.

	* ltconfig.in: Changed messages to correspond to AM_PROG_CC_STDC.

	* demo: Also test Automake's ansi2knr support.

1996-11-19  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Bug fixes for AIX 4, and for static platforms.

	* ltmain.sh.in (install): Fix for loops over arguments.
	Need to quote ${IFS= } -> "${IFS= }".
	(link): Fix soname_spec bug.  Create objdir whether or not we have
	shared libraries.

	* ltconfig.in: Check for library stripping program.
	Use test -f instead of test -e.

1996-11-18  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltconfig.in: Don't run the RANLIB test unless RANLIB wasn't
	set.
	Be verbose about the environment variables we were configured
	with.

	* ltmain.sh.in (objdir): change to .libs.

1996-11-16  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in (install): Just plunge ahead with the
	installation... don't try to enforce dependencies.

1996-11-15  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh.in: Fix up $libdir to be $dest in install mode.

1996-11-10  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* ltmain.sh: Finished rewrite of compile, link, and install
	modes.

	* New ChangeLog file for libtool-0.7, since I've totally rewritten
	libtool.

1996-03-15  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>

	* For historical reasons: this is when I started writing libtool.
-- 
  Copyright (C) 1996-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.
