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: Gary V. Vaughan
Subject: Re: HEAD: Kill two showstoppers at once
Date: Tue, 30 Aug 2005 15:23:11 +0100
User-agent: Mozilla Thunderbird 1.0 (X11/20050305)

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):

To reproduce:


Shorter way to reproduce:

m4_include(ltoptions.m4)
m4_divert(0)
_LT_SET_OPTION([shared])
_LT_SET_OPTIONS
m4_undivert(0)

vs.

m4_include(ltoptions.m4)
m4_divert(0)
_LT_SET_OPTIONS([shared])
m4_undivert(0)

Treating both with (lightly hackish)
  autom4te --language=m4sh foo.m4 -o output
does not produce identical output.

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):

# _LT_SET_OPTION(NAME)
# ------------------------------
# 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_fatal([Unknown Libtool option `$1'])])[]dnl
])

...

# _LT_SET_OPTIONS(OPTIONS)
# ------------------------
# OPTIONS is a space-separated list of Libtool options.
# If any OPTION has a handler macro declared with LT_OPTION_DEFINE,
# dispatch to that macro; otherwise complain about the unknown option
# and exit.
m4_define([_LT_SET_OPTIONS],
[AC_FOREACH([_LT_Option], [symbols], [_LT_SET_OPTION(_LT_Option)])
dnl
dnl Simply set some default values (i.e off) if boolean options were not
dnl specified:
_LT_UNLESS_OPTIONS([dlopen], enable_dlopen=no)
_LT_UNLESS_OPTIONS([win32-dll], enable_win32_dll=no)
dnl
dnl If no reference was made to various pairs of opposing options, then
dnl we run the default mode handler for the pair.  For example, if neither
dnl `shared' nor `disable-shared' was passed, we enable building of shared
dnl archives by default:
_LT_UNLESS_OPTIONS([shared disable-shared], [_LT_ENABLE_SHARED])
_LT_UNLESS_OPTIONS([static disable-static], [_LT_ENABLE_STATIC])
_LT_UNLESS_OPTIONS([pic-only no-pic], [_LT_ENABLE_PIC])
_LT_UNLESS_OPTIONS([fast-install disable-fast-install],
                   [_LT_ENABLE_FAST_INSTALL])
])# _LT_SET_OPTIONS

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

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

HTH,
        Gary.
--
Gary V. Vaughan      ())_.  address@hidden,gnu.org}
Research Scientist   ( '/   http://tkd.kicks-ass.net
GNU Hacker           / )=   http://www.gnu.org/software/libtool
Technical Author   `(_~)_   http://sources.redhat.com/autobook

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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