On Sun, May 22, 2011 at 05:21:23PM -0400, Stephen Gallagher wrote:
On May 22, 2011, at 12:37 PM, Jakub Hrozek <jhrozek(a)redhat.com> wrote:
> On 05/20/2011 09:44 AM, Sumit Bose wrote:
>> On Fri, May 20, 2011 at 09:34:06AM +0200, Jakub Hrozek wrote:
>>> On 05/19/2011 05:12 PM, Sumit Bose wrote:
>>>> Hi,
>>>>
>>>> there are a couple of places where we set _GNU_SOURCE in the source
>>>> files to enable glibc specific extensions. If by chance
>>>> '-D_GNU_SOURCE=1' is set on the gcc command line, e.g. by using
the
>>>> CFLAGS from a pkg-config output (yes, there are examples :-), we get
>>>> '"_GNU_SOURCE" redefined' message during compilation.
With the attached
>>>> patch _GNU_SOURCE is only defined in the sources if not already set.
>>>>
>>>> An alternative fix would be to remove all defines of _GNU_SOURCE from
>>>> the source code and add AC_USE_SYSTEM_EXTENSIONS/AC_GNU_SOURCE to
>>>> configure.ac . I'm not sure if there is a recommended way how to
handle
>>>> _GNU_SOURCE and friends.
>>>>
>>>> bye,
>>>> Sumit
>>>>
>>>>
>>>
>>> This patch works fine.
>>>
>>> I think I would prefer to use something like
>>> AC_USE_SYSTEM_EXTENSIONS/AC_GNU_SOURCE simply because it would rule out
>>> the possibility of forgetting to ifdef _GNU_SOURCE.
>>>
>>> But the problem seems to be that AC_GNU_SOURCE is obsolete in newer
>>> versions of autoconf (and also throws an error on F14). At the same
>>> time, AC_USE_SYSTEM_EXTENSIONS requires autoconf>= 2.60 while RHEL5 is
>>> still on 2.59
>>>
>>
>> To solve this I have found the following:
>>
>> m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
>> [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
>> [AC_REQUIRE([AC_GNU_SOURCE])])
>>
>> Shall I prepare a patch with this in configure.ac?
>>
>
> To me this seems like a more systematic solution. So unless anyone
> objects, I vote for this little autoconf trickery.
>
I concur
ok, this new version set _GNU_SOURCE safely in config.h. I had to add or
move some #include "config.h" and came across a 'shadows global'
warning
I hadn't see before.
Additionally I added a patch to remove some AC_DEFUN from configure.ac
which were not used anywhere in our code.
bye,
Sumit