autoconf
[Top][All Lists]
Advanced

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

Re: Cross-platform availability of header files


From: Zack Weinberg
Subject: Re: Cross-platform availability of header files
Date: Fri, 15 Mar 2013 16:02:04 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:17.0) Gecko/20130307 Thunderbird/17.0.4

On 2013-03-15 6:13 AM, Thomas Jahns wrote:
On 03/15/2013 02:19 AM, Zack Weinberg wrote:
I've been doing research into the cross-platform availability of
header files that are commonly probed for in Autoconf scripts.
Results so far are here:
http://www.owlfolio.org/possibly-useful/notes-on-the-cross-platform-availability-of-header-files/
  Based on what I've learned, I have some questions for y'all:

although you didn't ask: aio.h does not need to be probed for: unistd.h defines
_POSIX_ASYNCHRONOUS_IO when it's available.

See <http://pubs.opengroup.org/onlinepubs/007904875/basedefs/unistd.h.html> for
some other features that don't require autoconf to check for, sys/mman.h is in
the same category.

As Ralf pointed out, this mechanism is not reliable in practice.

With respect to your comment on identifiers with leading underscore: to be
conformant to e.g. C89 standards, an implementation must not define anything
without said leading underscore, but in cases where the non-standard
functionality is required to implement standard-mandated functionality, it's
easiest to have it available with a leading underscore.

The rule you cite applies only to headers that are part of C89, which e.g. <fcntl.h> isn't. However, yes, this may have been what the folks at MS were thinking back in the 1990s when they made their <fcntl.h> not actually define what POSIX says it's supposed to define.

In case you still need it, I could check AIX 6.1 for any header you want to know
about or provide an ls -R of /usr/include

Yes, please. (Do I understand correctly that AIX 7 is the latest and greatest in that line? This test is actually more interesting when applied to older systems, as they define the baseline.)

The exact command you should run is

$ find /usr/include \( -type f -a -name \*.h \) -print |
    sed s:/usr/include/:: | LC_ALL=C sort > headers-$(uname)-$(uname -r)

Don't worry about headers coming from third party libraries, I have scripts for that.

zw



reply via email to

[Prev in Thread] Current Thread [Next in Thread]