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 section Phony Targets.
.SUFFIXES
The prerequisites of the special target .SUFFIXES
are the list
of suffixes to be used in checking for suffix rules.
See section 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 section 10.6 Defining Last-Resort Default Rules. 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 section 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 section 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 section 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 section 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 section 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 section 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 section 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 section Command Echoing. If you want to silence all commands
for a particular run of make
, use the `-s' or
`--silent' option (see section 9.7 Summary of Options).
.EXPORT_ALL_VARIABLES
Simply by being mentioned as a target, this tells make
to
export all variables to child processes by default.
See section 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 section Old-Fashioned Suffix Rules.