Commit Graph

253 Commits

Author SHA1 Message Date
Ralf Wildenhues
33c0290e19 Basic support for PIE (position-independent executables).
* libltdl/config/ltmain.m4sh (func_generate_dlsyms):
Don't pass PIE flag for compilation of the symbol file object.
* NEWS: Updated.
2005-12-03 08:48:15 +00:00
Todd Vierling
7389434efe * libltdl/m4/libtool.m4 (LT_CMD_MAX_LEN, _LT_SYS_DYNAMIC_LINKER)
(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
(_LT_LANG_CXX_CONFIG) [ interix3 ]: Support for Interix/Microsoft
Services for Unix.
* libltdl/m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): Likewise.
* NEWS: Updated.
2005-11-20 08:45:54 +00:00
Howard Chu
01f0aa7662 * libltdl/config/ltmain.m4sh (func_mode_link):
With `-static', only link statically against uninstalled
libtool libraries.  Fixes 1.5.x regression to match documented
behavior.
* NEWS: Updated.
2005-10-29 14:21:02 +00:00
Gary V. Vaughan
e1454ec7b4 * libltdl/Makefile.inc: New file, factored out of Makefile.am for
use in non-recursive libltdl installations.
* bootstrap: Adjust.
* Makefile.am: include it.
(libltdl/Makefile.am): Adjust to build from the new
libltdl/Makefile.inc.
(SUBDIR_LIBOBJS): Renamed from this...
(LTDL_SUBDIR_LIBOBJS): ...to this.
* configure.ac: Adjust.
* doc/libtool.texi (Invoking libtoolize): Document the new modes
and libtoolize option to select them.
* libtoolize.m4sh: Parse new options, --nonrecursive, --recursive
and --subproject.  Install the appropriate files with --ltdl
according to the selected mode.
(func_scan_files): If --subproject, --recursive or --nonrecursive
options were not given, use the value from LT_CONFIG_LTDL_DIR; if
a mode was given, and there is also an argument to
LT_CONFIG_LTDL_DIR, ensure they are the same.
* NEWS: Updated.
2005-10-26 10:42:05 +00:00
Gary V. Vaughan
04edc7871c * libltdl/ltdl.h, libltdl/ltdl.c (lt_dlhandle_first): Removed.
* libltdl/ltdl.h, libltdl/ltdl.c (lt_dlhandle_next)
(lt_dlhandle_find, lt_dlforeach): Removed...
(lt_dlhandle_iterate, lt_dlhandle_fetch, lt_dlhandle_map): Similar
functions that are multi-loader safe, and require a registered
interface validator argument.
* doc/libtool.texi: Updated.
* NEWS: Updated.
2005-10-26 10:26:48 +00:00
Gary V. Vaughan
9f6099490a * libltdl/m4/ltdl.m4: Bump serial as we are changing the
interface.
(LT_CONFIG_LTDL_DIR): New macro to centralise setting the
subdirectory used for libltdl.
(LTDL_CONVENIENCE): Continue backwards compatibility support for
declaring the libltdl source subdirectory with an argument, but
defer to LT_CONFIG_LTDL_DIR.
(AC_LIBLTDL_CONVENIENCE): Adjust to upgrade to the new style.
(LTDL_INSTALLABLE, AC_LIBLTDL_INSTALLABLE): Ditto.
(LTDL_INIT): lt_ltdl_dir is set by LT_CONFIG_LTDL_DIR now, and
even `./' needs trailing slashes trimming!  If the user didn't
upgrade their configure.ac yet, call LT_CONFIG_LTDL_DIR for them.
* libtoolize.m4sh (func_scan_files): If --ltdl option is given
without a directory argument, use the value from
LT_CONFIG_LTDL_DIR; if the argument is given, and there is also a
value in LT_CONFIG_LTDL_DIR, ensure they are the same.
* libltdl/configure.ac: Use it.
* NEWS: Updated.
2005-10-03 15:45:47 +00:00
Gary V. Vaughan
6db2a8ba58 * libltdl/ltdl.h (lt_dlmutex_register, lt_dlmutex_lock)
(lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror)
(lt_dlmalloc, lt_dlrealloc, lt_dlfree): Remove deprecated APIs.
* doc/libtool.tex: Updated.
* NEWS: Updated.
2005-09-27 10:41:07 +00:00
Gary V. Vaughan
757d7dc478 Reorganise the libtool tree to create a bootstrapped libltdl for
installation to the libtoolize master tree, so that libltdl is
useable even in the extreme case of when automake and autoconf are
not installed on the developers machine.  Part of this change
requires some duplication of rules between Makefile.am (which
builds libltdl for this distribution) and libltdl/Makefile.am
(which is used by projects that libltoolize --ltdl --copy), so
libtool now really does use a single toplevel Makefile.am, and we
generate libltdl/Makefile.am from that:

* m4, config: Moved from here...
* libltdl/m4, libltdl/config: ...to here, to reduce the amount of
kludging needed in bootstrap for autoreconf to run.
* tests/cdemo/Makefile.am, tests/demo/Makefile.am,
tests/depdemo/Makefile.am, tests/f77demo/Makefile.am,
tests/fcdemo/Makefile.am, tests/mdemo/Makefile.am,
tests/mdemo2/Makefile.am, tests/pdemo/Makefile.am,
tests/tagdemo/Makefile.am (ACLOCAL_AMFLAGS): Adjust to
compensate.
* tests/cdemo/configure.ac, tests/demo/configure.ac,
tests/depdemo/configure.ac, tests/f77demo/configure.ac,
tests/fcdemo/configure.ac, tests/mdemo/configure.ac,
tests/mdemo2/configure.ac, tests/pdemo/configure.ac,
tests/tagdemo/configure.ac (AC_CONFIG_AUX_DIR): Ditto.
* libltdl/m4/ltdl.m4: Increment serial number.
(LTDL_INIT): Accept an optional directory argument to prefix each
of the LD_DLLOADERS locations.  Default to empty for backwards
compatibility.
* Makefile.maint: Adjust to compensate.
* configure.ac (AC_CONFIG_AUX_DIR, AC_CONFIG_MACRO_DIR): Adjust.
(AC_CONFIG_LIBOBJ_DIR): Set here so that we can build LTLIBOBJS
from in a subdirectory from the amalgamated Makefile.am.
(AM_PROG_CC_C_O, AM_INIT_AUTOMAKE): Use subdir-objects.
(AC_CONFIG_FILES): Remove libltdl/Makefile.am.
* libltdl/Makefile.am: Removed from repository, and merged into
Makefile.am as we now generate it...
* Makefile.am (libltdl/Makefile.am): ...from here, by extracting
the merged rules, and tweaking paths to accomodate the difference
in directory from Makefile.am to libltdl/Makefile.am.
(nobase_dist_pkgdata_DATA): Automake generated installation rules
change timestamps of installed files, so renamed this...
(configauxfiles): ...to this...
(libtoolize): ...substitute it...
(install-data-local): ...install manually, preserving
timestamps...
(install-data-hook): ...and set execute bit as appropriate.
(uninstall-hook): Not forgetting to remove them at uninstall.
(libltdl/Makefile.in): New rule.  Called from...
* bootstrap: ...here to avoid relying on config.status at
bootstrap time.
(auxdir, m4dir): Extract from configure.ac for ease of future
maintenance.  Adjust all references.
(reconfdirs): Call autoreconf for libltdl too -- even
though we don't use it for the build, libltdl/configure and
friends are installed with `libtoolize --ltdl --copy'.
* libtoolize.m4sh: Add files from the installed config master tree
to libtoolize --ltdl project subdirectory.
Diagnose duplicated files when --ltdl is used in an autotooled
project.
It's perfectly fine to run `libtoolize --ltdl --copy' in a tree
that has no configure.ac or configure.in; we want libltdl to be
useful even to projects that don't use autotools themselves.
(libtoolize_flags): Removed.  Changed all callers.
(func_massage_pkgconfig_files): New function.
* tests/standalone.at: New tests for using libltdl without
supporting configury in the parent project.
* tests/testsuite.at: Run them!
* NEWS: Updated.
2005-08-23 01:49:37 +00:00
Ralf Wildenhues
a1b595f6ab * m4/libtool.m4 (_LT_PROG_FC, _LT_LANG_FC_CONFIG): New macros
for modern Fortran.
(LT_LANG, _LT_LANG_DEFAULT_CONFIG, _LT_SYS_DYNAMIC_LINKER,
_LT_SYS_HIDDEN_LIBDEPS): Adjusted.
* tests/fcdemo-conf.test, tests/fcdemo-exec.test,
tests/fcdemo-make.test, tests/fcdemo-shared.test,
tests/fcdemo-static.test, tests/fcdemo/Makefile.am, tests/fcdemo/README,
tests/fcdemo/configure.ac, tests/fcdemo/cprogram.c, tests/fcdemo/foo.h,
tests/fcdemo/fooc.c, tests/fcdemo/foof.f90, tests/fcdemo/foof2.f90,
tests/fcdemo/foof3.f90, tests/fcdemo/fprogram.f90: New tests for Fortran.
* tests/convenience.at: Extended.
* Makefile.am, configure.ac: Adjusted.
* NEWS: Updated.
2005-08-08 09:23:57 +00:00
Gary V. Vaughan
ef4442da9b Revert the parallel installation changes from November last year:
* libtoolize.m4sh (pkgdatadir, aclocaldir): Substituted from
configure.
(func_copy_all_from_path): Removed.  No longer used.
(func_copy_some_files): Simplify now that nothing is copied from a
list of possible directories now.
(func_scan_files): Remove directory readability check...
(func_nonemptydir_p): ...in favour of a dedicated sanity check
function called from the main body.
(_lt_pkgvdatadir): Set pkgdatadir and aclocaldir appropriately if
this is in the environment.
* configure.ac: Tests for `ln' removed.
(APIVERSION): Removed.
* Makefile.am (pkgvdatadir, nobase_dist_pkgvdata_DATA)
(nobase_pkgvdata_DATA): Renamed to...
(pkgdatadir, nobase_dist_pkgdata_DATA, aclocalfiles): ...these
respectively.
(edit): Adjust for new variable names.
(install-data-local): Don't bother to remove old macro files that
will be overwritten by the installation, and perform a manual
installation of $(aclocalfiles) to preserve timestamps.
(install-exec-hook): Removed.  No need to make versioned links.
(uninstall-hook): No need to remove versioned links, but now we
need to manually remove the manually installed $(aclocalfiles).
* doc/libtool.texi: Remove bogus notes about setting
ACLOCAL_AMFLAGS for versioned libtool installations.
* NEWS: Remove parallel installation item.
2005-04-30 09:30:14 +00:00
Ralf Wildenhues
5b9fd5f43a * m4/libtool.m4 (_LT_CC_BASENAME): New macro to figure out $cc_basename.
Skip ccache, distcc, purify, cmdline options, `$host_alias-' prefix.
(_LT_SETUP, _LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG,
_LT_LANG_GCJ_CONFIG, _LT_LANG_RC_CONFIG): Use.
* NEWS, TODO: Update.
2005-04-15 13:36:56 +00:00
Per Bothner
85ad7692fb Allow special characters in source file names. Will break unless
`-o target' is also given, which must not contain special characters.
En passant, fix source file quoting broken for cygwin/MSVC.
2005-03-12 08:49:04 +00:00
Ralf Wildenhues
c2930cb393 * NEWS: s/Linux/GNU &/. 2005-02-04 15:47:40 +00:00
Craig Dooley
94a93ca621 * NEWS, m4/libtool.m4, config/ltmain.m4sh [dragonfly]:
Add support for DragonFly.
2005-01-26 17:38:51 +00:00
Ralf Wildenhues
d471094f21 * libtoolize.m4sh: Install `install-sh' as well, needed for configure ..
* Makefile.am, Makefile.maint: .. install, update it.
* NEWS, doc/libtool.texi (Distributing): .. document it.
Reported by Ross Boylan <ross@biostat.ucsf.edu>.
2004-12-20 13:08:35 +00:00
Ralf Wildenhues
81b4ad79e3 * config/ltmain.m4sh (func_lalib_p): Update function
description. (func_lalib_unsafe_p): New function with same
functionality but written without forks; this function is safe
to use for cases where the argument either does not exist or
is required to be a lalib for correct operation.
* NEWS: Mention the fact that stdin is not to be used.
* (func_mode_execute, func_mode_install, func_mode_link):
Use func_lalib_unsafe_p where appropriate.
* (func_mode_execute): For the program wrapper, use
func_ltwrapper_p instead of func_lalib_p.
2004-11-29 21:18:26 +00:00
Ralf Wildenhues
e5874b17a0 * m4/libtool.m4 (_LT_LINKER_SHLIBS): Treat linux-dietlibc with
the `diet' compiler wrapper (as opposed to the `diet-dyn'
wrapper) as a static-only platform.
* NEWS: Updated.
2004-11-29 21:12:41 +00:00
Ralf Wildenhues
60fbf440cb * m4/ltdl.m4 (LT_LIB_DLLOAD): Define HAVE_LIBDLLOADER if we
have a dlloader to preload.
* libltdl/ltdl.c (lt_dlinit): Only preload if HAVE_LIBDLLOADER, only
declare preloaded_symbols then.  Fixes libltdl on static platforms.
* NEWS: Updated.
2004-11-29 21:00:20 +00:00
Jeff Squyres
c541367158 * m4/libtool.m4 [linux] (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS,
_LT_LANG_CXX_CONFIG), NEWS, THANKS: Support for Portland Group
(aka "pgi") compilers.
2004-11-24 17:25:38 +00:00
Gary V. Vaughan
ef758b513c * configure.ac (APIVERSION): New substituted variable.
(pkgvdatadir): Ditto.  Versioned data directory.
(pkgvmacrodir): Ditto.  Versioned aclocal directory.
(LN): New check for LN command.
* Makefile.am (aclocal_DATA): Replaced with...
(pkgvmacro_DATA): ...this.
(install-data-local): Remove old shared resources.
(install-exec-hook): Make versioned links to executables.
(uninstall-hook): Remove versioned files.
* libltdl/Makefile.am (ltdldatadir): Redefine in terms of
pkgvdatadir.
* libltdl/loaders/Makefile.am (ltdldatadir): Ditto.
* libtoolize.m4sh: Copy macro files from versioned macro directory
instead of shared aclocal directory.
* doc/libtool.texi: Document it.
* NEWS: Updated.
2004-11-15 01:03:14 +00:00
Gary V. Vaughan
fd13e4f5ca Add some new tests for Libtool's support of Automake
subdir-objects builds.  This marks the beginning of a move to an
Autotest driven test framework, which will eventually allow us to
trim away many of the generated files in the current test demo
subdirectories:

* configure.ac (AC_CONFIG_TESTDIR): Re-enable commented out
Autotest macros.
(AUTOTEST, M4SH): Use --language long hand.
* bootstrap: Generate tests/testsuite, and by implication
tests/package.m4.
* Makefile.am (edit): Add substitutions needed to generate
tests/package.m4 from bootstrap.
(check-recursive): Add tests/testsuite.
(TESTSUITE): The new Autotest testsuite target.
(TESTSUITE_AT): The Autotest sources.
(EXTRA_DIST): Distribute the generated testsuite and sources.
(tests/package.m4): Use $(edit) to propagate package metadata to
the new tests.
(tests/testsuite): Build the testsuite.
(tests/atconfig): How to regenerate the file.
(check-local): Hook Autotest into `make check'.
(installcheck-local): Run the testsuite on the installed tree.
(clean-local): Tidy our file droppings.
* tests/Makefile.am: Remove bitrotted code from Autotest
experiments in Autoconf 2.52 era.  Updated the rest and moved into
Makefile.am.
* tests/testsuite.at: New container for Autotest test groups.
* tests/am-subdir.at: New test group for compatibility with
Automake's subdir-objects builds.  Currently holds two tests, one
for a C project and another similar project in C++.
* TODO: Add an entry to remind us that these new tests expose a
bug in libtool.
* NEWS: Updated.
2004-10-16 14:43:48 +00:00
Gary V. Vaughan
e5d70992b8 * m4/libtool.m4 (_LT_PROG_ECHO_BACKSLASH): Don't confuse $ECHO
with $lt_ECHO, or we always get a libtool with ECHO=echo, rather
than testing for a mechanism that quotes  properly.
* NEWS: Updated.

* config/ltmain.m4sh: Need to include getopt.m4sh earlier so that
progpath is set before it is called to --no-reexec.
* NEWS: Updated.

Without this change, the distributed libtool tarball has a
dependency on autom4te.  There was some inconsistency in the
filenames: now we have foo.m4sh -> m4sh -> foo.in -> configure
-> foo[.sh].  Bootstrap runs the m4sh steps and the resulting .in
files are distributed:

* tests/Makefile.am (EXTRA_DIST): Distribute defs.m4sh.
* Makefile.am (EXTRA_DIST): Distribute libtoolize.m4sh.
(libtoolize.in, libtoolize): Split into bootstrap and runtime
stages.
($(top_srcdir)/tests/defs.in, $(top_srcdir)/tests/defs): Ditto.
($(top_srcdir)/config/ltmain.sh): Swap ltmain.m4sh and ltmain.in
names.
* bootstrap: Make libtoolize.in and tests/defs.in.
* NEWS: Updated.
2004-10-04 18:32:45 +00:00
Jim Tison
23031a61ab Initial support for s390x-ibm-tpf:
* m4/libtool.m4: Correct obvious spelling errors in remarks.
(_LT_ENABLE_LOCK): Make s390x-ibm-tpf hosts adopt elf64_s390
conventions.
(_LT_SYS_DYNAMIC_LINKER): Set defaults for s390x-ibm-tpf host.
(_LT_CHECK_MAGIC_METHOD): Skip all dependency checks for
s390x-ibm-tpf hosts.
(_LT_LINKER_SHLIBS): Make s390x-ibm-tpf hosts adopt GNU/Linux OS
attributes.
* NEWS: Updated.
2004-10-02 12:57:45 +00:00
Charles Wilson
8c7eb9e5c9 * ltmain.in (func_generate_dlsyms) [cygwin, mingw]: when creating
a .exp file for an executable, also create a .def file, and add
that file to the link command via SYMFILES.  This causes binutils
to generate an .edata section, and allows self dlopening to work.
* NEWS: Updated.
2004-09-22 08:50:34 +00:00
Gary V. Vaughan
0e0104aa45 My most recent `2004-09-02 Gary V. Vaughan' patch for mkdir_p
below is horrendously broken since it makes the installed libtool
try to run the mkinstalldirs or install-sh helper scripts.  This
patch fixes the `make -j' mkdir race condition internally:

* libtoolize.in (func_mkdir_p): New slice and dice algorithm
to build the directory tree one dir at a time, ignoring errors
until the end incase they are transient due to a concurrent
identical mkdir.
* tests/defs (func_mkdir_p): Ditto.
* config/ltmain.in (func_mkdir_p): Ditto, except that ltmain.in
uses $echo rather than $ECHO, and uses $show and $run to interact
correctly with the command line.
* configure.ac (AM_INIT_AUTOMAKE): 1.8 is sufficient again.
* Makefile.am (edit): Don't substitute automake's $(mkdir_p).
* NEWS: Updated.
2004-09-16 14:57:02 +00:00
Ralf Wildenhues
8240b4ebba * m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): The linker distinguishes
data and code symbols on linux-gnu/ia64.  Fixes multiple testsuite
failures.
* NEWS: Updated.
2004-09-11 00:50:27 +00:00
Albert Chin-A-Young
0aef25d740 * m4/libtool.m4, config/ltmain.in: When calling $LTCC,
pass default $CFLAGS through with $LTCFLAGS.
2004-09-05 17:35:16 +00:00
David Edelsohn
875f854504 * config/ltmain.in (func_mode_link): Use $pic_object as
$non_pic_object if $non_pic_object=none.
* NEWS: Updated.
2004-09-03 13:02:33 +00:00
Gary V. Vaughan
ba6daa7408 Builds of packages that use libtool and make -j produce "directory
already exists warnings" for .lib directory.  Build on automake
wisdom to support make -j builds where a suitable mkdir is
available:

* configure.ac (AM_INIT_AUTOMAKE): Require 1.9, which goes to some
trouble to find a $(mkdir_p) that doesn't interfere with make -j.
* Makefile.am (edit): Substitute for @mkdir_p@.
* config/ltmain.in (MKDIR_P): Take @mkdir_p@ value.
(mkdir): Removed.
(func_mkdir_p): New function to use $MKDIR_P.  Factor out all
previous mkdir calls to use this function.
(RM, MV): Declared as in libtoolize.in.  Changed all callers.
* libtoolize.in (MKDIR_P): Take @mkdir_p@ value from automake.
(func_mkdir_p): Use it, similarly to new config/ltmain.in.
* tests/defs: Synchronize boiler plate code with ltmain.in.
Adjust all callers.
Add missing copyright preamble.
* tests/demo-static.test: Add missing copyright preamble.
Reported by Daniel Reed <n@ml.org>
2004-09-03 00:26:37 +00:00
Ralf Wildenhues
c45d3a0d18 * libltdl/ltdl.c (try_dlopen): Fix memory leak.
* NEWS: Updated.
2004-09-02 13:27:24 +00:00
Gary V. Vaughan
cae83b341b * libltdl/slist.c, libltdl/slist.h: Merge in changes from latest
upstream.  Mostly comments, formal item boxing, a sort function,
and const madness reduction.
(slist_new): Removed.
(slist_box, slist_unbox, slist_sort): New.
(SListCompare, SListCallback): Swapped!
(slist_remove, slist_find): Change order of parameters for
orthogonality with slist_foreach.  Changed all callers.
* libltdl/lt_dlloader.c (loader_cmp): Renamed to...
(loader_callback): ...this.  Return boxed item.
(lt_dlloader_remove): Adjust to new loader_callback semantics;
unbox each removed item before returning.
Remove unused variable.
Remove const from name parameter, since the slist API cannot
guarantee userdata const-ancy for its callback functions.
(lt_dlloader_find): Adjust to new loader_callback semantics; need
to return the contents of the boxed item.
Remove const from name parameter, since the slist API cannot
guarantee userdata const-ancy for its callback functions.
* libltdl/lt_dlloader.h (lt_dlloader_find, lt_dlloader_remove):
Adjust to new constless footprint.
* libltdl/ltdl.c (ltdl_exit): The global `loaders' list is changed
variable `loader' is invalidated.  Since some loaders may be
resident modules that cannot be unloaded (though we have none
yet), we must save each `next' address before calling
`lt_dlloader_remove'.
* NEWS: Updated.
* THANKS: Added Ralf.
2004-09-02 12:55:32 +00:00
Gary V. Vaughan
53f09b2d98 Don't use C99 flexible array types as we want to be C89
compatible.  Instead, revert to the old way of doing things with
an array of symbol name vs. address, and adding the originator as
the first symbol but with a NULL address:

* config/ltmain.in (func_extract_dlsyms): Store originator as a
NULL address symbol.
* libltdl/ltdl.h (lt_dlsymbol): Removed.
(lt_dlsymlist): Remove originator field.
(LTDL_SET_PRELOADED_SYMBOLS): Adjust.
* libltdl/loaders/preopen.c (vm_open, lt_dlpreload_open): Adjust
for new types.
(vm_sym): Skip the new originator symbol when scanning symbol
names.
* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Adjust preloaded symbols
test file to match.
* NEWS: Updated.
2004-09-01 01:22:26 +00:00
Gary V. Vaughan
5da74960c2 * libltdl/lt_dlloader.c (lt_dlloader_remove): Since the return
value of this function is often passed to free, don't declare it
`const'. Responsibility for this memory is given back to the
caller on return.
* libltdl/lt_dlloader.h (lt_dlloader_remove): Ditto.
* libltdl/ltdl.c (lt_dlexit): Adjust.
* NEWS: Updated.
2004-08-30 12:33:09 +00:00
Gary V. Vaughan
c2fcf9b3cf * NEWS: Updated.
* configure.ac: Bumped version to 1.9c.
2004-08-29 21:42:15 +00:00
Gary V. Vaughan
0f329d5f72 * configure.ac: Bumped version to 1.9b.
* NEWS: Updated.
* INSTALL, config/config.guess, config/config.sub,
config/texinfo.tex: Updated from canonical source.
* Makefile.maint, HACKING: Update instructions for releasing in a
VPATH build.
2004-08-29 20:36:32 +00:00
Gary V. Vaughan
5ce81559bb * NEWS: Merge changes from branch-1-5. 2004-08-29 17:06:25 +00:00
Gary V. Vaughan
0158428875 Add a new `-weak' flag to tell libtool when not to propogate
dependency libraries from dlpreopened modules to libraries:

* config/ltmain.in: Support new -weak link mode option.  Adjust
help message.
* libltdl/Makefile.am (libltdlc_la_LDFLAGS): Use it.
* doc/libtool.texi (Linking with dlopened modules): Document it.
(Link mode): Mention -weak.
* NEWS: Updated.
2004-08-29 16:05:34 +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
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
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
fa497f68e7 * m4/libtool.m4: More improvements to OpenBSD support.
* NEWS: Updated.
2004-06-16 15:44:44 +00:00
Gary V. Vaughan
3cb36d316f Automake 1.9 won't have the AC_PROG_EGREP bug (aclocal used to
pull an old installed libtool.m4 as well as the bootstrap
m4/libtool.m4 if an AC_DEFUN was removed), and we have
lt~obsolete.m4 to work around it in the mean time.  libtoolize
can install macro files from $prefix/share/aclocal perfectly well
without us needing to move to a whole other directory:

* Makefile.am (pkgmacro_DATA): Renamed to aclocal_DATA, so m4
files are installed to $prefix/share/aclocal again.
(install-data-local): Don't remove just installed macros!
* libtoolize.in (pkgmacrodir): Renamed to aclocaldir.
(func_copy_some_files): New function factored out of...
(func_copy_all_files): ...here.  Adjust to use func_copy_some_files.
(re_pkgaux_files): Renamed to glob_pkgaux_files, since it is not
a regular expression.
(re_pkgmagro_files): Replaced with...
(pkgmacro_files): ...a colon delimited list of libtool installed
m4 files from aclocaldir.
(Main): Copy macro files from aclocaldir again.
* NEWS: Updated.
2004-06-16 15:08:28 +00:00
Mike Gorchak
74e63154f4 * ltmain.in: Add new qnx version type support.
* m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Use it.  Set
ldqnx.so linker type.
(AC_DEPLIBS_CHECK_METHOD): QNX6 uses GNU C++, with deplib
checking, so use pass_all.
(AC_LIBTOOL_PROG_COMPILER_PIC): Use -shared for QNX.
(_LT_LANG_CXX_CONFIG): QNX can make shared libraries.
* m4/ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): QNX opens deplibs on
dlopen.
* NEWS: Updated.
2004-05-17 16:41:23 +00:00
Gary V. Vaughan
14ae34906f According to Howard Chu <hyc@highlandsun.com>:
Applications should assume that the native dlopen is NOT
thread-safe, and take care of locking themselves. All application
calls into libltdl should thus be protected by the caller.

* libltdl/lt_mutex.c, libltdl/lt_mutex.h: Removed.
* libltdl/Makefile.am (pkginclude_HEADERS): Removed lt_mutex.h.
(libltdl_la_SOURCES): Removed lt_mutex.c and lt_mutex.h.
* libltdl/ltdl.h: Don't include lt_mutex.h.
* libltdl/lt__private.h (LT__MUTEX_GETERROR, LT__MUTEX_SETERROR)
(LT__MUTEX_SETERRORSTR): Renamed to...
(LT__GETERROR, LT__SETERROR, LT__SETERRORSTR): ...this.  Changed
all callers.
(LT__MUTEX_LOCK, LT__MUTEX_UNLOCK, lt_dlmutex_lock)
(lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror):
Removed.  Changed all callers.
* doc/libtool.texi (Thread Saftey in libltdl):
* NEWS: Updated.
2004-04-22 22:08:19 +00:00
Gary V. Vaughan
1b77aa3abb * m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Intel C++ compiler 8.0 and
newer adds predep_objects and postdep_objects itself, so don't
duplicate them in $archive_cmds and $archive_expsym_cmds.
* NEWS: Updated.
Reported by Roberto Bagnare <bagnara@cs.unipr.it>
2004-04-19 12:49:56 +00:00
Gary V. Vaughan
7caaca4a5c * libltdl/lt__pre89.h, libltdl/memcpy.c, libltdl/memmove.c,
libltdl/strchr.c, libltdl/strcmp.c, libltdl/strrchr.c: Remove
half-assed pre-c89 support entirely.
* libltdl/lt__private.h: Don't refer to lt__pre89.h.
* libltdl/Makefile.am (ltdldata_DATA): Remove references to
deleted files.
* NEWS: Mention it.
2004-04-13 21:25:34 +00:00
Gary V. Vaughan
e658105eb9 Keywords:
There was no clean separation of abstraction layers in libltdl.
The first step in fixing this is to factor out the memory
management abstraction, making a start on removing promiscuity
from the underlying portability layer:

* doc/libtool.texi (Libltdl interface): Remove lt_dlmalloc,
lt_dlrealloc and lt_dlfree references.  The memory management
layer used by libltdl is now private.
* libltdl/lt_system.h: New installed header for system portability
abstraction.
* libltdl/ltdl.h: Use it.
* libltdl/lt__alloc.c, libltdl/lt__alloc.h: New module above
system portability layer to abstract ltdl's memory management.
* libltdl/ltdl.c: Use lt__alloc.h.
(closedir): Use free.
(opendir): Use malloc/free.
(lt__xalloc_die_callback): Report memory failures through
lt_dlerror.
(lt_dlinit): Use it to initialise memory management.
(LT_DLMALLOC, LT_DLREALLOC, LT_DLFREE, LT_EMALLOC, LT_EREALLOC)
(rpl_strdup, rpl_realloc, lt_estrdup, lt_emalloc, lt_erealloc):
Removed in favour of...
(lt__strdup, lt__memdup, MALLOC, REALLOC, FREE): ...these calls
from libltdl/lt__alloc.h.  Changed all callers.
(rpl_argz_append, rpl_argz_create_sep, rpl_argz_insert): As part
of the portability layer, these functions no longer use libltdl
memory management API.
(free_vars): Factored out.
(LT_DLMEM_REASSIGN): While redoing memory handling, renamed...
* libltdl/lt__alloc.h (MEMREASSIGN): ...to this.
* libltdl/Makefile.am (AUTOMAKE_OPTIONS): Let automake track
dependencies automatically.
(pkgincludedir): Override from parent package's setting.
(pkginclude_HEADERS): Install lt_system.h.
(libltdl_la_SOURCES): Add new files.
* NEWS: Updated.
Reported by Dalibor Topic <robilad@kaffe.org>
2004-04-06 15:42:11 +00:00
Peter O'Gorman
57c6549b31 * NEWS: Add a news item about xlc support that I forgot yesterday. 2004-04-01 04:43:56 +00:00
Scott James Remnant
0916718260 * NEWS: Explain more fully why we no longer load libraries
with global symbol resolution.
* doc/libtool.texi (libtool script contents): Add missing
documentation for 'inherit_rpath' variable.
2004-03-24 14:23:18 +00:00
Scott James Remnant
0a94ff3131 * libltdl/ltdl.c (sys_dl_open): Don't load libraries with global
symbol resolution.
* NEWS: Updated.
2004-03-24 04:00:46 +00:00