Hi Gary,

* Gary V. Vaughan wrote on Fri, Aug 19, 2005 at 07:38:31PM CEST:
> Ralf Wildenhues wrote:
> >* Gary V. Vaughan wrote on Tue, Apr 26, 2005 at 03:13:17PM CEST:
> 
> Thanks for the review... I've had a busy summer, so I hope you'll 
> forgive that it has taken me 3 months to respond :-(

Hehe, let's just hope your next response will take less long.

> Attached patch is taken against HEAD.

OK, good.

*snip some unproblematic stuff*
> >`make clean' fails to remove libltdl/lt__strl.lo, but it removes
> >libltdl/.libs/lt__strl.o, causing build failure.
> 
> This is a bug in automake-1.9.x with subdir objects.  As a workaround 
> I've added $(LIBOBJS) & $(LTLIBOBJS) to CLEANFILES.

OK, good.

> >`make uninstall' fails to remove anything below $prefix/share/libtool
> >and below include/libltdl.
> 
> Oops.  Forgot to match uninstall-hook against install-hook and 
> install-data-local.  Now fixed.

Hmm.  Comments inline, see attached.

*snip*
> >Your libtoolize tests all fail (1, 2, 3) because you changed `copying'
> >to `linking' (why not say `linking' only if that is what you do, i.e.
> >without `--copy'?)
> 
> They failed because of path changes.  Now fixed. (`linking' is only for 
> "ln -s" -- also "libtoolize -v" gives source path instead of dest path).

OK.

> >Somehow the test suite was not automagically updated to include
> >`standalone'.  I believe this might have been my fault.
> 
> Can't reproduce.

OK.  Forget about it then.

> >There exists $top_builddir/.deps with files "argz.Plo lt__dirent.Plo
> >lt__strl.Plo" now.  I don't know whether this is a bug (believe not).
> 
> Side effect of subdir-objects.

OK.

> >The files
> >  libltdl/Makefile{,.am,.in}
> >          configure{,.ac}
> >          aclocal.m4
> >          README
> >          config-h.in
> >          m4/lt~obsolete.m4
> >
> >are not shipped in libtool-2.1.tar.gz, and a subsequent
> >  configure
> >  make
> >from the tarball does not create any of them (it should create Makefile,
> >and everything else should be shipped, right?).
> 
> Yep.  All good. These files are all shipped correctly for me -- maybe 
> because of the other fixes I made on the way here?

Maybe.

> >I don't really like config and m4 below libltdl.  It seems ugly.
> >But that is a minor issue.
> 
> Really?  From libltdl's point of view, it owns config and m4 -- we 
> install copies of those directories to $prefix/share/libtool, and 
> libtoolize --ltdl puts them inside the libltdl it installs.  Now that 
> I've moved them here, having them in $top_srcdir (where they are only 
> used during bootstrap) seems ugly to me.

OK, functionality is more important than looks.
But to tell you the truth, the move of libtool.m4 from top to m4/,
combined with the limitations of cvs/cvsweb, have cost me hours of
searching time already (while trying to hunt down why a particular
change was made).

When you eventually commit the reorganization, I will definitely want
this in two steps: 1) move files only, 2) change files.
I know this sucks, and is fault of CVS, but as long as that's what
savannah offers, there is no other sane way.

Ah, and also libltdl/Makefile.am needs to be removed from CVS if it's to
be generated.  (It's good to see its diff now, though, made me find some
bugs in your patch.)

> >I stopped further testing after this.  It would be nice if your
> >standalone tests could run a `make distcheck' so we can be reasonably
> >sure `libltdl/Makefile.am' has everything it needs.  Once for
> >AC_LIBLTDL_CONVENIENCE and once for AC_LIBLTDL_INSTALLABLE.
> 
> The c++ template with subdir-objects autotest is failing for me right 
> now (I think this is because I need to backport another patch to my 
> local automake-1.9.6 installation -- any clue as to which one?), so I'd 
> like to address this in a separate patch once we have this one in HEAD 
> and branch-2-0...

Erm, tests/template.at does not use Automake.
Please run with -d -v, post testsuite output, to see what's happening.

> >It would also be nice (while I'm at the point of using old macro names)
> >to test whether using the old names works.  That is exactly what all
> >upgraders will hit first when going to 2.0.
> 
> ACK.
> 
> >As I am a fan of "one change per patch", I'd have liked to have the
> >- use of auxdir, m4dir
> >- move files around
> >- update all dependents, simplify libtoolize
> >- change `copying' to `linking'
> >- build libltdl from $top_builddir/Makefile
> >
> >as separate patches,
> 
> Me too.  This started out as what I thought was going to be a relatively 
> simple 'standalone libltdl' patch, that grew big before I thought to 
> split it up.  Sorry about that.

Peter Ekberg was much easier to convince, even after posting his monster
patch.  ;-)

> >they would have been easier to verify (the first
> >two separated only because of CVS limitations -- it's almost impossible
> >to trace back using `cvs annotate' if you change a file while moving at
> >the same time).
> 
> Gah!  I have been spoiled by arch.  Sorry again.

See above.

> >By the way, have you ever tried `make installcheck' with the new
> >testsuite?
> 
> Not in libtool, though I've used it often with m4's autotest suite.

Hmm.  That does not exercise libtoolize much.

> >How do you expect a backport to be able to work when bootstrapped with
> >released autoconf/automake?  IOW: what exactly do you want to backport?
> 
> If you are happy with the attached:  it'll be easier for me to show you 
> the backport patch.

No need to start working on that yet,  this patch has several issues
that make it unsuitable for application.

Also, I have not tested this patch yet, merely read it.  My last review
took several hours, I will only invest this sort of time with a patch
that has a chance of being good.

Cheers,
Ralf
standalone.at is missing from the patch -- has it changed since
the first version?

*snip ChangeLog entry*

| Index: Makefile.am
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/Makefile.am,v
| retrieving revision 1.156
| diff -u -p -r1.156 Makefile.am
| --- Makefile.am       18 Aug 2005 17:07:17 -0000      1.156
| +++ Makefile.am       19 Aug 2005 17:34:47 -0000
| @@ -22,12 +22,27 @@
|  ## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|  ## Boston, MA 02110-1301, USA.
|  
| -ACLOCAL_AMFLAGS  = -I m4
| +ACLOCAL_AMFLAGS      = -I libltdl/m4
|  
| -BUILD_SUBDIRS        = . libltdl
| -SUBDIRS              = $(BUILD_SUBDIRS)
| -DIST_SUBDIRS = $(BUILD_SUBDIRS)
| -EXTRA_DIST   =
| +DIST_SUBDIRS         = .
| +
| +BUILT_SOURCES                = libtool
| +
| +CLEANFILES           =
| +MOSTLYCLEANFILES     =
| +DISTCLEANFILES               =
| +
| +EXTRA_DIST           = 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
| +
| +auxdir                       = libltdl/config
| +m4dir                        = libltdl/m4
|  
|  # Using `cd' in backquotes may print the directory name, use this instead:
|  lt__cd               = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
| @@ -47,6 +62,7 @@ libtoolize: $(srcdir)/libtoolize.in
|       $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
|               -e 's,@aclocal_DATA\@,$(aclocalfiles),g' \
|               -e "s,@pkgltdl_files\@,$(ltdldatafiles),g" \
| +             -e "s,@pkgconfig_files\@,$(auxfiles),g" \
|               $(srcdir)/libtoolize.in > libtoolize.tmp
|       chmod a+x libtoolize.tmp
|       chmod a-w libtoolize.tmp
| @@ -58,9 +74,9 @@ EXTRA_DIST += libtoolize.m4sh
|  $(srcdir)/libtoolize.in: $(sh_files) libtoolize.m4sh Makefile.am
|       cd $(srcdir); \
|       rm -f libtoolize.in; \
| -     $(M4SH) -B ./config libtoolize.m4sh > libtoolize.in
| +     $(M4SH) -B $(auxdir) libtoolize.m4sh > libtoolize.in
|  
| -libtool: $(top_builddir)/config.status $(srcdir)/config/ltmain.sh \
| +libtool: $(top_builddir)/config.status $(srcdir)/$(auxdir)/ltmain.sh \
|        $(srcdir)/stamp-vcl
|       cd $(top_builddir) && $(SHELL) ./config.status $@
|  
| @@ -104,32 +120,21 @@ timestamp = set dummy `$(MKSTAMP) < $(sr
|         *) TIMESTAMP="" ;; \
|       esac
|  
| -sh_files     = config/general.m4sh config/getopt.m4sh
| -EXTRA_DIST     += bootstrap libtoolize.in config/ltmain.m4sh config/mkstamp \
| -               $(sh_files) stamp-vcl ChangeLog.1996 ChangeLog.1997 \
| -               ChangeLog.1998 ChangeLog.1999 ChangeLog.2000 ChangeLog.2001 \
| -               ChangeLog.2002 ChangeLog.2003
| -CLEANFILES   = libtool libtoolize \
| -               libtoolize.tmp config/ltmain.tmp m4/ltversion.tmp
| -DISTCLEANFILES =
| -
| -# These are required by libtoolize and must be executable when installed.
| -# Since _SCRIPTS gets the program transform applied we make them
| -# executable by hand
| -nobase_dist_pkgdata_DATA = config/config.guess config/config.sub \
| -     config/ltmain.sh config/install-sh
| -
| -# Everything that gets picked up by aclocal is automatically distributed,
| -# this is the list of macro files we install on the user's system.
| -aclocalfiles = m4/argz.m4 m4/libtool.m4 m4/ltdl.m4 \
| -     m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
| +sh_files     = $(auxdir)/general.m4sh $(auxdir)/getopt.m4sh
| +EXTRA_DIST     += bootstrap libtoolize.in $(auxdir)/ltmain.m4sh \
| +               $(auxdir)/mkstamp $(sh_files) stamp-vcl \
| +               ChangeLog.1996 ChangeLog.1997 ChangeLog.1998 \
| +               ChangeLog.1999 ChangeLog.2000 ChangeLog.2001 \
| +               ChangeLog.2002 ChangeLog.2003 ChangeLog.2004
| +CLEANFILES     += libtool libtoolize libtoolize.tmp \
| +               $(auxdir)/ltmain.tmp $(m4dir)/ltversion.tmp
|  
|  ## We know that $(srcdir)/ChangeLog has been edited if stamp-vcl
|  ## needs updating, so we assume we have write access to $(srcdir).
|  ## If we try to maintain ./stamp-vcl to avoid writing to a possibly
|  ## read-only $(srcdir), then when the two stamp-vcls differ, distcheck
|  ## will try to update the one in the read-only source tree it makes.
| -MKSTAMP = $(SHELL) $(srcdir)/config/mkstamp
| +MKSTAMP = $(SHELL) $(srcdir)/$(auxdir)/mkstamp
|  $(srcdir)/stamp-vcl: vcl-tmp clean-ltmain-sh ChangeLog
|  vcl-tmp:
|       @set dummy `$(MKSTAMP) < $(srcdir)/ChangeLog`; shift; \
| @@ -144,7 +149,7 @@ vcl-tmp:
|  ## source tree version in current builds.
|  clean-ltmain-sh:
|       @-test "$(srcdir)" = "$(top_builddir)" || \
| -       rm -f "$(top_builddir)/config/ltmain.sh"
| +       rm -f "$(top_builddir)/$(auxdir)/ltmain.sh"
|  
|  # We build ltversion.m4 here, instead of from config.status,
|  # because config.status is rerun each time one of configure's
| @@ -153,40 +158,189 @@ clean-ltmain-sh:
|  # a loop otherwise.
|  # Use `$(srcdir)/m4' for the benefit of non-GNU makes: this is
|  # how ltversion.m4 appears in our dependencies.
| -EXTRA_DIST += m4/ltversion.in m4/ltversion.m4
| -$(srcdir)/m4/ltversion.m4: m4/ltversion.in configure.ac $(srcdir)/stamp-vcl
| +EXTRA_DIST += $(m4dir)/ltversion.in $(m4dir)/ltversion.m4
| +$(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in configure.ac 
$(srcdir)/stamp-vcl
|       set dummy `$(MKSTAMP) < $(srcdir)/ChangeLog`; shift; \
|       cd $(srcdir); \
| -     rm -f m4/ltversion.tmp; \
| +     rm -f $(m4dir)/ltversion.tmp; \
|       serial=`echo $$1 | sed 's,^1[.],,g'`; \
|       input="ltversion.in"; \
|       $(edit) -e "s,@MACRO_REVISION\@,$$1,g" \
|               -e "s,@MACRO_SERIAL\@,$$serial,g" \
| -             m4/ltversion.in > m4/ltversion.tmp; \
| -     chmod a-w m4/ltversion.tmp; \
| -     mv -f m4/ltversion.tmp m4/ltversion.m4
| +             $(m4dir)/ltversion.in > $(m4dir)/ltversion.tmp; \
| +     chmod a-w $(m4dir)/ltversion.tmp; \
| +     mv -f $(m4dir)/ltversion.tmp $(m4dir)/ltversion.m4
|  
|  ## And for similar reasons, ltmain.sh can't be built from config.status.
|  ## !WARNING! If you edit this rule to change the contents of ltmain.sh,
| -##           you must `touch $(srcdir)/config/ltmain.in' from the
| +##           you must `touch $(srcdir)/$(auxdir)/ltmain.in' from the
|  ##           shell if you need ltmain.sh to be regenerated.  Ideally, we
|  ##           should make this rule depend on Makefile but that will break
|  ##           distcheck (at least) by rebuilding ltmain.sh in the source
|  ##           tree whenever config.status regenerates the Makefile.
| -EXTRA_DIST += config/ltmain.sh
| -$(srcdir)/config/ltmain.sh: $(sh_files) config/ltmain.m4sh configure.ac \
| +EXTRA_DIST += $(auxdir)/ltmain.sh
| +$(srcdir)/$(auxdir)/ltmain.sh: $(sh_files) $(auxdir)/ltmain.m4sh 
configure.ac \
|                               $(srcdir)/stamp-vcl
|       $(timestamp); \
|       cd $(srcdir); \
| -     rm -f config/ltmain.in config/ltmain.tmp config/ltmain.sh; \
| -     $(M4SH) -B ./config config/ltmain.m4sh > config/ltmain.in; \
| +     rm -f $(auxdir)/ltmain.in $(auxdir)/ltmain.tmp \
| +         $(auxdir)/ltmain.sh; \
| +     $(M4SH) -B $(auxdir) $(auxdir)/ltmain.m4sh \
| +         > $(auxdir)/ltmain.in; \
|       input="ltmain.m4sh"; \
|       $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
|               -e "s,@package_revision\@,$$1,g" \
| -             config/ltmain.in > config/ltmain.tmp; \
| -     rm -f config/ltmain.in; \
| -     chmod a-w config/ltmain.tmp; \
| -     mv -f config/ltmain.tmp config/ltmain.sh
| +             $(auxdir)/ltmain.in > $(auxdir)/ltmain.tmp; \
| +     rm -f $(auxdir)/ltmain.in; \
| +     chmod a-w $(auxdir)/ltmain.tmp; \
| +     mv -f $(auxdir)/ltmain.tmp $(auxdir)/ltmain.sh
| +
| +$(srcdir)/libltdl/Makefile.am: Makefile.am
| +     cd $(srcdir); \
| +     in=Makefile.am; out=libltdl/Makefile.am; \
| +     rm -f $$out; \
| +     $(SED) '/^## Makefile.am -- /,/## Boston, MA/ p; \
| +         d' $$in > $$out; \
| +     { echo 'ACLOCAL_AMFLAGS = -I m4'; \
| +       echo 'AUTOMAKE_OPTIONS = foreign'; \
| +       echo 'BUILT_SOURCES ='; \
| +       echo 'EXTRA_DIST ='; \
| +       echo 'CLEANFILES ='; \
| +       echo 'MOSTLYCLEANFILES ='; \
| +     } >> $$out; \
| +     $(SED) '/^# ### BEGIN /,/^# ### END / \
| +         { s,libltdl_,,; s,libltdl/,,; s,: libltdl/,: ,; \
| +           s,\$$(libltdl_,$$(,; p; }; \
| +         d' $$in >> $$out;
| +     chmod a-w $(srcdir)/libltdl/Makefile.am
| +
| +$(srcdir)/libltdl/Makefile.in: libltdl/Makefile.am
| +     @echo ' cd $(srcdir)/libltdl && $(AUTOMAKE) Makefile'; \
| +     cd $(srcdir)/libltdl && $(AUTOMAKE) Makefile
| +
| +
| +## -------- ##
| +## Libltdl. ##
| +## -------- ##
| +
| +# ### BEGIN libltdl/Makefile.am
| +
| +DEFS                 = -DHAVE_CONFIG_H="<$(CONFIG_H)>" -DLTDL
| +AM_CPPFLAGS          = -I. -Ilibltdl -I$(srcdir)/libltdl \
| +                       -I$(srcdir)/libltdl/libltdl
| +AM_LDFLAGS           = -no-undefined
| +VERSION_INFO         = -version-info 6:0:0
| +
| +noinst_LTLIBRARIES   = $(LT_DLLOADERS)
| +
| +if INSTALL_LTDL
| +include_HEADERS              = libltdl/ltdl.h \
| +                       libltdl/libltdl/lt_system.h \
| +                       libltdl/libltdl/lt_error.h \
| +                       libltdl/libltdl/lt_dlloader.h
| +lib_LTLIBRARIES              = libltdl/libltdl.la
| +
| +ltdlincludedir = $(includedir)/libltdl
| +install-data-hook:
| +     $(mkinstalldirs) $(DESTDIR)$(ltdlincludedir)
| +     @for f in lt_system.h lt_error.h lt_dlloader.h; do \
| +       test -f $(DESTDIR)$(includedir)/$$f || continue; \
| +       echo "mv $(DESTDIR)$(includedir)/$$f $(DESTDIR)$(ltdlincludedir)"; \
| +       mv $(DESTDIR)$(includedir)/$$f $(DESTDIR)$(ltdlincludedir); \
| +     done
| +endif

This is wrong, don't do it, please.  I am not certain I understand
what you are trying to work around here, but it seems to me you should
just call these ltdlinclude_HEADERS, and kill the install/uninstall
hooks.  Maybe you need to adjust the sed script which creates
libltdl/Makefile.am, but ATM I don't see why that should be.

| +
| +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=libltdl $(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=libltdlc $(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 [EMAIL PROTECTED]
| +     mv [EMAIL PROTECTED] $@
| +MOSTLYCLEANFILES += libltdl/argz.h \
| +                 libltdl/argz.h-t
| +
| +# ### END libltdl/Makefile.am
|  
|  
|  ## -------------- ##
| @@ -208,59 +362,66 @@ $(srcdir)/doc/notes.txt: $(srcdir)/doc/n
|  ## Installation. ##
|  ## ------------- ##
|  
| +# These are required by libtoolize and must be executable when installed.
| +# The timestamps on these files must be preserved carefully so we install,
| +# uninstall and set executable with custom rules here.
| +auxexefiles  = config/compile config/config.guess config/config.sub \
| +               config/depcomp config/install-sh config/missing
| +auxfiles     = $(auxexefiles) config/ltmain.sh
| +
| +# Everything that gets picked up by aclocal is automatically distributed,
| +# this is the list of macro files we install on the user's system.
| +aclocalfiles = m4/argz.m4 m4/libtool.m4 m4/ltdl.m4 m4/ltoptions.m4 \
| +               m4/ltsugar.m4 m4/ltversion.m4
| +
|  ## These are installed as a subdirectory of pkgdatadir so that
|  ## libtoolize --ltdl can find them later:
| -ltdldatadir          = $(pkgdatadir)/libltdl
| -ltdldatafiles                = COPYING.LIB README \
| -                       Makefile.am Makefile.in \
| -                       argz_.h argz.c \
| -                       configure.ac configure \
| -                       libltdl/lt__alloc.h \
| -                       libltdl/lt__dirent.h \
| -                       libltdl/lt__glibc.h \
| -                       libltdl/lt__private.h \
| -                          libltdl/lt__strl.h \
| -                       libltdl/lt_dlloader.h \
| -                       libltdl/lt_error.h \
| -                          libltdl/lt_system.h \
| -                       libltdl/slist.h \
| -                       loaders/dld_link.c \
| -                       loaders/dlopen.c \
| -                       loaders/dyld.c \
| -                       loaders/load_add_on.c \
| -                       loaders/loadlibrary.c \
| -                       loaders/preopen.c \
| -                       loaders/shl_load.c \
| -                       lt__alloc.c \
| -                       lt__dirent.c \
| -                       lt__strl.c \
| -                       lt_dlloader.c \
| -                       lt_error.c \
| -                       ltdl.c ltdl.h \
| -                       slist.c
| +ltdldatafiles        = libltdl/COPYING.LIB \
| +               libltdl/README \
| +               libltdl/Makefile.am \
| +               libltdl/Makefile.in \
| +               libltdl/aclocal.m4 \
| +               libltdl/config-h.in \
| +               libltdl/configure.ac \
| +               libltdl/configure \
| +               libltdl/argz_.h \
| +               libltdl/argz.c \
| +               libltdl/loaders/dld_link.c \
| +               libltdl/loaders/dlopen.c \
| +               libltdl/loaders/dyld.c \
| +               libltdl/loaders/load_add_on.c \
| +               libltdl/loaders/loadlibrary.c \
| +               libltdl/loaders/shl_load.c \
| +               libltdl/lt__dirent.c \
| +               libltdl/lt__strl.c \
| +               $(libltdl_libltdl_la_SOURCES)
|  
| -install-data-local:
| +install-data-local: libltdl/Makefile.in
|  ## Don't install over the top of an old pkgdatadir
|       -rm -rf $(DESTDIR)$(pkgdatadir)
|  ## To avoid spurious reconfiguration when the user installs these files
|  ## with libtoolize, we have to preserve their timestamps carefully:
| -     $(mkinstalldirs) $(DESTDIR)$(ltdldatadir)
| -     ( cd $(srcdir)/libltdl && $(AMTAR) chf - $(ltdldatafiles); ) \
| -       | ( umask 0 && cd $(DESTDIR)$(ltdldatadir) && $(AMTAR) xf -; )
| +     $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
| +     ( cd $(srcdir) && $(AMTAR) chf - $(ltdldatafiles); ) \
| +       | ( umask 0 && cd $(DESTDIR)$(pkgdatadir) && $(AMTAR) xf -; )
| +## And similarly copy the config auxilliary files into the master tree
| +     ( cd $(srcdir)/libltdl && $(AMTAR) chf - $(auxfiles); ) \
| +       | ( umask 0 && cd $(DESTDIR)$(pkgdatadir) && $(AMTAR) xf -; )
| +     @for f in : $(auxexefiles); do \
| +       test "X$$f" = X: && continue; \
| +       echo "chmod +x '$(DESTDIR)$(pkgdatadir)/$$f'"; \
| +       chmod +x "$(DESTDIR)$(pkgdatadir)/$$f"; \
| +     done
| +## Put a copy of the libtool m4 macros in the aclocal dir
|       $(mkinstalldirs) $(DESTDIR)$(aclocaldir)
|       @for p in $(aclocalfiles); do \
|         f=`echo "$$p" | sed 's|^.*/||'`; \
|         aclocalfiles="$$aclocalfiles $$f"; \
|       done; \
| -     ( cd $(srcdir)/m4 && $(AMTAR) chf - $$aclocalfiles; ) \
| +     ( cd $(srcdir)/$(m4dir) && $(AMTAR) chf - $$aclocalfiles; ) \
|         | ( umask 0 && cd $(DESTDIR)$(aclocaldir) && $(AMTAR) xf -; )
| -     chown -R root $(DESTDIR)$(ltdldatadir) && \
| -     chgrp -R root $(DESTDIR)$(ltdldatadir) || :

This install-data-local rule needs to be killed.  I mean it.  Read my
proposed patch to that extent
http://lists.gnu.org/archive/html/libtool/2005-08/msg00084.html
and the thread that led to it, no need to iterate the arguments yet
again.

The only reason I have not applied my proposed patch yet is that I know
it conflicts with your patch.


| -
| -install-data-hook:
| -     chmod +x $(DESTDIR)$(pkgdatadir)/config/config.guess
| -     chmod +x $(DESTDIR)$(pkgdatadir)/config/config.sub
| -     chmod +x $(DESTDIR)$(pkgdatadir)/config/install-sh
| +     chown -R root $(DESTDIR)$(pkgdatadir) && \
| +     chgrp -R root $(DESTDIR)$(pkgdatadir) || :

Kill these chown/chgrp, too.  You might need to resurrect the chmod.

|  
|  
|  ## ------------- ##
| @@ -276,11 +437,24 @@ uninstall-hook:
|         f=`echo "$$p" | sed 's|^.*/||'`; \
|         echo " rm -rf '$(DESTDIR)$(aclocaldir)/$$f'"; \
|         rm -f "$(DESTDIR)$(aclocaldir)/$$f"; \
| -     done;
| +     done
| +## Uninstall files from install-data-hook rule from INSTALL_LTDL condition:
| +     @for f in $(include_HEADERS); do \
| +       f=`echo $$f | sed 's,^libltdl/,,'`; \
| +       test -f $(DESTDIR)$(includedir)/$$f || continue; \
| +       echo "rm -f $(DESTDIR)$(includedir)/$$f"; \
| +       rm -f $(DESTDIR)$(includedir)/$$f; \
| +     done
| +## Uninstall files from install-data-local rule above:
| +     @for f in $(ltdldatafiles) $(auxfiles); do \
| +       test -f $(DESTDIR)$(pkgdatadir)/$$f || continue; \
| +       echo "rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \
| +       rm -f $(DESTDIR)$(pkgdatadir)/$$f; \
| +     done

Kill these two rules.

|  
|  
| -## Ship README.alpha only in alpha release, but renamed to README
|  dist-hook:
| +## Ship README.alpha only in alpha release, but renamed to README
|       [EMAIL PROTECTED] -f $(distdir)/README.alpha && \
|       case $(VERSION) in \
|         *[a-z]) mv $(distdir)/README.alpha $(distdir)/README ;; \
| @@ -298,6 +472,7 @@ TESTSUITE_AT      = tests/testsuite.at \
|                 tests/duplicate_members.at \
|                 tests/inherited_flags.at \
|                 tests/libtoolize.at \
| +               tests/standalone.at \
|                 tests/stresstest.at \
|                 tests/link-order.at \
|                 tests/convenience.at \
| @@ -336,6 +511,7 @@ $(srcdir)/tests/package.m4: $(srcdir)/co
|  
|  tests/atconfig: config.status
|       $(SHELL) ./config.status tests/atconfig
| +
|  DISTCLEANFILES += tests/atconfig
|  
|  CD_TESTDIR   = abs_srcdir=`$(lt__cd) $(srcdir) && pwd`; cd tests
| @@ -457,10 +633,10 @@ tests/defs: $(srcdir)/tests/defs.in
|  
|  # Use `$(srcdir)/tests' for the benefit of non-GNU makes: this is
|  # how defs.in appears in our dependencies.
| -$(srcdir)/tests/defs.in: config/general.m4sh tests/defs.m4sh Makefile.am
| +$(srcdir)/tests/defs.in: $(auxdir)/general.m4sh tests/defs.m4sh Makefile.am
|       cd $(srcdir); \
|       rm -f tests/defs.in; \
| -     $(M4SH) -B ./config tests/defs.m4sh > tests/defs.in
| +     $(M4SH) -B $(auxdir) tests/defs.m4sh > tests/defs.in
|  
|  # We need to remove any files that the above tests created.
|  clean-local-legacy:
| Index: Makefile.maint
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/Makefile.maint,v
| retrieving revision 1.11
| diff -u -p -r1.11 Makefile.maint
| --- Makefile.maint    22 Apr 2005 10:10:29 -0000      1.11
| +++ Makefile.maint    19 Aug 2005 17:34:48 -0000
| @@ -1,6 +1,6 @@
|  ## Makefile.maint -- Makefile rules for libtool maintainers -*-Makefile-*-
|  ##
| -## Copyright (C) 2004 Free Software Foundation
| +## Copyright (C) 2004, 2005 Free Software Foundation
|  ##
|  ## 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
| @@ -31,11 +31,11 @@ Makefile:
|  
|  TEXI2HTML = texi2html
|  
| -$(top_srcdir)/commit: $(top_srcdir)/config/mailnotify clcommit.m4sh
| +$(srcdir)/commit: $(srcdir)/$(auxdir)/mailnotify clcommit.m4sh
|       $(timestamp); \
| -     cd $(top_srcdir); \
| +     cd $(srcdir); \
|       rm -f commit commit.in commit.tmp; \
| -     $(M4SH) -B ./config clcommit.m4sh > commit.in; \
| +     $(M4SH) -B $(auxdir) clcommit.m4sh > commit.in; \
|       input="clcommit.m4sh"; \
|       $(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" commit.in > commit.tmp; \
|       chmod a+x commit.tmp; \
| @@ -43,9 +43,9 @@ $(top_srcdir)/commit: $(top_srcdir)/conf
|       mv -f commit.tmp commit; \
|       rm -f commit.in
|  
| -$(top_srcdir)/config/mailnotify: config/mailnotify.m4sh
| +$(srcdir)/$(auxdir)/mailnotify: $(auxdir)/mailnotify.m4sh
|       $(timestamp); \
| -     cd $(top_srcdir)/config; \
| +     cd $(srcdir)/$(auxdir); \
|       rm -f mailnotify mailnotify.in mailnotify.tmp; \
|       $(M4SH) -B . mailnotify.m4sh > mailnotify.in; \
|       input="mailnotify.m4sh"; \
| @@ -119,10 +119,10 @@ WGETSGO = $(WGET) http://savannah.gnu.or
|  ## FIXME should be a lot more here
|  FETCHFILES = \
|  ./INSTALL \
| -config/install-sh \
| -config/config.guess \
| -config/config.sub \
| -config/texinfo.tex
| +$(auxdir)/install-sh \
| +$(auxdir)/config.guess \
| +$(auxdir)/config.sub \
| +$(auxdir)/texinfo.tex
|  
|  ## Fetch the latest versions of files we care about.
|  .PHONY: fetch
| @@ -238,7 +238,7 @@ delta-xdelta: prev-tarball new-tarball g
|  
|  .PHONY: web-manual
|  web-manual:
| -     @$(LN_S) $(top_srcdir)/doc/libtool.texi doc/manual.texi
| +     @$(LN_S) $(srcdir)/doc/libtool.texi doc/manual.texi

Now that I see it: This rule is broken, the target may not have a
directory component.  Do like this:
+       @cd doc && $(LN_S) $(srcdir)/doc/libtool.texi manual.texi

|       $(TEXI2HTML) -I doc -monolithic -number -verbose doc/manual.texi
|       @mv doc/manual.html manual.html
|       @rm -f doc/manual.texi
| Index: NEWS
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/NEWS,v
| retrieving revision 1.182
| diff -u -p -r1.182 NEWS
| --- NEWS      8 Aug 2005 09:23:57 -0000       1.182
| +++ NEWS      19 Aug 2005 17:34:48 -0000
| @@ -11,6 +11,7 @@ New in 2.1b: 2005-??-??; CVS version 2.1
|  * Allow shell special characters like `$' in source file names, but not
|    in object names, to enhance GCJ support.
|  * Detection of compiler wrappers like distcc/ccache and $host_alias prefix.
| +* Support for libltdl in non-autotooled projects.

Erm, this used to work with branch-1-5.
So, it's not a new feature, it's fixing a regression.

|  * Initial Support for FC (modern Fortran).
|  
|  New in 1.9h: 2004-??-??; CVS version 1.9g, Libtool team:
| Index: bootstrap
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/bootstrap,v
| retrieving revision 1.63
| diff -u -p -r1.63 bootstrap
| --- bootstrap 22 Apr 2005 10:10:29 -0000      1.63
| +++ bootstrap 19 Aug 2005 17:34:48 -0000
| @@ -39,6 +39,19 @@ test -f ./configure.ac || {
|    exit 1
|  }
|  
| +
| +# Extract auxdir and m4dir from configure.ac:
| +my_sed_traces='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,,;
| +     /AC_CONFIG_AUX_DIR[^_]/  {
| +         s,^.*AC_CONFIG_AUX_DIR([[   ]*\([^])]*\).*$,auxdir=\1,; p;
| +        };
| +     /AC_CONFIG_MACRO_DIR/   {
| +         s,^.*AC_CONFIG_MACRO_DIR([[         ]*\([^])]*\).*$,m4dir=\1,; p;
| +        };
| +     d;'
| +eval `cat configure.ac 2>/dev/null | $SED "$my_sed_traces"`
| +
| +
|  # Upgrade caveat:
|  cat <<'EOF'
|  WARNING: If bootstrapping with this script fails, it may be due to an
| @@ -52,10 +65,10 @@ EOF
|  rm -rf `find . -path './{arch}' -prune -o \( -name autom4te.cache -o -name 
libtool \) -print`
|  
|  # Delete stale files from previous libtool versions.
| -rm -f acinclude.m4 config/ltmain.sh libltdl/config.h
| +rm -f acinclude.m4 libltdl/config.h
|  
|  if test -z "$reconfdirs"; then
| -  reconfdirs=". `ls -1d tests/*demo tests/*demo[0-9]`"
| +  reconfdirs=". libltdl `ls -1d tests/*demo tests/*demo[0-9]`"
|  fi
|  
|  # Extract the package name and version number from configure.ac:
| @@ -71,13 +84,14 @@ test -f Makefile \
|  # We don't have all the substitution values to build ltmain.sh from this
|  # script yet, but we need config/ltmain.sh for the libtool commands in
|  # configure, and ltversion.m4 to generate configure in the first place:
| -rm -f ./config/ltmain.sh ./m4/ltversion.m4
| +rm -f $auxdir/ltmain.sh $m4dir/ltversion.m4
|  
| -$MAKE ./config/ltmain.sh ./doc/notes.txt ./m4/ltversion.m4 ./libtoolize.in \
| -    ./tests/defs.in ./tests/package.m4 ./tests/testsuite \
| +$MAKE $auxdir/ltmain.sh $m4dir/ltversion.m4 ./doc/notes.txt \
| +    ./libtoolize.in ./tests/defs.in ./tests/package.m4 \
| +    ./tests/testsuite ./libltdl/Makefile.am \
|      srcdir=. top_srcdir=. PACKAGE="$2" VERSION="$3" \
|      PACKAGE_BUGREPORT="[EMAIL PROTECTED]" M4SH="$AUTOM4TE --language=m4sh" \
| -    AUTOTEST="$AUTOM4TE --language=autotest" MAKEINFO="$MAKEINFO"
| +    AUTOTEST="$AUTOM4TE --language=autotest" SED="$SED" MAKEINFO="$MAKEINFO"
|  
|  test -f clcommit.m4sh && $MAKE -f Makefile.maint commit \
|      srcdir=. top_srcdir=. PACKAGE="$2" VERSION="$3" M4SH="$AUTOM4TE -l m4sh" 
\
| @@ -86,25 +100,33 @@ test -f clcommit.m4sh && $MAKE -f Makefi
|  rm -f Makefile
|  
|  # Make a dummy libtoolize script for autoreconf:
| -test -f clcommit.m4sh && cat > ./config/libtoolize <<'EOF'
| +test -f clcommit.m4sh && cat > $auxdir/libtoolize <<'EOF'
|  #! /bin/sh
|  # This is a dummy file for bootstrapping CVS libtool.
|  echo "$0: Bootstrap detected, no files installed." | sed 's,^.*/,,g'
|  exit 0
|  EOF
| -chmod 755 ./config/libtoolize
| +chmod 755 $auxdir/libtoolize
|  
|  # Running the installed `libtoolize' will trash the local (newer) libtool.m4
|  # among others.  Call the dummy script we made earlier.
| -LIBTOOLIZE=`pwd`/config/libtoolize
| +LIBTOOLIZE=`pwd`/$auxdir/libtoolize
|  export LIBTOOLIZE
|  
|  for sub in $reconfdirs; do
|    $AUTORECONF --force --verbose --install $sub
|  done
|  
| +# Autoheader valiantly tries to prevent needless reconfigurations by
| +# not changing the timestamp of config-h.in unless the file contents
| +# are updated.  Unfortunately config-h.in depends on aclocal.m4 which
| +# *is* updated, so running 'libtoolize --ltdl=. && configure && make'
| +# causes autoheader to be called... undesireable for users that do not
| +# have it!  Fudge the timestamp to prevent that:
| +sleep 2 && touch libltdl/config-h.in
| +
|  # Remove our dummy libtoolize
| -rm -f ./config/libtoolize
| +rm -f $auxdir/libtoolize
|  
|  # These files can cause an infinite configure loop if left behind.
|  rm -f Makefile libltdl/Makefile libtool vcl.tmp
| @@ -112,7 +134,7 @@ rm -f Makefile libltdl/Makefile libtool 
|  # This file is misgenerated earlier in bootstrap to satisfy automake 1.9.1
|  # and earlier, but has a new enough timestamp to not be updated.  Force it
|  # to be regenerated at make-time with proper substitutions in place:
| -touch config/ltmain.in
| +touch $auxdir/ltmain.in
|  
|  # Commit script caveat:
|  cat <<'EOF'
| @@ -120,7 +142,7 @@ WARNING: You might want to regenerate `c
|  WARNING: after you have run `configure' to discover the real whereabouts
|  WARNING: of `sed', `grep' etc. like this:
|  WARNING:
| -WARNING:      rm -f config/mailnotify; make -f Makefile.maint commit
| +WARNING:      rm -f $auxdir/mailnotify; make -f Makefile.maint commit
|  EOF
|  
|  exit 0
| Index: configure.ac
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/configure.ac,v
| retrieving revision 1.70
| diff -u -p -r1.70 configure.ac
| --- configure.ac      8 Aug 2005 09:23:57 -0000       1.70
| +++ configure.ac      19 Aug 2005 17:34:48 -0000
| @@ -27,7 +27,9 @@ dnl Oldest automake required for bootstr
|  AC_INIT([libtool], [2.1a], [EMAIL PROTECTED])
|  AC_CONFIG_HEADERS([config.h:config-h.in])
|  AC_CONFIG_SRCDIR([libtoolize.in])
| -AC_CONFIG_AUX_DIR([config])
| +AC_CONFIG_AUX_DIR([libltdl/config])
| +AC_CONFIG_MACRO_DIR([libltdl/m4])
| +AC_CONFIG_LIBOBJ_DIR([libltdl])
|  
|  
|  ## ------------------------ ##
| @@ -113,7 +115,7 @@ AC_SUBST([package_revision])
|  
|  dnl These are bootstrap requirements, once built, libtool may work with
|  dnl much older releases of autoconf and automake.  See release notes.
| -AM_INIT_AUTOMAKE([1.8 gnits dist-bzip2])dnl We use auto-m4_including
| +AM_INIT_AUTOMAKE([1.8 gnits subdir-objects dist-bzip2])

Not true.  subdir-objects are Automake-1.9 stuff.

|  
|  dnl We use m4sh to generate libtool's portable shell scripts
|  AC_SUBST([M4SH], ['$(AUTOM4TE) --language=m4sh'])
| @@ -155,13 +157,14 @@ AC_SUBST([DIST_MAKEFILE_LIST])
|  # a good C compiler: if the following C++ tests fail, the whole libtool
|  # build fails!
|  AC_PROG_CC
| +AM_PROG_CC_C_O
|  AC_PROG_CPP
|  
|  ## ----------------------- ##
|  ## Libtool initialisation. ##
|  ## ----------------------- ##
|  LT_INIT([dlopen win32-dll])
| -LTDL_INIT
| +LTDL_INIT([libltdl])
|  
|  # Enable all the language support we can
|  LT_LANG(C++)
| @@ -184,5 +187,5 @@ AM_CONDITIONAL(HAVE_RC, [test -n "[$]_LT
|  ## -------- ##
|  ## Outputs. ##
|  ## -------- ##
| -AC_CONFIG_FILES([Makefile libltdl/Makefile])
| +AC_CONFIG_FILES([Makefile])
|  AC_OUTPUT
| Index: libtoolize.m4sh
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/libtoolize.m4sh,v
| retrieving revision 1.30
| diff -u -p -r1.30 libtoolize.m4sh
| --- libtoolize.m4sh   30 Apr 2005 09:30:13 -0000      1.30
| +++ libtoolize.m4sh   19 Aug 2005 17:34:49 -0000
| @@ -73,16 +73,15 @@ opt_install=false
|  opt_link=:
|  opt_debug=:
|  
| +seen_autoconf=false
|  seen_libtool=false
|  seen_ltdl=false
|  
| -# Collect flags to pass into libltdl libtoolize
| -libtoolize_flags=
| -
|  # Locations for important files:
|  [EMAIL PROTECTED]@
|  [EMAIL PROTECTED]@
|  [EMAIL PROTECTED]@
| [EMAIL PROTECTED]@
|  [EMAIL PROTECTED]@
|  auxdir=
|  m4dir=
| @@ -103,12 +102,9 @@ configure_ac=configure.in
|      opt="$1"
|      shift
|      case $opt in
| -      --copy|-c)     opt_link=false
| -                             libtoolize_flags="$libtoolize_flags --copy"
| -                     ;;
| +      --copy|-c)     opt_link=false ;;
|  
|        --debug)               func_echo "enabling shell trace mode"
| -                             libtoolize_flags="$libtoolize_flags --debug"
|                       opt_debug='set -x'
|                       $opt_debug
|                       ;;
| @@ -121,16 +117,11 @@ configure_ac=configure.in
|                         MKDIR="$ECHO $MKDIR"
|                         TAR="$ECHO $TAR"
|                       fi
| -                             libtoolize_flags="${libtoolize_flags} --dry-run"
|                       ;;
|  
| -      --force|-f)    opt_force=:
| -                             libtoolize_flags="${libtoolize_flags} --force"
| -                     ;;
| +      --force|-f)    opt_force=: ;;
|  
| -      --install|-i)  opt_install=:
| -                             libtoolize_flags="${libtoolize_flags} --install"
| -                     ;;
| +      --install|-i)  opt_install=: ;;
|  
|        --ltdl)                ltdldir=libltdl
|                               if test "$#" -gt 0; then
| @@ -143,12 +134,9 @@ configure_ac=configure.in
|  
|        --quiet|--automake|-q) # --automake is for 1.5 compatibility
|                       opt_quiet=:
| -                             libtoolize_flags="${libtoolize_flags} --quiet"
|                       ;;
|  
| -      --verbose|-v)  opt_verbose=:
| -                             libtoolize_flags="${libtoolize_flags} --verbose"
| -                     ;;
| +      --verbose|-v)  opt_verbose=: ;;
|  
|        # Separate optargs to long options:
|        --*=*)
| @@ -226,18 +214,22 @@ func_copy_cb ()
|      test -f "$my_srcdir/$my_file" || \
|        { func_error "\`$my_file' not found in \`$my_srcdir'"; return; }
|  
| -    func_mkdir_p "$my_destdir"
| +    case $opt_verbose in
| +      false) my_copy_msg="file \`$my_destdir/$my_file'"     ;;
| +      *)     my_copy_msg="file from \`$my_srcdir/$my_file'" ;;
| +    esac
| +    func_mkdir_p `$ECHO "X$my_destdir/$my_file" | $Xsed -e "$dirname"`
|  
|      $RM "$my_destdir/$my_file"
|      if $opt_link && $LN_S "$my_srcdir/$my_file" "$my_destdir/$my_file"; then
| -      $opt_quiet || func_echo "copying file \`$my_destdir/$my_file'"
| +      $opt_quiet || func_echo "linking $my_copy_msg"
|        copy_return_status=0
|      elif { ( cd "$my_srcdir" 2>/dev/null && $TAR chf - "$my_file" 
2>/dev/null; ) \
|          | ( umask 0 && cd "$my_destdir" 2>/dev/null && "$TAR" xf - 
>/dev/null 2>&1; ); } ; then
| -      $opt_quiet || func_echo "copying file \`$my_destdir/$my_file'"
| +      $opt_quiet || func_echo "copying $my_copy_msg"
|        copy_return_status=0
|      elif $CP -p "$my_srcdir/$my_file" "$my_destdir/$my_file"; then
| -      $opt_quiet || func_echo "copying file \`$my_destdir/$my_file'"
| +      $opt_quiet || func_echo "copying $my_copy_msg"
|        copy_return_status=0
|      else
|        func_error "can not copy \`$my_srcdir/$my_file' to \`$my_destdir/'"
| @@ -349,18 +341,19 @@ func_scan_files ()
|      $opt_debug
|      # Prefer configure.ac to configure.in
|      test -f configure.ac && configure_ac=configure.ac
| -    test -f "$configure_ac" \
| -        || func_fatal_help "\`$configure_ac' does not exist"
| +    test -f "$configure_ac" || configure_ac=
|  
|      # Set local variables to reflect contents of configure.ac
| -    my_uses_autoconf=false
|      my_sed_scan_configure_ac='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,,;
| -     /AC_INIT/ { s,^.*$,my_uses_autoconf=:,; p; };
| +     /AC_INIT/ { s,^.*$,seen_autoconf=:,; p; };
|       d'
| -    eval `$SED "$my_sed_scan_configure_ac" "$configure_ac"`
| +    test -z "$configure_ac" \
| +        || eval `$SED "$my_sed_scan_configure_ac" "$configure_ac"`
|  
| -    $my_uses_autoconf || {
| -        func_verbose "$configure_ac: not using Autoconf"
| +    $seen_autoconf || {
| +     my_configure_ac=
| +     test -n "$configure_ac" && my_configure_ac="$configure_ac: "
| +        func_verbose "${my_configure_ac}not using Autoconf"
|       return
|      }
|  
| @@ -751,6 +744,10 @@ func_install_update ()
|  func_check_macros ()
|  {
|      $opt_debug
| +
| +    $seen_autoconf \
| +      || return
| +
|      # Don't trace for this, we're just checking the user didn't invoke it
|      # directly from configure.ac.
|      $SED 's,[d]nl .*$,,; s,# .*$,,' "$configure_ac" | grep AC_PROG_RANLIB \
| @@ -801,6 +798,9 @@ func_massage_pkgltdl_files ()
|      # Massage a value for pkgltdl_files from the value used in Makefile.am
|      for my_filename in @pkgltdl_files@; do
|  
| +      # Strip surplus leading 'libltdl/':
| +      my_filename=`expr "X$my_filename" : 'Xlibltdl/\(.*\)'`
| +
|        # ignore excluded filenames
|        if test -n "$my_glob_exclude"; then
|          eval 'case $my_filename in '$my_glob_exclude') continue ;; esac'
| @@ -818,6 +818,35 @@ func_massage_pkgltdl_files ()
|  }
|  
|  
| +# func_massage_pkgconfig_files [glob_exclude]
| +# @pkgconfig_files\@ is substituted as per its value in Makefile.am; this
| +# function massages it into a suitable format for func_copy_some_files.
| +func_massage_pkgconfig_files ()
| +{
| +    pkgconfig_files= # GLOBAL VAR
| +
| +    my_glob_exclude="$1"
| +
| +    # Massage a value for pkgconfig_files from the value used in Makefile.am
| +    for my_filename in @pkgconfig_files@; do
| +
| +      # ignore excluded filenames
| +      if test -n "$my_glob_exclude"; then
| +        eval 'case $my_filename in '$my_glob_exclude') continue ;; esac'
| +      fi
| +
| +      # ignore duplicates
| +      case :$pkgconfig_files: in
| +        *:$my_filename:*) ;;
| +     *) pkgconfig_files="$pkgconfig_files:$my_filename" ;;
| +      esac
| +    done
| +
| +    # strip spurious leading `:'
| +    pkgconfig_files=`$ECHO "X$pkgconfig_files" | $Xsed -e 's,^:*,,'`
| +}
| +
| +
|  # func_nonemptydir_p dirvar
|  # DIRVAR is the name of a variable to evaluate.  Unless DIRVAR names
|  # a directory that exists and is non-empty abort with a diagnostic.
| @@ -846,13 +875,16 @@ func_nonemptydir_p ()
|  
|    # Allow the user to override the master libtoolize repository:
|    if test -n "$_lt_pkgdatadir"; then
| -    pkgdatadir="$_lt_pkgdatadir"
| -    aclocaldir="$_lt_pkgdatadir/m4"
| +    pkgltdldir="$_lt_pkgdatadir"
| +    pkgdatadir="$_lt_pkgdatadir/libltdl"
| +    aclocaldir="$_lt_pkgdatadir/libltdl/m4"
|    fi
| +  func_nonemptydir_p pkgltdldir
|    func_nonemptydir_p pkgdatadir
|    func_nonemptydir_p aclocaldir
|  
|    func_massage_pkgltdl_files
| +  func_massage_pkgconfig_files
|  
|    # libtool.m4 and ltdl.m4 are handled specially below
|    func_massage_aclocal_DATA 'libtool.m4|ltdl.m4'
| @@ -865,24 +897,38 @@ func_nonemptydir_p ()
|    # Copy all the files from installed libltdl to this project, if the
|    # user specified `--ltdl'.
|    if test -n "$ltdldir"; then
| -    func_copy_some_files "$pkgltdl_files" "$pkgdatadir/libltdl" "$ltdldir"
| +    func_copy_some_files "$pkgltdl_files" "$pkgltdldir/libltdl" "$ltdldir"
|  
| -    # libtoolize the newly copied libltdl tree
| -    ( cd "$ltdldir" && eval "$progpath" $libtoolize_flags ) \
| -      || exit $EXIT_FAILURE
| -  fi
| +    # Unless we share CONFIG_MACRO_DIR with our parent project,
| +    # copy macros here.
| +    if test "$ltdldir/m4" != "$m4dir"; then
| +      func_copy_some_files "$pkgmacro_files:libtool.m4:ltdl.m4" \
| +        "$aclocaldir" "$ltdldir/m4"
| +    fi
|  
| -  # Copy all the installed utility files to the auxiliary directory if
| -  # `--install' was passed, or else copy just ltmain.sh.
| -  $opt_quiet || if test "$auxdir" != .; then
| -    func_echo "putting files in AC_CONFIG_AUX_DIR, \`$auxdir'."
| +    # Unless we share CONFIG_AUX_DIR with our parent project,
| +    # copy config aux files into libltdl.
| +    if test "$ltdldir/config" != "$auxdir"; then
| +      func_copy_some_files "$pkgconfig_files" "$pkgdatadir" "$ltdldir"
| +    fi
|    fi
| -  if $opt_install; then
| -    func_config_update config.guess "$pkgdatadir/config" "$auxdir"
| -    func_config_update config.sub   "$pkgdatadir/config" "$auxdir"
| -    func_install_update install-sh  "$pkgdatadir/config" "$auxdir"
| +
| +  # If they are newer, copy all the installed utility files to the
| +  # auxiliary directory if `--install' was passed, or else copy just
| +  # ltmain.sh.
| +  if test -n "$auxdir"; then
| +    $opt_quiet || if test "$auxdir" != .; then
| +      func_echo "putting files in AC_CONFIG_AUX_DIR, \`$auxdir'."
| +    fi
| +    if $opt_install; then
| +      func_config_update config.guess "$pkgdatadir/config" "$auxdir"
| +      func_config_update config.sub   "$pkgdatadir/config" "$auxdir"
| +      func_install_update install-sh  "$pkgdatadir/config" "$auxdir"
| +    fi
| +    func_ltmain_update ltmain.sh "$pkgdatadir/config" "$auxdir"
| +  else
| +    func_verbose "AC_CONFIG_AUX_DIR not defined, not copying libtool 
auxilliary files."
|    fi
| -  func_ltmain_update ltmain.sh "$pkgdatadir/config" "$auxdir"
|  
|    # Copy libtool's m4 macros to the macro directory, if they are newer.
|    if test -n "$m4dir"; then
| @@ -901,6 +947,15 @@ func_nonemptydir_p ()
|        "$m4dir" func_serial_update
|    else
|      func_verbose "AC_CONFIG_MACRO_DIR not defined, not copying libtool macro 
files."
| +  fi
| +
| +  # Offer some suggestions for avoiding duplicate files in a project
| +  # that uses libltdl:
| +  if test -n "$ltdldir" && $seen_autoconf; then
| +    $opt_quiet || test "$ltdldir/config" = "$auxdir" || \
| +      func_echo "consider using \`AC_CONFIG_AUX_DIR([[$ltdldir/config]])' in 
$configure_ac"
| +    $opt_quiet || test "$ltdldir/m4" = "$m4dir" || \
| +      func_echo "consider using \`AC_CONFIG_MACRO_DIR([[$ltdldir/m4]])' in 
$configure_ac"
|    fi
|  }
|  
| Index: libltdl/Makefile.am
| ===================================================================
| RCS file: /cvsroot/libtool/libtool/libltdl/Makefile.am,v
| retrieving revision 1.82
| diff -u -p -r1.82 Makefile.am
| --- libltdl/Makefile.am       28 Jul 2005 10:59:32 -0000      1.82
| +++ libltdl/Makefile.am       19 Aug 2005 17:34:49 -0000
| @@ -1,13 +1,17 @@
| -## Process this file with automake to produce Makefile.in
| +## Makefile.am -- Process this file with automake to produce Makefile.in
|  ##
| -## Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005
| -## Free Software Foundation, Inc.
| +## 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
| @@ -17,56 +21,67 @@
|  ## 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.
| -
| -BUILT_SOURCES                =
| -MOSTLYCLEANFILES     =
| -EXTRA_DIST           = configure.ac
| -
| -AUTOMAKE_OPTIONS     = foreign
| -ACLOCAL_AMFLAGS              = -I m4
| +ACLOCAL_AMFLAGS = -I m4
| +AUTOMAKE_OPTIONS = foreign
| +BUILT_SOURCES =
| +EXTRA_DIST =
| +CLEANFILES =
| +MOSTLYCLEANFILES =
| +# ### BEGIN Makefile.am
|  
|  DEFS                 = -DHAVE_CONFIG_H="<$(CONFIG_H)>" -DLTDL
| -AM_CPPFLAGS          = -I. -I$(srcdir) -I$(srcdir)/libltdl
| +AM_CPPFLAGS          = -I. -Ilibltdl -I$(srcdir)/libltdl \
| +                       -I$(srcdir)/libltdl
|  AM_LDFLAGS           = -no-undefined
|  VERSION_INFO         = -version-info 6:0:0
|  
|  noinst_LTLIBRARIES   = $(LT_DLLOADERS)
|  
|  if INSTALL_LTDL
| -nobase_include_HEADERS       = ltdl.h \
| -                       libltdl/lt_system.h libltdl/lt_error.h \
| +include_HEADERS              = ltdl.h \
| +                       libltdl/lt_system.h \
| +                       libltdl/lt_error.h \
|                         libltdl/lt_dlloader.h
|  lib_LTLIBRARIES              = libltdl.la
| +
| +ltdlincludedir = $(includedir)/libltdl
| +install-data-hook:
| +     $(mkinstalldirs) $(DESTDIR)$(ltdlincludedir)
| +     @for f in lt_system.h lt_error.h lt_dlloader.h; do \
| +       test -f $(DESTDIR)$(includedir)/$$f || continue; \
| +       echo "mv $(DESTDIR)$(includedir)/$$f $(DESTDIR)$(ltdlincludedir)"; \
| +       mv $(DESTDIR)$(includedir)/$$f $(DESTDIR)$(ltdlincludedir); \
| +     done
|  endif
|  
|  if CONVENIENCE_LTDL
|  noinst_LTLIBRARIES     += libltdlc.la
|  endif
|  
| -## !!NOTE!! Be sure to update ../Makefile.am:ltdldatafiles if you
| -##          make any changes here:
| -libltdl_la_SOURCES   = libltdl/lt__alloc.h \
| +libltdl_la_SOURCES = libltdl/lt__alloc.h \
|                         libltdl/lt__dirent.h \
|                         libltdl/lt__glibc.h \
|                         libltdl/lt__private.h \
| -                          libltdl/lt__strl.h \
| +                       libltdl/lt__strl.h \
|                         libltdl/lt_dlloader.h \
|                         libltdl/lt_error.h \
| -                          libltdl/lt_system.h \
| +                       libltdl/lt_system.h \
|                         libltdl/slist.h \
|                         loaders/preopen.c \
|                         lt__alloc.c \
|                         lt_dlloader.c \
|                         lt_error.c \
| -                       ltdl.c ltdl.h \
| +                       ltdl.c \
| +                       ltdl.h \
|                         slist.c
| -libltdl_la_CPPFLAGS  = -DLTDLOPEN=$(LTDLOPEN) $(AM_CPPFLAGS)
| +
| +libltdl_la_CPPFLAGS  = -DLTDLOPEN=libltdl $(AM_CPPFLAGS)

Hey, don't break bugs we have fixed already!
http://lists.gnu.org/archive/html/libtool-patches/2005-07/msg00107.html

|  libltdl_la_LDFLAGS   = $(AM_LDFLAGS) $(VERSION_INFO) $(LT_DLPREOPEN)
|  libltdl_la_LIBADD    = $(LTLIBOBJS)
| -libltdl_la_DEPENDENCIES      = $(LT_DLLOADERS) $(LTLIBOBJS) $(BUILT_SOURCES)
| +libltdl_la_DEPENDENCIES      = $(LT_DLLOADERS) $(LTLIBOBJS)
|  
|  libltdlc_la_SOURCES  = $(libltdl_la_SOURCES)
| -libltdlc_la_CPPFLAGS = -DLTDLOPEN=$(LTDLOPEN)c $(AM_CPPFLAGS)
| +libltdlc_la_CPPFLAGS = -DLTDLOPEN=libltdlc $(AM_CPPFLAGS)

Ditto.

|  libltdlc_la_LDFLAGS  = $(AM_LDFLAGS) $(LT_DLPREOPEN)
|  libltdlc_la_LIBADD   = $(libltdl_la_LIBADD)
|  libltdlc_la_DEPENDENCIES= $(libltdl_la_DEPENDENCIES)
| @@ -75,8 +90,12 @@ libltdlc_la_DEPENDENCIES= $(libltdl_la_D
|  ## 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    = dlopen.la dld_link.la dyld.la load_add_on.la \
| -                       loadlibrary.la shl_load.la
| +EXTRA_LTLIBRARIES            = dlopen.la \
| +                               dld_link.la \
| +                               dyld.la \
| +                               load_add_on.la \
| +                               loadlibrary.la \
| +                               shl_load.la
|  
|  dlopen_la_SOURCES    = loaders/dlopen.c
|  dlopen_la_LDFLAGS    = -module -avoid-version
| @@ -100,16 +119,21 @@ shl_load_la_LDFLAGS     = -module -avoid-ver
|  shl_load_la_LIBADD   = $(LIBADD_SHL_LOAD)
|  
|  ## Make sure these will be cleaned even when they're not built by default:
| -CLEANFILES           = libltdl.la libltdlc.la libdlloader.la
| +CLEANFILES                  += libltdl.la \
| +                               libltdlc.la \
| +                               libdlloader.la
| +
| +## Automake-1.9.6 doesn't clean subdir AC_LIBOBJ compiled objects
| +## automatically:
| +CLEANFILES                  += $(LIBOBJS) $(LTLIBOBJS)
|  
|  
|  ## --------------------------- ##
|  ## Gnulib Makefile.am snippets ##
|  ## --------------------------- ##
|  
| -## ((( gnulib module argz
| -BUILT_SOURCES += $(ARGZ_H)
| -EXTRA_DIST += argz_.h
| +BUILT_SOURCES        += $(ARGZ_H)
| +EXTRA_DIST   += 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.
| @@ -117,5 +141,7 @@ all-local $(lib_OBJECTS): $(ARGZ_H)
|  argz.h: argz_.h
|       cp $(srcdir)/argz_.h [EMAIL PROTECTED]
|       mv [EMAIL PROTECTED] $@
| -MOSTLYCLEANFILES += argz.h argz.h-t
| -## ))) gnulib module argz
| +MOSTLYCLEANFILES += argz.h \
| +                 argz.h-t
| +
| +# ### END Makefile.am

*snip rest that seems OK*

Reply via email to