Follow-up Comment #1, sr #110350 (project autoconf): It's not entirely clear to me what the issue is - is maintaining compatibility the sticking point, or is it that you want a better API to enable what AX_PROC_CC_FOR_BUILD did?
I also don't understand what Jannick's proposed solution would be, though my M4 is not the best. First of all, how important is it to use AC_DEFUN_ONCE for AC_PROG_CC? Autoconf 2.69 does cache the result of AC_PROG_CC, after all. So maybe the simplest thing would be to revert that change and keep things working as they were in 2.69. If optimizing AC_PROG_CC is necessary, how important is it to preserve compatibility with the existing AX_PROC_CC_FOR_BUILD macro? I don't think it would be too much of a burden to tell people "when you upgrade to Autoconf 2.70, you will also need to get an updated version of ax_prog_cc_for_build.m4". Of course, that would rely on there _being_ an updated ax_prog_cc_for_build.m4 - is there a proposed alternative that would work in the presence of AC_DEFUN_ONCE'd AC_PROG_CC? If it's essential both to optimize AC_PROG_CC to avoid multiple expansions, _and_ to avoid breaking AX_PROC_CC_FOR_BUILD, how ugly is the implementation allowed to be? :) It seems to me that you could change AC_PROG_CC to something like: AC_DEFUN([AC_PROG_CC], dnl If the macro CC is locally defined (e.g. by AX_PROG_CC_FOR_BUILD, dnl which defines it as CC_FOR_BUILD), then perform the compiler dnl tests each time AC_PROG_CC is invoked. If CC is undefined, then dnl we only want to include the tests once. [m4_ifdef([CC], [_AC_PROG_CC_REALLY_I_MEAN_IT($@)], [_AC_PROG_CC_ONLY_ONCE($@)])]) AC_DEFUN_ONCE([_AC_PROG_CC_ONLY_ONCE], [_AC_PROG_CC_REALLY_I_MEAN_IT($@)]) AC_DEFUN([_AC_PROG_CC_REALLY_I_MEAN_IT], [AC_LANG_PUSH(C)dnl AC_ARG_VAR([CC], [C compiler command])dnl AC_ARG_VAR([CFLAGS], [C compiler flags])dnl ... AC_LANG_POP(C)dnl ])# AC_PROG_CC I'm sure this could be done much more elegantly, but it seems to work in a simple test. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/support/?110350> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/