manpagez: man pages & more
info make
Home | html | info | man

File: make.info,  Node: Archive Suffix Rules,  Prev: Archive Pitfalls,  Up: Archives

11.4 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:

     .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' 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 (*note Suffix Rules::).  Thus a double-suffix rule '.X.a'
produces two pattern rules: '(%.o): %.X' and '%.a: %.X'.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.