Re: building m4 master HEAD with Libtool HEAD [WAS FYI: 333-gary-refactor-LTDL_INIT.patch]
"Gary V. Vaughan" <[email protected]>
| Newsgroups | gmane.comp.gnu.m4.patches,gmane.comp.gnu.libtool.patches |
|---|---|
| Message-ID | <[email protected]> |
Hi Eric,
On 23 Jan 2008, at 14:30, Eric Blake wrote:
> According to Ralf Wildenhues on 1/7/2008 1:40 PM:
> |
> | Well, I finally got done with my look over this, so you may want to
> | consider it first. And when you're done and bored again, I will
> post a
> | few test failures to ponder over, ok? ;-)
>
> I haven't looked at this patch in detail, but I decided to give it a
> spin
> and convert M4 head to use nonrecursive mode. Following the
> examples from
> the documentation, I updated configure.ac to include this snippet:
>
> LT_PREREQ([2.1a])
> LT_CONFIG_LTDL_DIR([ltdl])
> LT_INIT([shared dlopen win32-dll])
> LTDL_INIT([nonrecursive convenience])
> [[...]]
> Since you are more familiar with the recent Libtool patch: Any ideas
> why,
> or how to fix libtool to recognize that M4 is using a custom name
> for the
> libtool files (ltdl, not libltdl)? I may get around to it, but it
> will
> take me longer to come up to speed.
Yes, libtoolize was more or less ignoring the libtool mode setting. And
ltdl.m4 had missed some important corner cases. :-(
> At any rate, here's the current state of the patch for M4, for
> reproducing
> this.
Thanks. If you wait until my libtool patches 349 and 350 are
committed (or
apply them to your local libtool and reinstall), I reworked your patch
as
follows such that m4 now builds with a nonrecursive mode libltdl.
(No ChangeLog, but feel free to write one and commit it when the libtool
patch queue is empty again)
Cheers,
Gary
diff --git a/Makefile.am b/Makefile.am
index e79210c..65cb0ef 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -23,34 +23,44 @@
config_aux_dir = build-aux
config_macro_dir= ltdl/m4
-SUBDIRS = ltdl po gnu tests/gnu .
+SUBDIRS = po gnu tests/gnu .
ACLOCAL_AMFLAGS = -I ltdl/m4
AUTOMAKE_OPTIONS = nostdinc
-AM_CPPFLAGS = -I. -I$(srcdir) \
- -Ignu -I$(srcdir)/gnu \
- -Im4 -I$(srcdir)/m4 \
- $(LTDLINCL)
+
+# Prime variables that will be added to by libtool.
+AM_CPPFLAGS = -Ignu -I$(srcdir)/gnu \
+ -Im4 -I$(srcdir)/m4
+EXTRA_DIST = bootstrap \
+ $(config_aux_dir)/mkstamp \
+ $(config_macro_dir)/gnulib-cache.m4
+
# FIXME - the -export-symbols-regex ".*" is a hack to work around
the
# fact that on cygwin, the convenience library libltdl exports
symbols,
# which effectively disables the auto-exporting of all other
symbols.
# Revisit this if libtool on cygwin improves.
# See http://lists.gnu.org/archive/html/libtool-patches/2007-02/msg00062.html
-AM_LDFLAGS = -no-undefined -export-dynamic -export-symbols-regex
".*"
+AM_LDFLAGS = -export-dynamic -export-symbols-regex ".*"
-EXTRA_DIST = bootstrap \
- $(config_aux_dir)/mkstamp \
- $(config_macro_dir)/gnulib-cache.m4
+BUILT_SOURCES =
CLEANFILES =
-DISTCLEANFILES =
MOSTLYCLEANFILES=
+
+include_HEADERS =
+noinst_LTLIBRARIES=
+lib_LTLIBRARIES =
+EXTRA_LTLIBRARIES=
+
+# Include Libtool's rules.
+include ltdl/Makefile.inc
+
+# Additional configuration.
+DISTCLEANFILES =
MAINTAINERCLEANFILES = \
ABOUT-NLS COPYING INSTALL Makefile.in aclocal.m4 \
config-h.in configure stamp-h.in \
po/cat-id-tbl.c po/m4.pot po/stamp-cat-id
-BUILT_SOURCES =
-
MKSTAMP = $(SHELL) $(srcdir)/$(config_aux_dir)/mkstamp
# Make sure config.status is regenerated when the version
timestamp changes
@@ -202,7 +212,7 @@ EXTRA_DIST += \
## libm4 ##
## ----- ##
-lib_LTLIBRARIES = m4/libm4.la
+lib_LTLIBRARIES += m4/libm4.la
nobase_include_HEADERS = \
m4/m4module.h
@@ -234,13 +244,6 @@ dist-hook:
EXTRA_DIST += m4/system_.h
-## ------- ##
-## libltdl ##
-## ------- ##
-
-ltdl/libltdlc.la:
- cd ltdl && $(MAKE) $(MAKEFLAGS) libltdlc.la
-
## -------------- ##
## Documentation. ##
## -------------- ##
diff --git a/bootstrap b/bootstrap
index 8da38fd..a3352cf 100755
--- a/bootstrap
+++ b/bootstrap
@@ -52,6 +52,7 @@
: ${AUTORECONF=autoreconf}
: ${AWK=awk}
: ${GNULIB_TOOL=gnulib-tool}
+: ${LIBTOOLIZE=libtoolize}
: ${M4=m4}
: ${RM=rm -f}
: ${SED=sed}
@@ -400,6 +401,17 @@ fi
func_echo "running: $AUTOPOINT --force"
$AUTOPOINT --force
+## ----------- ##
+## Libtoolize. ##
+## ----------- ##
+
+# Autoreconf runs aclocal before libtoolize, which causes spurious
+# wornings while the initial aclocal is confused by the
unlibtoolized
+# (or worse out-of-date) macro directory.
+func_echo "running: $LIBTOOLIZE --force --copy --install"
+${LIBTOOLIZE} --force --copy --install
+
+
## ---------------------------- ##
## Find the gnulib module tree. ##
## ---------------------------- ##
@@ -470,10 +482,11 @@ $bailout_cb
## Autoreconf. ##
## ----------- ##
-# Disable autopoint, since it was already done above.
-func_echo "running: AUTOPOINT=true" \
+# Disable autopoint and libtoolize, since they were already done
above.
+func_echo "running: AUTOPOINT=true LIBTOOLIZE=true" \
"$AUTORECONF --force --verbose --install --no-recursive"
-AUTOPOINT=true $AUTORECONF --force --verbose --install --no-
recursive
+AUTOPOINT=true LIBTOOLIZE=true \
+ $AUTORECONF --force --verbose --install --no-recursive
## ---------------------------------------- ##
diff --git a/configure.ac b/configure.ac
index 05c5c9a..40eefcb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -89,7 +89,20 @@ M4_CHECK_DEBUGGING
LT_PREREQ([2.1a])
LT_CONFIG_LTDL_DIR([ltdl])
LT_INIT([shared dlopen win32-dll])
-LTDL_INIT
+LTDL_INIT([nonrecursive convenience])
+
+# The lt_dlhandle_iterate symbol was added with libtool-2.2
+if test "x$with_included_ltdl" != "xyes"; then
+ save_CFLAGS="$CFLAGS"
+ save_LDFLAGS="$LDFLAGS"
+ CFLAGS="$CFLAGS $LTDLINCL"
+ LDFLAGS="$LDFLAGS $LIBLTDL"
+ AC_CHECK_LIB([ltdl], [lt_dlhandle_iterate],
+ [],
+ [AC_MSG_ERROR([installed libltdl is too old])])
+ LDFLAGS="$save_LDFLAGS"
+ CFLAGS="$save_CFLAGS"
+fi
# Use gcc's -pipe option if available: for faster compilation.
case "$CFLAGS" in
--
Gary V. Vaughan ([email protected])
_______________________________________________
M4-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/m4-patches
PGP.sig
(application/pgp-signature, 186 B) - not displayed