## 20.7. Sample Default Macros, Suffixes, and Rules

>     .SUFFIXES: .o .c .c~ .y .y~ .l .l~ .s .s~ .sh .sh~ .h .h~ .f .f~ \
>     .C .C~ .Y .Y~ .L .L~

>     MAKE=make
>     BUILD=build
>     AR=ar
>     ARFLAGS=rv
>     AS=as
>     ASFLAGS=
>     CC=cc
>     CFLAGS=-O
>     F77=f77
>     FFLAGS=-O
>     GET=get
>     GFLAGS=
>     LD=ld
>     LDFLAGS=
>     LEX=lex
>     LFLAGS=
>     YACC=yacc
>     YFLAGS=
>     C++C=CC
>     C++FLAGS=-O

>     .c:
>     	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
>     .c~:
>     	$(GET) $(GFLAGS) $<
>     	$(CC) $(CFLAGS) $*.c -o $@ $(LDFLAGS)
>     	-rm -f $*.c
>     .f:
>     	$(F77) $(FFLAGS) $< -o $@ $(LDFLAGS)
>     .f~:
>     	$(GET) $(GFLAGS) $<
>     	$(F77) $(FFLAGS) $*.f -o $@ $(LDFLAGS)
>     	-rm -f $*.f
>     .s:
>     	$(AS) $(ASFLAGS) $< -o $@ $(LDFLAGS)
>     .s~:
>     	$(GET) $(GFLAGS) $<
>     	$(AS) $(ASFLAGS) $*.s -o $* $(LDFLAGS)
>     	-rm -f $*.s
>     .sh:
>     	cp $< $@; chmod 0777 $@
>     .sh~:
>     	$(GET) $(GFLAGS) $<
>     	cp $*.sh $*; chmod 0777 $@
>     	-rm -f $*.sh
>     .C:
>     	$(C++C) $(C++FLAGS) $< -o $@ $(LDFLAGS)
>     .C~:
>     	$(GET) $(GFLAGS) $<
>     	$(C++C) $(C++FLAGS) $*.C -o $@ $(LDFLAGS)
>     	-rm -f $*.C

>     .c.a:
>     	$(CC) $(CFLAGS) -c $<
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.o
>     .c.o:
>     	$(CC) $(CFLAGS) -c $<
>     .c~.a:
>     	$(GET) $(GFLAGS) $<
>     	$(CC) $(CFLAGS) -c $*.c
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.[co]
>     .c~.c:
>     	$(GET) $(GFLAGS) $<
>     .c~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(CC) $(CFLAGS) -c $*.c
>     	-rm -f $*.c
>     .f.a:
>     	$(F77) $(FFLAGS) -c $*.f
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.o
>     .f.o:
>     	$(F77) $(FFLAGS) -c $*.f
>     .f~.a:
>     	$(GET) $(GFLAGS) $<
>     	$(F77) $(FFLAGS) -c $*.f
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.[fo]
>     .f~.f:
>     	$(GET) $(GFLAGS) $<
>     .f~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(F77) $(FFLAGS) -c $*.f
>     	-rm -f $*.f
>     .h~.h:
>     	$(GET) $(GFLAGS) $<
>     .l.c:
>     	$(LEX) $(LFLAGS) $<
>     	mv lex.yy.c $@
>     .l.o:
>     	$(LEX) $(LFLAGS) $<
>     	$(CC) $(CFLAGS) -c lex.yy.c
>     	-rm lex.yy.c; mv lex.yy.o $@
>     .l~.c:
>     	$(GET) $(GFLAGS) $<
>     	$(LEX) $(LFLAGS) $*.l
>     	mv lex.yy.c $@
>     	-rm -f $*.l
>     .l~.l:
>     	$(GET) $(GFLAGS) $<
>     .l~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(LEX) $(LFLAGS) $*.l
>     	$(CC) $(CFLAGS) -c lex.yy.c
>     	-rm -f lex.yy.c $*.l
>     	mv lex.yy.o $@
>     .s.a:
>     	$(AS) $(ASFLAGS) -o $*.o $*.s
>     	$(AR) $(ARFLAGS) $@ $*.o

>     .s.o:
>     	$(AS) $(ASFLAGS) -o $@ $<
>     .s~.a:
>     	$(GET) $(GFLAGS) $<
>     	$(AS) $(ASFLAGS) -o $*.o $*.s
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.[so]
>     .s~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(AS) $(ASFLAGS) -o $*.o $*.s
>     	-rm -f $*.s
>     .s~.s:
>     	$(GET) $(GFLAGS) $<
>     .sh~.sh:
>     	$(GET) $(GFLAGS) $<
>     .y.c:
>     	$(YACC) $(YFLAGS) $<
>     	mv y.tab.c $@
>     .y.o:
>     	$(YACC) $(YFLAGS) $<
>     	$(CC) $(CFLAGS) -c y.tab.c
>     	-rm y.tab.c
>     	mv y.tab.o $@
>     .y~.c:
>     	$(GET) $(GFLAGS) $<
>     	$(YACC) $(YFLAGS) $*.y
>     	mv y.tab.c $*.c
>     	-rm -f $*.y
>     .y~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(YACC) $(YFLAGS) $*.y
>     	$(CC) $(CFLAGS) -c y.tab.c
>     	-rm -f y.tab.c $*.y
>     	mv y.tab.o $*.o
>     .y~.y :
>     	$(GET) $(GFLAGS) $<
>     .C.a:
>     	$(C++C) $(C++FLAGS) -c $<
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.o
>     .C.o:
>     	$(C++C) $(C++FLAGS) -c $<
>     .C~.a:
>     	$(GET) $(GFLAGS) $<
>     	$(C++C) $(C++FLAGS) -c $*.C
>     	$(AR) $(ARFLAGS) $@ $*.o
>     	-rm -f $*.[Co]
>     .C~.C:
>     	$(GET) $(GFLAGS) $<
>     .C~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(C++C) $(C++FLAGS) -c $*.C
>     	-rm -f $*.C
>     .L.C:
>     	$(LEX) $(LFLAGS) $<
>     	mv lex.yy.c $@
>     .L.o:
>     	$(LEX) $(LFLAGS) $<
>     	$(C++C) $(C++FLAGS) -c lex.yy.c
>     	-rm lex.yy.c; mv lex.yy.o $@
>     .L~.C:
>     	$(GET) $(GFLAGS) $<
>     	$(LEX) $(LFLAGS) $*.L
>     	mv lex.yy.c $@
>     	-rm -f $*.L
>     .L~.L:
>     	$(GET) $(GFLAGS) $<
>     .L~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(LEX) $(LFLAGS) $*.L
>     	$(C++C) $(C++FLAGS) -c lex.yy.c
>     	-rm -f lex.yy.c $*.L
>     	mv lex.yy.c $@
>     .Y.C:
>     	$(YACC) $(YFLAGS) $<
>     	mv y.tab.c $@
>     .Y.o:
>     	$(YACC) $(YFLAGS) $<
>     	$(C++C) $(C++FLAGS) -c y.tab.c
>     	-rm y.tab.c
>     	mv y.tab.o $@
>     .Y~.C:
>     	$(GET) $(GFLAGS) $<
>     	$(YACC) $(YFLAGS) $*.Y
>     	mv y.tab.c $*.C
>     	-rm -f $*.Y
>     .Y~.o:
>     	$(GET) $(GFLAGS) $<
>     	$(YACC) $(YFLAGS) $*.Y
>     	$(C++C) $(C++FLAGS) -c y.tab.c
>     	-rm -f y.tab.c $*.Y
>     	mv y.tab.o $*.o
>     .Y~.Y :
>     	$(GET) $(GFLAGS) $<

>     markfile.o:	markfile
>     	echo "static char _sccsid[] = \"`grep @'(#)' markfile`\";" > markfile.c
>     	$(CC) -c markfile.c
>     	-rm -f markfile.c

>     .SCCS_GET:
>     	$(GET) $(GFLAGS)  s.$@

Copyright © 2003 O'Reilly & Associates. All rights reserved.