This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Proper Conditionals for POSIX CX and XSI


On 2013-07-17 19:56, Sebastian Huber wrote:
On 2013-07-18 06:15, Yaakov (Cygwin/X) wrote:
On 2013-07-17 15:34, Joel Sherrill wrote:
While this was still fresh, I wanted to ask what was the
proper conditional for methods marked as CX or XSI
in the POSIX standard.

This is what is done in glibc:

http://man7.org/linux/man-pages/man7/feature_test_macros.7.html

In short, <features.h> recognizes _*_SOURCE macros, which it uses to set
various __USE_* private macros which are used throughout the headers as
conditionals to control which APIs are made available.

Having this done *properly* in the Newlib/Cygwin headers would be a
big step to
fixing a lot of compiling incompatibilities with glibc.  It is also a
very
tedious task, although it may not have to be done all at once

Unfortunately the GNU and BSD people don't talk much with each other.
In FreeBSD we have this _*_SOURCE evaluation in <sys/cdefs.h>.  Since I
updated Newlibs "newlib/libc/include/sys/cdefs.h" a couple of weeks ago
we should consider to use the infrastructure already available (see line
535 and below).  Due to license issues it is more likely that Newlib
will use code from BSD sources.

AFAIK it doesn't really matter which header provides this functionality, as long as all affected headers include that one. However, IMO we need to support all the _*_SOURCE options, particularly _GNU_SOURCE. It is also necessary to #undef all the __*_VISIBLE macros at the beginning of that section, otherwise you can get redefinition warnings in certain situations.

Let's try to make that more compatible with feature_test_macros(7), then we can start working on conditionalizing the standard headers.


Yaakov
Cygwin/X


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]