make: Substitution Refs

 
 6.3.1 Substitution References
 -----------------------------
 
 A "substitution reference" substitutes the value of a variable with
 alterations that you specify.  It has the form '$(VAR:A=B)' (or
 '${VAR:A=B}') and its meaning is to take the value of the variable VAR,
 replace every A at the end of a word with B in that value, and
 substitute the resulting string.
 
    When we say "at the end of a word", we mean that A must appear either
 followed by whitespace or at the end of the value in order to be
 replaced; other occurrences of A in the value are unaltered.  For
 example:
 
      foo := a.o b.o c.o
      bar := $(foo:.o=.c)
 
 sets 'bar' to 'a.c b.c c.c'.  SeeSetting Variables Setting.
 
    A substitution reference is actually an abbreviation for use of the
 'patsubst' expansion function (SeeFunctions for String Substitution
 and Analysis Text Functions.).  We provide substitution references as
 well as 'patsubst' for compatibility with other implementations of
 'make'.
 
    Another type of substitution reference lets you use the full power of
 the 'patsubst' function.  It has the same form '$(VAR:A=B)' described
 above, except that now A must contain a single '%' character.  This case
 is equivalent to '$(patsubst A,B,$(VAR))'.  SeeFunctions for String
 Substitution and Analysis Text Functions, for a description of the
 'patsubst' function.
 
 For example:
 
      foo := a.o b.o c.o
      bar := $(foo:%.o=%.c)
 
 sets 'bar' to 'a.c b.c c.c'.