From the documentation for GNU Make (http://www.gnu.org/software/make/manual/make.html):
Finds whitespace-separated words in text that match pattern and replaces them with replacement. Here pattern may contain a `%' which acts as a wildcard, matching any number of any characters within a word. If replacement also contains a `%', the `%' is replaced by the text that matched the `%' in pattern. ...
Notice that the phrase "If replacement also contains a `%'" implies that the presence of a '%' in the replacement string is optional whereas in TextSubs::pattern_substitution it is not.
The attached patch eliminates this erroneous enforcement.