Currently Gnulib assumes at least a freestanding C99 compiler, possibly operating with a C library that predates C99; with time this assumption will likely be strengthened to later versions of the C standard. Old platforms currently supported include AIX 6.1, HP-UX 11i v1 and Solaris 10, though these platforms are rarely tested. Gnulib itself is so old that it contains many fixes for obsolete platforms, fixes that may be removed in the future.
Because of the freestanding C99 assumption, Gnulib code can include
unconditionally. Gnulib code can also assume the existence
many modules include
<sys/types.h> even though it’s not even in
C11; that’s OK since
<sys/types.h> has been around nearly
Even if the include files exist, they may not conform to the C standard.
However, GCC has a
fixincludes script that attempts to fix most
C89-conformance problems. Gnulib currently assumes include files
largely conform to C89 or better. People still using ancient hosts
should use fixincludes or fix their include files manually.
Even if the include files conform, the library itself may not.
mktime have some bugs on some platforms.
You can work around some of these problems by requiring the relevant
modules, e.g., the Gnulib
mktime module supplies a working and