Hello Autoconfers, I hit a weird (to me) issue involving m4_map(all) and AC_REQUIRE, and I would appreciate some help understanding what's going on here! So normally when expanding a macro defined with AC_DEFUN and a nested AC_REQUIRE causes a macro to be expanded, that expansion gets "hoisted" outside of the topmost macro expansion. Example: AC_INIT([test], [0]) AC_DEFUN([DEF0], [echo def0]) AC_DEFUN([REQ0], [AC_REQUIRE([DEF0])]) AC_DEFUN([TEST0], [m4_newline([echo hello])[]m4_newline([REQ0])]) TEST0 When I run this, I see: def0 hello which is as expected. But when my macro is using m4_map or m4_mapall, this mechanism seems to break down. Example: AC_INIT([test], [0]) AC_DEFUN([DEF1], [echo def1]) AC_DEFUN([REQ1], [AC_REQUIRE([DEF1])]) AC_DEFUN([TEST1], [m4_mapall([m4_newline], [[echo hello], [REQ1]])]) TEST1 When I run that, I get: hello def1 with the order reversed from my expectation... But if I implement my own version of mapall in a straightforward way, it seems to work out just fine: AC_INIT([test], [0]) AC_DEFUN([DEF2], [echo def2]) AC_DEFUN([REQ2], [AC_REQUIRE([DEF2])]) m4_define([my_mapall], [m4_ifval([$2], [m4_indir([$1], m4_car($2))[]my_mapall([$1], m4_cdr($2))])]) AC_DEFUN([TEST2], [my_mapall([m4_newline], [[echo hello], [REQ2]])]) TEST2 Running this gives: def2 hello as expected. I really have no idea why TEST1 results in a different expansion from the other two examples. What exactly is different about m4_mapall? Thanks, Nick _______________________________________________ Autoconf mailing list Autoconf@xxxxxxx https://lists.gnu.org/mailman/listinfo/autoconf