These points illustrate that it is possible to design a poor API. It is
possible such APIs could be better designed from the get go, or made better
at an API version bump. The autotools can help with this.
) 2) 'const' support
) 3) 'inline' support
const and other modifiers are exactly the types of things that should *not*
be made dependent on the characteristics of the system build environment.
Interface files should use them in accordance to a particular, fixed
environment, and rely on dependent packages to detect or recreate that
environment as needed. The autotools can help with this.
This is why the autotools are so important: They provide a highly-uniform
build environment for software, regardless of the underlying system's
facilities.
If a piece of software is designed with POSIX and other environment
standards as a requirement, the autotools can be used to guarantee or
simulate those environments regardless of the characteristics of the actual
system environment. There should not be a reason to allow characteristics
from the system environment to "leak" into the interfaces of the software.