From: Gary V. Vaughan Date: Wed, 26 Oct 2005 10:42:05 +0000 (+0000) Subject: * libltdl/Makefile.inc: New file, factored out of Makefile.am for X-Git-Tag: release-2-1b~449 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e1454ec7b4753855d219751d8272c12eba56887a;p=thirdparty%2Flibtool.git * libltdl/Makefile.inc: New file, factored out of Makefile.am for use in non-recursive libltdl installations. * bootstrap: Adjust. * Makefile.am: include it. (libltdl/Makefile.am): Adjust to build from the new libltdl/Makefile.inc. (SUBDIR_LIBOBJS): Renamed from this... (LTDL_SUBDIR_LIBOBJS): ...to this. * configure.ac: Adjust. * doc/libtool.texi (Invoking libtoolize): Document the new modes and libtoolize option to select them. * libtoolize.m4sh: Parse new options, --nonrecursive, --recursive and --subproject. Install the appropriate files with --ltdl according to the selected mode. (func_scan_files): If --subproject, --recursive or --nonrecursive options were not given, use the value from LT_CONFIG_LTDL_DIR; if a mode was given, and there is also an argument to LT_CONFIG_LTDL_DIR, ensure they are the same. * NEWS: Updated. --- diff --git a/ChangeLog b/ChangeLog index 8c7adc205..968276c69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2005-10-26 Gary V. Vaughan + + * libltdl/Makefile.inc: New file, factored out of Makefile.am for + use in non-recursive libltdl installations. + * bootstrap: Adjust. + * Makefile.am: include it. + (libltdl/Makefile.am): Adjust to build from the new + libltdl/Makefile.inc. + (SUBDIR_LIBOBJS): Renamed from this... + (LTDL_SUBDIR_LIBOBJS): ...to this. + * configure.ac: Adjust. + * doc/libtool.texi (Invoking libtoolize): Document the new modes + and libtoolize option to select them. + * libtoolize.m4sh: Parse new options, --nonrecursive, --recursive + and --subproject. Install the appropriate files with --ltdl + according to the selected mode. + (func_scan_files): If --subproject, --recursive or --nonrecursive + options were not given, use the value from LT_CONFIG_LTDL_DIR; if + a mode was given, and there is also an argument to + LT_CONFIG_LTDL_DIR, ensure they are the same. + * NEWS: Updated. + 2005-10-26 Gary V. Vaughan * libtoolize.m4sh: Don't use func_serial_update as a copy diff --git a/Makefile.am b/Makefile.am index 41a0796e6..f603b4b13 100644 --- a/Makefile.am +++ b/Makefile.am @@ -24,7 +24,11 @@ ACLOCAL_AMFLAGS = -I libltdl/m4 +AM_CPPFLAGS = +AM_LDFLAGS = + DIST_SUBDIRS = . +EXTRA_DIST = BUILT_SOURCES = libtool @@ -32,15 +36,9 @@ CLEANFILES = MOSTLYCLEANFILES = DISTCLEANFILES = -EXTRA_DIST = libltdl/COPYING.LIB \ - libltdl/Makefile.am \ - libltdl/Makefile.in \ - libltdl/README \ - libltdl/config-h.in \ - libltdl/configure \ - libltdl/configure.ac \ - libltdl/aclocal.m4 \ - libltdl/m4/lt~obsolete.m4 +noinst_LTLIBRARIES = +lib_LTLIBRARIES = +EXTRA_LTLIBRARIES = auxdir = libltdl/config m4dir = libltdl/m4 @@ -196,19 +194,24 @@ $(srcdir)/$(auxdir)/ltmain.sh: $(sh_files) $(auxdir)/ltmain.m4sh configure.ac \ chmod a-w $(auxdir)/ltmain.tmp; \ mv -f $(auxdir)/ltmain.tmp $(auxdir)/ltmain.sh -$(srcdir)/libltdl/Makefile.am: Makefile.am +$(srcdir)/libltdl/Makefile.am: $(srcdir)/libltdl/Makefile.inc cd $(srcdir); \ - in=Makefile.am; out=libltdl/Makefile.am; \ + in=libltdl/Makefile.inc; out=libltdl/Makefile.am; \ rm -f $$out; \ $(SED) -n '/^.. Makefile.am -- /,/^.. Boston, MA/p' $$in > $$out; \ { echo 'ACLOCAL_AMFLAGS = -I m4'; \ echo 'AUTOMAKE_OPTIONS = foreign'; \ + echo 'AM_CPPFLAGS ='; \ + echo 'AM_LDFLAGS ='; \ echo 'BUILT_SOURCES ='; \ + echo 'noinst_LTLIBRARIES ='; \ + echo 'lib_LTLIBRARIES ='; \ + echo 'EXTRA_LTLIBRARIES ='; \ echo 'EXTRA_DIST ='; \ echo 'CLEANFILES ='; \ echo 'MOSTLYCLEANFILES ='; \ } >> $$out; \ - $(SED) -n '/^. %%% BEGIN /,/^. %%% END / \ + $(SED) -n '/^.. DO NOT REMOVE THIS LINE -- /,$$ \ { s,libltdl_,,; s,libltdl/,,; s,: libltdl/,: ,; \ s,\$$(libltdl_,$$(,; p; }' $$in >> $$out; chmod a-w $(srcdir)/libltdl/Makefile.am @@ -224,121 +227,9 @@ all-local: $(srcdir)/libltdl/Makefile.in ## Libltdl. ## ## -------- ## -# %%% BEGIN libltdl/Makefile.am - -DEFS = -DLTDL -DHAVE_CONFIG_H -DLT_CONFIG_H='<$(LT_CONFIG_H)>' - -# -I$(srcdir) is needed for user that built libltdl with a sub-Automake -# (not as a sub-package!) using 'nostdinc': -AM_CPPFLAGS = -I. -I$(srcdir) -Ilibltdl -I$(srcdir)/libltdl \ - -I$(srcdir)/libltdl/libltdl -AM_LDFLAGS = -no-undefined -VERSION_INFO = -version-info 7:0:0 - -noinst_LTLIBRARIES = $(LT_DLLOADERS) - -if INSTALL_LTDL -ltdlincludedir = $(includedir)/libltdl -ltdlinclude_HEADERS = libltdl/libltdl/lt_system.h \ - libltdl/libltdl/lt_error.h \ - libltdl/libltdl/lt_dlloader.h -include_HEADERS = libltdl/ltdl.h -lib_LTLIBRARIES = libltdl/libltdl.la -endif - -if CONVENIENCE_LTDL -noinst_LTLIBRARIES += libltdl/libltdlc.la -endif +include libltdl/Makefile.inc -libltdl_libltdl_la_SOURCES = libltdl/libltdl/lt__alloc.h \ - libltdl/libltdl/lt__dirent.h \ - libltdl/libltdl/lt__glibc.h \ - libltdl/libltdl/lt__private.h \ - libltdl/libltdl/lt__strl.h \ - libltdl/libltdl/lt_dlloader.h \ - libltdl/libltdl/lt_error.h \ - libltdl/libltdl/lt_system.h \ - libltdl/libltdl/slist.h \ - libltdl/loaders/preopen.c \ - libltdl/lt__alloc.c \ - libltdl/lt_dlloader.c \ - libltdl/lt_error.c \ - libltdl/ltdl.c \ - libltdl/ltdl.h \ - libltdl/slist.c - -libltdl_libltdl_la_CPPFLAGS = -DLTDLOPEN=$(LTDLOPEN) $(AM_CPPFLAGS) -libltdl_libltdl_la_LDFLAGS = $(AM_LDFLAGS) $(VERSION_INFO) $(LT_DLPREOPEN) -libltdl_libltdl_la_LIBADD = $(LTLIBOBJS) -libltdl_libltdl_la_DEPENDENCIES = $(LT_DLLOADERS) $(LTLIBOBJS) - -libltdl_libltdlc_la_SOURCES = $(libltdl_libltdl_la_SOURCES) -libltdl_libltdlc_la_CPPFLAGS = -DLTDLOPEN=$(LTDLOPEN)c $(AM_CPPFLAGS) -libltdl_libltdlc_la_LDFLAGS = $(AM_LDFLAGS) $(LT_DLPREOPEN) -libltdl_libltdlc_la_LIBADD = $(libltdl_libltdl_la_LIBADD) -libltdl_libltdlc_la_DEPENDENCIES= $(libltdl_libltdl_la_DEPENDENCIES) - -## The loaders are preopened by libltdl, itself always built from -## pic-objects (either as a shared library, or a convenience library), -## so the loaders themselves must be made from pic-objects too. We -## use convenience libraries for that purpose: -EXTRA_LTLIBRARIES = libltdl/dlopen.la \ - libltdl/dld_link.la \ - libltdl/dyld.la \ - libltdl/load_add_on.la \ - libltdl/loadlibrary.la \ - libltdl/shl_load.la - -libltdl_dlopen_la_SOURCES = libltdl/loaders/dlopen.c -libltdl_dlopen_la_LDFLAGS = -module -avoid-version -libltdl_dlopen_la_LIBADD = $(LIBADD_DLOPEN) - -libltdl_dld_link_la_SOURCES = libltdl/loaders/dld_link.c -libltdl_dld_link_la_LDFLAGS = -module -avoid-version -libltdl_dld_link_la_LIBADD = -ldld - -libltdl_dyld_la_SOURCES = libltdl/loaders/dyld.c -libltdl_dyld_la_LDFLAGS = -module -avoid-version - -libltdl_load_add_on_la_SOURCES = libltdl/loaders/load_add_on.c -libltdl_load_add_on_la_LDFLAGS = -module -avoid-version - -libltdl_loadlibrary_la_SOURCES = libltdl/loaders/loadlibrary.c -libltdl_loadlibrary_la_LDFLAGS = -module -avoid-version - -libltdl_shl_load_la_SOURCES = libltdl/loaders/shl_load.c -libltdl_shl_load_la_LDFLAGS = -module -avoid-version -libltdl_shl_load_la_LIBADD = $(LIBADD_SHL_LOAD) - -## Make sure these will be cleaned even when they're not built by default: -CLEANFILES += libltdl/libltdl.la \ - libltdl/libltdlc.la \ - libltdl/libdlloader.la - -## Automake-1.9.6 doesn't clean subdir AC_LIBOBJ compiled objects -## automatically: -CLEANFILES += $(LIBOBJS) $(LTLIBOBJS) - - -## --------------------------- ## -## Gnulib Makefile.am snippets ## -## --------------------------- ## - -BUILT_SOURCES += libltdl/$(ARGZ_H) -EXTRA_DIST += libltdl/argz_.h - -# We need the following in order to create an when the system -# doesn't have one that works with the given compiler. -all-local $(lib_OBJECTS): libltdl/$(ARGZ_H) -libltdl/argz.h: libltdl/argz_.h - cp $(srcdir)/libltdl/argz_.h $@-t - mv $@-t $@ -MOSTLYCLEANFILES += libltdl/argz.h \ - libltdl/argz.h-t - -# %%% END libltdl/Makefile.am - -if ! SUBDIR_LIBOBJS +if ! LTDL_SUBDIR_LIBOBJS ## workaround for Autoconf 2.59, Automake 1.9.6: ## we include these files twice, because of missing LIBOBJDIR support. EXTRA_DIST += \ @@ -383,6 +274,7 @@ aclocalfiles = m4/argz.m4 m4/libtool.m4 m4/ltdl.m4 m4/ltoptions.m4 \ ## libtoolize --ltdl can find them later: ltdldatafiles = libltdl/COPYING.LIB \ libltdl/README \ + libltdl/Makefile.inc \ libltdl/Makefile.am \ libltdl/configure.ac \ libltdl/aclocal.m4 \ diff --git a/NEWS b/NEWS index 818a7a1cb..c7c68d306 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,10 @@ 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 libtoolize options: --non-recursive, --recursive, --subproject. These + options control the way libltdl is installed by libtoolize. +* New recursive and non-recursive build modes for libltdl that don't require + a subconfigure. * New multi-module-loader safe libltdl handle iteration APIs: lt_dlhandle_iterate, lt_dlhandle_fetch, lt_dlhandle_map. * New lt_dlinterface_register to maintain separation of concerns between diff --git a/bootstrap b/bootstrap index ae79d67dc..67f10fabe 100755 --- a/bootstrap +++ b/bootstrap @@ -89,8 +89,9 @@ set dummy `$SED -n '/AC_INIT/{s/[][,()]/ /g; p;}' configure.ac` shift # Whip up a dirty Makefile: -test -f Makefile \ - || $SED '/^if /,/^endif$/d;/^else$/,/^endif$/d' Makefile.am > Makefile +makes='Makefile.am libltdl/Makefile.inc' +test -f Makefile || + $SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d' $makes > Makefile # Building distributed files from configure is bad for automake, so we # generate them here, and have Makefile rules to keep them up to date. diff --git a/configure.ac b/configure.ac index 45bca19ed..18eb6ddd2 100644 --- a/configure.ac +++ b/configure.ac @@ -126,7 +126,7 @@ AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/stamp-vcl']) dnl automake-1.9.x or autoconf-2.59 don't support subdir libobjs AC_MSG_CHECKING([whether subdir libobjs are useable]) test -f $srcdir/argz.c || sublibobjs_supported=yes -AM_CONDITIONAL([SUBDIR_LIBOBJS], test x"${sublibobjs_supported-no}" != xno) +AM_CONDITIONAL([LTDL_SUBDIR_LIBOBJS], test x"${sublibobjs_supported-no}" != xno) AC_MSG_RESULT([${sublibobjs_supported-no}]) diff --git a/doc/libtool.texi b/doc/libtool.texi index b9a28277f..5dac72fed 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -2249,11 +2249,77 @@ 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 --nonrecursive +If passed in conjunction with @option{--ltdl}, this option will cause +the @command{libltdl} installed by @samp{libtoolize} to be set up for +use with a non-recursive @command{automake} build. To make use of it, +you will need to add the following to the @file{Makefile.am} of the +parent project: + +@example +## libltdl/Makefile.inc @r{appends to the following variables} +## @r{so we set them here before including it:} +BUILT_SOURCES = + +AM_CPPFLAGS = +AM_LDFLAGS = + +noinst_LTLIBRARIES = +lib_LTLIBRARIES = +EXTRA_LTLIBRARIES = + +EXTRA_DIST = + +CLEANFILES = +MOSTLYCLEANFILES = + +include libltdl/Makefile.inc +@end example + +@noindent +The @file{Makefile.inc} included here requires that the libltdl +sources are in a subdirectory named @file{libltdl}, and you cannot use +a different directory name for a @samp{nonrecursive} build. + @item --quiet @itemx -q Work silently. @samp{libtoolize --quiet} is used by @sc{gnu} Automake to add libtool files to your package if necessary. +@item --recursive +If passed in conjunction with @option{--ltdl}, this option will cause +the @command{libtoolize} installed @samp{libltdl} to be set up for use +with a recursive @command{automake} build. To make use of it, you +will need to adjust the parent project's @file{configure.ac}: + +@example +AC_CONFIG_FILES([libltdl/Makefile]) +@end example + +@noindent +and @file{Makefile.am}: + +@example +SUBDIRS += libltdl +@end example + +@item --subproject +If passed in conjunction with @option{--ltdl}, this option will cause +the @command{libtoolize} installed @samp{libltd} to be set up for +independent configuration and compilation as a self-contained +subproject. To make use of it, you should arrange for your build to +call @command{libltdl/configure}, and then run @command{make} in the +@file{libltdl} directory (or the subdirectory you put libltdl into). +If your project uses Autoconf, you can use the supplied +@samp{LT_WITH_LTDL} macro, or else call @samp{AC_CONFIG_SUBDIRS} +directly. + +Previous releases of @samp{libltdl} built exclusively in this mode, +but now it is the default mode both for backwards compatibility and +because, for example, it is suitable for use in projects that wish to +use @samp{libltdl}, but not use the Autotools for their own build +process. + @item --verbose @itemx -v Work noisily! Give a blow by blow account of what diff --git a/libltdl/Makefile.inc b/libltdl/Makefile.inc new file mode 100644 index 000000000..e19de418a --- /dev/null +++ b/libltdl/Makefile.inc @@ -0,0 +1,144 @@ +## Makefile.am -- Process this file with automake to produce Makefile.in +## +## Copyright (C) 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 +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## As a special exception to the GNU Lesser General Public License, +## if you distribute this file as part of a program or library that +## is built using GNU libtool, you may include it under the same +## distribution terms that you use for the rest of that program. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; see the file COPYING. If not, write to +## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. + +## DO NOT REMOVE THIS LINE -- make depends on it + +# -I$(srcdir) is needed for user that built libltdl with a sub-Automake +# (not as a sub-package!) using 'nostdinc': +AM_CPPFLAGS += -DHAVE_CONFIG_H -DLT_CONFIG_H='<$(LT_CONFIG_H)>' \ + -DLTDL -I. -I$(srcdir) -Ilibltdl \ + -I$(srcdir)/libltdl -I$(srcdir)/libltdl/libltdl +AM_LDFLAGS += -no-undefined +LTDL_VERSION_INFO = -version-info 7:0:0 + +noinst_LTLIBRARIES += $(LT_DLLOADERS) + +if INSTALL_LTDL +ltdlincludedir = $(includedir)/libltdl +ltdlinclude_HEADERS = libltdl/libltdl/lt_system.h \ + libltdl/libltdl/lt_error.h \ + libltdl/libltdl/lt_dlloader.h +include_HEADERS = libltdl/ltdl.h +lib_LTLIBRARIES += libltdl/libltdl.la +endif + +if CONVENIENCE_LTDL +noinst_LTLIBRARIES += libltdl/libltdlc.la +endif + +libltdl_libltdl_la_SOURCES = libltdl/libltdl/lt__alloc.h \ + libltdl/libltdl/lt__dirent.h \ + libltdl/libltdl/lt__glibc.h \ + libltdl/libltdl/lt__private.h \ + libltdl/libltdl/lt__strl.h \ + libltdl/libltdl/lt_dlloader.h \ + libltdl/libltdl/lt_error.h \ + libltdl/libltdl/lt_system.h \ + libltdl/libltdl/slist.h \ + libltdl/loaders/preopen.c \ + libltdl/lt__alloc.c \ + libltdl/lt_dlloader.c \ + libltdl/lt_error.c \ + libltdl/ltdl.c \ + libltdl/ltdl.h \ + libltdl/slist.c + +libltdl_libltdl_la_CPPFLAGS = -DLTDLOPEN=$(LTDLOPEN) $(AM_CPPFLAGS) +libltdl_libltdl_la_LDFLAGS = $(AM_LDFLAGS) $(LTDL_VERSION_INFO) $(LT_DLPREOPEN) +libltdl_libltdl_la_LIBADD = $(LTLIBOBJS) +libltdl_libltdl_la_DEPENDENCIES = $(LT_DLLOADERS) $(LTLIBOBJS) + +libltdl_libltdlc_la_SOURCES = $(libltdl_libltdl_la_SOURCES) +libltdl_libltdlc_la_CPPFLAGS = -DLTDLOPEN=$(LTDLOPEN)c $(AM_CPPFLAGS) +libltdl_libltdlc_la_LDFLAGS = $(AM_LDFLAGS) $(LT_DLPREOPEN) +libltdl_libltdlc_la_LIBADD = $(libltdl_libltdl_la_LIBADD) +libltdl_libltdlc_la_DEPENDENCIES= $(libltdl_libltdl_la_DEPENDENCIES) + +## The loaders are preopened by libltdl, itself always built from +## pic-objects (either as a shared library, or a convenience library), +## so the loaders themselves must be made from pic-objects too. We +## use convenience libraries for that purpose: +EXTRA_LTLIBRARIES += libltdl/dlopen.la \ + libltdl/dld_link.la \ + libltdl/dyld.la \ + libltdl/load_add_on.la \ + libltdl/loadlibrary.la \ + libltdl/shl_load.la + +libltdl_dlopen_la_SOURCES = libltdl/loaders/dlopen.c +libltdl_dlopen_la_LDFLAGS = -module -avoid-version +libltdl_dlopen_la_LIBADD = $(LIBADD_DLOPEN) + +libltdl_dld_link_la_SOURCES = libltdl/loaders/dld_link.c +libltdl_dld_link_la_LDFLAGS = -module -avoid-version +libltdl_dld_link_la_LIBADD = -ldld + +libltdl_dyld_la_SOURCES = libltdl/loaders/dyld.c +libltdl_dyld_la_LDFLAGS = -module -avoid-version + +libltdl_load_add_on_la_SOURCES = libltdl/loaders/load_add_on.c +libltdl_load_add_on_la_LDFLAGS = -module -avoid-version + +libltdl_loadlibrary_la_SOURCES = libltdl/loaders/loadlibrary.c +libltdl_loadlibrary_la_LDFLAGS = -module -avoid-version + +libltdl_shl_load_la_SOURCES = libltdl/loaders/shl_load.c +libltdl_shl_load_la_LDFLAGS = -module -avoid-version +libltdl_shl_load_la_LIBADD = $(LIBADD_SHL_LOAD) + +## Make sure these will be cleaned even when they're not built by default: +CLEANFILES += libltdl/libltdl.la \ + libltdl/libltdlc.la \ + libltdl/libdlloader.la + +## Automake-1.9.6 doesn't clean subdir AC_LIBOBJ compiled objects +## automatically: +CLEANFILES += $(LIBOBJS) $(LTLIBOBJS) + +EXTRA_DIST += libltdl/COPYING.LIB \ + libltdl/Makefile.am \ + libltdl/Makefile.in \ + libltdl/Makefile.inc \ + libltdl/README \ + libltdl/config-h.in \ + libltdl/configure \ + libltdl/configure.ac \ + libltdl/aclocal.m4 \ + libltdl/m4/lt~obsolete.m4 + +## --------------------------- ## +## Gnulib Makefile.am snippets ## +## --------------------------- ## + +BUILT_SOURCES += libltdl/$(ARGZ_H) +EXTRA_DIST += libltdl/argz_.h + +# We need the following in order to create an when the system +# doesn't have one that works with the given compiler. +all-local $(lib_OBJECTS): libltdl/$(ARGZ_H) +libltdl/argz.h: libltdl/argz_.h + cp $(srcdir)/libltdl/argz_.h $@-t + mv $@-t $@ +MOSTLYCLEANFILES += libltdl/argz.h \ + libltdl/argz.h-t diff --git a/libtoolize.m4sh b/libtoolize.m4sh index 38b35eb12..d7085deb0 100644 --- a/libtoolize.m4sh +++ b/libtoolize.m4sh @@ -40,7 +40,10 @@ m4_divert_push([SCRIPT])#! /bin/sh # -f, --force replace existing files # -i, --install copy missing auxiliary files # --ltdl[=DIR] install libltdl sources [default: libltdl] +# --nonrecursive prepare ltdl for non-recursive make # -q, --quiet work silently +# --recursive prepare ltdl for recursive make +# --subproject prepare ltdl to configure and build independently # -v, --verbose verbosely report processing # --version print version information and exit # -h, --help print short or long help message @@ -78,6 +81,11 @@ seen_autoconf=false seen_libtool=false seen_ltdl=false +# ltdl can be installed to be self-contained (subproject, the default); +# or to be configured by a parent project, either with a recursive or +# nonrecursive automake driven make: +ltdl_mode= + # Locations for important files: prefix=@prefix@ datadir=@datadir@ @@ -135,10 +143,18 @@ configure_ac=configure.in fi ;; + --nonrecursive|--non-recursive) + ltdl_mode=nonrecursive + ;; + --quiet|--automake|-q) # --automake is for 1.5 compatibility opt_quiet=: ;; + --recursive) ltdl_mode=recursive ;; + + --subproject) ltdl_mode=subproject ;; + --verbose|-v) opt_verbose=: ;; # Separate optargs to long options: @@ -386,7 +402,9 @@ func_scan_files () }; /_LT_CONFIG_LTDL_DIR(/d; /LT_CONFIG_LTDL_DIR(/ { - s,^.*LT_CONFIG_LTDL_DIR([[[ ]*\([^])]]*\).*$,ac_ltdldir=\1,; p; + s/^.*LT_CONFIG_LTDL_DIR([[[ ]*\([^]),]*\)[^,]]*/ac_ltdldir=\1%%/; + s/%%[[[, ]*\([^])]]*\).*$/ ac_ltdl_mode=\1%%/; + s/%%.*$//; p; }; /A[[CM]]_PROG_LIBTOOL/ { s,^.*$,seen_libtool=:,; p; }; /LT_INIT/ { s,^.*$,seen_libtool=:,; p; }; @@ -404,9 +422,9 @@ func_scan_files () 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 + # 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 *\$*) func_fatal_error "can not handle variables in LT_CONFIG_LTDL_DIR" ;; @@ -427,6 +445,26 @@ func_scan_files () esac + # ------------------- # + # Validate ltdl_mode. # + # ------------------- # + + test -n "$ac_ltdl_mode" && seen_ltdl=: + + # If neither --ltdl nor LT_CONFIG_LTDL_DIR 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 + x,x) ltdl_mode=subproject ;; + x*,x) ltdl_mode=$ac_ltdl_mode ;; + 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)" + ;; + esac + + # ---------------- # # Validate auxdir. # # ---------------- # @@ -987,7 +1025,19 @@ func_nonemptydir_p () func_nonemptydir_p pkgdatadir func_nonemptydir_p aclocaldir - func_massage_pkgltdl_files + func_scan_files + + # These files are handled specially, depending on ltdl_mode: + case $ltdl_mode in + *recursive) + glob_exclude_pkgltdl_files='Makefile.am|Makefile.in*|aclocal.m4|config*' + ;; + *) + glob_exclude_pkgltdl_files='Makefile.inc' + ;; + esac + + func_massage_pkgltdl_files "$glob_exclude_pkgltdl_files" func_massage_pkgconfig_files # libtool.m4 and ltdl.m4 are handled specially below @@ -995,11 +1045,16 @@ func_nonemptydir_p () glob_exclude_pkgaux_files='config.guess|config.sub|install-sh|ltmain.sh' - func_scan_files - # Copy all the files from installed libltdl to this project, if the # user specified `--ltdl'. if $opt_ltdl; then + + # For recursive ltdl modes, copy a suitable Makefile.{am,inc}: + case $ltdl_mode in + recursive) pkgltdl_files="Makefile.am:$pkgltdl_files" ;; + nonrecursive) pkgltdl_files="Makefile.inc:$pkgltdl_files" ;; + esac + func_copy_some_files "$pkgltdl_files" "$pkgltdldir/libltdl" "$ltdldir" # Unless we share CONFIG_MACRO_DIR with our parent project,