[FFmpeg-devel] [PATCHv2] configure: add -D_DEFAULT_SOURCE to silence -Wcpp

Ganesh Ajjanagadde gajjanag at mit.edu
Sat Oct 3 14:42:06 CEST 2015


On Sat, Sep 19, 2015 at 2:05 PM, Ganesh Ajjanagadde <gajjanag at mit.edu> wrote:
> On Sat, Sep 19, 2015 at 2:13 PM, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
>> On Sat, Sep 19, 2015 at 6:07 PM, Ganesh Ajjanagadde <gajjanag at mit.edu> wrote:
>>> On Thu, Sep 17, 2015 at 6:45 AM, Ganesh Ajjanagadde <gajjanag at mit.edu> wrote:
>>>> On Thu, Sep 17, 2015 at 4:54 AM, Clément Bœsch <u at pkh.me> wrote:
>>>>> On Wed, Sep 16, 2015 at 06:55:39PM -0400, Ganesh Ajjanagadde wrote:
>>>>>> Glibc 2.20 onwards generates a deprecation warning for usage of _BSD_SOURCE and _SVID_SOURCE.
>>>>>> The solution from man feature_test_macros is to define both _DEFAULT_SOURCE and the old macros.
>>>>>> This change is done in configure while testing for Glibc. Doing it in source code
>>>>>> would require __UCLIBC__ checks, etc since uclibc also defines __GLIBC__ and __GLIBC_MINOR__,
>>>>>> so placing it in configure avoids the repeated checks.
>>>>>>
>>>>>> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
>>>>>> ---
>>>>>>  configure                | 6 ++++++
>>>>>>  libavformat/os_support.c | 1 -
>>>>>>  2 files changed, 6 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/configure b/configure
>>>>>> index cd6f629..0cd0a6c 100755
>>>>>> --- a/configure
>>>>>> +++ b/configure
>>>>>> @@ -4520,6 +4520,12 @@ probe_libc(){
>>>>>>      elif check_${pfx}cpp_condition features.h "defined __GLIBC__"; then
>>>>>>          eval ${pfx}libc_type=glibc
>>>>>>          add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
>>>>>> +        # define _DEFAULT_SOURCE for glibc 2.20 onwards to silence deprecation
>>>>>> +        # warnings for _BSD_SOURCE and _SVID_SOURCE.
>>>>>> +        if check_${pfx}cpp_condition features.h "(__GLIBC__ == 2 && __GLIBC_MINOR__ >= 20) \
>>>>>> +            || (__GLIBC__ > 2)"; then
>>>>>> +            add_${pfx}cppflags -D_DEFAULT_SOURCE
>>>>>> +        fi
>>>>>
>>>>> Is this adding _DEFAULT_SOURCE to every compiled file while it was scope
>>>>> to a standalone source file before?
>>>>
>>>> Don't know exactly what you mean, but try e.g strings on any of these
>>>> objects. There is no "DEFAULT_SOURCE", "BSD_SOURCE", or any such thing
>>>> suggesting they are optimized out. Furthermore, a du on the libav*
>>>> does not reveal any increase in size.
>>>
>>> ping
>>
>> I agree with Clément, adding a global define to every single file
>> while it was contained to a handful of select files before seems less
>> than ideal.
>
> Like I said, it causes no visible change in the result. One could add
> it to the specific files. However, think about the future: it is very
> easy to miss adding this, and warnings may be triggered in the future
> at any point if a dev uses the BSD, SVID, etc forgetting the DEFAULT.
> Who knows what glibc would do 3 releases down, when the deprecation
> becomes an actual error. I think FFmpeg devs should have better things
> to do in future than agonizing over some ugly glibc thing that is
> introduced for god knows what reason. In light of that I wanted to
> create a "fire and forget" solution which is global in character. This
> achieves this at no performance penalty and practically speaking no
> symbol problems. We already have a bunch of global things, see e.g the
> -DZLIB, etc - they are certainly not needed everywhere and your
> argument would apply to them as well.
>
> If this was required in just a single file, I would agree with you.
> However, it shows up in multiple places (IIRC at least 3).
>
> Anyway, if you (or others) still feel that way about it, I will change
> the patch.

Updated patch doing local defines wherever needed.

>
>>
>> - Hendrik
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


More information about the ffmpeg-devel mailing list