[Top][All Lists]

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

Re: Use of config.h: summary of responses.

From: Bob Friesenhahn
Subject: Re: Use of config.h: summary of responses.
Date: Mon, 13 Sep 2004 13:11:28 -0500 (CDT)

On Mon, 13 Sep 2004, Daniel Reed wrote:

Ideally, interface files will conform to some specific environment, have
that environment documented, and rely on dependent projects to use something
like the autotools to ensure their build environment conforms.

Changes to the compiler, CPU, or OS should not cause interface files to
change. The interface files should assume reasonable details about the

With that said, can you provide an example of an OS-, CPU-, or compiler-
dependent attribute that must be recorded in installed interface files to
ensure ABI and unambiguous API?

  1) Large file interface (off_t,fpos_t,rlim_t, etc., size changes).
  2) 'const' support
  3) 'inline' support
  4) Big/little endian CPU type.
  5) User supplied configuration options which influence available

gnu89 and C99 provide guarantees about types and non-C89 routines that can
be documented and simulated by the autotools.

Autoconf is not about guarantees. It is all about survival without guarantees.

POSIX and various other environment standards provide guarantees about
networking, file system interaction, and other low-level operations that can
be simulated by support libraries, as with the Cygwin kernel or Solaris'

Everything would be easier if we all used operating systems designed to the exact same standards and which provided the exact same APIs. Unfortunately, this will never happen. Standards have created a kinder and gentler world, but there will always be variances. In many cases we must compile on systems which are frozen in time so they conform to very old standards (if at all).

The availability of extension libraries can be hidden through the API
itself, and good software design can make it possible for extension

I agree that good design and forethought can go a long way at reducing chaos.

Notice that I mention LF issues as the first item. Libraries which expose types which are influenced by large-file compilation do not illustrate good design and forethought.

Bob Friesenhahn

reply via email to

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