> if we just read the docs wrong, or if they *are* wrong.
I don't think this is clearly explained in the docs. Suggest: Index: doc/make.texi =================================================================== RCS file: /sources/make/make/doc/make.texi,v retrieving revision 1.72 diff -u -r1.72 make.texi --- doc/make.texi 2 May 2011 15:11:23 -0000 1.72 +++ doc/make.texi 15 Aug 2011 17:32:27 -0000 @@ -3620,6 +3620,7 @@ References}). This occurs after make has finished reading all the makefiles and the target is determined to be out of date; so, the recipes for targets which are not rebuilt are never expanded. +The whole recipe is expanded before the first line is executed. Variable and function references in recipes have identical syntax and semantics to references elsewhere in the makefile. They also have the -----Original Message----- From: bug-make-bounces+mdorey=bluearc....@gnu.org [mailto:bug-make-bounces+mdorey=bluearc....@gnu.org] On Behalf Of Stefan Tauner Sent: Sunday, August 14, 2011 12:43 To: bug-make@gnu.org Cc: Stefan Tauner; Carl-Daniel Hailfinger Subject: Evaluation of shell functions in recipes hello! please keep our CC:s because we are not subscribed. i have found a bug in our (flashrom.org) makefile which may be a bug in make or its documentation. attached is a small test case makefile. the related documentation is http://www.gnu.org/s/hello/manual/make/Shell-Function.html and http://www.gnu.org/s/hello/manual/make/Reading-Makefiles.html the problem is that the shell function runs before any other commands (i.e. immediate). the documentation of the shell function states: "The commands run by calls to the shell function are run when the function calls are expanded." and from the "reading makefiles" section i would say that this should be deferred i.e. the commands of the recipe should be evaluated sequently. instead the shell functions are run first: - 2 is written to the test file - 4 is written to the test file (overwriting 2) after that the normal execution starts. this leads to the output (among other things) of "1 4 4 3 4". the expected output is "1 <file not found> 2 3 4" could someone please explain if the observed behavior is "right" and if we just read the docs wrong, or if they *are* wrong. thanks! -- Kind regards/Mit freundlichen Grüßen, Stefan Tauner
_______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make