Re: Plugin support for FreeBSD and OS X

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

 



I've attached a patch that seems to fix the build problem on my
FreeBSD box. I would submit the patch to gcc-patches directlly but I
don't have a GNU/Linux box, or a machine without dlopen to test on
before such. So I was hoping I could get someone to test the patch out
on at least Linux before hand, considering this is my first time
touching an autoconf file.

Thanks,
Nicholas "Indy" Ray

On Mon, Oct 5, 2009 at 8:22 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
> "Nicholas \"Indy\" Ray" <arelius@xxxxxxxxx> writes:
>
>> One more small thing, currently if it finds dl it adds -ldl to
>> $pluginlibs in addition to $LIBS, is it possible to do that with the
>> AC_SEARCH_LIBS macro as well?
>
> Not directly.  You would have to compare $LIBS before and after.  Or
> use AC_CHECK_FUNC and AC_CHECK_LIB.
>
> Ian
>
>> On Mon, Oct 5, 2009 at 5:28 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
>>> "Nicholas \"Indy\" Ray" <arelius@xxxxxxxxx> writes:
>>>
>>>> That would probably work, but then the configure script won't test for
>>>> dlopen functionality, which is required. maybee I should put an
>>>> additional AC_TRY_LINK in the test failure? is there a better way to
>>>> do that then just a wholesale duplication of the macro?
>>>
>>> AC_SEARCH_LIBS(dlopen, -ldl, found_dlopen=yes, found_dlopen=no)
>>>
>>> This will add -ldl to $LIBS if necessary (i.e., don't reset LIBS) and
>>> set found_dlopen to indicate whether it was found or not.
>>>
>>> Ian
>>>
>>>> On Mon, Oct 5, 2009 at 4:22 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
>>>>> "Nicholas \"Indy\" Ray" <arelius@xxxxxxxxx> writes:
>>>>>
>>>>>> So are you suggesting that the entire block:
>>>>>>
>>>>>>   LIBS="$LIBS -ldl"
>>>>>>   AC_MSG_CHECKING([for -ldl])
>>>>>>   AC_TRY_LINK(
>>>>>>     [#include <dlfcn.h>],
>>>>>>     [volatile int f = 0; if (f) dlopen ("dummy", 0);],
>>>>>>     [AC_MSG_RESULT([yes]); have_dl=yes],
>>>>>>     [AC_MSG_RESULT([no])])
>>>>>>   if test x"$have_dl" = x"yes"; then
>>>>>>     pluginlibs="$pluginlibs -ldl"
>>>>>>   fi
>>>>>>
>>>>>> should be replaced with something based on AC_CHECK_LIB? I'll give that a test!
>>>>>
>>>>> I hadn't looked at that code.  That all looks fine to me, although
>>>>> AC_CHECK_LIB would be simpler.
>>>>>
>>>>> Are you saying that that does not work on FreeBSD?  How does it fail?
>>>>>
>>>>> Wait, I think I see the problem: the code sets LIBS to include -ldl,
>>>>> but fails to reset it if the test fails.  Probably all it needs is two
>>>>> new lines:
>>>>>
>>>>>   if test x"$have_dl" = x"yes"; then
>>>>>     pluginlibs="$pluginlibs -ldl"
>>>>> +  else
>>>>> +    LIBS="$saved_LIBS"
>>>>>   fi
>>>>>
>>>>> Ian
>>>>>
>>>>>
>>>>>> On Mon, Oct 5, 2009 at 3:38 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
>>>>>>> "Nicholas \"Indy\" Ray" <arelius@xxxxxxxxx> writes:
>>>>>>>
>>>>>>>> The problem is that on FreeBSD -ldl is not available or required, the
>>>>>>>> functionality is provided by libc
>>>>>>>
>>>>>>> I think understand that.  What I am saying is that the configure
>>>>>>> script should test for that property--the fact that -ldl is not
>>>>>>> available or required--rather than test the type of host for which gcc
>>>>>>> is being configured.
>>>>>>>
>>>>>>> Ian
>>>>>>>
>>>>>>>
>>>>>>>> Nicholas "Indy" Ray
>>>>>>>>
>>>>>>>> On Mon, Oct 5, 2009 at 3:05 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
>>>>>>>>> "Nicholas \"Indy\" Ray" <arelius@xxxxxxxxx> writes:
>>>>>>>>>
>>>>>>>>>> Indeed, I've sent in a small patch for a warning I got on FreeBSD,
>>>>>>>>>> however I'm not sure how to get autoconf to check the host system,
>>>>>>>>>> I'll examine other locations in the code and see if I can't cobble a
>>>>>>>>>> patch together.
>>>>>>>>>
>>>>>>>>> When possible, a configure script should test for features, not
>>>>>>>>> operating systems.  So, for example, the goal would be not to check
>>>>>>>>> for FreeBSD, but rather to check for the availability of -ldl, which
>>>>>>>>> is typically done using AC_CHECK_LIB.
>>>>>>>>>
>>>>>>>>> Ian
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>

Attachment: BSDPlugins.diff
Description: Binary data


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux