mirror of
git://git.savannah.gnu.org/libtool.git
synced 2025-01-18 14:16:00 +08:00
Unfortunately, the autoconf implementation of AC_LIBOBJ and
friends requires all libobjs to be in the same directory, as declared by AC_CONFIG_LIBOBJ_DIR. That might prevent using either recursive or nonrecursive libltdl if the parent project has libobjs of its own, except that this patch tracks libltdl's libobjs in another namespace: * libltdl/m4/ltdl.m4 (_LT_LIBOBJ, _LT_LIBSOURCES): Versions of AC_LIBOBJ and AC_LIBSOURCES that save missing sources in a ltdl_LIBOBJS automake macro, instead of the global LIBOBJS automake macro. Content of the macros inspired by code from gnulib-tool. (_LTDL_MODE_DISPATCH): Initialise lt_libobj_prefix in nonrecursive mode. (LTDL_INIT): Push and pop the new definitions around potential sites that call AC_LIBOBJ. Also, using lt_libobj_prefix, initialise ltdl_LIBOBJS and ltdl_LTLIBOBJS. * libtoolize.m4sh (func_fixup_Makefile): Substitute ltdl_LIBOBJS and ltdl_LTLIBOBJS for LIBOBJS and LTLIBOBJS during copying either Makefile.am or Makefile.inc, depending on ltdl_mode. Reported by Eric Blake <ebb9@byu.net>
This commit is contained in:
parent
d6570c64e5
commit
e032959c82
24
ChangeLog
24
ChangeLog
@ -1,3 +1,27 @@
|
||||
2008-02-01 Gary V. Vaughan <gary@gnu.org>
|
||||
|
||||
Unfortunately, the autoconf implementation of AC_LIBOBJ and
|
||||
friends requires all libobjs to be in the same directory, as
|
||||
declared by AC_CONFIG_LIBOBJ_DIR. That might prevent using
|
||||
either recursive or nonrecursive libltdl if the parent project
|
||||
has libobjs of its own, except that this patch tracks libltdl's
|
||||
libobjs in another namespace:
|
||||
|
||||
* libltdl/m4/ltdl.m4 (_LT_LIBOBJ, _LT_LIBSOURCES): Versions of
|
||||
AC_LIBOBJ and AC_LIBSOURCES that save missing sources in a
|
||||
ltdl_LIBOBJS automake macro, instead of the global LIBOBJS
|
||||
automake macro. Content of the macros inspired by code from
|
||||
gnulib-tool.
|
||||
(_LTDL_MODE_DISPATCH): Initialise lt_libobj_prefix in
|
||||
nonrecursive mode.
|
||||
(LTDL_INIT): Push and pop the new definitions around potential
|
||||
sites that call AC_LIBOBJ. Also, using lt_libobj_prefix,
|
||||
initialise ltdl_LIBOBJS and ltdl_LTLIBOBJS.
|
||||
* libtoolize.m4sh (func_fixup_Makefile): Substitute ltdl_LIBOBJS
|
||||
and ltdl_LTLIBOBJS for LIBOBJS and LTLIBOBJS during copying
|
||||
either Makefile.am or Makefile.inc, depending on ltdl_mode.
|
||||
Reported by Eric Blake <ebb9@byu.net>
|
||||
|
||||
2008-01-30 Gary V. Vaughan <gary@gnu.org>
|
||||
|
||||
There are 5 distinct batches of files that libtoolize might
|
||||
|
@ -198,7 +198,7 @@ m4_if(_LTDL_DIR, [],
|
||||
[m4_case(m4_default(_LTDL_MODE, [subproject]),
|
||||
[subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR)
|
||||
_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])],
|
||||
[nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])],
|
||||
[nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])],
|
||||
[recursive], [],
|
||||
[m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl
|
||||
dnl Be careful not to expand twice:
|
||||
@ -206,6 +206,32 @@ m4_define([$0], [])
|
||||
])# _LTDL_MODE_DISPATCH
|
||||
|
||||
|
||||
# _LT_LIBOBJ(MODULE_NAME)
|
||||
# -----------------------
|
||||
# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead
|
||||
# of into LIBOBJS.
|
||||
AC_DEFUN([_LT_LIBOBJ], [
|
||||
m4_pattern_allow([^_LT_LIBOBJS$])
|
||||
AS_LITERAL_IF([$1], [_LT_LIBSOURCES([$1.c])])dnl
|
||||
_LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
|
||||
])# _LT_LIBOBJS
|
||||
|
||||
|
||||
# _LT_LIBSOURCES(MODULE_NAMES)
|
||||
# ----------------------------
|
||||
# Like AC_LIBSOURCES, except the directory where the libltdl source files
|
||||
# are expected is distinct from the user LIBOBJ directory.
|
||||
AC_DEFUN([_LT_LIBSOURCES], [
|
||||
m4_foreach([_LTNAME], [$1], [
|
||||
m4_syscmd([test -r "$lt_libobj_prefix]_LTNAME[" ||
|
||||
test -z "$lt_libobj_prefix" ||
|
||||
test ! -d "$lt_libobj_prefix"])dnl
|
||||
m4_if(m4_sysval, [0], [],
|
||||
[AC_FATAL([missing $lt_libobj_prefix/]_LTNAME)])
|
||||
])
|
||||
])# _LT_LIBSOURCES
|
||||
|
||||
|
||||
# LTDL_INIT([OPTIONS])
|
||||
# --------------------
|
||||
# Clients of libltdl can use this macro to allow the installer to
|
||||
@ -217,6 +243,12 @@ AC_DEFUN([LTDL_INIT],
|
||||
[dnl Parse OPTIONS
|
||||
_LT_SET_OPTIONS([$0], [$1])
|
||||
|
||||
dnl We need to keep our own list of libobjs separate from our parent project,
|
||||
dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
|
||||
dnl we look for our own LIBOBJs. Definitions in ltdl-libobj.m4.
|
||||
m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
|
||||
m4_pushdef([AC_LIBSOURCES], m4_defn([_LT_LIBSOURCES]))
|
||||
|
||||
dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
|
||||
m4_if(_LTDL_MODE, [],
|
||||
[m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
|
||||
@ -309,6 +341,25 @@ AC_MSG_RESULT([$LIBLTDL])
|
||||
|
||||
_LTDL_SETUP
|
||||
|
||||
dnl restore autoconf definition.
|
||||
m4_popdef([AC_LIBOBJ])
|
||||
m4_popdef([AC_LIBSOURCES])
|
||||
|
||||
AC_CONFIG_COMMANDS_PRE([
|
||||
_ltdl_libobjs=
|
||||
_ltdl_ltlibobjs=
|
||||
if test -n "$_LT_LIBOBJS"; then
|
||||
# Remove the extension.
|
||||
_lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
|
||||
for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
|
||||
_ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
|
||||
_ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
|
||||
done
|
||||
fi
|
||||
AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
|
||||
AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
|
||||
])
|
||||
|
||||
# Only expand once:
|
||||
m4_define([LTDL_INIT])
|
||||
])# LTDL_INIT
|
||||
|
@ -320,6 +320,7 @@ func_copy_some_files ()
|
||||
IFS="$my_save_IFS"
|
||||
}
|
||||
|
||||
|
||||
# func_fixup_Makefile srcfile srcdir destdir
|
||||
func_fixup_Makefile ()
|
||||
{
|
||||
@ -328,6 +329,8 @@ func_fixup_Makefile ()
|
||||
my_srcdir="$2"
|
||||
my_destdir="$3"
|
||||
my_fixup_non_subpackage_script="\
|
||||
s,(LIBOBJS),(ltdl_LIBOBJS),g
|
||||
s,(LTLIBOBJS),(ltdl_LTLIBOBJS),g
|
||||
s,libltdl/configure.ac,,
|
||||
s,libltdl/configure,,
|
||||
s,libltdl/aclocal.m4,,
|
||||
@ -1004,7 +1007,7 @@ func_install_pkgmacro_files ()
|
||||
{
|
||||
$opt_debug
|
||||
|
||||
# argz.m4, libtool.m4 and ltdl.m4 are handled specially below:
|
||||
# argz.m4, libtool.m4 and ltdl.m4 are handled specially:
|
||||
func_massage_aclocal_DATA 'argz.m4|libtool.m4|ltdl.m4'
|
||||
|
||||
# 1. Parent has separate macrodir to subproject ltdl:
|
||||
|
Loading…
Reference in New Issue
Block a user