Archive Suffix Rules (GNU make)
Previous: Archive Pitfalls, Up: Archives [Contents][Index]
11.4 Suffix Rules for Archive Files
You can write a special kind of suffix rule for dealing with archive files. See Suffix Rules, for a full explanation of suffix rules. Archive suffix rules are obsolete in GNU make
, because pattern rules for archives are a more general mechanism (see Archive Update). But they are retained for compatibility with other make
s.
To write a suffix rule for archives, you simply write a suffix rule using the target suffix ‘.a
’ (the usual suffix for archive files). For example, here is the old-fashioned suffix rule to update a library archive from C source files:
.c.a: $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o $(AR) r $@ $*.o $(RM) $*.o
This works just as if you had written the pattern rule:
(%.o): %.c $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o $(AR) r $@ $*.o $(RM) $*.o
In fact, this is just what make
does when it sees a suffix rule with ‘.a
’ as the target suffix. Any double-suffix rule ‘.x.a
’ /@w is converted to a pattern rule with the target pattern ‘(%.o)
’ and a prerequisite pattern of ‘%.x
’.
Since you might want to use ‘.a
’ as the suffix for some other kind of file, make
also converts archive suffix rules to pattern rules in the normal way (see Suffix Rules). Thus a double-suffix rule ‘.x.a
’ /@w produces two pattern rules: ‘(%.o): %.x
’ and ‘%.a: %.x
’.