make: MAKE Variable
5.7.1 How the 'MAKE' Variable Works
-----------------------------------
Recursive 'make' commands should always use the variable 'MAKE', not the
explicit command name 'make', as shown here:
subsystem:
cd subdir && $(MAKE)
The value of this variable is the file name with which 'make' was
invoked. If this file name was '/bin/make', then the recipe executed is
'cd subdir && /bin/make'. If you use a special version of 'make' to run
the top-level makefile, the same special version will be executed for
recursive invocations.
As a special feature, using the variable 'MAKE' in the recipe of a
rule alters the effects of the '-t' ('--touch'), '-n' ('--just-print'),
or '-q' ('--question') option. Using the 'MAKE' variable has the same
effect as using a '+' character at the beginning of the recipe line.
Instead of Executing the Recipes Instead of Execution. This
special feature is only enabled if the 'MAKE' variable appears directly
in the recipe: it does not apply if the 'MAKE' variable is referenced
through expansion of another variable. In the latter case you must use
the '+' token to get these special effects.
Consider the command 'make -t' in the above example. (The '-t'
option marks targets as up to date without actually running any recipes;
see Instead of Execution.) Following the usual definition of
'-t', a 'make -t' command in the example would create a file named
'subsystem' and do nothing else. What you really want it to do is run
'cd subdir && make -t'; but that would require executing the recipe, and
'-t' says not to execute recipes.
The special feature makes this do what you want: whenever a recipe
line of a rule contains the variable 'MAKE', the flags '-t', '-n' and
'-q' do not apply to that line. Recipe lines containing 'MAKE' are
executed normally despite the presence of a flag that causes most
recipes not to be run. The usual 'MAKEFLAGS' mechanism passes the flags
to the sub-'make' (Communicating Options to a Sub-'make'
Options/Recursion.), so your request to touch the files, or print the
recipes, is propagated to the subsystem.