diff --git a/doc/autoconf.texi b/doc/autoconf.texi index 43a84bc..31a55c0 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -3082,10 +3082,9 @@ AC_CHECK_HEADERS([unistd.h]) @end example @noindent -Then you could have code like the following in @file{conf.h.in}. On -systems that have @file{unistd.h}, @command{configure} defines address@hidden to 1. On other systems, the whole line is -commented out (in case the system predefines that symbol). +Then you could have code like the following in @file{conf.h.in}. +The @file{conf.h} created by @command{configure} defines @samp{HAVE_UNISTD_H} +to 1, if and only if the system has @file{unistd.h}. @example @group @@ -3095,28 +3094,40 @@ commented out (in case the system predefines that symbol). @end example Pay attention that @samp{#undef} is in the first column, and there is -nothing after @samp{HAVE_UNISTD_H}, not even white space. You can -then decode the configuration header using the preprocessor directives: +nothing after @samp{HAVE_UNISTD_H}, not even white space. +(The use of old form templates, with @samp{#define} instead of @samp{#undef} +or comments on the same line as the @samp{#undef}, is strongly discouraged.) +Since it is a tedious task to keep a template header up to date, you may +use @command{autoheader} to generate it, see @ref{autoheader Invocation}. + +During the instantiation of the header, each @samp{#undef} line in the +template file for each symbol defined by @samp{AC_DEFINE} is changed to an +appropriate @samp{#define}. If the corresponding @samp{AC_DEFINE} has not +been executed during the @command{configure} run, the @samp{#undef} line is +commented out. (This is important, e.g., for @samp{_POSIX_SOURCE}: +on many systems, it shall not be undefined nor redefined, yet address@hidden has to define it on Minix.) + +Currently, @emph{all} remaining @samp{#undef} lines in the header +template are commented out; but this behavior is not guaranteed for future +releases of Autoconf. + +Generally speaking, all @samp{#define} and @samp{#undef} directives in the +header template might be replaced, under some circumstances. +Consequently, if you need to use the construct @example @group -#include - -#ifdef HAVE_UNISTD_H -# include -#else -/* We are in trouble. */ -#endif +#ifdef THIS +# define THAT +... @end group @end example - -The use of old form templates, with @samp{#define} instead of address@hidden is strongly discouraged. Similarly with old templates -with comments on the same line as the @samp{#undef}. Anyway, putting -comments in preprocessor macros has never been a good idea. - -Since it is a tedious task to keep a template header up to date, you may -use @command{autoheader} to generate it, see @ref{autoheader Invocation}. +you should better place it outside of the template. +If you absolutely need to hook it to the config header itself, please put +the directives to a separate file, and @samp{#include} that file from the +config header template. If you are using @command{autoheader}, you would +probably use @samp{AH_BOTTOM} to append the @samp{#include} directive. @node autoheader Invocation