By default, the Make program knows several builtin pattern rules. Here is a list of their definitions:
%,v: %.a: RCS/%.a,v $(CO) -u $@ %.a: %.c: RCS/%.c,v $(CO) -u $@ %.c: %.h: RCS/%.h,v $(CO) -u $@ %.h: %.i: RCS/%.i,v $(CO) -u $@ %.i: %.o: %.c $(CC) -c $(CFLAGS) -o $@ $< %.o: %.a $(AS) -c $(AFLAGS) -o $@ $<
Notice that assembly and C language headers and source files have no dependencies and require no commands to be executed in order to make them up-to-date. User defined rules should be added to the Makefile if that is not the case.