> Changing from "1" and "0" to def, undef wouldn't change anything at all.
> The exact same logic is required, and the same general variables are
> required.  The differences between the two are incredibly minor, because
> we want to use namespace protected macros.

If we changed to def/undef and we used the standard autoconf macros
with the default behavior, then we don't need namespace protected symbols.
Defining them as "0" or "1" doesn't allow us to use

   #ifndef HAVE_UNISTD_H
   #undef HAVE_UNISTD_H
   #endif

as the template for the generated file, which gets translated to

   #ifndef HAVE_UNISTD_H
   #define HAVE_UNISTD_H 1
   #endif

by configure if AC_CHECK_HEADERS(unistd.h) succeeds, which won't result
in errors if the same symbol is defined by includes in other packages,
which was the original justification for the APR_ prefix on those symbols.

Of course, this means we'd have to use a template instead of autoheader,
but that is how I prefer to set up autoconf in any case, since it also
allows us to add documentation to the generated file.  Doing it this way
has the nice side-effect of allowing the user to override a configure
definition by simply doing a

   env CFLAGS="-DHAVE_UNISTD_H=1" make

I wasn't kidding when I said that our problems with autoconf
are due to the way we are using it.

....Roy

Reply via email to