Severity: wishlist [This is posted also to the automake list to ensure a wider audience. Discussion should continue exclusively on the bug-automake list.]
The known make implementations that does not support recursive variable expansion -- as in $(foo_$(bar)) -- should by today be either very old or very "fringe"; so it would be nice if, starting from Automake 1.14, we could begin assuming unconditionally that this feature is supported. Users of those old-and-poor make implementations can still download and install GNU make (which, as we all know, doesn't require a pre-existing make installation to be bootstrappped). This change would simplify our codebase a little, would reduce the number of configure-time checks for the client packages (eventually, at first we should still check for our intended feature, and bail out loudly and with a clear error message if that is not working), and also reduce the differences between mainline Automake an Automake-NG. Of course, we should first ensure that our estimate on how support for recursive make variable expansion is effectively widespread is correct. So, here is the tentative roadmap: * Automake 1.13.2 - Add a 'spy-make-recurs-var.sh' test verifying that the make implementation used in the testsuite truly support recursive variable expansion.. - Enhance the checks in the AM_SILENT_RULES macro to print a loud message at configure runtime if the make implementation on the system isn't able to grasp recursive variable expansion, telling the user to report the situation to our upstream (bug-automake). This is of paramount importance for us to know how the situation "in the wild" really is. In the past, Autoconf did something similar to ensure the presence of shell functions in all the shells worth supporting. * Automake 1.14 (assuming no relevant complaints has been received in the previous "probing" step). - Just assume, throughout our codebase, that '$(foo_$(var))' works. Related simplifications and refactorings. - Have AM_SILENT_RULES abort configure with a fatal error if the make implementation on the system isn't able to grasp recursive variable expansion. - Make the 'portability-recursive' warnings a no-op, and have their use print a warning in either the 'obsolete' and 'unsupported' category. * Automake 1.15 - Remove all the runtime checks from AM_SILENT_RULES; the only role of this macro will at this point be the ability to set the default verbosity, and to implement the '--enable-silent-rules' and '--disable-silent-rules' configure options. - Remove the 'portability-recursive' warnings altogether. Comments would be welcome. Patches even more so ;-) (especially for what concerns the changes intended for 1.13.2).