libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

286-gary-libtoolize-recursive-ltdl.diff


From: Gary V. Vaughan
Subject: 286-gary-libtoolize-recursive-ltdl.diff
Date: Mon, 17 Oct 2005 11:55:05 +0100
User-agent: quilt/0.42-1

Hallo Ralf,

Thanks for the review!

Ralf Wildenhues wrote:
> I have a couple of gripes with it:
> - First, LTCOMPILE is not published interface by Automake,
> - Second, you kill dependency tracking for the LTLIBOBJS,
>
> Considering this, maybe this is too high a price to pay for gaining
> unchanged AM_CPPFLAGS, DEFS, and AM_LDFLAGS.  What do you think?
> Sorry for not thinking enough about this before, but now that I see
> this, I believe it needs to be addressed.

I wavered on this myself for a while, and on balance, I think you're
right: we need hackish workarounds to make it work properly.  I've
reverted to using AM_CPPFLAGS and AM_LDFLAGS.

> A couple of trivial nits:
> - I believe SUBDIR_LIBOBJS is too generic a name to be used in
>   third-party Makefiles.  (Prepend LT_ or LTDL_ or so)
> - list libltdl/Makefile.inc before libltdl/Makefile.am in ltdldatafiles

Done!

> Could you please repost the patch without format=flowed, so I can apply
> it cleanly.  Thank you.  I'm seeing weirdnesses with libtoolize but want
> to make sure they are not from me messing up the merge.

Reredone here.  I also posted a patch to fix your weirdness (well, not
literally *yours*, but you know what I mean!) in that thread.

Okay to commit?

Cheers,
        Gary.

Another step towards fixing LT_WITH_LTDL.  Here we add an optional mode
argument to libtoolize so that the user can tell libtoolize whether she
is going to subconfigure libltdl as always, or use either a non-recursive
automake (like libtool itself), or a recursive automake with a top-level
configure.  This patch *doesn't* attempt to clean up the m4 macros.

Incidentally, this also removes the troublesome '## %%% BEGIN' magic from
Makefile.am.

 Makefile.am          |  144 ++++++---------------------------------------------
 NEWS                 |    4 +
 bootstrap            |    5 +
 configure.ac         |    2 
 doc/libtool.texi     |   63 ++++++++++++++++++++++
 libltdl/Makefile.inc |  144 +++++++++++++++++++++++++++++++++++++++++++++++++++
 libtoolize.m4sh      |   69 +++++++++++++++++++++---
 7 files changed, 295 insertions(+), 136 deletions(-)

Index: libtool--devo--1.0/ChangeLog
from  Gary V. Vaughan  <address@hidden>
        * 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.

Index: libtool--devo--1.0/Makefile.am
===================================================================
--- libtool--devo--1.0.orig/Makefile.am
+++ libtool--devo--1.0/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_file
        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
-
-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 <argz.h> 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 address@hidden
-       mv address@hidden $@
-MOSTLYCLEANFILES += libltdl/argz.h \
-                   libltdl/argz.h-t
-
-# %%% END libltdl/Makefile.am
+include libltdl/Makefile.inc
 
-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 += \
@@ -384,6 +275,7 @@ aclocalfiles        = m4/argz.m4 m4/libtool.m4 
 ltdldatafiles  = libltdl/COPYING.LIB \
                  libltdl/README \
                  libltdl/Makefile.am \
+                 libltdl/Makefile.inc \
                  libltdl/configure.ac \
                  libltdl/aclocal.m4 \
                  libltdl/Makefile.in \
Index: libtool--devo--1.0/NEWS
===================================================================
--- libtool--devo--1.0.orig/NEWS
+++ libtool--devo--1.0/NEWS
@@ -4,6 +4,10 @@ New in 1.9h: 2005-??-??; CVS version 2.1
 * 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
Index: libtool--devo--1.0/bootstrap
===================================================================
--- libtool--devo--1.0.orig/bootstrap
+++ libtool--devo--1.0/bootstrap
@@ -89,8 +89,9 @@ set dummy `$SED -n '/AC_INIT/{s/[][,()]/
 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.
Index: libtool--devo--1.0/configure.ac
===================================================================
--- libtool--devo--1.0.orig/configure.ac
+++ libtool--devo--1.0/configure.ac
@@ -126,7 +126,7 @@ AC_SUBST([CONFIG_STATUS_DEPENDENCIES], [
 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}])
 
 
Index: libtool--devo--1.0/doc/libtool.texi
===================================================================
--- libtool--devo--1.0.orig/doc/libtool.texi
+++ libtool--devo--1.0/doc/libtool.texi
@@ -2249,11 +2249,74 @@ also specify a subdirectory name here if
 for example.  If @command{libtoolize} can't determine the target
 directory, @samp{libltdl} is used as the default.
 
address@hidden --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:
+
address@hidden
+## libltdl/Makefile.inc @r{appends to the following variables}
+## @r{so we set them here before including it:}
+BUILT_SOURCES     =
+
+noinst_LTLIBRARIES =
+lib_LTLIBRARIES           =
+EXTRA_LTLIBRARIES  =
+
+EXTRA_DIST        =
+
+CLEANFILES        =
+MOSTLYCLEANFILES   =
+
+include libltdl/Makefile.inc
address@hidden example
+
address@hidden
+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.
 
address@hidden --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}:
+
address@hidden
+AC_CONFIG_FILES([libltdl/Makefile])
address@hidden example
+
address@hidden
+and @file{Makefile.am}:
+
address@hidden
+SUBDIRS += libltdl
address@hidden example
+
address@hidden --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
address@hidden directory (or the subdirectory you put libltdl into).
+If your project uses Autoconf, you can use the supplied
address@hidden 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
Index: libtool--devo--1.0/libltdl/Makefile.inc
===================================================================
--- /dev/null
+++ libtool--devo--1.0/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 <argz.h> 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 address@hidden
+       mv address@hidden $@
+MOSTLYCLEANFILES += libltdl/argz.h \
+                   libltdl/argz.h-t
Index: libtool--devo--1.0/libtoolize.m4sh
===================================================================
--- libtool--devo--1.0.orig/libtoolize.m4sh
+++ libtool--devo--1.0/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:
 address@hidden@
 address@hidden@
@@ -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,
-- 
Gary V. Vaughan      ())_.  address@hidden,gnu.org}
Research Scientist   ( '/   http://tkd.kicks-ass.net
GNU Hacker           / )=   http://www.gnu.org/software/libtool
Technical Author   `(_~)_   http://sources.redhat.com/autobook




reply via email to

[Prev in Thread] Current Thread [Next in Thread]