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.

Continued in ChangeLog.2008

vim:tw=72
-- 
  Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
  2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.

  This file is part of GNU Libtool.

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