I'm wondering how come "cook" from Peter Miller seems to be such an unknown. It is incredibly powerful and has a much cleaner syntax and design than GNU make, with all its bizarre flavors of variables and matching rules.
Even with all of the tricks I know, there is no way to write in GNU make thus type of rule:
linker -o $@ $(OBJECTS_FOR_%)
In cook, this is trivial. The consequences are deep, since it makes it impossible to write generic link rules. Instead, one has to break down the rule into several.