make: Double-Colon

1 
1 4.13 Double-Colon Rules
1 =======================
1 
1 "Double-colon" rules are explicit rules written with '::' instead of ':'
1 after the target names.  They are handled differently from ordinary
1 rules when the same target appears in more than one rule.  Pattern rules
11 with double-colons have an entirely different meaning (⇒
 Match-Anything Rules).
1 
1    When a target appears in multiple rules, all the rules must be the
1 same type: all ordinary, or all double-colon.  If they are double-colon,
1 each of them is independent of the others.  Each double-colon rule's
1 recipe is executed if the target is older than any prerequisites of that
1 rule.  If there are no prerequisites for that rule, its recipe is always
1 executed (even if the target already exists).  This can result in
1 executing none, any, or all of the double-colon rules.
1 
1    Double-colon rules with the same target are in fact completely
1 separate from one another.  Each double-colon rule is processed
1 individually, just as rules with different targets are processed.
1 
1    The double-colon rules for a target are executed in the order they
1 appear in the makefile.  However, the cases where double-colon rules
1 really make sense are those where the order of executing the recipes
1 would not matter.
1 
1    Double-colon rules are somewhat obscure and not often very useful;
1 they provide a mechanism for cases in which the method used to update a
1 target differs depending on which prerequisite files caused the update,
1 and such cases are rare.
1 
1    Each double-colon rule should specify a recipe; if it does not, an
11 implicit rule will be used if one applies.  ⇒Using Implicit Rules
 Implicit Rules.
1