Allow me to re-describe the bug in a clearer way: In the configure.ac in Flex (lexer) project, I used a quoted argument with "dnl" comments in within AC_CHECK_FUNCS like this:
AC_CHECK_FUNCS([dnl pow dnl Used only by "examples/manual/expr" setlocale dnl Needed only if NLS is enabled reallocarr dnl NetBSD function. Use reallocarray if not available. reallocarray dnl OpenBSD function. We have replacement if not available. ]) After running autoreconf, the generated 'configure' script is correct: for ac_func in dup2 memset pow regcomp setlocale strchr strdup strtol do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done But config.h.in comes with unneeded HAVE_ macros such as: /* Define to 1 if you have the `available.' function. */ #undef HAVE_AVAILABLE_ /* Define to 1 if you have the `by' function. */ #undef HAVE_BY /* Define to 1 if you have the `dnl' function. */ #undef HAVE_DNL The result I would expect is either: (a.) Both 'configure' and 'config.h.in' generated correctly, without redundant macros in the latter file. (b.) Both files generated consistently, with 'dnl', 'by' and others treated as function tokens in the former file. That is, the 'configure' script "broken" like this. for ac_func in dnl pow dnl Used only by "examples/manual/expr" setlocale dnl Needed only if NLS is enabled do : #... done So that I would know I mustn't quote the argument if I had comments within the AC_CHECK_FUNCS syntax. > Note: Tested this with Autoconf 2.69 and Automake 1.15.1. Detailed > steps to reproduce: > > $ git clone --depth 1 --branch v2.6.4 https://github.com/westes/flex flex > $ cd flex > $ autoheader > $ cat src/config.h.in > > See the useless HAVE_ macros in the header. That's it.