+2000-10-23 Akim Demaille <akim@epita.fr>
+
+ In order to check that all the CPP symbols which are AC_DEFINE'd
+ are properly templated, autoheader traces
+ AC_DEFINE/AC_DEFINE_UNQUOTED. Only literals can be traced, and
+ actually tracing non literals produces invalid autoheader input.
+ Hence, provide a means to trace calls to
+ AC_DEFINE/AC_DEFINE_UNQUOTED with literals.
+
+ * acgeneral.m4 (AC_DEFINE_TRACE, AC_DEFINE_TRACE_LITERAL): New
+ macros.
+ (AC_DEFINE, AC_DEFINE_UNQUOTED): Use AC_DEFINE_TRACE.
+ * autoheader.sh: Trace AC_DEFINE_TRACE_LITERAL, not
+ AC_DEFINE/AC_DEFINE_UNQUOTED.
+
2000-10-23 Akim Demaille <akim@epita.fr>
Let autoupdate change AC_PREREQ to require the current version of
## ---------------------- ##
+# AC_DEFINE_TRACE_LITERAL(LITERAL-CPP-SYMBOL)
+# -------------------------------------------
+# This macro is useless, it is used only with --trace to collect the
+# list of *literals* CPP values passed to AC_DEFINE/AC_DEFINE_UNQUOTED.
+define([AC_DEFINE_TRACE_LITERAL])
+
+
+# AC_DEFINE_TRACE(CPP-SYMBOL)
+# ---------------------------
+# This macro is a wrapper around AC_DEFINE_TRACE_LITERAL which filters
+# out non literal symbols.
+define([AC_DEFINE_TRACE],
+[AC_VAR_INDIR_IFELSE([$1], [], [AC_DEFINE_TRACE_LITERAL([$1])])])
+
+
# AC_DEFINE(VARIABLE, [VALUE], [DESCRIPTION])
# -------------------------------------------
# Set VARIABLE to VALUE, verbatim, or 1. Remember the value
# and if VARIABLE is affected the same VALUE, do nothing, else
# die. The third argument is used by autoheader.
define([AC_DEFINE],
-[ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
+[AC_DEFINE_TRACE([$1])dnl
+ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
cat >>confdefs.h <<\EOF
[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
EOF
])
-
# AC_DEFINE_UNQUOTED(VARIABLE, [VALUE], [DESCRIPTION])
# ----------------------------------------------------
# Similar, but perform shell substitutions $ ` \ once on VALUE.
define([AC_DEFINE_UNQUOTED],
-[ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
+[AC_DEFINE_TRACE([$1])dnl
+ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
cat >>confdefs.h <<EOF
[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
EOF
--trace AC_CONFIG_HEADERS:'config_h="$1"' \
--trace AH_OUTPUT:'ac_verbatim_$1="\
$2"' \
- --trace AC_DEFINE:'syms="$$syms $1"' \
- --trace AC_DEFINE_UNQUOTED:'syms="$$syms $1"' \
+ --trace AC_DEFINE_TRACE_LITERAL:'syms="$$syms $1"' \
$infile >$tmp/traces.sh || { (exit 1); exit; }
$verbose $me: sourcing $tmp/traces.sh >&2
--trace AC_CONFIG_HEADERS:'config_h="$1"' \
--trace AH_OUTPUT:'ac_verbatim_$1="\
$2"' \
- --trace AC_DEFINE:'syms="$$syms $1"' \
- --trace AC_DEFINE_UNQUOTED:'syms="$$syms $1"' \
+ --trace AC_DEFINE_TRACE_LITERAL:'syms="$$syms $1"' \
$infile >$tmp/traces.sh || { (exit 1); exit; }
$verbose $me: sourcing $tmp/traces.sh >&2
--trace AC_CONFIG_HEADERS:'config_h="$1"' \
--trace AH_OUTPUT:'ac_verbatim_$1="\
$2"' \
- --trace AC_DEFINE:'syms="$$syms $1"' \
- --trace AC_DEFINE_UNQUOTED:'syms="$$syms $1"' \
+ --trace AC_DEFINE_TRACE_LITERAL:'syms="$$syms $1"' \
$infile >$tmp/traces.sh || { (exit 1); exit; }
$verbose $me: sourcing $tmp/traces.sh >&2
## ---------------------- ##
+# AC_DEFINE_TRACE_LITERAL(LITERAL-CPP-SYMBOL)
+# -------------------------------------------
+# This macro is useless, it is used only with --trace to collect the
+# list of *literals* CPP values passed to AC_DEFINE/AC_DEFINE_UNQUOTED.
+define([AC_DEFINE_TRACE_LITERAL])
+
+
+# AC_DEFINE_TRACE(CPP-SYMBOL)
+# ---------------------------
+# This macro is a wrapper around AC_DEFINE_TRACE_LITERAL which filters
+# out non literal symbols.
+define([AC_DEFINE_TRACE],
+[AC_VAR_INDIR_IFELSE([$1], [], [AC_DEFINE_TRACE_LITERAL([$1])])])
+
+
# AC_DEFINE(VARIABLE, [VALUE], [DESCRIPTION])
# -------------------------------------------
# Set VARIABLE to VALUE, verbatim, or 1. Remember the value
# and if VARIABLE is affected the same VALUE, do nothing, else
# die. The third argument is used by autoheader.
define([AC_DEFINE],
-[ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
+[AC_DEFINE_TRACE([$1])dnl
+ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
cat >>confdefs.h <<\EOF
[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
EOF
])
-
# AC_DEFINE_UNQUOTED(VARIABLE, [VALUE], [DESCRIPTION])
# ----------------------------------------------------
# Similar, but perform shell substitutions $ ` \ once on VALUE.
define([AC_DEFINE_UNQUOTED],
-[ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
+[AC_DEFINE_TRACE([$1])dnl
+ifval([$3], [AH_TEMPLATE([$1], [$3])])dnl
cat >>confdefs.h <<EOF
[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
EOF
AT_CHECK_MACRO([AC_OUTPUT_COMMANDS])
AT_CHECK_MACRO([AC_PATH_XTRA])
AT_CHECK_MACRO([AC_PREFIX_DEFAULT])
+AT_CHECK_MACRO([AC_PREREQ])
AT_CHECK_MACRO([AC_PROG_AWK])
AT_CHECK_MACRO([AC_PROG_CC_C_O])
AT_CHECK_MACRO([AC_PROG_F77_C_O])
AT_CHECK_UPDATE([AC_MEMORY_H])
AT_CHECK_UPDATE([AC_MINGW32])
AT_CHECK_UPDATE([AC_OUTPUT_COMMANDS])
+AT_CHECK_UPDATE([AC_PREREQ])
AT_CHECK_UPDATE([AC_RSH])
AT_CHECK_UPDATE([AC_SCO_INTL])
AT_CHECK_UPDATE([AC_STRUCT_ST_BLKSIZE])