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.
* 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.
* 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.
$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.
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.
_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.
`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.
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.
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.
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.
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.
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.
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.
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.
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.
Reported by Daniel Reed <n@ml.org>
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
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.
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>
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.
warning.
(foreach_dirinpath, try_dlopen, lt_dlpath_insertdir): Fix gcc
signed vs unsigned warning.
Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
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.
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.
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>
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.
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.
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.
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.
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.
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.
* libltdl/ltdl.c (lt_dlforeachfile): LT_SYS_LIBSEARCH_PATH is not
an environment variable, it is an actual path.
Reported by Noah Mish <noah@cs.caltech.edu>
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.
`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.
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>.
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.
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.
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!
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.
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.
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.
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.
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.
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.
`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.
* 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.
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.
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.
* 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>
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. :(
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.
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>
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.
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.
* 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.
* 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>
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.
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 Bagnare <bagnara@cs.unipr.it>
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.
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>
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.
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.
(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.
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.
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.
$Revision: 1.1470 $ $Date: 2004/04/08 12:01:57 $
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>
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.
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.
* 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.
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.
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.
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.
`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.