Here is the procedure
make uses for searching for an implicit rule
for a target
t. This procedure is followed for each double-colon
rule with no recipe, for each target of ordinary rules none of which have
a recipe, and for each prerequisite that is not the target of any rule. It
is also followed recursively for prerequisites that come from implicit
rules, in the search for a chain of rules.
Suffix rules are not mentioned in this algorithm because suffix rules are converted to equivalent pattern rules once the makefiles have been read in.
For an archive member target of the form
archive(member)’, the following algorithm is run
twice, first using the entire target name
t, and second using
(member)’ as the target
t if the first run found no
tinto a directory part, called
d, and the rest, called
n. For example, if
n. If the target pattern contains a slash, it is matched against
t; otherwise, against
tis a prerequisite of an implicit rule, then remove all non-terminal match-anything rules from the list.
s, which is the nonempty part of
nmatched by the ‘
%’ in the target pattern.
%’; if the target pattern does not contain a slash, append
dto the front of each prerequisite name.
Test whether all the prerequisites exist or ought to exist. (If a file name is mentioned in the makefile as a target or as an explicit prerequisite, then we say it ought to exist.)
If all prerequisites exist or ought to exist, or there are no prerequisites, then this rule applies.
.DEFAULT, if any, applies. In that case, give
tthe same recipe that
.DEFAULThas. Otherwise, there is no recipe for
Once a rule that applies has been found, for each target pattern of
the rule other than the one that matched
%’ in the pattern is replaced with
s and the resultant
file name is stored until the recipe to remake the target file
is executed. After the recipe is executed, each of these stored file
names are entered into the data base and marked as having been updated
and having the same update status as the file
When the recipe of a pattern rule is executed for
automatic variables are set corresponding to the target and
prerequisites. See Automatic Variables.