[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
333-refactor-LTDL_INIT
From: |
Gary V. Vaughan |
Subject: |
333-refactor-LTDL_INIT |
Date: |
Mon, 10 Dec 2007 22:52:18 +0800 (PHT) |
User-agent: |
mailnotify/0.9 |
Changelog not yet written, but due to sporadic internet connectivity,
thought I should post the otherwise finished patch. Feel free to
pre-approve if you'd like me to commit (along with ChangeLog) next time
I get online...
Alternatively, feedback also most welcome.
Cheers,
Gary
Index: ChangeLog
from Gary V. Vaughan <address@hidden>
* doc/libtool.texi ():
Index: Makefile.am
===================================================================
RCS file: /sources/libtool/libtool/Makefile.am,v
retrieving revision 1.225
diff -u -u -r1.225 Makefile.am
--- Makefile.am 16 Aug 2007 18:18:39 -0000 1.225
+++ Makefile.am 10 Dec 2007 14:49:44 -0000
@@ -456,6 +456,7 @@
tests/ctor.at \
tests/early-libtool.at \
tests/deplibs-ident.at \
+ tests/configure-iface.at \
tests/stresstest.at \
tests/cmdline_wrap.at
Index: configure.ac
===================================================================
RCS file: /sources/libtool/libtool/configure.ac,v
retrieving revision 1.78
diff -u -u -r1.78 configure.ac
--- configure.ac 26 Mar 2007 20:18:43 -0000 1.78
+++ configure.ac 10 Dec 2007 14:49:45 -0000
@@ -181,7 +181,7 @@
## Libtool initialisation. ##
## ----------------------- ##
LT_INIT([dlopen win32-dll])
-LTDL_INIT([libltdl])
+_LTDL_SETUP
# Enable all the language support we can
LT_LANG(C++)
Index: libtoolize.m4sh
===================================================================
RCS file: /sources/libtool/libtool/libtoolize.m4sh,v
retrieving revision 1.62
diff -u -u -r1.62 libtoolize.m4sh
--- libtoolize.m4sh 25 Mar 2007 12:12:42 -0000 1.62
+++ libtoolize.m4sh 10 Dec 2007 14:49:45 -0000
@@ -415,21 +415,20 @@
}
/_LT_CONFIG_LTDL_DIR(/d
/LT_CONFIG_LTDL_DIR(/ {
- s/^.*LT_CONFIG_LTDL_DIR([[ ]*\([^]),]*\)[^,]*/ac_ltdldir=\1%%/
- s/%%[[, ]*\([^])]*\).*$/ ac_ltdl_mode=\1%%/
- s/%%.*$//
+ s,^.*LT_CONFIG_LTDL_DIR([[ ]*\([^])]*\).*$,ac_ltdldir=\1,
p
}
/A[CM]_PROG_LIBTOOL/ {
s,^.*$,seen_libtool=:,
p
}
- /LT_INIT/ {
+ /LT_INIT/ {
s,^.*$,seen_libtool=:,
p
}
/LTDL_INIT/ {
- s,^.*$,seen_ltdl=:,
+ s,^.*LTDL_INIT([[ ]*\([^])]*\).*$,ltdl_options="\1",
+ s,^.*LTDL_INIT[ ]*$,seen_ltdl=:,
p
}
/LT_WITH_LTDL/ {
@@ -456,7 +455,7 @@
# If $configure_ac contains AC_CONFIG_LTDL_DIR, check that its
# arguments were not given in terms of a shell variable!
- case "$ac_ltdldir$ac_ltdl_mode" in
+ case "$ac_ltdldir" in
*\$*)
func_fatal_error "can not handle variables in LT_CONFIG_LTDL_DIR"
;;
@@ -481,9 +480,26 @@
# Validate ltdl_mode. #
# ------------------- #
- test -n "$ac_ltdl_mode" && seen_ltdl=:
+ test -n "$ltdl_options" && seen_ltdl=:
- # If neither --ltdl nor LT_CONFIG_LTDL_DIR are specified, default to
+ # If $configure_ac contains LTDL_INIT, check that its
+ # arguments were not given in terms of a shell variable!
+ case "$ltdl_options" in
+ *\$*)
+ func_fatal_error "can not handle variables in LTDL_INIT"
+ ;;
+ esac
+
+ # Extract mode name from ltdl_options
+ # FIXME: Diagnose multiple conflicting modes in ltdl_options
+ ac_ltdl_mode=
+ case " $ltdl_options " in
+ *" nonrecursive "*) ac_ltdl_mode=nonrecursive ;;
+ *" recursive "*) ac_ltdl_mode=recursive ;;
+ *" subproject "*) ac_ltdl_mode=subproject ;;
+ esac
+
+ # If neither --ltdl nor an LTDL_INIT mode are specified, default to
# `subproject'. If both are specified, they must be the same.
Otherwise,
# take the one that is given!
case x$ac_ltdl_mode,x$ltdl_mode in
@@ -492,11 +508,10 @@
x,x*) ltdl_mode=$ltdl_mode ;;
*)
test x"$ac_ltdl_mode" = x"$ltdl_mode" || \
- func_fatal_error "--$ltdl_mode does not match
LT_CONFIG_LTDL_DIR($ac_ltdldir, $ac_ltdl_mode)"
+ func_fatal_error "--$ltdl_mode does not match
LTDL_INIT($ac_ltdl_mode)"
;;
esac
-
# ---------------- #
# Validate auxdir. #
# ---------------- #
Index: doc/libtool.texi
===================================================================
RCS file: /sources/libtool/libtool/doc/libtool.texi,v
retrieving revision 1.231
diff -u -u -r1.231 libtool.texi
--- doc/libtool.texi 4 Sep 2007 18:01:32 -0000 1.231
+++ doc/libtool.texi 10 Dec 2007 14:49:48 -0000
@@ -1883,7 +1883,7 @@
@end example
@end defmac
address@hidden LT_INIT
address@hidden LT_INIT (@var{OPTIONS})
@defmacx AC_PROG_LIBTOOL
@defmacx AM_PROG_LIBTOOL
Add support for the @option{--enable-shared} and @option{--disable-shared}
@@ -1892,7 +1892,7 @@
@file{Makefile.in}. Automake does this automatically, but Autoconf
users should set it to the relative path to the top of your build
directory (@file{../..}, for example).} @code{AC_PROG_LIBTOOL} and
address@hidden were names for older versions of this macro;
address@hidden are deprecated names for older versions of this macro;
@code{autoupdate} will upgrade your @file{configure.ac} files.
By default, this macro turns on shared libraries if they are available,
@@ -3868,7 +3868,7 @@
dlpreopen the module on platforms that do not support dlopening. If
the module depends on any other libraries, make sure you specify them
either when you link the module or when you link programs that dlopen it.
-If you want to disable @pxref{Versioning} for a specific module
+If you want to disable versioning (@pxref{Versioning}) for a specific module
you should link it with the @option{-avoid-version} switch.
Note that libtool modules don't need to have a "lib" prefix.
However, Automake 1.4 or higher is required to build such modules.
@@ -4360,26 +4360,26 @@
Even though libltdl is installed together with libtool, you may wish
to include libltdl in the distribution of your package, for the
convenience of users of your package that don't have libtool or
-libltdl installed. In this case, you must decide whether to manually
-add the @code{ltdl} objects to your package, or else which flavor of
-libltdl you want to use: a convenience library or an installable
-libtool library.
+libltdl installed, or if you are using features of a very new version
+of libltdl that you don't expect your users to have yet. In such
+cases, you must decide which flavor of libltdl you want to use: a
+convenience library or an installable libtool library.
The most simplistic way to add @code{libltdl} to your package is to
-copy all the @file{libltdl} source files, to a subdirectory within
+copy all the @file{libltdl} source files to a subdirectory within
your package and to build and link them along with the rest of your
sources. To help you do this, the m4 macros for Autoconf are
available in @file{ltdl.m4}. You must ensure that they are available
in @file{aclocal.m4} before you run address@hidden@c
@c
We used to recommend adding the contents of @file{ltdl.m4} to
address@hidden, but with modern Automake (1.8 or newer) and this
-release of libltdl that is not only unnecessary but makes it easy to
-forget to upgrade @file{acinclude.m4} if you move to a different
-release of libltdl.
address@hidden, but with @command{aclocal} from a modern
+Automake (1.8 or newer) and this release of libltdl that is not only
+unnecessary but makes it easy to forget to upgrade @file{acinclude.m4}
+if you move to a different release of libltdl.
@c
}. Having made the macros available, you must add a call to the
address@hidden macro to your package's @file{configure.ac} to
address@hidden macro to your package's @file{configure.ac} to
perform the configure time checks required to build the library
correctly. Unfortunately, this method has problems if you then try to
link the package binaries with an installed libltdl, or a library that
@@ -4389,21 +4389,91 @@
is bad. Ensuring that only one copy of the libltdl sources are linked
into any program is left as an exercise for the reader.
address@hidden LT_CONFIG_LTDL_DIR (@var{DIRECTORY}. @var{LTDL-MODE})
address@hidden 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. Provided that you
-add an appropriate @code{LT_CONFIG_LTDL} call in your
+add an appropriate @code{LT_CONFIG_LTDL_DIR} call in your
@file{configure.ac} before calling @command{libtoolize}, the
-appropriate @code{libltdl} files will be installed automatically without
-manually specifying the mode to @command{libtoolize} explicitly.
+appropriate @code{libltdl} files will be installed automatically.
address@hidden defmac
+
address@hidden LTDL_INIT (@var{OPTIONS})
address@hidden LT_WITH_LTDL
address@hidden AC_WITH_LTDL
address@hidden and @code{LT_WITH_LTDL} are deprecated names for
+older versions of this macro; @command{autoupdate} will update your
address@hidden file.
+
+This macro adds the following options to the @command{configure}
+script:
+
address@hidden @option
address@hidden --with-ltdl-include @var{INSTALLED-LTDL-HEADER-DIR}
+The @code{LTDL_INIT} macro will look in the standard header file
+locations to find the installed @code{libltdl} headers. If
address@hidden can't find them by itself, the person who builds
+your package can use this option to tell @command{configure} where
+the installed @code{libltdl} headers are.
+
address@hidden --with-ltdl-lib @var{INSTALLED-LTDL-LIBRARY-DIR}
+Similarly, the person building your package can use this option to
+help @command{configure} find the installed @file{libltdl.la}.
+
address@hidden --with-included-ltdl
+If there is no installed @code{libltdl}, or in any case if the
+person building your package would rather use the @code{libltdl}
+sources shipped with the package in the subdirectory named by
address@hidden, they should pass this option to
address@hidden
address@hidden table
+
+If the @option{--with-included-ltdl} is not passed at
+configure time, and an installed @code{libltdl} is not
address@hidden@c
address@hidden
+Even if libltdl is installed, @samp{LTDL_INIT} may fail
+to detect it if libltdl depends on symbols provided by libraries
+other than the C library.
address@hidden
+}, then @command{configure} will exit immediately with an error that
+asks the user to either specify the location of an installed
address@hidden using the @option{--with-ltdl-include} and
address@hidden options, or to build with the
address@hidden sources shipped with the package by passing
address@hidden
+
+If an installed @code{libltdl} is found, then @code{LIBLTDL} is set to
+the link flags needed to use it, and @code{LTDLINCL} to the
+preprocessor flags needed to find the installed headers. Note,
+however, that no version checking is performed. You should manually
+check for the @code{libltdl} features you need in @file{configure.ac}:
+
address@hidden
+LT_INIT([dlopen])
+LTDL_INIT
address@hidden can be either @samp{nonrecursive}, @samp{recursive}, or
address@hidden depending on how you wish for your project to build
address@hidden In order for @command{libtoolize} to detect
address@hidden correctly, if you supply one of these arguments, they
-must be given literally (i.e., macros or shell variables that expand to
-the correct @var{LTDL-MODE} will not work):
+# The lt_dladvise_init symbol was added with libtool-2.2
+if test "x$with_included_ltdl" != "xyes"; then
+ save_CFLAGS="$CFLAGS"
+ save_LDFLAGS="$LDFLAGS"
+ CFLAGS="$CFLAGS $LTDLINCL"
+ LDFLAGS="$LDFLAGS $LIBLTDL"
+ AC_CHECK_LIB([ltdl], [lt_dladvise_init],
+ [],
+ [AC_MSG_ERROR(installed libltdl is too old)])
+ LDFLAGS="$save_LDFLAGS"
+ CFLAGS="$save_CFLAGS"
+fi
address@hidden example
+
address@hidden may include no more than one of the following build
+modes depending on how you want your project to build @code{libltdl}:
address@hidden, @samp{recursive}, or @samp{subproject}. In order
+for @command{libtoolize} to detect this option correctly, if you
+supply one of these arguments, they must be given literally (i.e.,
+macros or shell variables that expand to the correct ltdl mode will not
+work).
@table @samp
@item nonrecursive
@@ -4419,15 +4489,13 @@
@example
AM_INIT_AUTOMAKE([subdir-objects])
AC_CONFIG_HEADERS([config.h])
-AC_PROG_CC
-AM_PROG_CC_C_O
-LT_CONFIG_LTDL_DIR([libltdl], [nonrecursive])
-LT_WITH_LTDL
+LT_CONFIG_LTDL_DIR([libltdl])
+LTDL_INIT([nonrecursive])
@end example
@noindent
-You have to use a config header, but it may have a name different than
address@hidden
+You @emph{have to} use a config header, but it may have a name different
+than @file{config.h}.
Also, add the following near the top of your @file{Makefile.am}:
@@ -4449,7 +4517,7 @@
@end example
@noindent
-Unless you don't build any other libraries from this @file{Makefile.am},
+Unless you build no other libraries from this @file{Makefile.am},
you will also need to change @code{lib_LTLIBRARIES} to assign with
@samp{+=} so that the @code{libltdl} targets declared in
@file{Makefile.inc} are not overwritten.
@@ -4463,14 +4531,14 @@
@example
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS([config.h])
-LT_CONFIG_LTDL_DIR([libltdl], [recursive])
-LT_WITH_LTDL
+LT_CONFIG_LTDL_DIR([libltdl])
+LTDL_INIT([recursive])
AC_CONFIG_FILES([libltdl/Makefile])
@end example
@noindent
-You have to use a config header, but it may have a name different than
address@hidden
+Again, you @emph{have to} use a config header, but it may have a name
+different than @file{config.h} if you like.
Also, add this to your @file{Makefile.am}:
@@ -4479,20 +4547,21 @@
@end example
@item subproject
-This mode is the default unless you declare otherwise with
address@hidden, and is the only mode supported by previous
-releases of libltdl. If you do not use Autoconf in the parent project,
-then @samp{subproject} mode @code{libltdl} contains all the necessary
-files to configure and build itself -- you just need to arrange for your
-build system to call @file{libltdl/configure} with appropriate options,
-and then run @code{make} in the @code{libltdl} subdirectory.
+This mode is the default unless you explicitly add @code{recursive} or
address@hidden to your @code{LTDL_INIT} options; @code{subproject}
+is the only mode supported by previous releases of libltdl. Even if you
+do not use Autoconf in the parent project, then, in @samp{subproject}
+mode, still @code{libltdl} contains all the necessary files to configure
+and build itself -- you just need to arrange for your build system to
+call @file{libltdl/configure} with appropriate options, and then run
address@hidden in the @code{libltdl} subdirectory.
If you @emph{are} using Autoconf and Automake, then you will need to add
the following to your @file{configure.ac}:
@example
-LT_CONFIG_LTDL_DIR([libltdl], [subproject])
-LT_WITH_LTDL
+LT_CONFIG_LTDL_DIR([libltdl])
+LTDL_INIT
@end example
@noindent
@@ -4502,118 +4571,82 @@
SUBDIRS = libltdl
@end example
@end table
address@hidden defmac
-
address@hidden LT_WITH_LTDL
address@hidden AC_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
address@hidden (@option{--without-included-ltdl}), or the sources
-shipped with the package in the subdirectory named by
address@hidden (@option{--with-included-ltdl}).
address@hidden is a deprecated alias for @code{LT_WITH_LTDL}.
address@hidden defmac
+Aside from setting the libltdl build mode, there are other keywords
+that you can pass to @code{LTDL_INIT} to modify its behavior when
address@hidden has been given:
address@hidden LTDL_INSTALLABLE
address@hidden AC_LIBLTDL_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.
address@hidden @samp
address@hidden convenience
+This is the default unless you explicitly add @code{installable} to
+your @code{LTDL_INIT} options.
-By default, this macro will pass options to the @file{configure}
+This keyword will cause options to be passed to the @command{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
+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
address@hidden are expanded properly.
address@hidden expand correctly.
-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
-not using @code{LT_WITH_LTDL}, then you must add a call to
address@hidden(@var{DIRECTORY})} to your @file{configure.ac}.
-
address@hidden is a deprecated alias for
address@hidden
address@hidden defmac
-
address@hidden LTDL_CONVENIENCE
address@hidden AC_LIBLTDL_CONVENIENCE
-Unless you call @code{LTDL_INSTALLABLE} before hand,
address@hidden 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.
+One advantage of the convenience library is that it is not installed,
+so the fact that you use @code{libltdl} will not be apparent to the
+user, and it won't overwrite a pre-installed version of
address@hidden the system might already have in the installation
+directory. On the other hand, if you want to upgrade @code{libltdl}
+for any reason (e.g.@: a bugfix) you'll have to recompile your package
+instead of just replacing the shared installed version of
address@hidden However, if your programs or libraries are linked
+with other libraries that use such a pre-installed version of
address@hidden, you may get linker errors or run-time crashes.
+Another problem is that you cannot link the convenience library into
+more than one libtool library, then link a single program with those
+libraries, because you may get duplicate symbols. In general you can
+safely use the convenience library in programs that don't depend on
+other libraries that might use @code{libltdl} too.
-By default, this macro will pass options to the @file{configure}
address@hidden installable
+This keyword will pass options to the @command{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
+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.
address@hidden is a deprecated alias for
address@hidden
+Be aware that you could overwrite another @code{libltdl} already
+installed to the same directory if you use this option.
address@hidden table
@end defmac
-One advantage of the convenience library is that it is not installed,
-so the fact that you use libltdl will not be apparent to the user, and
-it will not overwrite a pre-installed version of libltdl a user might
-have. On the other hand, if you want to upgrade libltdl for any
-reason (e.g.@: a bugfix) you'll have to recompile your package instead
-of just replacing an installed version of libltdl. However, if your
-programs or libraries are linked with other libraries that use such a
-pre-installed version of libltdl, you may get linker errors or
-run-time crashes. Another problem is that you cannot link the
-convenience library into more than one libtool library, then link a
-single program with these libraries, because you may get duplicate
-symbols. In general you can safely use the convenience library in
-programs that don't depend on other libraries that might use libltdl
-too. In order to enable this flavor of libltdl, add a call to
address@hidden to your @file{configure.ac},
address@hidden @samp{LT_INIT}, or use @samp{LT_WITH_LTDL}.
-
-In order to select the installable version of libltdl, you should add a
-call of the macro @samp{LTDL_INSTALLABLE} to your
address@hidden @emph{before} @samp{LT_INIT}. This macro
-will check whether libltdl is already installed and, if not, request the
-libltdl embedded in your package to be built and installed. Note,
-however, that no version checking is performed. The user may override
-the test and determine that the libltdl embedded must be installed,
-regardless of the existence of another version, using the configure
-switch @option{--enable-ltdl-install}.
-
-Whatever macro you use, it is up to you to ensure that your
address@hidden will configure libltdl by using
address@hidden Both macros define the shell variables
address@hidden 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
-pathname for the convenience version of libltdl and @var{LTDLINCL} will be
address@hidden followed by the directory that contains libltdl, starting
-with @address@hidden@}/} and @address@hidden@}/} respectively.
-
-If you request an installed version of libltdl and one is
address@hidden@c
address@hidden
-Even if libltdl is installed, @samp{LTDL_INSTALLABLE} may fail
-to detect it, if libltdl depends on symbols provided by libraries
-other than the C library. In this case, it will needlessly build and
-install libltdl.
address@hidden
-}, @var{LIBLTDL} will be set to @option{-lltdl} and @var{LTDLINCL} will
-be empty (this is just a blind assumption that @file{ltdl.h} is
-somewhere in the include path if libltdl is in the library path). If
-an installable version of libltdl must be built, its pathname,
-starting with @address@hidden@}/}, will be stored in
address@hidden, and @var{LTDLINCL} will be set just like in the case of
-convenience library. So, when you want to link a program with
+Whatever method you use, @samp{LTDL_INIT} will define both the shell
+variable @var{LIBLTDL} to the link flag that you should use to link
+with @code{libltdl}, and the shell variable @var{LTDLINCL} to the
+preprocessor flag that you should use to compile programs that
+include @file{ltdl.h}. So, when you want to link a program with
libltdl, be it a convenience, installed or installable library, just
-compile with @samp{$(LTDLINCL)} and link it with @samp{$(LIBLTDL)},
-using libtool.
+use @samp{$(LTDLINCL)} for preprocessing and compilation, and
address@hidden(LIBLTDL)} for linking.
+
address@hidden @bullet
address@hidden
+If your package is built using an installed version of
address@hidden, @var{LIBLTDL} will be set to the compiler flags
+needed to link against the installed library, and
address@hidden will be set to the compiler flags needed to find
+the @code{libltdl} header files.
+
address@hidden
+If your package is built using the convenience libltdl, @var{LIBLTDL}
+will be the pathname for the convenience version of libltdl
+(starting with @address@hidden@}/}) and @var{LTDLINCL} will be
address@hidden followed by the directory that contains @file{ltdl.h}
+(starting with @address@hidden@}/}).
+
address@hidden
+If an installable version of the included @code{libltdl} is being
+built, its pathname starting with @address@hidden@}/}, will be
+stored in @var{LIBLTDL}, and @var{LTDLINCL} will be set just like in
+the case of convenience library.
address@hidden itemize
You should probably also use the @samp{dlopen} option to @code{LT_INIT}
in your @file{configure.ac}, otherwise libtool will assume no dlopening
@@ -4625,8 +4658,8 @@
for static linking.
The following example shows you how to embed an installable libltdl in
-your package. In order to use the convenience variant just replace
address@hidden with @samp{LTDL_CONVENIENCE}. We
+your package. In order to use the convenience variant, just replace the
address@hidden option @samp{installable} with @samp{convenience}. We
assume that libltdl was embedded using @samp{libtoolize --ltdl}.
configure.ac:
@@ -4635,14 +4668,11 @@
# Name the subdirectory that contains libltdl sources
LT_CONFIG_LTDL_DIR([libltdl])
-## ------------------------------------------ ##
-## Enable building of the installable library ##
-## ------------------------------------------ ##
-LTDL_INSTALLABLE
-
# Configure libtool with dlopen support if possible
LT_INIT([dlopen])
-LT_WITH_LTDL
+
+# Enable building of the installable libltdl library
+LTDL_INIT([installable])
...
@end example
@@ -4659,6 +4689,18 @@
...
@end example
address@hidden LTDL_INSTALLABLE
address@hidden AC_LIBLTDL_INSTALLABLE
+These macros are deprecated, the @samp{installable} option to
address@hidden should be used instead.
address@hidden defmac
+
address@hidden LTDL_CONVENIENCE
address@hidden AC_LIBLTDL_CONVENIENCE
+These macros are deprecated, the @samp{convenience} option to
address@hidden should be used instead.
address@hidden defmac
+
@node Trace interface
@chapter Libtool's trace interface
Index: libltdl/configure.ac
===================================================================
RCS file: /sources/libtool/libtool/libltdl/configure.ac,v
retrieving revision 1.21
diff -u -u -r1.21 configure.ac
--- libltdl/configure.ac 25 Mar 2007 12:12:42 -0000 1.21
+++ libltdl/configure.ac 10 Dec 2007 14:49:49 -0000
@@ -82,8 +82,7 @@
## Libtool initialisation. ##
## ----------------------- ##
LT_INIT([dlopen win32-dll])
-LTDL_CONVENIENCE
-LTDL_INIT
+_LTDL_SETUP
## -------- ##
Index: libltdl/m4/libtool.m4
===================================================================
RCS file: /sources/libtool/libtool/libltdl/m4/libtool.m4,v
retrieving revision 1.117
diff -u -u -r1.117 libtool.m4
--- libltdl/m4/libtool.m4 29 Aug 2007 20:54:53 -0000 1.117
+++ libltdl/m4/libtool.m4 10 Dec 2007 14:49:55 -0000
@@ -57,6 +57,7 @@
[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
AC_BEFORE([$0], [LT_LANG])dnl
AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
dnl Autoconf doesn't catch unexpanded LT_ macros by default:
m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
@@ -68,7 +69,9 @@
AC_REQUIRE([LTVERSION_VERSION])dnl
AC_REQUIRE([LTOBSOLETE_VERSION])dnl
m4_require([_LT_PROG_LTMAIN])dnl
-m4_require([_LT_SET_OPTIONS], [_LT_SET_OPTIONS([$1])])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
# This can be used to rebuild libtool when needed
LIBTOOL_DEPS="$ltmain"
@@ -605,10 +608,10 @@
lt_cl_silent=: ;;
-*) AC_MSG_ERROR([unrecognized option: $[1]
-Try `$[0] --help' for more information.]) ;;
+Try \`$[0] --help' for more information.]) ;;
*) AC_MSG_ERROR([unrecognized argument: $[1]
-Try `$[0] --help for more information.]) ;;
+Try \`$[0] --help' for more information.]) ;;
esac
shift
done
Index: libltdl/m4/ltdl.m4
===================================================================
RCS file: /sources/libtool/libtool/libltdl/m4/ltdl.m4,v
retrieving revision 1.33
diff -u -u -r1.33 ltdl.m4
--- libltdl/m4/ltdl.m4 25 Mar 2007 12:12:43 -0000 1.33
+++ libltdl/m4/ltdl.m4 10 Dec 2007 14:49:55 -0000
@@ -7,14 +7,14 @@
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-# serial 12 LTDL_INIT
+# serial 13 LTDL_INIT
# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
# ------------------------------------------
# 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])
+[AC_BEFORE([$0], [LTDL_INIT])
_$0($*)
])# LT_CONFIG_LTDL_DIR
@@ -33,16 +33,10 @@
[],
[m4_fatal([multiple libltdl directories: `]_LTDL_DIR[',
`]_ARG_DIR['])])])
m4_popdef([_ARG_DIR])
-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]))
- m4_if([-1], [m4_bregexp(_LTDL_MODE,
[\(subproject\|\(non\)?recursive\)])],
- [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
])# LT_CONFIG_LTDL_DIR
# Initialise:
m4_define([_LTDL_DIR], [])
-m4_define([_LTDL_MODE], [])
# LTDL_CONVENIENCE
@@ -56,19 +50,35 @@
# using automake, define top_builddir and top_srcdir appropriately in
# your Makefiles.
AC_DEFUN([LTDL_CONVENIENCE],
-[AC_BEFORE([$0], [LT_WITH_LTDL])dnl
+[AC_BEFORE([$0], [LTDL_INIT])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
+_$0()
+])# 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], [])
-case $enable_ltdl_convenience in
+
+# _LTDL_CONVENIENCE
+# -----------------
+# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]).
+m4_defun([_LTDL_CONVENIENCE],
+[case $enable_ltdl_convenience in
no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
+ *) enable_ltdl_convenience=yes
ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
+esac
LIBLTDL='${top_builddir}'"${lt_ltdl_dir+/$lt_ltdl_dir}/libltdlc.la"
LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
@@ -78,16 +88,7 @@
# For backwards non-gettext consistent compatibility...
INCLTDL="$LTDLINCL"
AC_SUBST([INCLTDL])
-])# 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_CONVENIENCE
# LTDL_INSTALLABLE
@@ -102,32 +103,60 @@
# 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_BEFORE([$0], [LT_WITH_LTDL])dnl
+[AC_BEFORE([$0], [LTDL_INIT])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
+_$0()
+])# LTDL_INSTALLABLE
-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])
- else
- enable_ltdl_install=yes
- fi
- ])
-if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL='${top_builddir}'"${lt_ltdl_dir+/$lt_ltdl_dir}/libltdl.la"
- LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
-else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- LTDLINCL=
+# 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_INSTALLABLE
+# -----------------
+# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]).
+m4_defun([_LTDL_INSTALLABLE],
+[if test -f $prefix/lib/libltdl.la; then
+ lt_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="-L$prefix/lib $LDFLAGS"
+ AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes])
+ LDFLAGS="$lt_save_LDFLAGS"
+ if test x"${lt_lib_ltdl-no}" = xyes; then
+ if test x"$enable_ltdl_install" != xyes; then
+ # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install
+ AC_MSG_WARN([not overwriting libltdl at $prefix, force with
\`--enable-ltdl-install'])
+ enable_ltdl_install=no
+ fi
+ elif test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ fi
fi
+# If configure.ac declared an installable ltdl, and the user didn't override
+# with --disable-ltdl-install, we will install the shipped libltdl.
+case $enable_ltdl_install in
+ no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ ;;
+ *) enable_ltdl_install=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}'"${lt_ltdl_dir+/$lt_ltdl_dir}/libltdl.la"
+ LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
+ ;;
+esac
+
AC_SUBST([LIBLTDL])
AC_SUBST([LTDLINCL])
@@ -136,15 +165,6 @@
AC_SUBST([INCLTDL])
])# 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_MODE_DISPATCH
# -------------------
@@ -164,18 +184,22 @@
])# _LTDL_MODE_DISPATCH
-# LT_WITH_LTDL
-# ------------
+# LTDL_INIT([OPTIONS])
+# --------------------
# 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_DEFUN([LTDL_INIT],
+[dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+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]))
+ m4_if([-1], [m4_bregexp(_LTDL_MODE,
[\(subproject\|\(non\)?recursive\)])],
+ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
AC_ARG_WITH([included_ltdl],
[AS_HELP_STRING([--with-included-ltdl],
@@ -197,49 +221,91 @@
)
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
+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_ARG_WITH([ltdl_include],
+ [AS_HELP_STRING([--with-ltdl-include=DIR],
+ [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+ if test -f "$with_ltdl_include/ltdl.h"; then :
+ else
+ AC_MSG_ERROR([invalid ltdl include directory: \`$with_ltdl_include'])
+ fi
+else
+ with_ltdl_include=no
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=
- INCLTDL=
+AC_ARG_WITH([ltdl_lib],
+ [AS_HELP_STRING([--with-ltdl-lib=DIR],
+ [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+ if test -f "$with_ltdl_lib/libltdl.la"; then :
+ else
+ AC_MSG_ERROR([invalid ltdl library directory: \`$with_ltdl_lib'])
+ fi
+else
+ with_ltdl_lib=no
fi
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+ ,yes,no,no,)
+ m4_case(m4_default(_LTDL_TYPE, [convenience]),
+ [convenience], [_LTDL_CONVENIENCE],
+ [installable], [_LTDL_INSTALLABLE],
+ [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+ ;;
+ ,no,no,no,)
+ # 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=
+ ;;
+ ,no*,no,*)
+ AC_MSG_ERROR([\`--with-ltdl-include' and \`--with-ltdl-lib' options
must be used together])
+ ;;
+ *) with_included_ltdl=no
+ LIBLTDL="-L$with_ltdl_lib -lltdl"
+ LTDLINCL="-I$with_ltdl_include"
+ ;;
+esac
+INCLTDL="$LTDLINCL"
+
# Report our decision...
-AC_MSG_CHECKING([whether to use included libltdl])
-AC_MSG_RESULT([$with_included_ltdl])
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
-dnl Be certain that LTDL_INIT is invoked if we are configuring libltdl
-dnl from here:
-m4_if(_LTDL_MODE, [subproject],
- [_LTDL_MODE_DISPATCH],
- [AC_PROVIDE_IFELSE([LTDL_INIT],
- [],
- [LTDL_INIT
- AC_DEFUN([LTDL_INIT], [])])])
-])# LT_WITH_LTDL
+_LTDL_SETUP
-# Old name:
-AU_ALIAS([AC_WITH_LTDL], [LT_WITH_LTDL])
+# Only expand once:
+m4_define([LTDL_INIT])
+])# LTDL_INIT
+
+# Old names:
+AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIB_LTDL], [])
dnl AC_DEFUN([AC_WITH_LTDL], [])
+dnl AC_DEFUN([LT_WITH_LTDL], [])
-# LTDL_INIT
-# ---------
+# _LTDL_SETUP
+# -----------
# 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],
+# other users should call LTDL_INIT instead.
+AC_DEFUN([_LTDL_SETUP],
[AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
@@ -259,17 +325,7 @@
dnl that sets the variables it relies on:
_LT_ENABLE_INSTALL
-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
-
-dnl _LTDL_MODE specific code must be evaluated at least once:
+dnl _LTDL_MODE specific code must be called at least once:
_LTDL_MODE_DISPATCH
# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
@@ -295,12 +351,7 @@
name=ltdl
LTDLOPEN=`eval "\$ECHO \"$libname_spec\""`
AC_SUBST([LTDLOPEN])
-])# LTDL_INIT
-
-# Old name:
-AU_ALIAS([AC_LIB_LTDL], [LTDL_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIB_LTDL], [])
+])# _LTDL_SETUP
# _LT_ENABLE_INSTALL
@@ -309,6 +360,11 @@
[AC_ARG_ENABLE([ltdl-install],
[AS_HELP_STRING([--enable-ltdl-install], [install libltdl])])
+case ,${enable_ltdl_install},${enable_ltdl_convenience} in
+ *yes*) ;;
+ *) enable_ltdl_convenience=yes ;;
+esac
+
AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno)
AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" !=
xno)
])# _LT_ENABLE_INSTALL
Index: libltdl/m4/ltoptions.m4
===================================================================
RCS file: /sources/libtool/libtool/libltdl/m4/ltoptions.m4,v
retrieving revision 1.9
diff -u -u -r1.9 ltoptions.m4
--- libltdl/m4/ltoptions.m4 25 Mar 2007 12:12:43 -0000 1.9
+++ libltdl/m4/ltoptions.m4 10 Dec 2007 14:49:55 -0000
@@ -1,81 +1,83 @@
# Helper functions for option handling. -*- Autoconf -*-
#
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file is free software; the Free Software Foundation gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-# serial 3 ltoptions.m4
+# serial 4 ltoptions.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-# _LT_MANGLE_OPTION(NAME)
-# -----------------------
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-# _LT_SET_OPTION(NAME)
-# --------------------
-# Set option NAME, and if there is a matching handler defined,
-# dispatch to it. Other NAMEs are saved as a flag.
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1]),
- _LT_MANGLE_DEFUN([$1]),
- [m4_warning([Unknown Libtool option `$1'])])[]dnl
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
])
-# _LT_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1]), [$2], [$3])])
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-# _LT_UNLESS_OPTIONS(OPTIONS, IF-NOT-SET)
-# ---------------------------------------
-# Execute IF-NOT-SET if all OPTIONS are not set.
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$1])),
- [m4_ifdef(_LT_MANGLE_OPTION(_LT_Option),
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
[m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$2
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
])[]dnl
])
-# _LT_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Libtool options.
-# If any OPTION has a handler macro declared with LT_OPTION_DEFINE,
-# dispatch to that macro; otherwise complain about the unknown option
-# and exit.
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
m4_defun([_LT_SET_OPTIONS],
[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$1])),
- [_LT_SET_OPTION(_LT_Option)])
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
dnl
dnl Simply set some default values (i.e off) if boolean options were not
dnl specified:
-_LT_UNLESS_OPTIONS([dlopen], [enable_dlopen=no
+_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
])
-_LT_UNLESS_OPTIONS([win32-dll], [enable_win32_dll=no
+_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
])
dnl
dnl If no reference was made to various pairs of opposing options, then
dnl we run the default mode handler for the pair. For example, if neither
dnl `shared' nor `disable-shared' was passed, we enable building of shared
dnl archives by default:
-_LT_UNLESS_OPTIONS([shared disable-shared], [_LT_ENABLE_SHARED])
-_LT_UNLESS_OPTIONS([static disable-static], [_LT_ENABLE_STATIC])
-_LT_UNLESS_OPTIONS([pic-only no-pic], [_LT_WITH_PIC])
-_LT_UNLESS_OPTIONS([fast-install disable-fast-install],
+_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
[_LT_ENABLE_FAST_INSTALL])
])# _LT_SET_OPTIONS
@@ -84,24 +86,26 @@
## Macros to handle LT_INIT options. ##
## --------------------------------- ##
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1]), [[^A-Z0-9_]], [_])])
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-# LT_OPTION_DEFINE(NAME, CODE)
-# ----------------------------
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1]), [$2])[]dnl
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
])# LT_OPTION_DEFINE
# dlopen
# ------
-LT_OPTION_DEFINE([dlopen], [enable_dlopen=yes
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
])
AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([dlopen])
+[_LT_SET_OPTION([LT_INIT], [dlopen])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
put the `dlopen' option into LT_INIT's first parameter.])
@@ -114,7 +118,7 @@
# win32-dll
# ---------
# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([win32-dll],
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
[enable_win32_dll=yes
case $host in
@@ -136,7 +140,7 @@
])# win32-dll
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[_LT_SET_OPTION([win32-dll])
+[_LT_SET_OPTION([LT_INIT], [win32-dll])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
put the `win32-dll' option into LT_INIT's first parameter.])
@@ -179,8 +183,8 @@
[Whether or not to build shared libraries])
])# _LT_ENABLE_SHARED
-LT_OPTION_DEFINE([shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([disable-shared], [_LT_ENABLE_SHARED([no])])
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
# Old names:
AC_DEFUN([AC_ENABLE_SHARED],
@@ -188,7 +192,7 @@
])
AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([disable-shared])
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
])
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
@@ -233,16 +237,16 @@
[Whether or not to build static libraries])
])# _LT_ENABLE_STATIC
-LT_OPTION_DEFINE([static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([disable-static], [_LT_ENABLE_STATIC([no])])
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
# Old names:
AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([static])
+[_LT_SET_OPTION([LT_INIT], [static])
])
AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([disable-static])
+[_LT_SET_OPTION([LT_INIT], [disable-static])
])
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
@@ -287,19 +291,19 @@
[Whether or not to optimize for fast installation])dnl
])# _LT_ENABLE_FAST_INSTALL
-LT_OPTION_DEFINE([fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install],
[_LT_ENABLE_FAST_INSTALL([no])])
# Old names:
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([fast-install])
+[_LT_SET_OPTION([LT_INIT], [fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
the `fast-install' option into LT_INIT's first parameter.])
])
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([disable-fast-install])
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
the `disable-fast-install' option into LT_INIT's first parameter.])
@@ -327,12 +331,12 @@
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
])# _LT_WITH_PIC
-LT_OPTION_DEFINE([pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([no-pic], [_LT_WITH_PIC([no])])
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
# Old name:
AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([pic-only])
+[_LT_SET_OPTION([LT_INIT], [pic-only])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
put the `pic-only' option into LT_INIT's first parameter.])
@@ -340,3 +344,21 @@
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
Index: tests/nonrecursive.at
===================================================================
RCS file: /sources/libtool/libtool/tests/nonrecursive.at,v
retrieving revision 1.9
diff -u -u -r1.9 nonrecursive.at
--- tests/nonrecursive.at 25 Mar 2007 12:12:43 -0000 1.9
+++ tests/nonrecursive.at 10 Dec 2007 14:49:58 -0000
@@ -30,7 +30,7 @@
m4_pushdef([_LTDL_SETUP],
[AT_DATA([configure.ac],
[[AC_INIT([subdirectory-demo], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
-LT_CONFIG_LTDL_DIR([ltdl], [nonrecursive])
+LT_CONFIG_LTDL_DIR([ltdl])
AC_CONFIG_AUX_DIR([ltdl/config])
AC_CONFIG_MACRO_DIR([ltdl/m4])
AC_CONFIG_LIBOBJ_DIR([ltdl])
@@ -39,7 +39,7 @@
AC_PROG_CC
AM_PROG_CC_C_O
LT_INIT
-LT_WITH_LTDL
+LTDL_INIT([nonrecursive])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
]])
Index: tests/recursive.at
===================================================================
RCS file: /sources/libtool/libtool/tests/recursive.at,v
retrieving revision 1.6
diff -u -u -r1.6 recursive.at
--- tests/recursive.at 25 Mar 2007 12:12:43 -0000 1.6
+++ tests/recursive.at 10 Dec 2007 14:49:58 -0000
@@ -29,14 +29,14 @@
m4_pushdef([_LTDL_SETUP],
[AT_DATA([configure.ac],
[[AC_INIT([subdirectory-demo], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
-LT_CONFIG_LTDL_DIR([ltdl], [recursive])
+LT_CONFIG_LTDL_DIR([ltdl])
AC_CONFIG_AUX_DIR([ltdl/config])
AC_CONFIG_MACRO_DIR([ltdl/m4])
AC_CONFIG_LIBOBJ_DIR([ltdl])
AC_CONFIG_HEADERS([config.h:config.hin])
AM_INIT_AUTOMAKE([foreign])
LT_INIT
-LT_WITH_LTDL
+LTDL_INIT([recursive])
AC_CONFIG_FILES([Makefile ltdl/Makefile])
AC_OUTPUT
]])
@@ -81,7 +81,7 @@
_LTDL_SETUP
-LT_AT_LIBTOOLIZE([--copy --ltdl])
+LT_AT_LIBTOOLIZE([--debug --copy --ltdl])
AT_CHECK([if test -f ltdl/configure.ac; then false; fi])
LT_AT_AUTORECONF([--force --verbose --install])
--
())_. Email me: address@hidden
( '/ Read my blog: http://blog.azazil.net
/ )= ...and my book: http://sources.redhat.com/autobook
`(_~)_ Join my AGLOCO Network: http://www.agloco.com/r/BBBS7912
_________________________________________________________
This patch notification generated by vcsapply version 1.0
http://savannah.gnu.org/projects/cvs-utils
pgpfg6MmODMp3.pgp
Description: PGP signature
- 333-refactor-LTDL_INIT,
Gary V. Vaughan <=