(make.info)Archive Suffix Rules

Prev: Archive Update Up: Archives

Suffix Rules for Archive Files

   You can write a special kind of suffix rule for dealing with archive
files.  Note: 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 (Note: 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:

             $(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' is
converted to a pattern rule with the target pattern `(%.o)' and a
dependency 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 (Note: Suffix Rules.).  Thus a double-suffix rule
`.X.a' produces two pattern rules: `(%.o): %.X' and `%.a: %.X'.

automatically generated by info2www