Commit Graph

1940 Commits

Author SHA1 Message Date
Paolo Bonzini
b6e97e04ea * config/ltmain.in (piecewise linking): Use a GNU ld script if
possible.
* m4/libtool.m4 (_LT_LINKER_SHLIBS): Add per-tag variable
with_gnu_ld.
(_LT_LANG_CXX_CONFIG): Don't set unused variable with_gnu_ldcxx.
2004-08-26 09:02:42 +00:00
Gary V. Vaughan
388b7626dc The Grand Renaming. In preparation for libtool-2.0, move all of
the many and varied m4 symbols accumulated by libtool over the
years, considering also that modern autoconf can detect unexpanded
macros even without AC in the macro name:

* bootstrap: Remove libltdl/config.h from previous releases.
* m4/libtool.m4, m4/ltdl.m4, doc/libtool.texi: Basically, run a
giant sed transformation like this:
s,AC_LIB_LTDL,LTDL_INIT,g
s,AC_LIBLTDL_CONVENIENCE,LTDL_CONVENIENCE,g
s,AC_LIBLTDL_INSTALLABLE,LTDL_INSTALLABLE,g
s,AC_WITH_LTDL,LT_WITH_LTDL,g
s,AC_LTDL_ENABLE_INSTALL,_LT_ENABLE_INSTALL,g
s,AC_DEPLIBS_CHECK_METHOD,_LT_CHECK_MAGIC_METHOD,g
s,AC_LIBTOOL_OBJDIR,_LT_CHECK_OBJDIR,g
s,AC_LTDL_OBJDIR,_LT_CHECK_OBJDIR,g
s,AC_LTDL_DLPREOPEN,_LT_CHECK_DLPREOPEN,g
s,AC_LIBTOOL_SYS_MAX_CMD_LEN,LT_CMD_MAX_LEN,g
s,AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,_LT_CMD_GLOBAL_SYMBOLS,g
s,AC_LIBTOOL_SYS_OLD_ARCHIVE,_LT_CMD_OLD_ARCHIVE,g
s,AC_PROG_LD_RELOAD_FLAG,_LT_CMD_RELOAD,g
s,AC_LIBTOOL_SYS_LIB_STRIP,_LT_CMD_STRIPLIB,g
s,AC_CHECK_LIBM,LT_LIB_M,g
s,AC_LTDL_DLLIB,LT_LIB_DLLOAD,g
s,AC_LIBTOOL_COMPILER_OPTION,_LT_COMPILER_OPTION,g
s,AC_LIBTOOL_PROG_CC_C_O,_LT_COMPILER_C_O,g
s,AC_LIBTOOL_PROG_COMPILER_NO_RTTI,_LT_COMPILER_NO_RTTI,g
s,AC_LIBTOOL_PROG_COMPILER_PIC,_LT_COMPILER_PIC,g
s,AC_LIBTOOL_SYS_HARD_LINK_LOCKS,_LT_COMPILER_FILE_LOCKS,g
s,AC_LTDL_DLSYM_USCORE,LT_FUNC_DLSYM_USCORE,g
s,AC_LIBTOOL_LINKER_OPTION,_LT_LINKER_OPTION,g
s,AC_LIBTOOL_PROG_LD_SHLIBS,_LT_LINKER_SHLIBS,g
s,AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH,_LT_LINKER_HARDCODE_LIBPATH,g
s,AC_PATH_MAGIC,_LT_PATH_MAGIC,g
s,AC_PATH_TOOL_PREFIX,_LT_PATH_TOOL_PREFIX,g
s,AC_PROG_LD,LT_PATH_LD,g
s,AC_PROG_LD_GNU,_LT_PATH_LD_GNU,g
s,AC_PROG_NM,LT_PATH_NM,g
s,AC_LTDL_SYS_DLOPEN_DEPLIBS,LT_SYS_DLOPEN_DEPLIBS,g
s,AC_LIBTOOL_DLOPEN_SELF,LT_SYS_DLOPEN_SELF,g
s,AC_LIBTOOL_POSTDEP_PREDEP,_LT_SYS_HIDDEN_LIBDEPS,g
s,AC_LTDL_SYSSEARCHPATH,LT_SYS_DLSEARCH_PATH,g
s,AC_LTDL_SHLIBEXT,LT_SYS_MODULE_EXT,g
s,AC_LTDL_SHLIBPATH,LT_SYS_MODULE_PATH,g
s,AC_LTDL_SYMBOL_USCORE,LT_SYS_SYMBOL_USCORE,g
s,AC_LIBTOOL_SYS_DYNAMIC_LINKER,_LT_SYS_DYNAMIC_LINKER,g
s,_LT_AC_TAGVAR,_LT_TAGVAR,g
s,_LT_AC_SYS_COMPILER,_LT_TAG_COMPILER,g
s,_LT_AC_PROG_ECHO_BACKSLASH,_LT_PROG_ECHO_BACKSLASH,g
s,_LT_AC_SYS_LIBPATH_AIX,_LT_SYS_MODULE_PATH_AIX,g
s,_LT_AC_SHELL_INIT,_LT_SHELL_INIT,g
s,_LT_AC_LOCK,_LT_ENABLE_LOCK,g
s,_LT_AC_CHECK_DLFCN,_LT_HEADER_DLFCN,g
s,_LT_AC_TRY_DLOPEN_SELF,_LT_TRY_DLOPEN_SELF,g
s,LT_AC_PROG_EGREP,_LT_DECL_EGREP,g
s,LT_AC_PROG_SED,_LT_DECL_SED,g
* doc/libtool.texi (Autoconf macros): Document exported macros.
* libtoolize.in: Compare ltdl.m4 serial numbers for LTDL_INIT
instead of newly obsoleted AC_LIB_LTDL.
(func_scan_files): Also set seen_ltdl for LTDL_INIT and
LT_WITH_LTDL.


* 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>
2004-08-22 22:02:07 +00:00
Peter O'Gorman
4ac8f641f7 * m4/libtool.m4 [GNU/linux] (AC_DEPLIBS_CHECK_METHOD): Cleanup,
thanks to Daniel Reed.
2004-08-12 04:14:12 +00:00
Daniel Reed
1a3f08204f * tests/demo-nopic.test: Do not run on x86_64 or s390* 2004-08-12 03:36:30 +00:00
Gary V. Vaughan
d38ff22181 * bootstrap: Remove `-f Makefile.am' now that we have an actual
Makefile to build ltmain.sh.
2004-08-06 13:02:30 +00:00
Gary V. Vaughan
406ec70ff9 * bootstrap: Run the bootstrap rules from a file named Makefile,
copied from Makefile.am for fresh checkouts.
2004-08-05 15:32:58 +00:00
Alexandre Duret-Lutz
8537718bf7 * m4/libtool.m4 (_LT_PROG_LTMAIN): Require ltmain.sh using
using Autoconf's new AC_REQUIRE_AUX_FILE.
2004-08-05 09:34:29 +00:00
Gary V. Vaughan
199c90ecca * Makefile.am ($(top_srcdir)/config/ltmain.sh): Depends on
Makefile.
(timestamp): Factor out timestamp setting and edit it based on the
version number, so that it is empty for release versions.
($(top_srcdir)/config/ltmain.sh): Use it.
(libtoolize): Ditto.
2004-08-05 07:54:15 +00:00
Gary V. Vaughan
5de3e29e35 * Makefile.am (libtool): Depends on ltmain.sh.
(libtoolize): Set and substitute TIMESTAMP.
2004-08-05 07:16:13 +00:00
Gary V. Vaughan
6836243e0b * Makefile.am ($(top_srcdir)/config/ltmain.sh): Actually run
$(MKSTAMP) before changing directories, or it won't be found.
Forgot to save before my last commit :-(
2004-08-05 06:58:55 +00:00
Gary V. Vaughan
ad7c333ea7 * Makefile.am ($(top_srcdir)/m4/ltversion.m4): Since we already did
`cd $(top_srcdir)' for this rule, we can't mv ltversion.tmp to the
relative $(top_srcdir) again!  Also, run $(MKSTAMP) before changing
directories, or it won't be found.
($(top_srcdir)/config/ltmain.sh): Ditto.
(EXTRA_DIST): We should distribute ltversion.m4 too.
2004-08-05 06:40:19 +00:00
Peter O'Gorman
37e1889382 * m4/libtool.m4 (AC_LIBTOOL_SYS_MAX_CMD_LEN): Since CONFIG_SHELL may
not actually be set, we should use SHELL here, also make darn sure
that SHELL is set to something. Bug from Willem Jan Palenstijn
<wpalenst@math.leidenuniv.nl>.
2004-08-04 14:10:59 +00:00
Jacob Meuser
5326cb1caf * ltmain.in: Allow some static libraries to be used in generating a
shared library on NetBSD and OpenBSD. match-pattern_regex decides
which are good.
2004-08-03 14:54:34 +00:00
Geoffrey Keating
b3b055757b * m4/libtool.m4 [darwin]: Don't use -all_load. 2004-08-02 04:02:04 +00:00
Maciej W. Rozycki
92fef9a621 * m4/libtool.m4 (LT_AC_PROG_SED): Set SED when running from cache as
well.
2004-08-01 09:06:00 +00:00
Gary V. Vaughan
5ffafe9407 Although libtool is optimised to not need to subconfigure libltdl,
the installed libltdl sources for libtoolize need to put
libltdl/configure.ac in the parent package so that *it* can
subconfigure libltdl.  That way we don't put any constraints on
the build system used by the parent package because the
libtoolized libltdl subtree is a self-contained sub-project:

* libltdl/Makefile.am (EXTRA_DIST): Add configure.ac.
(nobase_ltdldata_DATA): Change back to libltdl's own
configure.ac.
2004-07-31 00:17:02 +00:00
Gary V. Vaughan
e46561b83e My thanks to Alexandre Duret-Lutz <adl@gnu.org> for the insight
required to write this changeset -- especially that ltmain.sh is
the same on any machine for a given release, which I hadn't
noticed for some bizarre reason: It turns out that generating
distributed files from configure causes no end of hassle, as
evidenced by the many patches I've generated over the last few
days to try and get the dist and distcheck make rules to work.
Instead of all that hair, we now simply generate our distributed
files (now including ltmain.sh) with make rules -- and since
automake creates make variables for all AC_SUBSTs, that is really
easy.  The code looks a lot more like automake and autoconf
Makefile.ams now, and doesn't have all the rough edges the earlier
hacky solution suffered from.  We still generate libtool from
config.status, but that is not a distributed file, and doesn't
break the golden rule.  Besides, there is way more going on there
than a bunch of substitutions:

* Makefile.am (edit): New common sed substitutions for files now
generated by make instead of config.status.
(CLEANFILES): Clean new tmp files.
(EXTRA_DIST): Add ltmain.sh.
(vcl-tmp): Reinstated.
(m4/ltversion.m4, config/ltmain.sh): New rules.  Generate from
here instead of config.status.
(libtoolize): Ditto.
(libtool): Call config.status to regenerate if necessary.
(dist-hook): Removed.
* config/ltmain.in: Moved here from top_srcdir.
* README-alpha: Update instructions to check AS_SHELL_SANITIZE is
up to date.
* bootstrap: Rewritten.  Generate m4/ltversion.m4 and
config/ltmain.sh because configure depends on them.
* configure.ac (AC_CONFIG_SRCDIR): Use libtoolize.in now that
ltmain.in has moved.
(AC_CONFIG_FILES): Don't generate distributed files,
config/ltmain.sh and libtoolize from config.status.  We have make
rules to do that now.
2004-07-30 23:02:39 +00:00
Peter O'Gorman
d5ec0de0ec * m4/libtool.m4, ltmain.in: readd the comments that I erased. 2004-07-30 14:20:26 +00:00
Peter O'Gorman
e559ff5c4c * ltmain.in [darwin]: We already had a module var, there can be
only one.
2004-07-30 13:41:48 +00:00
Peter O'Gorman
755d391dc2 * m4/libtool.m4, ltmain.in: autoconf now says the best thing to do
with CDPATH is to (unset CDPATH) >/dev/null 2>&1 && unset CDPATH,
so do it.
2004-07-30 13:35:30 +00:00
Gary V. Vaughan
3805a031d9 * Makefile.am ($(top_srcdir)/config/ltmain.sh): Ugh. More hair to
help `make distcheck'; not only do we have to make a copy of
ltmain.sh available in the source tree, but we have to be really
careful about permission bit twiddling when we copy it across into
the possible read-only $(top_srcdir)/config directory!
2004-07-29 19:34:23 +00:00
Gary V. Vaughan
7eddfb6fbb * tests/tagtrace.test: Skip this test when running a VPATH build
against a read-only source tree (as in distcheck for example),
since autoconf wants to write temporary files in $top_srcdir
otherwise.
2004-07-29 18:13:37 +00:00
Gary V. Vaughan
253c26c96c * Makefile.am ($(top_srcdir)/config/ltmain.sh): Automake assumes,
quite rightly for every project except libtool, that there will be
an ltmain.sh in the source tree.
(EXTRA_DIST): As do the dist rules it generates.
(dist-hook): Even though we definitely don't want to distribute
our local ltmain.sh.
2004-07-29 16:49:27 +00:00
Gary V. Vaughan
1e91aa5ba2 * config/config.guess, config/config.sub: Don't check these in,
they cause spurious conflicts on cvs commit and update, and are
added by bootstrap in any case.
2004-07-29 16:40:08 +00:00
Gary V. Vaughan
a90d38dfb3 * configure.ac (AC_INIT): Revert an accidental commit from my
testing of package_revision.
2004-07-29 10:34:35 +00:00
Alexandre Duret-Lutz
87b91bb4e7 * doc/libtool.texi (Tags): Document CC.
* m4/libtool.m4 (_LT_SETUP): Register CC as supported tag so that
Automake uses it.
2004-07-29 09:34:00 +00:00
Gary V. Vaughan
88c81d7d58 Fix a long-standing bug where macro_version was always empty in
the generated m4/ltversion.m4.  Except for CVS revisions:

* ltmain.in (package_revision): Don't try to deduce it from
TIMESTAMP, since that is empty for release versions; simply
substitute it...
* configure.ac (package_revision): ...from here, having
precalculated it before resetting TIMESTAMP for release versions.
* bootstrap: Force regeneration of m4/ltversion.m4, but retain
timestamps if there is no change to the content.
2004-07-28 16:14:01 +00:00
Gary V. Vaughan
cf79a98549 To take full advantage of this, libtool must be bootstrapped with
CVS autoconf, otherwise pdksh chokes on some nested escaped quotes
from libtool.m4.  Using CVS autoconf protects configure from
non-bourne compatible shells in the same way this changeset
protects libtool and libtoolize:

* libtoolize.in: Include latest CVS autoconf AS_SHELL_SANITIZE
expansion to make various shells fully bourne compatible.
* ltmain.in: Ditto.
* m4/libtool.m4 (AC_PATH_TOOL_PREFIX): Remove spurious quotes, the
RHS of = assignment is not IFS split.
(_LT_LANG_CXX_CONFIG): Ditto.
(AC_LIBTOOL_POSTDEP_PREDEP): Ditto.
2004-07-28 14:57:28 +00:00
Gary V. Vaughan
b0cf8fdd16 This change fixes another VPATH build bug, where the vcl.tmp
target forced a rebuild of stamp-vcl in the build tree (and
hence regeneration of m4/ltversion.m4, thus an automake driven
rebootstrap that doesn't know about $fakes) requiring a fresh
./bootstrap after every cvs/tla update:

* Makefile.am (vcl.tmp): Removed.
(stamp-vcl): Adopt former vcl.tmp target rules.
2004-07-27 12:51:31 +00:00
Gary V. Vaughan
54fafb6fa7 * ltmain.in: Make sure that dependency libraries of -dlpreopened
libraries are propogated properly.
2004-07-25 20:36:43 +00:00
Joe Orton
491e004f43 * libtool.m4: Treat bsdi5* like bsdi4*. 2004-07-23 14:12:44 +00:00
Peter O'Gorman
4adaab8d4a * ltmain.in [darwin](func_extract_archives): $SED not sed. 2004-07-22 13:59:19 +00:00
Peter O'Gorman
db6c7527f7 * ltmain.in [darwin](func_extract_archives): Clean up last commit
a little, some suggestions are from Albert Chin, those that are
broken are mine.
2004-07-22 13:37:52 +00:00
Peter O'Gorman
55542ec9c9 * libltdl/Makefile.am, libltdl/loaders/Makefile.am: Look for
included files in the right places.
2004-07-22 13:03:47 +00:00
Peter O'Gorman
a472ccc2b9 * ltmain.in [darwin](func_extract_archives): Because fat archives
on darwin can not be extracted using ar, we need to use lipo to
extract the thin archives and then use lipo again to generate the
individual fat objects. This should allow people to run configure
with CC set to "cc -arch ppc -arch ppc64" or "cc -arch ppc -arch
i386" or whatever to match the toolchain they have available.
2004-07-20 14:53:11 +00:00
Greg Eisenhauer
ff5408d27d Commit to match previous ChangeLog without actual changes entry 2004-07-18 14:52:17 +00:00
Greg Eisenhauer
affcb0fd85 * libltdl/loaders/Makefile.am: Use AM_MAKEFLAGS not MAKEFLAGS. 2004-07-18 14:27:08 +00:00
Peter O'Gorman
864226db8b * libltdl/Makefile.am: Ensure that lt__dirent.h is part of the dist,
also make failed looking for configure.ac, look for
$(top_srcdir)/configure.ac instead.
2004-07-18 14:13:04 +00:00
Gary V. Vaughan
fc2b1937c8 * libltdl/lt__private.h (lt_dlhandle_struct): Renamed to
lt__handle to better reflect the naming scheme.
* libltdl/ltdl.h (lt_dlhandle): Be truly opaque with a void *.
* libltdl/lt_dlloader.c (lt_dlloader_remove): Party to
lt__private.h, so use internal lt__handle instead of opaque
lt_dlhandle.
* libltdl/ltdl.c (LT_DLGET_FLAG, LT_DLSET_FLAG): Add a cast to
internal lt__handle type.
(try_dlopen, tryall_dlopen, load_deplibs, unload_deplibs): Ditto.
(lt_dlexit, lt_dlclose, lt_dlsym): Use lt__handle to iterate
throught the handle list.
(try_dlopen): Use lt__zalloc instead of MALLOC and memset.
* libltdl/ltdl.h (lt_dlcaller_id): Be truly opaque with a void *.
(lt_dlhandle_interface): New callback type for filtering handles
according to the interface they present.
* libltdl/ltdl.c (lt_dlcaller_register): Take an id and an
interface check callback, and generate a caller_id.
(iterator): New static variable for the use of...
(lt_dlhandle_first): New function.  Set the iterator for
subsequent calls to lt_dlhandle_next.
(lt_dlhandle_next): Either work as before when iterator is unset,
or else skip handles that fail the interface check in iterator set
by lt_dlhandle_first.
* libltdl/ltdl.h (lt_dlhandle_first): Declaration.
* doc/libtool.texi (User defined module data): Document the new
APIs.
* NEWS: Updated.
2004-07-15 12:37:15 +00:00
Gary V. Vaughan
5451db06bd Split lt_dlloader management into a separate file, and factor
`loaders' list management into a new SList ADT.  In the process,
the API for writing loaders is a little cleaner, so all the
existing loaders were tweaked to take advantage of that:

* libltdl/slist.h, libltdl/slist.c: New files implementing a
generic singly linked list container ADT.  The ADT is purely
internal, and none of its API's are visible from an installed
libltdl.
* libltdl/lt_dlloader.h (lt_dlloader): Removed next field again
:-) Renamed to lt_dlvtable for API.  Changed all callers.
(lt_dlloader_get): New function to turn an lt_dlloader into its
associated lt_dlvtable.
(lt_dlloader_add): Removed unused data parameter.  The caller
data belongs to (and is set by) the loader itself, not the
loader's client.  Changed all callers.
(lt_dlloader_name, lt_dlloader_data): Removed.  Use
lt_dlloader_get instead!
* libltdl/lt__private.h: Include slist.h.
(lt__alloc_die_callback): Add missing LT_SCOPE to declaration.
(lt_dlhandle_struct): Use lt_dlvtable instead of opaque
lt_dlloader.
* libltdl/ltdl.c (lt_dlexit): Rewritten for the new loader API.
(loaders, lt_dlloader_add, lt_dlloader_remove, lt_dlloader_next,
lt_dlloader_find): Moved from here...
* libltdl/lt_dlloader.c ((loaders, lt_dlloader_add,
lt_dlloader_remove, lt_dlloader_next, lt_dlloader_find): ...to
here.  And rewritten in terms of new SList interface.
* libltdl/ltdl.c (lt_dlexit, tryall_dlopen): Rewritten in terms of
new lt_dlloader interface.
* libltdl/Makefile.am (libdlloader_la_SOURCES): Add slist.h and
slist.c.  Move lt_dlloader.h from here...
(pkginclude_HEADERS): ...to here.
(libltdl_la_SOURCES): Add lt_dlloader.c and lt_dlloader.h.
2004-07-15 12:33:20 +00:00
Gary V. Vaughan
52de761d29 Collapse two almost identical structures into one:
* libltdl/lt_dlloader.h (lt_dlloader): Add next field.
* libltdl/ltdl.c (lt_user_dlloader): Remove entirely.  Change all
callers to use lt_dlloader instead.  Add a compatibility macro.
(lt_dlloader_add): Remove copy and allocate stage, just hook
directly into the loaders list.
2004-07-15 12:26:28 +00:00
Gary V. Vaughan
0d8529860b A cleaner way to access the private fields of an lt_dlhandle
than my move of the module field into lt_dlinfo:

* libltdl/ltdl.c (lt_caller_data, lt_dlhandle_struct): Move from
here...
* libltdl/lt__private.h (lt_caller_data, lt_dlhandle_struct):
...to here.  And put the module field back here...
* libltdl/ltdl.h (lt_dlinfo): ...instead of here.
* libltdl/loaders/loadlibrary.c (vm_open): Adjust.
2004-07-15 12:22:48 +00:00
Gary V. Vaughan
4257156873 * libltdl/lt__private.h (streq, strneq): New macros to make strcmp
calls as used for simple comparison easier to read.
* libltdl/loaders/dyld.c, libltdl/loaders/preopen.c,
libltdl/ltdl.c: Use them!
2004-07-15 12:20:15 +00:00
Gary V. Vaughan
706e672811 This pervasive changeset makes two intertwined deep changes to the
operation of libtool (neither would work alone).  First, there is
a new feature that allows libraries to preopen modules.  This
entails a backwards incompatible change to the libltdl API for
separating out the preloaded symbol lists by owner.  Second, in
the tradition of "eating our own dogfood", libltdl now preloads
its own dlloaders.  The internal API for dlloaders has also had to
change in a backwards incompatible way in support of the new
library preloading feature.  If you don't use preloaded libraries,
you needn't change your project sources, though you will need to
recompile against the new libltdl.  The API changes are mostly
confined to dlloaders, so you probably needn't worry about those
(unless you have written a custom loader that you want libltdl to
use):

* configure.ac (AC_CONFIG_FILES): Add libltdl/loaders/Makefile.
* libltdl/configure.ac (AC_CONFIG_FILES): Add loaders/Makefile.
* libltdl/loaders: New directory for module loaders, to simplify
Makefile rules, and to give the loaders themselves names that are
unique in the first few characters.
* libtoolize.in (func_copy_all_files): Copy recursively to pick up
the loaders directory contents.
* libltdl/loaders/Makefile.am: New file.  Move module building
rules to here...
* libltdl/Makefile.am: ...from here.
(VERSION_INFO): Bumped version info to signify interface changes.
(libltdl_la_CPPFLAGS, libltdlc_la_CPPFLAGS): Set LTDLOPEN
appropriately for each library.
* libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
libltdl/loader-dyld.c, libltdl/loader-load_add_on.c,
libltdl/loader-loadlibrary.c libltdl/loader-preopen.c,
libltdl/loader-shl_load.c: Moved from here...
* libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
libltdl/loaders/loadlibrary.c libltdl/loaders/preopen.c,
libltdl/loaders/shl_load.c: ...to here.
(get_vtable): New entry function for each.
* libltdl/loaders/preopen.c (lt_dlsymlists_t): Replaced by...
(symlist_chain): ...a new structure which maps lists of preloaded
symbols from the object that loads them.
(lt_dlpreload_open): New function to automatically open all
preloaded modules belonging to a named object (ORIGINATOR).
* libltdl/lt__alloc.c (lt__zalloc): New function to return a block
of zeroed out new memory.
* libltdl/lt__alloc.h (lt__zalloc): Prototype it.
* libltdl/lt__private.h (lt__alloc_die_callback): Add missing
prototype.
(lt__error_strings): Make this opaque to callers.
* libltdl/lt_error.c (lt__error_strings): Move the implementation
to here.
* libltdl/lt_dlloader.h (lt_user_dlloader): Add extra fields to
make originator focused preloading possible.  *BREAKS BACKWARDS
COMPATIBILITY*
(lt_dlloader_add): Take advantage of new fields to simplify
paramater list.
* libltdl/lt_system.h (LT_STR): New ANSI stringification macro.
(LT_CONC): Fix it to work from within macros.
* libltdl/ltdl.c (loader_init, loader_init_callback): Simplify
dlloader loading.
(get_vtable, preloaded_symbols): Point these at the preopen.c
symbols to bootstrap the loader chain.
(lt_dlinit): Load the preopen dlloader manually, and then use it
to load any other preloaded dlloaders.
(lt_dlloader_add): Simplify parameter list. Populate new
fields. Chain new loaders according to priority field.
* libltdl/ltdl.h (lt_dlsymlist): Add a new originator field.
(lt_dlpreload_callback_func): Type of a callback for automatic
lt_dlpreload_open loading.
(LTDL_SET_PRELOADED_SYMBOLS): Adjust to hook into preloaded
symbols from the "@PROGRAM@" originator.
* tests/demo/dlmain.c (main): Use mangled preloaded_symbols symbol.
* tests/pdemo/longer_file_name_dlmain.c (main): Ditto.
* ltmain.in: Don't spew spurious warnings when dlopening and
dlpreopening modules.
(func_generate_dlsyms): Factored out from multiple copies in the
rest of the code. Generate originator keyed symbol lists.
(func_extract_archives): Also factored.  Extract the contents of
convenience archives for linking with dependent libraries when
--whole-archive is not available.
[darwin]: Don't try to link $old_library unless it exists, and
$lib is a bundle.
* m4/ltdl.m4 (AC_LTDL_DLLIB): Check for all possible dynamic
loading libraries/apis rather that stopping when an acceptable one
is discovered.
(LT_DLLOADERS): New variable for holding dlloaders that can be
preloaded.
* doc/libtool.texi: Document interface changes.
* NEWS: Updated.
2004-07-15 12:14:48 +00:00
Peter O'Gorman
7d2361374b * m4/libtool.m4 [darwin]: Set whole_archive_flag_spec to '' for xlc,
or it does not pass it's tests. xlc passes -noall_load (the default)
and when -all_load is also specified Apple's /usr/bin/libtool barfs
and dies.
2004-07-12 14:08:05 +00:00
Gary V. Vaughan
8bd0890c7b * libltdl/ltdl.h (lt_dlinfo): Move private module field to here...
* libltdl/ltdl.c (lt_dlhandle_struct): ...from here.  Changed all
callers.
* libltdl/loader-loadlibrary.c (sys_wll_open): Use new inteface to
scan loaded handle->info.module fields for previously loaded
modules.
* doc/libtool.texi (User defined module data): Document changes to
the interface.
* NEWS: Updated.
Reported by Chuck Wilson <cwilson@ece.gatech.edu>
2004-07-08 09:35:51 +00:00
Brad
ae045aaf74 * m4/libtool.m4: Fixes for the OpenBSD support 2004-07-07 13:45:06 +00:00
Noah Misch
269f719460 * ltmain.in: Unset the zsh GLOB_SUBST option, which makes zsh
handle backslash quoting poorly, before doing anything else.
* tests/defs: Likewise.
2004-06-24 12:21:41 +00:00
Gary V. Vaughan
769c1c1837 * libtoolize.in (libtoolize_flags): With the --ltdl option, we
libtoolize the libltdl subdirectory automatically.
* m4/ltdl.m4 (AC_WITH_LTDL): Fix overquoted args.
2004-06-21 16:40:01 +00:00
Peter O'Gorman
50376ef19a * ltmain.in (dependency_libs) [darwin]: Remove -framework stuff from
dependency_libs. Instead, invent a new .la var "inherited_linker_flags"
to keep any linker flags which should be used when linking the library,
but are outside the usual -L -l, -R etc that can be used in
dependency_libs. Any unusual flags in dependency_libs cause recent
versions of libtool to die with "cannot find the library `'", so
it is required to move frameworks out of there. :(
2004-06-21 14:52:57 +00:00