Node:Header Templates, Next:autoheader Invocation, Up:Configuration Headers
Your distribution should contain a template file that looks as you want
the final header file to look, including comments, with #undef
statements which are used as hooks. For example, suppose your
configure.ac
makes these calls:
AC_CONFIG_HEADERS([conf.h]) AC_CHECK_HEADERS([unistd.h])
Then you could have code like the following in conf.h.in
. On
systems that have unistd.h
, configure
will #define
HAVE_UNISTD_H
to 1. On other systems, the whole line will be
commented out (in case the system predefines that symbol).
/* Define as 1 if you have unistd.h. */ #undef HAVE_UNISTD_H
You can then decode the configuration header using the preprocessor
directives:
#include <conf.h> #if HAVE_UNISTD_H # include <unistd.h> #else /* We are in trouble. */ #endif
The use of old form templates, with #define
instead of
#undef
is strongly discouraged.
Since it is a tedious task to keep a template header up to date, you may
use autoheader
to generate it, see autoheader Invocation.