libtool-patches
[Top][All Lists]
Advanced

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

Re: HEAD: Kill two showstoppers at once


From: Ralf Wildenhues
Subject: Re: HEAD: Kill two showstoppers at once
Date: Tue, 30 Aug 2005 17:31:19 +0200
User-agent: Mutt/1.4.1i

Hi Gary, sorry, Peter, :)

* Gary V. Vaughan wrote on Tue, Aug 30, 2005 at 04:23:11PM CEST:
> Ralf Wildenhues wrote:
> >* Ralf Wildenhues wrote on Tue, Aug 30, 2005 at 01:46:42PM CEST:
> >
> >>The ltoptions machinery has one little bug.  Two showstoppers are the
> >>result of this: AC_DISABLE_STATIC not working, and AC_LIBTOOL_WIN32_DLL
> >>not working.  (The other old-style option setting macros don't work
> >>either, I believe):

> Aha!  Thanks for the pointers.  The problem is simply that 
> _LT_OPTION_DEFUN_shared is never dispatched in the first example.
> The easiest way to do that is to move the dispatch code from
> _LT_SET_OPTIONS to _LT_SET_OPTION (untested):

Cool! Thanks for this description.  Your snippet looks pretty good.

> I'm not sure why I committed before I'd finished this :-(

Me neither.

> Back to work today, so no time to generate a proper patch, sorry.

Here you go.  Just a slight cleanup of your suggestion.  Changes: change
m4_fatal to m4_warn, because we want to be forward compatible, replace
`symbols' with m4_split(m4_normalize([$1])) as was before.  I didn't
change m4_foreach to AC_FOREACH as in your snippet, because I don't know
the difference in semantics.

But there is another problem with respect to macro ordering: The
settings set by the LT_INIT options appear too late in the configure
script.  If I set AC_LIBTOOL_DLOPEN, everything is OK; but if I use
LT_INIT([dlopen]), it appears after a macro which might override
enable_dlopen.  IOW, the part titled "# Set options" in LT_INIT appears
much too late.

Is this bug description comprehensible?  (I guess a couple of m4_require
and/or AC_REQUIRE are needed, I'm sure you'll know the correct answer
right away.)

Cheers,
Ralf

2005-08-30  Gary V. Vaughan <address@hidden>,
            Ralf Wildenhues <address@hidden>

        * libltdl/m4/ltoptions.m4 (_LT_SET_OPTIONS): Move option macro
        dipatch..
        (_LT_SET_OPTION): here.  Do not fail but warn on unknown
        options.

Index: libltdl/m4/ltoptions.m4
===================================================================
RCS file: /cvsroot/libtool/libtool/libltdl/m4/ltoptions.m4,v
retrieving revision 1.1
diff -u -r1.1 ltoptions.m4
--- libltdl/m4/ltoptions.m4     22 Aug 2005 22:33:35 -0000      1.1
+++ libltdl/m4/ltoptions.m4     30 Aug 2005 14:40:39 -0000
@@ -20,9 +20,15 @@
 
 
 # _LT_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME.  Other NAMEs are saved as a flag.
-m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1]))])
+# --------------------
+# Set option NAME, and if there is a matching handler defined,
+# dispatch to it.  Other NAMEs are saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1]),
+        _LT_MANGLE_DEFUN([$1]),
+    [m4_warn([Unknown Libtool option `$1'])])[]dnl
+])
 
 
 # _LT_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
@@ -52,11 +58,7 @@
 # and exit.
 m4_define([_LT_SET_OPTIONS],
 [m4_foreach([_LT_Option], m4_split(m4_normalize([$1])),
-    [_LT_SET_OPTION(_LT_Option)
-    m4_ifdef(_LT_MANGLE_DEFUN(_LT_Option),
-            _LT_MANGLE_DEFUN(_LT_Option),
-       [m4_fatal([Unknown option `]_LT_Option[' to LT][_INIT_LIBTOOL])])
-    ])dnl
+    [_LT_SET_OPTION(_LT_Option)])
 dnl
 dnl Simply set some default values (i.e off) if boolean options were not
 dnl specified:




reply via email to

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