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*