>> It's too late for doing that: AC_DEFUN_ONCE was introduced on 2004-10-11. > > I know. > >> Besides that, AC_DEFUN_ONCE and AC_DEFUN_IDEMPOTENT have really opposite >> semantics. You cannot confuse people more than by using the same name for >> two entities with opposite semantics. > > It looks to me like, in the wild, AC_DEFUN_ONCE is used for idempotent > macros (and in Autoconf too, see AC_CANONICAL_*). The only correct use > of AC_DEFUN_ONCE (where the warning *is* desired) is AC_NO_EXECUTABLES; > and not even fully correct, as you'd want an error there.
Besides, what's the difference between expanding once only a macro, or expanding once only a macro + give a warning? m4_define([m4_defun_once], [dnl m4_defun([_$0_$1], [$2])dnl m4_defun([$1], [m4_require([_$0_$1])]) Wouldn't this do the trick without regressions (except not giving the warning anymore, but doing the right thing anyway)? Paolo