DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(make.info.gz) MAKE Variable

Info Catalog (make.info.gz) Recursion (make.info.gz) Recursion (make.info.gz) Variables/Recursion
 
 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 command 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 commands 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 command line.
  Instead of Executing the Commands Instead of Execution.  This
 special feature is only enabled if the `MAKE' variable appears directly
 in the command script: 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
 commands; 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
 command, and `-t' says not to execute commands.  
 
    The special feature makes this do what you want: whenever a command
 line of a rule contains the variable `MAKE', the flags `-t', `-n' and
 `-q' do not apply to that line.  Command lines containing `MAKE' are
 executed normally despite the presence of a flag that causes most
 commands 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
 commands, is propagated to the subsystem.
 
Info Catalog (make.info.gz) Recursion (make.info.gz) Recursion (make.info.gz) Variables/Recursion
automatically generated byinfo2html