Keywords: internals

Next: 4 The %.variables rule Up: GNUstep Makefile Package Internals Previous: 2 From `make' to

# 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