[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: conditionally disabling libltdl subconfigure
From: |
Brice Goglin |
Subject: |
Re: conditionally disabling libltdl subconfigure |
Date: |
Wed, 22 Aug 2012 20:26:54 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120624 Icedove/10.0.5 |
Le 22/08/2012 19:44, Nick Bowler a écrit :
> On 2012-08-22 18:32 +0200, Brice Goglin wrote:
>> Le 22/08/2012 16:32, Nick Bowler a écrit :
>>> On 2012-08-22 15:12 +0200, Brice Goglin wrote:
>>>> I am working at embedding libltdl inside our project (hwloc, an Open MPI
>>>> subprojet). Our plugins are not expected to be enabled in the most
>>>> common cases. So I am trying to see if the libltdl sub-configure could
>>>> be skipped entirely unless really needed (when plugins are enabled, and
>>>> libltdl is indeed built). I got the usual failure when I tried to put
>>>> LTDL_INIT inside a conditional block so I am looking for something else
>>>> now.
>>>>
>>>> Modifying the subdirs variable before AC_OUTPUT seems to work. But this
>>>> hack may not be safe enough. Is there a better way to do this?
>>> Use either the "recursive" or "nonrecursive" libltdl styles. Do not use
>>> "subproject" (the default). Both these styles integrate all the
>>> configure machinery directly into your main configure script, so there
>>> may still be some extra checks but they should be fairly low-cost in the
>>> grand scheme of things (especially compared to subproject!).
>>>
>>> You can then use Automake conditionals to control whether or not libltdl
>>> will be built.
>>>
>>> Cheers,
>> Thanks a lot! It looks promising, indeed.
>>
>> One small problem with this is that it requires -I$(top_builddir) in
>> CPPFLAGS since it wants to include LT_CONFIG_H=relative/path/config.h
>> Not sure how this could be improved. Maybe by passing the absolute path
>> in LT_CONFIG_H? Or by allowing to manually override it?
> So you have your config.h in a subdir from the top of your project,
> e.g., something like
>
> AC_CONFIG_HEADERS([some/subdir/config.h])
>
> and libltdl is trying to #include <some/subdir/config.h> ?
> That sounds like it might be a libltdl bug. Automake will in this case
> add -Isome/subdir by default, so libltdl should just be be #including
> <config.h> instead (i.e., not specifying any of the leading directories).
>
> Other than adding -I$(top_builddir) to CPPFLAGS, as a workaround you
> could probably add something like this just before AC_OUTPUT (untested):
>
> LT_CONFIG_H=`expr "$LT_CONFIG_H" : '.*/\(.*\)'`
>
Your analysis looks correct but the workaround doesn't seem to work. It
looks like LT_CONFIG_H is set inside AC_OUTPUT.
Brice