I assume that it is okay to have undefined symbols in convenience

libraries that will be used as modules -- the pic objects are
built normally, and are not expected to resolve all their symbols
until they are linked into a library; convenience libraries are
then rolled using 'ar' and 'ranlib' (or equivalent) which also do
not check whether symbols are resolved.  We now build each of the
loaders as a convenience library module under these assumptions,
and link libltdl.la with selected modules, at which time all of
the symbols *are* resolved:

* TODO: Remove item addressed by this changeset.
* libltdl/Makefile.am (lib_LTLIBRARIES): Remove libdlloader.la.
(libdlloader_la_SOURCES): Declaration removed.  Changed all
clients.  Source files..
(libltdl_la_SOURCES): ...added back in here.
(libdlloader_LDFLAGS, libdlloader_la_LIBADD): Removed.
(libltdl_la_LIBADD): Remove libdlloader.la; add $(LTLIBOBJS).
* libltdl/loaders/Makefile.am: Removed all references to
libdlloader.la.
This commit is contained in:
Gary V. Vaughan 2005-02-26 14:44:34 +00:00
parent ae43cbad91
commit e3582515cc
4 changed files with 48 additions and 39 deletions

View File

@ -1,3 +1,25 @@
2005-02-26 Gary V. Vaughan <gary@gnu.org>
I assume that it is okay to have undefined symbols in convenience
libraries that will be used as modules -- the pic objects are
built normally, and are not expected to resolve all their symbols
until they are linked into a library; convenience libraries are
then rolled using 'ar' and 'ranlib' (or equivalent) which also do
not check whether symbols are resolved. We now build each of the
loaders as a convenience library module under these assumptions,
and link libltdl.la with selected modules, at which time all of
the symbols *are* resolved:
* TODO: Remove item addressed by this changeset.
* libltdl/Makefile.am (lib_LTLIBRARIES): Remove libdlloader.la.
(libdlloader_la_SOURCES): Declaration removed. Changed all
clients. Source files..
(libltdl_la_SOURCES): ...added back in here.
(libdlloader_LDFLAGS, libdlloader_la_LIBADD): Removed.
(libltdl_la_LIBADD): Remove libdlloader.la; add $(LTLIBOBJS).
* libltdl/loaders/Makefile.am: Removed all references to
libdlloader.la.
2005-02-25 Gary V. Vaughan <gary@gnu.org>
* libtoolize.m4sh (func_copy): Split arguments to func_copy_cb
@ -9,10 +31,10 @@
2005-02-24 Peter O'Gorman <peter@pogma.com>
* m4/libtool.m4 (_LT_LINKER_SHLIBS): The Portland group's
compiler does not pass --whole-archive. Move gnu ld check for
* m4/libtool.m4 (_LT_LINKER_SHLIBS): The Portland group's
compiler does not pass --whole-archive. Move gnu ld check for
the flag to the top so it can be overridden.
(_LT_LANG_CXX_CONFIG, _LT_COMPILER_PIC): Unset
(_LT_LANG_CXX_CONFIG, _LT_COMPILER_PIC): Unset
whole_archive_flag_spec for the portland group's c++ compiler too.
Reported by Jeff Squyres <jsquyres@lam-mpi.org>

2
TODO
View File

@ -54,8 +54,6 @@ GNU Libtool
1.2. libtldl
------------
* Get rid of the shared libddloader.
* Change libltdl interface: add separate functions for function
pointers. This will allow porting to systems where function pointers
are incompatible with data pointer C-wise.

View File

@ -1,6 +1,7 @@
## Process this file with automake to produce Makefile.in
##
## Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation
## Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005
## Free Software Foundation, Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
@ -33,46 +34,41 @@ VERSION_INFO = -version-info 6:0:0
pkgincludedir = $(includedir)/libltdl
lib_LTLIBRARIES = libdlloader.la
libdlloader_la_SOURCES = libltdl/lt_error.h lt_error.c \
libltdl/lt__private.h \
libltdl/lt__strl.h \
libltdl/lt_system.h \
libltdl/lt__alloc.h lt__alloc.c \
libltdl/lt__glibc.h \
libltdl/lt__dirent.h \
libltdl/slist.h slist.c
libdlloader_la_LDFLAGS = $(AM_LDFLAGS) $(VERSION_INFO)
libdlloader_la_LIBADD = $(LTLIBOBJS)
## Libltdl brings it all together:
if INSTALL_LTDL
include_HEADERS = ltdl.h
pkginclude_HEADERS = libltdl/lt_system.h libltdl/lt_error.h \
libltdl/lt_dlloader.h
lib_LTLIBRARIES += libltdl.la
lib_LTLIBRARIES = libltdl.la
endif
if CONVENIENCE_LTDL
noinst_LTLIBRARIES = libltdlc.la
endif
libltdl_la_SOURCES = ltdl.h ltdl.c \
libltdl/lt_dlloader.h lt_dlloader.c loaders/preopen.c
libltdl_la_SOURCES = ltdl.c ltdl.h \
lt_error.c libltdl/lt_error.h \
libltdl/lt__private.h \
libltdl/lt__strl.h \
libltdl/lt_system.h \
lt__alloc.c libltdl/lt__alloc.h \
libltdl/lt__glibc.h \
libltdl/lt__dirent.h \
slist.c libltdl/slist.h \
lt_dlloader.c libltdl/lt_dlloader.h loaders/preopen.c
libltdl_la_CPPFLAGS = -DLTDLOPEN=libltdl $(AM_CPPFLAGS)
libltdl_la_LDFLAGS = $(AM_LDFLAGS) $(VERSION_INFO) $(LT_DLPREOPEN)
libltdl_la_LIBADD = libdlloader.la
libltdl_la_LIBADD = $(LTLIBOBJS)
libltdlc_la_SOURCES = $(libltdl_la_SOURCES) $(libdlloader_la_SOURCES)
libltdlc_la_SOURCES = $(libltdl_la_SOURCES)
libltdlc_la_CPPFLAGS = -DLTDLOPEN=libltdlc $(AM_CPPFLAGS)
libltdlc_la_LDFLAGS = $(AM_LDFLAGS) -weak libdlloader.la $(LT_DLPREOPEN)
libltdlc_la_LIBADD = $(libdlloader_la_LIBADD)
libltdlc_la_LDFLAGS = $(AM_LDFLAGS) $(LT_DLPREOPEN)
libltdlc_la_LIBADD = $(libltdl_la_LIBADD)
## These are installed as a subdirectory of pkgdatadir so that
## libtoolize --ltdl can find them later:
ltdldatadir = $(pkgvdatadir)/libltdl
ltdldatafiles = COPYING.LIB Makefile.am README configure.ac \
$(libltdl_la_SOURCES) $(libdlloader_la_SOURCES) \
$(libltdl_la_SOURCES) \
lt__dirent.c libltdl/lt__dirent.h \
lt__strl.c libltdl/lt__strl.h \
argz_.h argz.c

View File

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
##
## Copyright (C) 2004, 2005 Free Software Foundation
## Copyright (C) 2004, 2005 Free Software Foundation, Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
@ -26,7 +26,7 @@ AUTOMAKE_OPTIONS = foreign
DEFS = -DHAVE_CONFIG_H="<$(CONFIG_H)>" -DLTDL
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) \
-I.. -I$(srcdir)/.. -I$(srcdir)/../libltdl
AM_LDFLAGS = -no-undefined -module -avoid-version -export-dynamic
AM_LDFLAGS = -module -avoid-version
pkgincludedir = $(includedir)/libltdl
@ -39,13 +39,9 @@ noinst_LTLIBRARIES = $(LT_DLLOADERS)
EXTRA_LTLIBRARIES = dlopen.la dld_link.la dyld.la load_add_on.la \
loadlibrary.la shl_load.la
## Build loaders (other than preopen) as modules:
dlopen_la_LIBADD = ../libdlloader.la $(LIBADD_DLOPEN)
shl_load_la_LIBADD = ../libdlloader.la $(LIBADD_SHL_LOAD)
dyld_la_LIBADD = ../libdlloader.la
load_add_on_la_LIBADD = ../libdlloader.la
loadlibrary_la_LIBADD = ../libdlloader.la
dld_link_la_LIBADD = ../libdlloader.la -ldld
dlopen_la_LIBADD = $(LIBADD_DLOPEN)
shl_load_la_LIBADD = $(LIBADD_SHL_LOAD)
dld_link_la_LIBADD = -ldld
## These are installed as a subdirectory of pkgdatadir so that
@ -61,6 +57,3 @@ install-data-local:
$(mkinstalldirs) $(DESTDIR)$(ltdldatadir)
$(AMTAR) cf - $(ltdldatafiles) \
| ( cd $(DESTDIR)$(ltdldatadir) && $(AMTAR) xf -; )
../libdlloader.la:
cd ..; $(MAKE) $(AM_MAKEFLAGS) libdlloader.la