Keywords: internals

Next: 5 The %.variables rule Up: GNUstep Makefile Package Internals Previous: 3 From the internal-all

# 4 The %.variables rule - dependencies

The rule for building these targets is in the `rules.make` file, it is the `%.variables` rule:

    %.variables: %.tools %.subprojects
    @ \
    target=$(basename $(basename $*)); \
    operation=$(subst .,,$(suffix $(basename $*))); \
    type=$(subst -,_,$(subst .,,$(suffix $*))); \
    echo Making $$operation for $$type $$target...; \
    $(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \
      internal-$${type}-$$operation \
      INTERNAL_$${type}_NAME=$$target \
      TARGET=$$target \
      _SUBPROJECTS="$($(basename $(basename $*))_SUBPROJECTS)" \
      ...

This rule matches all targets ending in `.variables`. First of all, the rule depends on the corresponding `%.tools` and `%.subprojects` rules. This is because before processing the target itself, gnustep-make needs to process the related subprojects and (only for frameworks) the framework tools. We ignore this complication of subprojects and framework tools for now; if you look at the `%.subprojects` and `%.tools` rules you see that they do nothing if you are not actually using subprojects or framework tools in your makefile.