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 Francios 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>

Continued in ChangeLog.1999
