(make.info.gz) Special Targets
Info Catalog
(make.info.gz) Empty Targets
(make.info.gz) Rules
(make.info.gz) Multiple Targets
4.9 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. Phony Targets Phony Targets.
`.SUFFIXES'
The prerequisites of the special target `.SUFFIXES' are the list
of suffixes to be used in checking for suffix rules.
Old-Fashioned Suffix Rules 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).
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. Implicit
Rule Search Algorithm Implicit Rule Search.
`.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.
Interrupting or Killing `make' Interrupts. Also, if the target
is an intermediate file, it will not be deleted after it is no
longer needed, as is normally done. Chains of Implicit
Rules Chained 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. Chains of Implicit Rules Chained 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. Chains of Implicit Rules Chained Rules.
`.SECONDARY' with no prerequisites causes all targets to be treated
as secondary (i.e., no target is removed because it is considered
intermediate).
`.SECONDEXPANSION'
If `.SECONDEXPANSION' is mentioned as a target anywhere in the
makefile, then all prerequisite lists defined _after_ it appears
will be expanded a second time after all makefiles have been read
in. Secondary Expansion Secondary Expansion.
The prerequisites of the special target `.SUFFIXES' are the list
of suffixes to be used in checking for suffix rules.
Old-Fashioned Suffix Rules Suffix Rules.
`.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. Errors in Commands
Errors.
`.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. Errors in Commands Errors.
`.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. Command Echoing Echoing. If you want to silence
all commands for a particular run of `make', use the `-s' or
`--silent' option ( Options Summary).
`.EXPORT_ALL_VARIABLES'
Simply by being mentioned as a target, this tells `make' to export
all variables to child processes by default. Communicating
Variables to a Sub-`make' Variables/Recursion.
`.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 `.'.
Old-Fashioned Suffix Rules Suffix Rules.
Info Catalog
(make.info.gz) Empty Targets
(make.info.gz) Rules
(make.info.gz) Multiple Targets
automatically generated byinfo2html