3 From the internal-all rule to the %.variables rule

Make needs to build this target internal-all. In rules.make this target appears as
internal-all::
because of the double colons (that is, because it is internal-all:: rather than internal-all:) this target can have multiple totally separated rules. Each rule must be a double colon rule, and is processed separately from the other rules (even if they refer to the same target).

The real rules for internal-all are included by the specific makefiles; in our example, tool.make includes

internal-all:: $(TOOL_NAME:=.all.tool.variables)
now - in our case - because TOOL_NAME is decrypt, then this rule actually means
 
internal-all:: decrypt.all.tool.variables
This means that to build internal-all, make has to build (at least) the decrypt.all.tool.variables target. library.make includes the completely analogous rule
internal-all:: $(LIBRARY_NAME:=.all.library.variables)
which in our case means
internal-all:: libDvd.all.library.variables
This rule is completely separated from the other one; to build internal-all, make has to build the two different targets:
decrypt.all.tool.variables
libDvd.all.library.variables



root 2017-05-06