Node:Special Targets, Next:Multiple Targets, Previous:Empty Targets, Up:Rules

### Special Built-in Target Names

Certain names have special meanings if they appear as targets.

`.PHONY`
  The prerequisites of the special target `.PHONY` are considered to be phony targets. When it is time to consider such a target, `make` will run its commands unconditionally, regardless of whether a file with that name exists or what its last-modification time is. See Phony Targets.
`.SUFFIXES`
  The prerequisites of the special target `.SUFFIXES` are the list of suffixes to be used in checking for suffix rules. See Old-Fashioned Suffix Rules.
`.DEFAULT`
  The commands specified for `.DEFAULT` are used for any target for which no rules are found (either explicit rules or implicit rules). See Last Resort. If `.DEFAULT` commands are specified, every file mentioned as a prerequisite, but not as a target in a rule, will have these commands executed on its behalf. See Implicit Rule Search Algorithm.
`.PRECIOUS`

  The targets which `.PRECIOUS` depends on are given the following special treatment: if `make` is killed or interrupted during the execution of their commands, the target is not deleted. See Interrupting or Killing `make`. Also, if the target is an intermediate file, it will not be deleted after it is no longer needed, as is normally done. See Chains of Implicit Rules. In this latter respect it overlaps with the `.SECONDARY` special target.

  You can also list the target pattern of an implicit rule (such as `%.o`) as a prerequisite file of the special target `.PRECIOUS` to preserve intermediate files created by rules whose target patterns match that file's name.

`.INTERMEDIATE`

  The targets which `.INTERMEDIATE` depends on are treated as intermediate files. See Chains of Implicit Rules. `.INTERMEDIATE` with no prerequisites has no effect.

`.SECONDARY`

  The targets which `.SECONDARY` depends on are treated as intermediate files, except that they are never automatically deleted. See Chains of Implicit Rules.

  `.SECONDARY` with no prerequisites causes all targets to be treated as secondary (i.e., no target is removed because it is considered intermediate).

`.DELETE_ON_ERROR`

  If `.DELETE_ON_ERROR` is mentioned as a target anywhere in the makefile, then `make` will delete the target of a rule if it has changed and its commands exit with a nonzero exit status, just as it does when it receives a signal. See Errors in Commands.

`.IGNORE`
  If you specify prerequisites for `.IGNORE`, then `make` will ignore errors in execution of the commands run for those particular files. The commands for `.IGNORE` are not meaningful.

  If mentioned as a target with no prerequisites, `.IGNORE` says to ignore errors in execution of commands for all files. This usage of `.IGNORE` is supported only for historical compatibility. Since this affects every command in the makefile, it is not very useful; we recommend you use the more selective ways to ignore errors in specific commands. See Errors in Commands.

`.LOW_RESOLUTION_TIME`
  If you specify prerequisites for `.LOW_RESOLUTION_TIME`, `make` assumes that these files are created by commands that generate low resolution time stamps. The commands for `.LOW_RESOLUTION_TIME` are not meaningful.

  The high resolution file time stamps of many modern hosts lessen the chance of `make` incorrectly concluding that a file is up to date. Unfortunately, these hosts provide no way to set a high resolution file time stamp, so commands like `cp -p` that explicitly set a file's time stamp must discard its subsecond part. If a file is created by such a command, you should list it as a prerequisite of `.LOW_RESOLUTION_TIME` so that `make` does not mistakenly conclude that the file is out of date. For example:

                .LOW_RESOLUTION_TIME: dst
                dst: src
                        cp -p src dst

  Since `cp -p` discards the subsecond part of `src`'s time stamp, `dst` is typically slightly older than `src` even when it is up to date. The `.LOW_RESOLUTION_TIME` line causes `make` to consider `dst` to be up to date if its time stamp is at the start of the same second that `src`'s time stamp is in.

  Due to a limitation of the archive format, archive member time stamps are always low resolution. You need not list archive members as prerequisites of `.LOW_RESOLUTION_TIME`, as `make` does this automatically.

`.SILENT`
  If you specify prerequisites for `.SILENT`, then `make` will not print the commands to remake those particular files before executing them. The commands for `.SILENT` are not meaningful.

  If mentioned as a target with no prerequisites, `.SILENT` says not to print any commands before executing them. This usage of `.SILENT` is supported only for historical compatibility. We recommend you use the more selective ways to silence specific commands. See Command Echoing. If you want to silence all commands for a particular run of `make`, use the `-s` or `--silent` option (see Options Summary).

`.EXPORT_ALL_VARIABLES`
  Simply by being mentioned as a target, this tells `make` to export all variables to child processes by default. See Communicating Variables to a Sub-`make`.
`.NOTPARALLEL`

  If `.NOTPARALLEL` is mentioned as a target, then this invocation of `make` will be run serially, even if the `-j` option is given. Any recursively invoked `make` command will still be run in parallel (unless its makefile contains this target). Any prerequisites on this target are ignored.

Any defined implicit rule suffix also counts as a special target if it appears as a target, and so does the concatenation of two suffixes, such as `.c.o`. These targets are suffix rules, an obsolete way of defining implicit rules (but a way still widely used). In principle, any target name could be special in this way if you break it in two and add both pieces to the suffix list. In practice, suffixes normally begin with `.`, so these special target names also begin with `.`. See Old-Fashioned Suffix Rules.