Contents|Index|Previous|Next

Suffix Rules for Archive Files

You can write a special kind of suffix rule for with archive files. See Old-Fashioned 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 Implicit Rule for Archive Member Targets for more information). But they are retained for compatibility with other make utilities.

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, the following 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 following 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 (see Old-Fashioned Suffix Rules ). Thus a double-suffix rule, ‘.x.a’, produces two pattern rules: ‘(%.o): %.x’ and ‘%.a: %.x’.