On 09/02/2014 07:41 PM, Reimar Döffinger wrote:
On Tue, Sep 02, 2014 at 05:03:56PM +0200, Michael Niedermayer wrote:
On Tue, Sep 02, 2014 at 01:52:24PM +0200, Jörg Krause wrote:

Am 02.09.2014 12:40 schrieb Michael Niedermayer:
On Tue, Sep 02, 2014 at 12:33:26PM +0200, Jörg Krause wrote:
Add the feature test macro which is required for building with the
musl toolchain.

The feature test macro _XOPEN_SOURCE = 600 provides the XSI-compliant
version of strerror_r().
is there a reason why you dont set it from configure ?
similar to the existing "-D_XOPEN_SOURCE=600" code in configure ?

[...]
I followed the recommendation from the GNU C Library Reference
Manual, ch. 1.3.4 Feature Test Macro:

You should define these macros by using ‘#define’ preprocessor
directives at the top of your source code files. These directives
must come before any #include of a system header file. It is best to
make them the very first thing in the file, preceded only by
comments. You could also use the ‘-D’ option to GCC, but it's better
if you make the source files indicate their own meaning in a
self-contained way.

Do you prefer to define the macro in configure?
i prefer that all libcs are handled the same way
And to be honest the configure check seems backwards to me, why isn't
-D_XOPEN_SOURCE=600 used by default?
Do all of klibc, bionic, mingw32, mingw64, cygwin/newlib, msvcrt break
if you add it?

There are two possibilities for the usage of the feature test macros:

1. at source level
2. via -D options passed as arguments to the preprocessor or compiler

FFmpeg use both of them: Defining via -D in configure and undefine at source level (e.g. #undef _GNU_SOURCE). As written before the GNU C Library Reference Manual suggests the usage at the source level.

The maintainers of the musl C library states that looking for __GLIBC__ or __UCLIBC__ and making assumptions about the implemented feature set is not the best way. Instead <features.h> should be inspected for the specification of the feature test macros. Here are links to a discussion on the musl mailing list:
http://www.openwall.com/lists/musl/2013/03/29/13
http://www.openwall.com/lists/musl/2013/03/30/2 + http://www.openwall.com/lists/musl/2013/03/30/4

So we should decide which possibility we prefer for FFmpeg. If we do set the macros at source level we do not need to set them in configure (in case of a GNU C compliant library). If we want to set them in configure we can inspect <features.h> and ascertain the effects of the features test macros.

What do you think?

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to