* 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.
This commit is contained in:
Gary V. Vaughan 2005-10-03 15:45:47 +00:00
parent 96fe8ab8da
commit 9f6099490a
6 changed files with 301 additions and 145 deletions

View File

@ -1,3 +1,24 @@
2005-10-03 Gary V. Vaughan <gary@gnu.org>
* 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-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* tests/old-m4-iface.at (Makefile.in): Do not reconfigure

1
NEWS
View File

@ -3,6 +3,7 @@ NEWS - list of user-visible changes between releases of GNU Libtool
New in 1.9h: 2005-??-??; CVS version 2.1a, Libtool team:
* New tests for support of Automake subdir-objects.
* Fix libltdl on static platforms.
* New LT_CONFIG_LTDL_DIR macro.
* New lt_dlinterface_register, lt_dlinterface_set_data and
lt_dlinterface_get_data libltdl API calls to maintain separation of
concerns between modules loaded by different libraries.

View File

@ -2243,12 +2243,11 @@ Display a help message and exit.
@item --ltdl [@var{TARGET-DIRECTORY-NAME}]
Install libltdl in a the @var{TARGET-DIRECTORY-NAME} subdirectory of
your package. If you specify a subdirectory name, then you will need
to be careful to pass the same directory name to the autoconf macros:
@code{LT_WITH_LTDL}; @code{LTDL_CONVENIENCE};
@code{LTDL_INSTALLABLE} (@pxref{Distributing libltdl}). Without
an argument, @samp{libltdl} is used as the default target directory
name.
your package. Normally, the directory is extracted from the argument
to @code{LT_CONFIG_LTDL_DIR} in @file{configure.ac}, though you can
also specify a subdirectory name here if you are not using Autoconf
for example. If @command{libtoolize} can't determine the target
directory, @samp{libltdl} is used as the default.
@item --quiet
@itemx -q
@ -4169,34 +4168,41 @@ release of libltdl.
}. Having made the macros available, you must add a call to the
@samp{LT_WITH_LTDL} macro to your package's @file{configure.ac} to
perform the configure time checks required to build the library
correctly. This method has problems if you then try to link the
package binaries with an installed libltdl, or a library that depends
on libltdl: you will have problems with duplicate symbol definitions.
correctly. Unfortunately, this method has problems if you then try to
link the package binaries with an installed libltdl, or a library that
depends on libltdl, because of the duplicate symbol definitions. For
example, ultimately linking against two different versions of libltdl,
or against both a local convenience library and an installed libltdl
is bad. Ensuring that only one copy of the libltdl sources are linked
into any program is left as an exercise for the reader.
@defmac LT_WITH_LTDL (@var{DIRECTORY})
Add the @option{--with-included-ltdl} option to the @file{configure}
script. By default, this macro will try to build @code{libltdl} in
a subdirectory named @file{libltdl}, which is where
@command{libtoolize --ltdl} will place the files unless directed
differently. @xref{Invoking libtoolize}, for how to do that.
Otherwise, use @var{DIRECTORY} to pass the location of the
@code{libltdl} source files.
@defmac LT_CONFIG_LTDL_DIR (@var{DIRECTORY})
Declare @var{DIRECTORY} to be the location of the @code{libltdl}
source files, for @command{libtoolize --ltdl} to place
them. @xref{Invoking libtoolize}, for more details.
@end defmac
@defmac LTDL_INSTALLABLE (@var{DIRECTORY})
@defmac LT_WITH_LTDL
Add the @option{--with-included-ltdl} option to the @file{configure}
script. This option will then allow the person who builds your
package to choose between linking against an already installed
@code{libltdl} (@option{--without-included-ltdl}), or the sources
shipped with the package in the subdirectory named by
@code{LT_CONFIG_LTDL_DIR} (@option{--with-included-ltdl}).
@end defmac
@defmac LTDL_INSTALLABLE
If there is an installed @code{libltdl}, then set @code{LIBLTDL} to the
link flags needed to use it, and @code{LTDLINCL} to the preprocessor
flags needed to find the installed headers. Otherwise, set them to
point into an included version of @code{libltdl}, and install that.
By default, this macro will pass options to the @file{libltdl}
subdirectory @file{configure} to cause it to be built as an
installable library. If you named the @code{libltdl} source directory
differently, then pass the directory name relative to
@code{top_srcdir} as @var{DIRECTORY}. If you're not using automake,
you will need to define @code{top_builddir} and @code{top_srcdir} in
your makefile so that @code{LIBLTDL} and @code{LTDLINCL} are expanded
properly.
By default, this macro will pass options to the @file{configure}
script in the subdirectory named by @code{LT_CONFIG_LTDL_DIR} in order
to cause it to be built as an installable library. If you're not
using automake, you will need to define @code{top_builddir} and
@code{top_srcdir} in your makefile so that @code{LIBLTDL} and
@code{LTDLINCL} are expanded properly.
If used in conjunction with @code{LT_WITH_LTDL}, this macro must
appear @strong{before} the call to @code{LT_WITH_LTDL}. If you are
@ -4204,17 +4210,18 @@ not using @code{LT_WITH_LTDL}, then you must add a call to
@code{AC_CONFIG_SUBDIRS(@var{DIRECTORY})} to your @file{configure.ac}.
@end defmac
@defmac LTDL_CONVENIENCE (@var{DIRECTORY})
@defmac LTDL_CONVENIENCE
Unless you call @code{LTDL_INSTALLABLE} before hand,
@code{LT_WITH_LTDL} calls this macro automatically, so you should only
ever need to use it yourself if @code{LT_WITH_LTDL} doesn't do what
you want.
By default, this macro will pass options to the @file{libltdl}
subdirectory @file{configure} to cause it to be built as a convenience
library. If you put the @code{libltdl} sources in a different
subdirectory, then you should tell @code{LTDL_CONVENIENCE} where
with the @var{DIRECTORY} parameter.
By default, this macro will pass options to the @file{configure}
script in the subdirectory named by @code{LT_CONFIG_LTDL_DIR} in order
to cause it to be built as a convenience library. If you're not
using automake, you will need to define @code{top_builddir} and
@code{top_srcdir} in your makefile so that @code{LIBLTDL} and
@code{LTDLINCL} are expanded properly.
@end defmac
One advantage of the convenience library is that it is not installed,
@ -4247,8 +4254,8 @@ switch @option{--enable-ltdl-install}.
Whatever macro you use, it is up to you to ensure that your
@file{configure.ac} will configure libltdl by using
@samp{LT_WITH_LTDL}. Both macros define the shell variables
@var{LIBLTDL}, to the link flag that you should use to link with
libltdl, and @var{LTDLINCL}, to the preprocessor flag that you should
@var{LIBLTDL} to the link flag that you should use to link with
libltdl, and @var{LTDLINCL} to the preprocessor flag that you should
use to compile with programs that include @file{ltdl.h}.
If you're using the convenience libltdl, @var{LIBLTDL} will be the
@ -4291,6 +4298,9 @@ assume that libltdl was embedded using @samp{libtoolize --ltdl}.
configure.ac:
@example
...
# Name the subdirectory that contains libltdl sources
LT_CONFIG_LTDL_DIR([libltdl])
## ------------------------------------------ ##
## Enable building of the installable library ##
## ------------------------------------------ ##

View File

@ -33,6 +33,7 @@ AC_CONFIG_HEADERS([config.h:config-h.in])
AC_CONFIG_SRCDIR([ltdl.c])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
LT_CONFIG_LTDL_DIR([.]) # I am me!
## ---------------------------------------- ##

View File

@ -5,77 +5,60 @@
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
# serial 8 LTDL_INIT
# serial 9 LTDL_INIT
# LT_WITH_LTDL([DIRECTORY])
# -------------------------
# Clients of libltdl can use this macro to allow the installer to
# choose between a shipped copy of the ltdl sources or a preinstalled
# version of the library.
AC_DEFUN([LT_WITH_LTDL],
[AC_ARG_WITH([included_ltdl],
[AS_HELP_STRING([--with-included-ltdl],
[use the GNU ltdl sources included here])])
if test "x$with_included_ltdl" != xyes; then
# We are not being forced to use the included libltdl sources, so
# decide whether there is a useful installed version we can use.
AC_CHECK_HEADER([ltdl.h],
[AC_CHECK_LIB([ltdl], [lt_dlcaller_register],
[with_included_ltdl=no],
[with_included_ltdl=yes])],
[],
[AC_INCLUDES_DEFAULT]
)
fi
if test "x$enable_ltdl_install" != xyes; then
# If the user did not specify an installable libltdl, then default
# to a convenience lib.
LTDL_CONVENIENCE(m4_default([$1], [libltdl]))
fi
if test "x$with_included_ltdl" = xno; then
# If the included ltdl is not to be used. then Use the
# preinstalled libltdl we found.
AC_DEFINE([HAVE_LTDL], [1],
[Define this if a modern libltdl is already installed])
LIBLTDL=-lltdl
fi
# Report our decision...
AC_MSG_CHECKING([whether to use included libltdl])
AC_MSG_RESULT([$with_included_ltdl])
AC_CONFIG_SUBDIRS(m4_default([$1], [libltdl]))
])# LT_WITH_LTDL
# Old name:
AU_ALIAS([AC_WITH_LTDL], [LT_WITH_LTDL])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_WITH_LTDL], [])
# LTDL_CONVENIENCE([DIRECTORY])
# LT_CONFIG_LTDL_DIR(DIRECTORY)
# -----------------------------
# DIRECTORY contains the libltdl sources. It is okay to call this
# function multiple times, as long as the same DIRECTORY is always given.
AC_DEFUN([LT_CONFIG_LTDL_DIR],
[AC_BEFORE([$0], [LT_WITH_LTDL])
_$0($*)
])# LT_CONFIG_LTDL_DIR
# We break this out into a separate macro, so that we can call it safely
# internally without being caught accidentally by the sed scan in libtoolize.
m4_defun([_LT_CONFIG_LTDL_DIR],
[m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$]))
m4_case(_LTDL_DIR,
[], [m4_define([_LTDL_DIR], _ARG_DIR)
_LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])],
[m4_if(_ARG_DIR, _LTDL_DIR,
[],
[m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])])
m4_popdef([_ARG_DIR])
])
# Initialise:
m4_define([_LTDL_DIR], [])
# LTDL_CONVENIENCE
# ----------------
# sets LIBLTDL to the link flags for the libltdl convenience library and
# LTDLINCL to the include flags for the libltdl header and adds
# --enable-ltdl-convenience to the configure arguments. Note that
# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
# AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with
# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
# (note the single quotes!). If your package is not flat and you're not
# using automake, define top_builddir and top_srcdir appropriately in
# the Makefiles.
# your Makefiles.
AC_DEFUN([LTDL_CONVENIENCE],
[case $enable_ltdl_convenience in
[AC_BEFORE([$0], [LT_WITH_LTDL])dnl
dnl Although the argument is deprecated and no longer documented,
dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
dnl here make sure it is the same as any other declaration of libltdl's
dnl location! This also ensures lt_ltdl_dir is set when configure.ac is
dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
case $enable_ltdl_convenience in
no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
"") enable_ltdl_convenience=yes
ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
esac
LIBLTDL='${top_builddir}/'m4_default([$1], [libltdl])/libltdlc.la
LTDLINCL='-I${top_srcdir}/'m4_default([$1], [libltdl])
LIBLTDL='${top_builddir}/'"$lt_ltdl_dir/libltdlc.la"
LTDLINCL='-I${top_srcdir}/'"$lt_ltdl_dir"
AC_SUBST([LIBLTDL])
AC_SUBST([LTDLINCL])
@ -85,26 +68,37 @@ INCLTDL="$LTDLINCL"
AC_SUBST([INCLTDL])
])# LTDL_CONVENIENCE
# Old name:
AU_ALIAS([AC_LIBLTDL_CONVENIENCE], [LTDL_CONVENIENCE])
# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools,
# now we have LT_CONFIG_LTDL_DIR:
AU_DEFUN([AC_LIBLTDL_CONVENIENCE],
[_LT_CONFIG_LTDL_DIR([$1])
LTDL_CONVENIENCE])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [])
# LTDL_INSTALLABLE([DIRECTORY])
# -----------------------------
# sets LIBLTDL to the link flags for the libltdl installable library and
# LTDLINCL to the include flags for the libltdl header and adds
# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
# DIRECTORY is not provided and an installed libltdl is not found, it is
# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
# LTDL_INSTALLABLE
# ----------------
# sets LIBLTDL to the link flags for the libltdl installable library
# and LTDLINCL to the include flags for the libltdl header and adds
# --enable-ltdl-install to the configure arguments. Note that
# AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl
# is not found, LIBLTDL will be prefixed with '${top_builddir}/'
# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
# quotes!). If your package is not flat and you're not using automake,
# define top_builddir and top_srcdir appropriately in the Makefiles.
# define top_builddir and top_srcdir appropriately in your Makefiles.
# In the future, this macro may have to be called after LT_INIT.
AC_DEFUN([LTDL_INSTALLABLE],
[AC_CHECK_LIB(ltdl, lt_dlinit,
[AC_BEFORE([$0], [LT_WITH_LTDL])dnl
dnl Although the argument is deprecated and no longer documented,
dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
dnl here make sure it is the same as any other declaration of libltdl's
dnl location! This also ensures lt_ltdl_dir is set when configure.ac is
dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
AC_CHECK_LIB(ltdl, lt_dlinit,
[test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
[if test x"$enable_ltdl_install" = xno; then
AC_MSG_WARN([libltdl not installed, but installation disabled])
@ -114,8 +108,8 @@ AC_DEFUN([LTDL_INSTALLABLE],
])
if test x"$enable_ltdl_install" = x"yes"; then
ac_configure_args="$ac_configure_args --enable-ltdl-install"
LIBLTDL='${top_builddir}/'m4_default([$1], [libltdl])/libltdl.la
LTDLINCL='-I${top_srcdir}/'m4_default([$1], [libltdl])
LIBLTDL='${top_builddir}/'"$lt_ltdl_dir/libltdl.la"
LTDLINCL='-I${top_srcdir}/'"$lt_ltdl_dir"
else
ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
LIBLTDL="-lltdl"
@ -130,23 +124,92 @@ INCLTDL="$LTDLINCL"
AC_SUBST([INCLTDL])
])# LTDL_INSTALLABLE
# Old name:
AU_ALIAS([AC_LIBLTDL_INSTALLABLE], [LTDL_INSTALLABLE])
# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools,
# now we have LT_CONFIG_LTDL_DIR:
AU_DEFUN([AC_LIBLTDL_INSTALLABLE],
[_LT_CONFIG_LTDL_DIR([$1])
LTDL_INSTALLABLE])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [])
# LTDL_INIT([DIRECTORY])
# ----------------------
# Perform all the checks necessary for compilation of the ltdl objects
# -- including compiler checks and header checks.
AC_DEFUN([LTDL_INIT],
[m4_ifval([$1], [m4_divert_push([DEFAULTS])dnl
# libltdl will be built in the named DIRECTORY, relative to $top_builddir.
lt_ltdl_dir='$1'
m4_divert_pop([DEFAULTS])])dnl
# LT_WITH_LTDL
# ------------
# Clients of libltdl can use this macro to allow the installer to
# choose between a shipped copy of the ltdl sources or a preinstalled
# version of the library. If the shipped ltdl sources are not in a
# subdirectory named libltdl, the directory name must be given by
# LT_CONFIG_LTDL_DIR.
AC_DEFUN([LT_WITH_LTDL],
[dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
dnl was called yet, then for old times' sake, we assume libltdl is in an
dnl eponymous directory:
AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
AC_REQUIRE([AC_PROG_CC])dnl
AC_ARG_WITH([included_ltdl],
[AS_HELP_STRING([--with-included-ltdl],
[use the GNU ltdl sources included here])])
if test "x$with_included_ltdl" != xyes; then
# We are not being forced to use the included libltdl sources, so
# decide whether there is a useful installed version we can use.
AC_MSG_CHECKING([for lt_dlinterface_register in ltdl.h])
lt_dlinterface_register_found=no
AC_CHECK_HEADER([ltdl.h],
[AC_CHECK_LIB([ltdl], [lt_dlinterface_register],
[with_included_ltdl=no],
[with_included_ltdl=yes])],
[],
[AC_INCLUDES_DEFAULT]
)
test "x$with_included_ltdl" = xno && lt_dlinterface_register_found=yes
AC_MSG_RESULT([$lt_dlinterface_register_found])
fi
if test "x$enable_ltdl_install" != xyes; then
# If the user did not specify an installable libltdl, then default
# to a convenience lib.
LTDL_CONVENIENCE
fi
if test "x$with_included_ltdl" = xno; then
# If the included ltdl is not to be used, then use the
# preinstalled libltdl we found.
AC_DEFINE([HAVE_LTDL], [1],
[Define this if a modern libltdl is already installed])
LIBLTDL=-lltdl
LTDLINCL=
fi
# Report our decision...
AC_MSG_CHECKING([whether to use included libltdl])
AC_MSG_RESULT([$with_included_ltdl])
AC_CONFIG_SUBDIRS(_LTDL_DIR)
dnl Be certain that LTDL_INIT is invoked:
AC_PROVIDE_IFELSE([LTDL_INIT],
[],
[LTDL_INIT
AC_DEFUN([LTDL_INIT], [])])
])# LT_WITH_LTDL
# Old name:
AU_ALIAS([AC_WITH_LTDL], [LT_WITH_LTDL])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_WITH_LTDL], [])
# LTDL_INIT
# ---------
# Perform all the checks necessary for compilation of the ltdl objects
# -- including compiler checks and header checks. This is a public
# interface mainly for the benefit of libltdl's own configure.ac, most
# other users should call LT_WITH_LTDL instead.
AC_DEFUN([LTDL_INIT],
[AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_C_CONST])dnl
AC_REQUIRE([AC_HEADER_STDC])dnl
AC_REQUIRE([AC_HEADER_DIRENT])dnl
@ -164,6 +227,16 @@ m4_require([_LT_HEADER_DLFCN])dnl
m4_require([_LT_ENABLE_INSTALL])dnl
m4_require([_LT_CHECK_DLPREOPEN])dnl
dnl Although deprecated and no longer documented, alpha releases of
dnl libtool used to define an LTDL_INIT to take a DIRECTORY orgument.
dnl If LT_CONFIG_LTDL_DIR was called already, but LTDL_INIT was given a
dnl DIRECTORY argument, check it is the same as previous invocations. If
dnl it still hasn't been called, then do it now, defaulting to `libltdl'
dnl if no DIRECTORY argument was passed.
m4_provide_if([_LT_CONFIG_LTDL_DIR],
[m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])],
[_LT_CONFIG_LTDL_DIR(m4_default([$1], [libltdl]))])dnl
# In order that ltdl.c can compile, run AC_CONFIG_HEADERS for the user
# if they did not call it themself. This is so that ltdl.h can pick up
# the parent projects config.h file, The first file in AC_CONFIG_HEADERS
@ -393,9 +466,6 @@ AC_DEFUN([LT_LIB_DLLOAD],
LT_DLLOADERS=
AC_SUBST([LT_DLLOADERS])
test "X${lt_ltdl_dir-.}" != X. &&
lt_ltdl_dir=`echo "$lt_ltdl_dir/" | sed 's,/*$,/,'`
AC_LANG_PUSH([C])
LIBADD_DLOPEN=
@ -403,7 +473,7 @@ AC_CHECK_LIB([dl], [dlopen],
[AC_DEFINE([HAVE_LIBDL], [1],
[Define if you have the libdl library or equivalent.])
LIBADD_DLOPEN="-ldl" libltdl_cv_lib_dl_dlopen="yes"
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}dlopen.la"],
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}dlopen.la"],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
# include <dlfcn.h>
#endif
@ -411,12 +481,12 @@ AC_CHECK_LIB([dl], [dlopen],
[AC_DEFINE([HAVE_LIBDL], [1],
[Define if you have the libdl library or equivalent.])
libltdl_cv_func_dlopen="yes"
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}dlopen.la"],
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}dlopen.la"],
[AC_CHECK_LIB([svld], [dlopen],
[AC_DEFINE([HAVE_LIBDL], [1],
[Define if you have the libdl library or equivalent.])
LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}dlopen.la"])])])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}dlopen.la"])])])
if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
then
lt_save_LIBS="$LIBS"
@ -430,11 +500,11 @@ LIBADD_SHL_LOAD=
AC_CHECK_FUNC([shl_load],
[AC_DEFINE([HAVE_SHL_LOAD], [1],
[Define if you have the shl_load function.])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}shl_load.la"],
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}shl_load.la"],
[AC_CHECK_LIB([dld], [shl_load],
[AC_DEFINE([HAVE_SHL_LOAD], [1],
[Define if you have the shl_load function.])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}shl_load.la"
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}shl_load.la"
LIBADD_SHL_LOAD="-ldld"])])
AC_SUBST([LIBADD_SHL_LOAD])
@ -444,20 +514,20 @@ darwin[[1567]].*)
AC_CHECK_FUNC([_dyld_func_lookup],
[AC_DEFINE([HAVE_DYLD], [1],
[Define if you have the _dyld_func_lookup function.])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}dyld.la"])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}dyld.la"])
;;
beos*)
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}load_add_on.la"
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}load_add_on.la"
;;
cygwin* | mingw* | os2* | pw32*)
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}loadlibrary.la"
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}loadlibrary.la"
;;
esac
AC_CHECK_LIB([dld], [dld_link],
[AC_DEFINE([HAVE_DLD], [1],
[Define if you have the GNU dld library.])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir}dld_link.la"])
LT_DLLOADERS="$LT_DLLOADERS ${lt_ltdl_dir+$lt_ltdl_dir/}dld_link.la"])
AC_SUBST([LIBADD_DLD_LINK])
m4_pattern_allow([^LT_DLPREOPEN$])

View File

@ -39,7 +39,7 @@ m4_divert_push([SCRIPT])#! /bin/sh
# -n, --dry-run print commands rather than running them
# -f, --force replace existing files
# -i, --install copy missing auxiliary files
# --ltdl[=DIR] install libltdl in a subdirectory [default: libltdl]
# --ltdl[=DIR] install libltdl sources [default: libltdl]
# -q, --quiet work silently
# -v, --verbose verbosely report processing
# --version print version information and exit
@ -68,10 +68,11 @@ $as_unset CDPATH
m4_include([getopt.m4sh])
# Command line options:
opt_debug=:
opt_force=false
opt_install=false
opt_link=:
opt_debug=:
opt_ltdl=false
seen_autoconf=false
seen_libtool=false
@ -123,11 +124,13 @@ configure_ac=configure.in
--install|-i) opt_install=: ;;
--ltdl) ltdldir=libltdl
--ltdl) opt_ltdl=:
if test "$#" -gt 0; then
case $1 in
-*) ;;
*) ltdldir="$1"; shift ;;
-*) ;;
*) ltdldir=`$ECHO "X$1" | $Xsed -e 's,/*$,,'`
shift
;;
esac
fi
;;
@ -146,8 +149,16 @@ configure_ac=configure.in
shift
;;
# Separate optargs to short options:
#-X*)
# arg=`$ECHO "X$opt" | $Xsed -e "$my_sed_single_rest"`
# opt=`$ECHO "X$opt" | $Xsed -e "$my_sed_single_opt"`
# set dummy "$opt" "$arg" ${1+"$@"}
# shift
# ;;
# Separate non-argument short options:
-c*|-i*|-f*|-n*|-q*|-v*)
-c*|-f*|-i*|-n*|-q*|-v*)
rest=`$ECHO "X$opt" | $Xsed -e "$my_sed_single_rest"`
opt=`$ECHO "X$opt" | $Xsed -e "$my_sed_single_opt"`
set dummy "$opt" "-$rest" ${1+"$@"}
@ -354,6 +365,9 @@ func_scan_files ()
my_configure_ac=
test -n "$configure_ac" && my_configure_ac="$configure_ac: "
func_verbose "${my_configure_ac}not using Autoconf"
# Make sure ltdldir is set, even though we return early here:
test -n "$ltdldir" || ltdldir=libltdl
return
}
@ -370,6 +384,10 @@ func_scan_files ()
/AC_CONFIG_MACRO_DIR(/ {
s,^.*AC_CONFIG_MACRO_DIR([[[ ]*\([^])]]*\).*$,macrodir=\1,; p;
};
/_LT_CONFIG_LTDL_DIR(/d;
/LT_CONFIG_LTDL_DIR(/ {
s,^.*LT_CONFIG_LTDL_DIR([[[ ]*\([^])]]*\).*$,ac_ltdldir=\1,; p;
};
/A[[CM]]_PROG_LIBTOOL/ { s,^.*$,seen_libtool=:,; p; };
/LT_INIT/ { s,^.*$,seen_libtool=:,; p; };
/LTDL_INIT/ { s,^.*$,seen_ltdl=:,; p; };
@ -380,6 +398,35 @@ func_scan_files ()
eval `cat aclocal.m4 "$configure_ac" 2>/dev/null | $SED "$my_sed_traces"`
# ----------------- #
# Validate ltdldir. #
# ----------------- #
ac_ltdldir=`$ECHO "X$ac_ltdldir" | $Xsed -e 's,/*$,,'`
# If $configure_ac contains AC_CONFIG_AUX_DIR, check that it was
# not given in terms of a shell variable!
case "$ac_ltdldir" in
*\$*)
func_fatal_error "can not handle variables in LT_CONFIG_LTDL_DIR"
;;
esac
# If neither --ltdl nor LT_CONFIG_LTDL_DIR are specified, default to
# `libltdl'. If both are specified, they must be the same. Otherwise,
# take the one that is given! (If LT_CONFIG_LTDL_DIR is not specified
# we suggest adding it later in this code.)
case x$ac_ltdldir,x$ltdldir in
x,x) ltdldir=libltdl ;;
x*,x) ltdldir=$ac_ltdldir ;;
x,x*) ltdldir=$ltdldir ;;
*)
test x"$ac_ltdldir" = x"$ltdldir" || \
func_fatal_error "--ltdl='$ltdldir' does not match LT_CONFIG_LTDL_DIR($ac_ltdldir)"
;;
esac
# ---------------- #
# Validate auxdir. #
# ---------------- #
@ -899,7 +946,7 @@ func_nonemptydir_p ()
# Copy all the files from installed libltdl to this project, if the
# user specified `--ltdl'.
if test -n "$ltdldir"; then
if $opt_ltdl; then
func_copy_some_files "$pkgltdl_files" "$pkgltdldir/libltdl" "$ltdldir"
# Unless we share CONFIG_MACRO_DIR with our parent project,
@ -962,14 +1009,20 @@ func_nonemptydir_p ()
fi
fi
# Offer some suggestions for avoiding duplicate files in a project
# that uses libltdl:
if test -n "$ltdldir" && $seen_autoconf; then
$opt_quiet || test "$ltdldir/config" = "$auxdir" || \
func_echo "consider using \`AC_CONFIG_AUX_DIR([[$ltdldir/config]])' in $configure_ac"
$opt_quiet || test "$ltdldir/m4" = "$m4dir" || \
func_echo "consider using \`AC_CONFIG_MACRO_DIR([[$ltdldir/m4]])' in $configure_ac"
fi
$opt_quiet || \
if $opt_ltdl && $seen_autoconf; then
# Remind the user to call LT_CONFIG_LTDL_DIR:
test -n "$ac_ltdldir" || \
func_echo "Remember to add \`LT_CONFIG_LTDL_DIR([[$ltdldir]])' to \`$configure_ac'"
# Offer some suggestions for avoiding duplicate files in a project
# that uses libltdl:
test "$ltdldir/config" = "$auxdir" || \
func_echo "consider using \`AC_CONFIG_AUX_DIR([[$ltdldir/config]])' in $configure_ac"
test "$ltdldir/m4" = "$m4dir" || \
func_echo "consider using \`AC_CONFIG_MACRO_DIR([[$ltdldir/m4]])' in $configure_ac"
fi
}
exit $exit_status